Code examples
Explore 188 SDK examples and their supporting files. Copy code or Markdown, then follow the guide for your integration.
On this page
188 / 188 examples
quickstart:verifyquickstartStandalone read-only trust-root check. Copy this file into a project, install @ammora-protocol/sdk, viem and dotenv, then run: AMMORA_CHAIN_ID=91342 npx tsx verify-deployment.ts
quickstart:aggregationquickstartStandalone read-only Aggregation Router readiness check. The official catalog is the activation boundary. A testnet canary address is not permission to patch an application catalog or request a wallet signature. Copy this file into a project, install @ammora-protocol/sdk, viem and dotenv, then run: AMMORA_CHAIN_ID=91342 npx tsx check-aggregation.ts
quickstart:configsquickstartStandalone read-only V4 Config listing at one explicit block. AMMORA_CHAIN_ID=91342 npx tsx list-configs.ts 10
quickstart:create-launchquickstartStandalone V4 launch creation from an existing immutable Config. AMMORA_CHAIN_ID=91342 AMMORA_PRIVATE_KEY=0x... AMMORA_SEND=1 \ npx tsx create-launch.ts 1 "My Token" MTK ipfs://example/metadata.json
quickstart:swapquickstartStandalone reviewed exact-input swap. AMMORA_CHAIN_ID=91342 AMMORA_PRIVATE_KEY=0x... AMMORA_SEND=1 \ npx tsx safe-swap.ts <almm|concentrated|compounding|dbc> <pool> <tokenIn> <amountIn> [native]
almm:active-binalmmRead a bin pool's active bin, the one trading happens in. No key required. npm run almm:active-bin -- <poolAddress> The reference repository splits this across `active-id` and `get-active-bin`; the id and the bin's contents are one read here, so this covers both.
almm:quote-swapalmmCheck the source for arguments and transaction requirements.
almm:swapalmmCheck the source for arguments and transaction requirements.
almm:create-poolalmmCreate a bin pool for a token pair. npm run almm:create-pool -- <baseToken> <quoteToken> <binStepBps> [activeId] The preflight runs first and refuses anything the factory would reject, such as an unsupported token, a bin step outside policy, a pair that already has a pool at this step. Read its complaints instead of guessing at a revert.
almm:get-positionsalmmList the bin-pool positions a wallet holds. Reads only, so no key is required. npm run almm:get-positions -- <ownerAddress> ── How listing works on EVM ─────────────────────────────────────────────────── There is no equivalent of Solana's "scan every account owned by this program". Positions are ERC-721 tokens and the manager does not implement the enumerable extension, so you cannot ask it which tokens an address holds. What you can do is read the standard ERC-721 `Transfer(from, to, tokenId)` event, filtered on `to`, which is indexed so the node does the work. Every way a position can arrive is a Transfer: minting is a transfer from the zero address, and so is receiving one from someone else. Filtering the manager's own `PositionCreated` event instead would miss positions that arrived by transfer, including ones created through the factory's locked-creation route, where the factory mints to itself, seals the position and only then hands it over. Two consequences any production listing has to handle: 1. A Transfer *in* does not mean the wallet still holds it. Ownership is re-read from the chain before anything is reported. 2. Log queries are bounded by the RPC. Public endpoints cap the block span per request, so this walks the range in chunks from the deployment's own start block instead of asking for all of history at once. ───────────────────────────────────────────────────────────────────────────────
almm:zap-inalmmCheck the source for arguments and transaction requirements.
almm:zap-outalmmCheck the source for arguments and transaction requirements.
almm:create-limit-orderalmmCheck the source for arguments and transaction requirements.
almm:close-limit-orderalmmCheck the source for arguments and transaction requirements.
almm:create-rewardalmmCheck the source for arguments and transaction requirements.
almm:claim-rewardalmmCollect what a position has earned from a pool's reward campaign. npm run almm:claim-reward -- <tokenId> [slot] The other side of `almm:create-reward`. Rewards accrue to a position for as long as it holds liquidity while a campaign runs, and this collects them without touching the liquidity itself. The position stays exactly as it was and keeps earning. ── Read before sending ─────────────────────────────────────────────────────── `previewPositionReward` reports what the position would be paid right now. It is worth asking, because a position that joined after a campaign ended, or that has already claimed, has earned nothing, and claiming nothing still costs gas. A pool can run two campaigns at once, in slots 0 and 1, paying different tokens. They accrue independently and are claimed independently, so a position in a pool running both has two claims to make. ───────────────────────────────────────────────────────────────────────────────
almm:create-position:balancedalmmOpen a bin-pool position with both sides funded evenly across a range. npm run almm:create-position:balanced -- <pool> <baseAmount> <quoteAmount> [width] `width` is how many bins either side of the active one to cover; it defaults to 2.
almm:create-position:imbalancedalmmOpen a position with the two sides funded in whatever ratio you pass. npm run almm:create-position:imbalanced -- <pool> <baseAmount> <quoteAmount> [width] Same call as the balanced example, and the difference is only the amounts. Depositing away from the pool's current ratio costs a composition fee on the active bin, which the quote printed below already accounts for.
almm:create-position:one-sidedalmmOpen a position funded from one side only. npm run almm:create-position:one-sided -- <pool> <baseAmount> <quoteAmount> [width] Pass 0 for the side you are not funding. A one-sided position sits entirely above or below the active bin and fills as price moves into it, the same shape a resting order takes.
arl:claim-position-feearlClaim the fees a concentrated (ARL) position has earned. npm run arl:claim-position-fee -- <poolAddress> <tokenId> [recipient] The token id is the one `arl:get-user-positions` prints, which is the position manager's NFT. The optional recipient receives only fees; NFT ownership, locked principal and future fee rights remain with the owner. Omitting it pays the owner, including when an authorized fee delegate is the connected caller. ── Two things called "position 1" ──────────────────────────────────────────── A concentrated pool keeps its own positions, numbered per pool, and the position manager wraps them as ERC-721 tokens numbered per manager. Both accept a `tokenId` and both answer `ownerOf`, so passing an id from one to the other does not fail loudly. It reports a different position, or refuses because that id belongs to someone else entirely. Every example here works in the manager's numbering, because that is what a wallet actually holds and what the listing script can enumerate. The managed calls also check the caller's permission on the token, so a delegate can claim where the owner allowed it. ───────────────────────────────────────────────────────────────────────────────
arl:fee-delegatearlFee-only managed NFT delegation. Only the NFT owner may grant or revoke it. npm run arl:fee-delegate -- <pool> <managerNftId> <delegate> <claim-fee|claim-fee-to-owner> npm run arl:fee-delegate -- <pool> <managerNftId> revoke
arl:swap-nativearlCheck the source for arguments and transaction requirements.
arl:swap-with-permitarlCheck the source for arguments and transaction requirements.
swap:safearlExecutes the preferred wallet-facing exact-input flow: reviewed pool, revision-correct quote, exact approval, receipt-block simulation, swap, and receipt-block output reconciliation. npm run swap:safe -- <almm|concentrated|compounding|dbc> <pool> <tokenIn> <amountIn> [native]
arl:plan-seedarlCheck the source for arguments and transaction requirements.
arl:create-poolarlCheck the source for arguments and transaction requirements.
arl:create-compounding-poolarlCheck the source for arguments and transaction requirements.
arl:get-user-positionsarlList the concentrated (ARL) positions a wallet holds, and what each is owed. Reads only, so no key is required. npm run arl:get-user-positions -- <ownerAddress> ── How listing works on EVM ─────────────────────────────────────────────────── There is no equivalent of Solana's "scan every account owned by this program". Positions are ERC-721 tokens and the manager does not implement the enumerable extension, so you cannot ask it which tokens an address holds. What you can do is read the standard ERC-721 `Transfer(from, to, tokenId)` event, filtered on `to`, which is indexed so the node does the work. Every way a position can arrive is a Transfer: minting is a transfer from the zero address, and so is receiving one from someone else. Filtering the manager's own `PositionCreated` event instead would miss positions that arrived by transfer, including ones created through the factory's locked-creation route, where the factory mints to itself, seals the position and only then hands it over. Two consequences any production listing has to handle: 1. A Transfer *in* does not mean the wallet still holds it. Ownership is re-read from the chain before anything is reported. 2. Log queries are bounded by the RPC. Public endpoints cap the block span per request, so this walks the range in chunks from the deployment's own start block instead of asking for all of history at once. ───────────────────────────────────────────────────────────────────────────────
arl:lock-positionarlPermanently lock liquidity in a concentrated position. npm run arl:lock-position -- <pool> <tokenId> [liquidity] Locking is one-way. Without a liquidity argument this locks everything still unlocked, which is what a creator proving their liquidity is committed usually wants. If you are creating the pool as well, the factory's createProductionPoolLocked seals the first position in the creating call, so there is no window where it is unlocked at all.
arl:add-liquidity-and-lockarlCheck the source for arguments and transaction requirements.
arl:split-positionarlSplit a concentrated position, sending a share of it to another address. npm run arl:split-position -- <pool> <tokenId> <recipient> <percent> Each part of a position splits separately: unlocked liquidity, permanently locked liquidity, owed fees, rewards, vesting. This example moves the same percentage of every part, which is the common case; pass different numerators to the SDK for anything else.
almm:add-liquidityalmmCheck the source for arguments and transaction requirements.
almm:seed-liquidityalmmCheck the source for arguments and transaction requirements.
almm:create-extended-positionsalmmCheck the source for arguments and transaction requirements.
launch:get-configlaunchRead a launch config, or list what is registered. No key required. npm run launch:get-config # list the first page npm run launch:get-config -- <configId> # one config in detail A config is the shape of a launch: the curve, the fee schedule, what happens at graduation. Launches reference one by id rather than restating it, so reading the config tells you what a launch built on it will do.
launch:create-configlaunchCreate a permissionless launch config by starting from one that already works. npm run launch:create-config -- <templateConfigId> <saleSupply> <quoteThreshold> A config has around fifty fields covering the fee schedule, rate limiter, dynamic fee, graduation mode, post-migration pool shape, vesting. Writing them all out from scratch is how a launch ends up with a graduation that can never reconcile, so this reads an existing config, changes the two things a new launch usually differs in, and creates a new one. Read the template first with `launch:get-config <id>` and make sure it is the shape you want. No governance approval or registrar role is required. The caller becomes the immutable Config owner, while `partnerRecipient` remains the fee claimer encoded in the Config.
launch:quick-createlaunchCreate an immutable Config and launch a token in one transaction. npm run launch:quick-create -- <templateId> <saleSupply> <quoteThreshold> <name> <symbol> <metadataURI> This is the public Quick Create path. It is permissionless, but it is not a reduced-security encoder: the connected client verifies the shared factory, registry, one-shot forwarder and optional callback before returning a plan. The receipt remains canonical if another Config is created between planning and inclusion, so the example resolves both the final Config identity and the launched token addresses from that receipt.
launch:create-launchlaunchLaunch a token on a registered config. npm run launch:create-launch -- <configId> <name> <symbol> <metadataURI> [decimals] The config decides the curve, the fees and what happens at graduation; this only names the token. Read the config first with `launch:get-config`, because once a launch is created it follows that config for its whole life.
launch:claim-feeslaunchClaim the selected fee asset accrued to you as creator or partner. For WETH-denominated launch fees pass WETH, not the launched base token. npm run launch:claim-fees -- <feeTokenAddress> [recipient] Creator and partner each sign for their own entitlement in the same FeeVault. An optional payout address changes the destination, never the fee beneficiary.
vault:createvaultOpen a yield vault for a token, so deposits can earn without each holder doing anything. npm run vault:create -- <assetToken> [performanceBps] [unlockDays] A vault takes deposits of one token and hands back shares. Whatever the vault earns raises what a share is worth, so a depositor's balance grows without them acting, and without them holding a position they have to manage. ── Where the yield comes from, and why it is not here ──────────────────────── A fresh vault earns nothing. It holds the asset and waits until a strategy is approved for it and added, and only the owner may approve one. That separation is the point: creating a vault is permissionless, but pointing depositors' money at a strategy is not. So this creates an empty vault, which is a real thing to do and the only thing that is yours to do without governance. ── The two numbers ─────────────────────────────────────────────────────────── `performanceBps` is the vault's cut of the yield, not of the deposit. It is taken from the increase, so a vault that earns nothing charges nothing. `unlockDays` is what stops a share price jumping. Realised profit is released into the share price gradually over that window rather than all at once. Paid out instantly, anyone who deposited a block earlier would take a share of gains earned before they arrived, and anyone watching could time exactly that. ───────────────────────────────────────────────────────────────────────────────
vault:depositvaultCheck the source for arguments and transaction requirements.
vault:genesisvaultCheck the source for arguments and transaction requirements.
vault:genesis-depositvaultCheck the source for arguments and transaction requirements.
routing:quoteroutingnpm run routing:quote -- <almm|concentrated|compounding|dbc> <pool> <tokenIn> <tokenOut> <amountInRaw> <recipient>
routing:auto-route-statusroutingRead-only explicit GIWA auto-route generation check. It does not change the default deployment.
integration:quoteintegrationsnpm run integration:quote -- <concentrated|compounding> <pool> <tokenIn> <amountInRaw> <recipient>
portable:curveportablenpm run portable:curve -- [path/to/economics.json] — offline, no deployment or wallet.
launch:graduatelaunchFinish a V4 launch curve and execute its separate permissionless Graduation. AMMORA_GRADUATION_CONFIRM=1 npm run launch:graduate -- <curve> <quoteInputRaw> The input is a maximum, not a promise to spend it all. At the terminal quote-to-base boundary the curve consumes only what remains fillable and returns `amountLeft` to the payer. A second transaction calls `migrate()`; applications normally enqueue that permissionless step in a migrator rather than ask the trading user for another signature.
launch:preview-configlaunchnpm run launch:preview-config -- <templateId> <saleSupplyRaw> <quoteThresholdRaw> <configOwner>
launch:quotelaunchnpm run launch:quote -- <curve> [buy|sell <amountInRaw>]
launch:fee-sharinglaunchRead a Config's fee policy, beneficiaries and illustrative splits. No key required. npm run launch:fee-sharing -- <configId> [beneficiary] FeeVault claimable is keyed by fee asset (usually quote/WETH), not launch identity.
launch:migration-positionslaunchResolve all Graduation NFTs, including rounding dust, from one canonical receipt. npm run launch:migration-positions -- <curve> <migrationHash>
launch:team-configlaunchnpm run launch:team-config -- preview|create <policy.json> <saleSupplyRaw> <quoteThresholdRaw> [reviewHash]
launch:fundinglaunchRead only. npm run launch:funding -- <configId> <wallet> [humanNativeToWrap]
routing:policyroutingnpm run routing:policy -- [newPoolWindowSeconds=1036800] [blockTimeSeconds=2] [model=venue:demo]
venues:quote-mathvenuesnpm run venues:quote-math -- [synthetic-fixture.json]
partner:catalogpartnerCheck the source for arguments and transaction requirements.
partner:onboardingpartnerCheck the source for arguments and transaction requirements.
partner:quotepartnerCheck the source for arguments and transaction requirements.
partner:claimspartnerCheck the source for arguments and transaction requirements.
partner:reconcilepartnerCheck the source for arguments and transaction requirements.
almm:remove-liquidityalmmalmm:remove-liquidity -- <pool> <managerNftId> <shareBps>; default unsigned preview, AMMORA_ACCOUNT is required.
almm:close-empty-positionalmmalmm:close-empty-position -- <pool> <managerNftId>; default unsigned preview, AMMORA_ACCOUNT is required.
almm:claim-position-feesalmmalmm:claim-position-fees -- <pool> <managerNftId>; default unsigned preview, AMMORA_ACCOUNT is required.
almm:position-delegatealmmALMM delegation can grant principal rights: choose the exact permission, never copy ARL fee-only masks.
arl:add-compounding-liquidityarlarl:add-compounding-liquidity -- <pool> <maximumBaseRaw> <maximumQuoteRaw>; default unsigned preview, AMMORA_ACCOUNT is required.
arl:remove-compounding-liquidityarlarl:remove-compounding-liquidity -- <pool> <tokenId> <liquidityRaw>; default unsigned preview, AMMORA_ACCOUNT is required.
arl:claim-compounding-feesarlarl:claim-compounding-fees -- <pool> <tokenId>; default unsigned preview, AMMORA_ACCOUNT is required.
arl:merge-positionsarlarl:merge-positions -- <pool> <destinationNftId> <sourceNftId>; default unsigned preview, AMMORA_ACCOUNT is required.
arl:refresh-vestingarlarl:refresh-vesting -- <pool> <managerNftId>; default unsigned preview, AMMORA_ACCOUNT is required.
arl:claim-position-rewardarlarl:claim-position-reward -- <pool> <managerNftId> <rewardIndex>; default unsigned preview, AMMORA_ACCOUNT is required.
vault:redeemvaultvault:redeem -- <vault> <sharesRaw> <minimumAssetsRaw> <maximumStrategies>; default unsigned preview, AMMORA_ACCOUNT is required.
vault:request-redeemvaultvault:request-redeem -- <vault> <sharesRaw> <minimumAssetsRaw>; default unsigned preview, AMMORA_ACCOUNT is required.
vault:cancel-withdrawalvaultvault:cancel-withdrawal -- <vault> <requestId>; default unsigned preview, AMMORA_ACCOUNT is required.
vault:process-withdrawalvaultvault:process-withdrawal -- <vault> <requestId> <maximumStrategies>; default unsigned preview, AMMORA_ACCOUNT is required.
vault:lower-withdrawal-minimumvaultvault:lower-withdrawal-minimum -- <vault> <requestId> <newMinimumRaw>; default unsigned preview, AMMORA_ACCOUNT is required.
vault:genesis-withdrawvaultvault:genesis-withdraw -- <vault> <quoteAmountRaw>; default unsigned preview, AMMORA_ACCOUNT is required.
vault:genesis-claim-basevaultvault:genesis-claim-base -- <vault>; default unsigned preview, AMMORA_ACCOUNT is required.
vault:genesis-refundvaultvault:genesis-refund -- <vault>; default unsigned preview, AMMORA_ACCOUNT is required.
vault:genesis-early-refundvaultvault:genesis-early-refund -- <vault>; default unsigned preview, AMMORA_ACCOUNT is required.
vault:genesis-close-escrowvaultvault:genesis-close-escrow -- <vault>; default unsigned preview, AMMORA_ACCOUNT is required.
staking:stakestakingstaking:stake -- <vault> <amountRaw>; default unsigned preview, AMMORA_ACCOUNT is required.
staking:claimstakingstaking:claim -- <vault>; default unsigned preview, AMMORA_ACCOUNT is required.
staking:request-unstakestakingstaking:request-unstake -- <vault> <amountRaw>; default unsigned preview, AMMORA_ACCOUNT is required.
staking:cancel-unstakestakingstaking:cancel-unstake -- <vault> <requestId>; default unsigned preview, AMMORA_ACCOUNT is required.
staking:withdraw-unstakestakingstaking:withdraw-unstake -- <vault> <requestId>; default unsigned preview, AMMORA_ACCOUNT is required.
staking:stake-v2stakingstaking:stake-v2 -- <vaultV2> <amountRaw>; default unsigned preview, AMMORA_ACCOUNT is required.
staking:claim-v2stakingstaking:claim-v2 -- <vaultV2> <maximumQuoteFeeRaw>; default unsigned preview, AMMORA_ACCOUNT is required.
token-lock:claimtoken-locktoken-lock:claim -- <lock> <maximumAmountRaw>; default unsigned preview, AMMORA_ACCOUNT is required.
merkle:claim-lockedmerklemerkle:claim-locked -- <distributor>; default unsigned preview, AMMORA_ACCOUNT is required.
presale:create-escrowpresalepresale:create-escrow -- <presale>; default unsigned preview, AMMORA_ACCOUNT is required.
presale:depositpresalepresale:deposit -- <presale> <maximumQuoteRaw>; default unsigned preview, AMMORA_ACCOUNT is required.
presale:withdrawpresalepresale:withdraw -- <presale> <maximumQuoteRaw>; default unsigned preview, AMMORA_ACCOUNT is required.
presale:claimpresalepresale:claim -- <presale>; default unsigned preview, AMMORA_ACCOUNT is required.
arl:add-to-positionarlnpm run arl:add-to-position -- <pool> <tokenId> <maxBaseRaw> <maxQuoteRaw>. Default: unsigned preview; see docs/CONTRACT-FEATURES.md.
arl:remove-position-liquidityarlnpm run arl:remove-position-liquidity -- <pool> <tokenId> <liquidityRaw>. Default: unsigned preview; see docs/CONTRACT-FEATURES.md.
arl:remove-all-position-liquidityarlnpm run arl:remove-all-position-liquidity -- <pool> <tokenId>. Default: unsigned preview; see docs/CONTRACT-FEATURES.md.
almm:swap-exact-outputalmmnpm run almm:swap-exact-output -- <pool> <amountOutRaw> <sell-base|sell-quote>. Default: unsigned preview; see docs/CONTRACT-FEATURES.md.
arl:swap-exact-outputarlnpm run arl:swap-exact-output -- <pool> <amountOutRaw> <tokenOut>. Default: unsigned preview; see docs/CONTRACT-FEATURES.md.
almm:claim-referralalmmnpm run almm:claim-referral -- <pool> <token>. Default: unsigned preview; see docs/CONTRACT-FEATURES.md.
staking:request-unstake-v2stakingnpm run staking:request-unstake-v2 -- <vault> <amountRaw>. Default: unsigned preview; see docs/CONTRACT-FEATURES.md.
staking:cancel-unstake-v2stakingnpm run staking:cancel-unstake-v2 -- <vault> <requestId>. Default: unsigned preview; see docs/CONTRACT-FEATURES.md.
staking:withdraw-unstake-v2stakingnpm run staking:withdraw-unstake-v2 -- <vault> <requestId>. Default: unsigned preview; see docs/CONTRACT-FEATURES.md.
dfs:statedfsnpm run dfs:state -- <vault>. Default: unsigned preview; see docs/CONTRACT-FEATURES.md.
dfs:funddfsnpm run dfs:fund -- <vault> <maxAmountRaw>. Default: unsigned preview; see docs/CONTRACT-FEATURES.md.
dfs:claimdfsnpm run dfs:claim -- <vault> <recipientIndex> [payoutAddress]. Default: unsigned preview; see docs/CONTRACT-FEATURES.md.
dfs:fund-fee-vaultdfsnpm run dfs:fund-fee-vault -- <vault> <feeVault>. Default: unsigned preview; see docs/CONTRACT-FEATURES.md.
dfs:delegated-funding-preflightdfsnpm run dfs:delegated-funding-preflight -- <vault> <feeVault> <beneficiary>. Default: unsigned preview; see docs/CONTRACT-FEATURES.md.
dfs:createdfsnpm run dfs:create -- <token> <base> <recipientA> <shareA> <recipientB> <shareB> <salt32>. Default: unsigned preview; see docs/CONTRACT-FEATURES.md.
revenue:almm-referralrevenuenpm run revenue:almm-referral -- <pool> <token>. Default: unsigned preview; see docs/CONTRACT-FEATURES.md.
revenue:arl-revenuerevenuenpm run revenue:arl-revenue -- <pool> <token>. Default: unsigned preview; see docs/CONTRACT-FEATURES.md.
arl-v5:inspectarl-v5Read actual V5 state with a deployment-team-reviewed manifest; never substitute V4 addresses.
partner:graduation-statepartnerSeparate from offline partner fixtures: authenticate the reviewed deployment and read chain state.
partner:pool-statepartnerDirect partner V5 state; catalog/provenance and aggregation eligibility remain separate.
portable:discover-poolportableVerify raw custom deployment pins before constructing a portable planning context.
merkle:claimmerkleFirst claim requires the distributor's independently obtained Merkle proof.
launch:claim-surpluslaunchSDK-authenticated creator/partner recovery; unsigned by default.
launch:withdraw-leftoverlaunchSDK-authenticated creator/partner recovery; unsigned by default.
launch:claim-partner-creation-feelaunchSDK-authenticated creator/partner recovery; unsigned by default.
portable:gas-budgetportableRead ETH and quote balance at one confirmed block; print a budget without signing.
portable:claim-sourceportableA source-specific positive FeeVault claim with independent ETH/WETH gas budgeting.
launch:config-jsonlaunchlaunch:config-json -- preview|create <full-config.json> [reviewHash]
launch:migratelaunchlaunch:migrate -- <curve>; migration only, no buy/approval. Default unsigned preview.
arl:vest-positionarlarl:vest-position -- <pool> <managerNftId> <cliffPoint> <periodFrequency> <numberOfPeriod> <cliffLiquidity> <liquidityPerPeriod>. Default unsigned preview.
arl:create-positionarlarl:create-position -- <pool> <maxBaseRaw> <maxQuoteRaw> [recipient] [deadlineUnix]. Creates a NEW unlocked managed NFT; no existing LP is touched.
launch:author-configlaunchlaunch:author-config -- <templateId> <saleSupplyRaw> <quoteThresholdRaw> concentrated|compounding > full-config.json; read only.
launch:config-enabledlaunchlaunch:config-enabled -- <configId> true|false. Only the Config owner; existing launches retain their immutable Config.
launch:creator-metadatalaunchlaunch:creator-metadata -- <curve> <metadataURI>. Only the recorded launch creator.
arl:partial-swaparlarl:partial-swap -- <pool> <tokenIn> <maximumInputRaw>. Explicit partial-fill opt-in.
arl:zap-inarlarl:zap-in -- <pool> <concentrated|compounding> <tokenIn> <inputRaw> <swapRaw>. New position; no permanent lock.
arl:resolve-added-positionarlarl:resolve-added-position -- <pool> <concentrated|compounding> <txHash>. Canonical receipt read only.
arl:add-to-direct-positionarlarl:add-to-direct-position -- <pool> <kind> <poolNftId> <maximumBaseRaw> <maximumQuoteRaw>. Not a managed NFT ID.
arl:claim-compounding-rewardarlarl:claim-compounding-reward -- <pool> <poolNftId> <slot:0|1> [recipient].
arl:split-direct-positionarlarl:split-direct-position -- <pool> <kind> <poolNftId> <liquidityRaw>. Owner-only split to self.
arl:close-direct-positionarlarl:close-direct-position -- <concentratedPool> <emptyPoolNftId>. Compounding burns on full removal.
arl:merge-compounding-positionsarlarl:merge-compounding-positions -- <pool> <destinationPoolNftId> <sourcePoolNftId>. Both owners and locks must match.
arl:lock-compounding-positionarlarl:lock-compounding-position -- <pool> <poolNftId> <futureReleasePoint>. Time/block units follow pool activationType.
arl:wrap-direct-positionarlarl:wrap-direct-position -- <pool> <poolNftId>. Grants approval only for this NFT, then wraps to self.
arl:prepare-single-side-poolarlarl:prepare-single-side-pool -- <baseToken> <quoteToken> <base|quote> <amountRaw> <sqrtMinQ64> <sqrtMaxQ64> <salt32>. Read-only; no permanent-lock assumption.
launch:transfer-creatorlaunchlaunch:transfer-creator -- <curve> <newCreator>. Only before migration; future authority moves immediately.
portable:curve-exact-outputportableportable:curve-exact-output -- <deployment.json> <targets.json> <curve> <buy|sell> <outputRaw> <maximumInputRaw> <maxFeePerGasWei> [deadlineUnix].
portable:atomic-first-buyportableportable:atomic-first-buy -- <deployment> <targets> <templateId> <saleRaw> <thresholdRaw> <name> <symbol> <uri> <quoteRaw> <minimumBaseRaw> <maxFeeWei> [deadlineUnix].
portable:existing-config-first-buyportableportable:existing-config-first-buy -- <deployment> <targets> <configId> <expectedConfigHash> <name> <symbol> <uri> <decimals> <quoteRaw> <minimumBaseRaw> <maxFeeWei> [deadlineUnix].
arl:add-direct-liquidityarlarl:add-direct-liquidity -- <pool> <kind> <maximumBaseRaw> <maximumQuoteRaw> [deadlineUnix]. New unlocked pool NFT, separate from managed positions.
arl:remove-direct-liquidityarlarl:remove-direct-liquidity -- <pool> <kind> <poolNftId> <liquidityRaw> [deadlineUnix]. Does not unlock or unwrap managed positions.
launch:create-config-and-first-buylaunchlaunch:create-config-and-first-buy -- <deployment> <targets> <policy.json> <saleRaw> <thresholdRaw> <name> <symbol> <uri> <quoteRaw> <minBaseRaw> <maxFeeWei> <deadlineUnix> [reviewHash]
launch:create-config-and-pool-with-first-buylaunchlaunch:create-config-and-pool-with-first-buy -- <policy.json> <saleRaw> <thresholdRaw> <name> <symbol> <uri> <quoteRaw> <minBaseRaw> <maxFeeWei> <deadlineUnix> [reviewHash]
launch:fee-configlaunchlaunch:fee-config -- preview|document <fees.json> <saleSupplyRaw> <quoteThresholdRaw> Both modes only read. Pass the generated document to launch:config-json to create.
dfs:create-jsondfsdfs:create-json -- preview <sharing.json> OR create <sharing.json> <reviewHash>
fees:verify-claimfeesnpm run fees:verify-claim -- <launch|dfs> <hash> <vault> <token> <beneficiary> <payout> [index] Read-only, including when AMMORA_SEND=1. Never loads a signer or constructs a new transaction. This command covers direct beneficiary claims; use the LP verifier for LP/delegate receipts.
fees:delegatefeesfees:delegate -- <feeVault> <delegate> <allow|revoke>. Beneficiary signs; does not change LP permissions.
fees:claim-delegatedfeesfees:claim-delegated -- <feeVault> <token> <beneficiary> <payout>. Default unsigned preview.
fees:batch-claimfeesfees:batch-claim -- <requests.json> [new-progress.json]. Sequential own/delegated claims.
dfs:sourcedfsdfs:source -- <vault> <source.json> <allow|revoke>. Vault owner only; separate from source-side permission.
dfs:fund-sourcedfsdfs:fund-source -- <vault> <source.json>. Preflight reports setup; never automatically grants it.
dfs:position-permissiondfsdfs:position-permission -- <vault> <pool> <concentrated|compounding> <nftId> <fee|reward|revoke>. Exact fee/reward bits only. Concentrated uses Manager NFTs; raw NFT approval is a broader, separate operation.
arl:claim-all-position-feesarlarl:claim-all-position-fees -- <pool> <positions.json> <payout> [new-progress.json]. Concentrated pool/Manager IDs only.
almm:claim-all-position-feesalmmalmm:claim-all-position-fees -- <pool> <id,id> [new-progress.json]. Sequential transactions.
almm:rebalancealmmalmm:rebalance -- <pool> <rebalance.json>. Default unsigned preview; integer raw units.
fees:operator-batch-claimfeesfees:operator-batch-claim -- <feeVault> <requests.json>. Existing owner/operator only; pays beneficiaries themselves.
dfs:register-source-tokendfsdfs:register-source-token -- <pool> <concentrated|compounding> <token> <probeRaw>. Normal permissionless exact-transfer probe in the authenticated pool factory's registry. Never changes an owner policy, registrar role, or aggregation admission.
stablecoin:inspectstablecoinCheck the source for arguments and transaction requirements.
stablecoin:policystablecoinCheck the source for arguments and transaction requirements.
stablecoin:plan-liquiditystablecoinCheck the source for arguments and transaction requirements.
stablecoin:probestablecoinprobe: SDK planner, unsigned by default. See STABLECOIN-PARTNER.md.
stablecoin:arl:createstablecoincreate-arl: SDK planner, unsigned by default. See STABLECOIN-PARTNER.md.
stablecoin:almm:createstablecoincreate-almm: SDK planner, unsigned by default. See STABLECOIN-PARTNER.md.
stablecoin:almm:seedstablecoinseed-almm: SDK planner, unsigned by default. See STABLECOIN-PARTNER.md.
stablecoin:lp:addstablecoinadd: SDK planner, unsigned by default. See STABLECOIN-PARTNER.md.
stablecoin:lp:removestablecoinremove: SDK planner, unsigned by default. See STABLECOIN-PARTNER.md.
stablecoin:quotestablecoinCheck the source for arguments and transaction requirements.
stablecoin:swapstablecoinswap: SDK planner, unsigned by default. See STABLECOIN-PARTNER.md.
stablecoin:positionstablecoinCheck the source for arguments and transaction requirements.
stablecoin:fee-delegatestablecoinfee-delegate: SDK planner, unsigned by default. See STABLECOIN-PARTNER.md.
stablecoin:claim-lp-feesstablecoinclaim-lp-fees: SDK planner, unsigned by default. See STABLECOIN-PARTNER.md.
stablecoin:almm:closestablecoinclose-almm: SDK planner, unsigned by default. See STABLECOIN-PARTNER.md.
stablecoin:riskstablecoinCheck the source for arguments and transaction requirements.
stablecoin:executestablecoinCheck the source for arguments and transaction requirements.
stablecoin:reconcilestablecoinCheck the source for arguments and transaction requirements.
stablecoin:check-almm-presetstablecoinCheck the source for arguments and transaction requirements.
stablecoin:create-almm-presetstablecoinCheck the source for arguments and transaction requirements.
stablecoin:check-almm-positionstablecoinCheck the source for arguments and transaction requirements.
stablecoin:almm:discoverstablecoinCheck the source for arguments and transaction requirements.
launch:vesting-configvestingOffline raw-unit allocation; merge config into an explicitly authored complete launch policy.
launch:vesting-from-graduationvestingCheck the source for arguments and transaction requirements.
token-lock:inspectvestingCheck the source for arguments and transaction requirements.
token-lock:createvestingCheck the source for arguments and transaction requirements.
token-lock:claim-verifiedvestingCheck the source for arguments and transaction requirements.
All 29 detailed guides
- Low-fee ALMM presets — public SDK 0.3.8
- Stablecoin partners: start with one ALMM model
- From recipients to fee claims — SDK 0.3.8
- Build a launchpad with SDK 0.3.8
- Partner quickstart — Ammora SDK 0.3.8
- Stablecoin issuers: choosing an integration path
- GIWA-native stablecoin partner integration guide
- Stablecoin partner quickstart — GIWA
- Token vesting examples — SDK 0.3.8
- Contract feature examples — published SDK 0.3.8
- ALMM operations — public SDK 0.3.8
- Optional ARL operations: direct positions and managed NFTs
- ARL: post-graduation swaps and LP management
- DFS / AFS multi-recipient fees
- FeeVault delegation and batch claims — SDK 0.3.8
- Lightweight external integration
- Transfer Creator authority
- Build a launchpad with SDK 0.3.8
- Configure your team's recipients
- SDK 0.3.4 partner examples
- Portable contract examples with SDK 0.3.8
- Ammora copy-and-run quick starts
- Read-only routes
- GIWA native issuer partner examples
- SDK 0.3.0 venue integration
- Verified token vesting examples
- SDK quickstart
- Run the examples locally
- Integrate your stablecoin with Ammora
The ALMM unified extension has a separate plan/execute walkthrough. Source manifest · Revision a9b3fd798fa5. Each guide records its own validation scope.