UNPKG

@mercurial-finance/dynamic-amm-sdk

Version:

Mercurial Vaults SDK is a typescript library that allows you to interact with Mercurial v2's AMM.

1,420 lines 148 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.IDL = void 0; exports.IDL = { "version": "0.5.2", "name": "amm", "docs": [ "Program for AMM" ], "instructions": [ { "name": "initializePermissionedPool", "docs": [ "Initialize a new permissioned pool." ], "accounts": [ { "name": "pool", "isMut": true, "isSigner": true, "docs": [ "Pool account (arbitrary address)" ] }, { "name": "lpMint", "isMut": true, "isSigner": false, "docs": [ "LP token mint of the pool" ] }, { "name": "tokenAMint", "isMut": false, "isSigner": false, "docs": [ "Token A mint of the pool. Eg: USDT" ] }, { "name": "tokenBMint", "isMut": false, "isSigner": false, "docs": [ "Token B mint of the pool. Eg: USDC" ] }, { "name": "aVault", "isMut": true, "isSigner": false, "docs": [ "Vault account for token A. Token A of the pool will be deposit / withdraw from this vault account." ] }, { "name": "bVault", "isMut": true, "isSigner": false, "docs": [ "Vault account for token B. Token B of the pool will be deposit / withdraw from this vault account." ] }, { "name": "aVaultLpMint", "isMut": true, "isSigner": false, "docs": [ "LP token mint of vault A" ] }, { "name": "bVaultLpMint", "isMut": true, "isSigner": false, "docs": [ "LP token mint of vault B" ] }, { "name": "aVaultLp", "isMut": true, "isSigner": false, "docs": [ "LP token account of vault A. Used to receive/burn the vault LP upon deposit/withdraw from the vault." ] }, { "name": "bVaultLp", "isMut": true, "isSigner": false, "docs": [ "LP token account of vault B. Used to receive/burn vault LP upon deposit/withdraw from the vault." ] }, { "name": "adminTokenA", "isMut": true, "isSigner": false, "docs": [ "Admin token account for pool token A mint. Used to bootstrap the pool with initial liquidity." ] }, { "name": "adminTokenB", "isMut": true, "isSigner": false, "docs": [ "Admin token account for pool token B mint. Used to bootstrap the pool with initial liquidity." ] }, { "name": "adminPoolLp", "isMut": true, "isSigner": false, "docs": [ "Admin pool LP token account. Used to receive LP during first deposit (initialize pool)", "Admin pool LP token account. Used to receive LP during first deposit (initialize pool)" ] }, { "name": "protocolTokenAFee", "isMut": true, "isSigner": false, "docs": [ "Protocol fee token account for token A. Used to receive trading fee." ] }, { "name": "protocolTokenBFee", "isMut": true, "isSigner": false, "docs": [ "Protocol fee token account for token B. Used to receive trading fee." ] }, { "name": "admin", "isMut": true, "isSigner": true, "docs": [ "Admin account. This account will be the admin of the pool, and the payer for PDA during initialize pool." ] }, { "name": "feeOwner", "isMut": false, "isSigner": false }, { "name": "rent", "isMut": false, "isSigner": false, "docs": [ "Rent account." ] }, { "name": "mintMetadata", "isMut": true, "isSigner": false }, { "name": "metadataProgram", "isMut": false, "isSigner": false }, { "name": "vaultProgram", "isMut": false, "isSigner": false, "docs": [ "Vault program. The pool will deposit/withdraw liquidity from the vault." ] }, { "name": "tokenProgram", "isMut": false, "isSigner": false, "docs": [ "Token program." ] }, { "name": "associatedTokenProgram", "isMut": false, "isSigner": false, "docs": [ "Associated token program." ] }, { "name": "systemProgram", "isMut": false, "isSigner": false, "docs": [ "System program." ] } ], "args": [ { "name": "curveType", "type": { "defined": "CurveType" } } ] }, { "name": "initializePermissionlessPool", "docs": [ "Initialize a new permissionless pool." ], "accounts": [ { "name": "pool", "isMut": true, "isSigner": false, "docs": [ "Pool account (PDA address)" ] }, { "name": "lpMint", "isMut": true, "isSigner": false, "docs": [ "LP token mint of the pool" ] }, { "name": "tokenAMint", "isMut": false, "isSigner": false, "docs": [ "Token A mint of the pool. Eg: USDT" ] }, { "name": "tokenBMint", "isMut": false, "isSigner": false, "docs": [ "Token B mint of the pool. Eg: USDC" ] }, { "name": "aVault", "isMut": true, "isSigner": false, "docs": [ "Vault account for token A. Token A of the pool will be deposit / withdraw from this vault account." ] }, { "name": "bVault", "isMut": true, "isSigner": false, "docs": [ "Vault account for token B. Token B of the pool will be deposit / withdraw from this vault account." ] }, { "name": "aTokenVault", "isMut": true, "isSigner": false, "docs": [ "Token vault account of vault A" ] }, { "name": "bTokenVault", "isMut": true, "isSigner": false, "docs": [ "Token vault account of vault B" ] }, { "name": "aVaultLpMint", "isMut": true, "isSigner": false, "docs": [ "LP token mint of vault A" ] }, { "name": "bVaultLpMint", "isMut": true, "isSigner": false, "docs": [ "LP token mint of vault B" ] }, { "name": "aVaultLp", "isMut": true, "isSigner": false, "docs": [ "LP token account of vault A. Used to receive/burn the vault LP upon deposit/withdraw from the vault." ] }, { "name": "bVaultLp", "isMut": true, "isSigner": false, "docs": [ "LP token account of vault B. Used to receive/burn vault LP upon deposit/withdraw from the vault." ] }, { "name": "payerTokenA", "isMut": true, "isSigner": false, "docs": [ "Payer token account for pool token A mint. Used to bootstrap the pool with initial liquidity." ] }, { "name": "payerTokenB", "isMut": true, "isSigner": false, "docs": [ "Admin token account for pool token B mint. Used to bootstrap the pool with initial liquidity." ] }, { "name": "payerPoolLp", "isMut": true, "isSigner": false }, { "name": "protocolTokenAFee", "isMut": true, "isSigner": false, "docs": [ "Protocol fee token account for token A. Used to receive trading fee." ] }, { "name": "protocolTokenBFee", "isMut": true, "isSigner": false, "docs": [ "Protocol fee token account for token B. Used to receive trading fee." ] }, { "name": "payer", "isMut": true, "isSigner": true, "docs": [ "Admin account. This account will be the admin of the pool, and the payer for PDA during initialize pool." ] }, { "name": "feeOwner", "isMut": false, "isSigner": false }, { "name": "rent", "isMut": false, "isSigner": false, "docs": [ "Rent account." ] }, { "name": "mintMetadata", "isMut": true, "isSigner": false }, { "name": "metadataProgram", "isMut": false, "isSigner": false }, { "name": "vaultProgram", "isMut": false, "isSigner": false, "docs": [ "Vault program. The pool will deposit/withdraw liquidity from the vault." ] }, { "name": "tokenProgram", "isMut": false, "isSigner": false, "docs": [ "Token program." ] }, { "name": "associatedTokenProgram", "isMut": false, "isSigner": false, "docs": [ "Associated token program." ] }, { "name": "systemProgram", "isMut": false, "isSigner": false, "docs": [ "System program." ] } ], "args": [ { "name": "curveType", "type": { "defined": "CurveType" } }, { "name": "tokenAAmount", "type": "u64" }, { "name": "tokenBAmount", "type": "u64" } ] }, { "name": "initializePermissionlessPoolWithFeeTier", "docs": [ "Initialize a new permissionless pool with customized fee tier" ], "accounts": [ { "name": "pool", "isMut": true, "isSigner": false, "docs": [ "Pool account (PDA address)" ] }, { "name": "lpMint", "isMut": true, "isSigner": false, "docs": [ "LP token mint of the pool" ] }, { "name": "tokenAMint", "isMut": false, "isSigner": false, "docs": [ "Token A mint of the pool. Eg: USDT" ] }, { "name": "tokenBMint", "isMut": false, "isSigner": false, "docs": [ "Token B mint of the pool. Eg: USDC" ] }, { "name": "aVault", "isMut": true, "isSigner": false, "docs": [ "Vault account for token A. Token A of the pool will be deposit / withdraw from this vault account." ] }, { "name": "bVault", "isMut": true, "isSigner": false, "docs": [ "Vault account for token B. Token B of the pool will be deposit / withdraw from this vault account." ] }, { "name": "aTokenVault", "isMut": true, "isSigner": false, "docs": [ "Token vault account of vault A" ] }, { "name": "bTokenVault", "isMut": true, "isSigner": false, "docs": [ "Token vault account of vault B" ] }, { "name": "aVaultLpMint", "isMut": true, "isSigner": false, "docs": [ "LP token mint of vault A" ] }, { "name": "bVaultLpMint", "isMut": true, "isSigner": false, "docs": [ "LP token mint of vault B" ] }, { "name": "aVaultLp", "isMut": true, "isSigner": false, "docs": [ "LP token account of vault A. Used to receive/burn the vault LP upon deposit/withdraw from the vault." ] }, { "name": "bVaultLp", "isMut": true, "isSigner": false, "docs": [ "LP token account of vault B. Used to receive/burn vault LP upon deposit/withdraw from the vault." ] }, { "name": "payerTokenA", "isMut": true, "isSigner": false, "docs": [ "Payer token account for pool token A mint. Used to bootstrap the pool with initial liquidity." ] }, { "name": "payerTokenB", "isMut": true, "isSigner": false, "docs": [ "Admin token account for pool token B mint. Used to bootstrap the pool with initial liquidity." ] }, { "name": "payerPoolLp", "isMut": true, "isSigner": false }, { "name": "protocolTokenAFee", "isMut": true, "isSigner": false, "docs": [ "Protocol fee token account for token A. Used to receive trading fee." ] }, { "name": "protocolTokenBFee", "isMut": true, "isSigner": false, "docs": [ "Protocol fee token account for token B. Used to receive trading fee." ] }, { "name": "payer", "isMut": true, "isSigner": true, "docs": [ "Admin account. This account will be the admin of the pool, and the payer for PDA during initialize pool." ] }, { "name": "feeOwner", "isMut": false, "isSigner": false }, { "name": "rent", "isMut": false, "isSigner": false, "docs": [ "Rent account." ] }, { "name": "mintMetadata", "isMut": true, "isSigner": false }, { "name": "metadataProgram", "isMut": false, "isSigner": false }, { "name": "vaultProgram", "isMut": false, "isSigner": false, "docs": [ "Vault program. The pool will deposit/withdraw liquidity from the vault." ] }, { "name": "tokenProgram", "isMut": false, "isSigner": false, "docs": [ "Token program." ] }, { "name": "associatedTokenProgram", "isMut": false, "isSigner": false, "docs": [ "Associated token program." ] }, { "name": "systemProgram", "isMut": false, "isSigner": false, "docs": [ "System program." ] } ], "args": [ { "name": "curveType", "type": { "defined": "CurveType" } }, { "name": "tradeFeeBps", "type": "u64" }, { "name": "tokenAAmount", "type": "u64" }, { "name": "tokenBAmount", "type": "u64" } ] }, { "name": "enableOrDisablePool", "docs": [ "Enable or disable a pool. A disabled pool allow only remove balanced liquidity operation." ], "accounts": [ { "name": "pool", "isMut": true, "isSigner": false, "docs": [ "Pool account (PDA)" ] }, { "name": "admin", "isMut": false, "isSigner": true, "docs": [ "Admin account. Must be owner of the pool." ] } ], "args": [ { "name": "enable", "type": "bool" } ] }, { "name": "swap", "docs": [ "Swap token A to B, or vice versa. An amount of trading fee will be charged for liquidity provider, and the admin of the pool." ], "accounts": [ { "name": "pool", "isMut": true, "isSigner": false, "docs": [ "Pool account (PDA)" ] }, { "name": "userSourceToken", "isMut": true, "isSigner": false, "docs": [ "User token account. Token from this account will be transfer into the vault by the pool in exchange for another token of the pool." ] }, { "name": "userDestinationToken", "isMut": true, "isSigner": false, "docs": [ "User token account. The exchanged token will be transfer into this account from the pool." ] }, { "name": "aVault", "isMut": true, "isSigner": false, "docs": [ "Vault account for token a. token a of the pool will be deposit / withdraw from this vault account." ] }, { "name": "bVault", "isMut": true, "isSigner": false, "docs": [ "Vault account for token b. token b of the pool will be deposit / withdraw from this vault account." ] }, { "name": "aTokenVault", "isMut": true, "isSigner": false, "docs": [ "Token vault account of vault A" ] }, { "name": "bTokenVault", "isMut": true, "isSigner": false, "docs": [ "Token vault account of vault B" ] }, { "name": "aVaultLpMint", "isMut": true, "isSigner": false, "docs": [ "Lp token mint of vault a" ] }, { "name": "bVaultLpMint", "isMut": true, "isSigner": false, "docs": [ "Lp token mint of vault b" ] }, { "name": "aVaultLp", "isMut": true, "isSigner": false, "docs": [ "LP token account of vault A. Used to receive/burn the vault LP upon deposit/withdraw from the vault." ] }, { "name": "bVaultLp", "isMut": true, "isSigner": false, "docs": [ "LP token account of vault B. Used to receive/burn the vault LP upon deposit/withdraw from the vault." ] }, { "name": "protocolTokenFee", "isMut": true, "isSigner": false, "docs": [ "Protocol fee token account. Used to receive trading fee. It's mint field must matched with user_source_token mint field." ] }, { "name": "user", "isMut": false, "isSigner": true, "docs": [ "User account. Must be owner of user_source_token." ] }, { "name": "vaultProgram", "isMut": false, "isSigner": false, "docs": [ "Vault program. the pool will deposit/withdraw liquidity from the vault." ] }, { "name": "tokenProgram", "isMut": false, "isSigner": false, "docs": [ "Token program." ] } ], "args": [ { "name": "inAmount", "type": "u64" }, { "name": "minimumOutAmount", "type": "u64" } ] }, { "name": "removeLiquiditySingleSide", "docs": [ "Withdraw only single token from the pool. Only supported by pool with stable swap curve." ], "accounts": [ { "name": "pool", "isMut": true, "isSigner": false, "docs": [ "Pool account (PDA)" ] }, { "name": "lpMint", "isMut": true, "isSigner": false, "docs": [ "LP token mint of the pool" ] }, { "name": "userPoolLp", "isMut": true, "isSigner": false, "docs": [ "User pool lp token account. LP will be burned from this account upon success liquidity removal." ] }, { "name": "aVaultLp", "isMut": true, "isSigner": false, "docs": [ "LP token account of vault A. Used to receive/burn the vault LP upon deposit/withdraw from the vault." ] }, { "name": "bVaultLp", "isMut": true, "isSigner": false, "docs": [ "LP token account of vault B. Used to receive/burn the vault LP upon deposit/withdraw from the vault." ] }, { "name": "aVault", "isMut": true, "isSigner": false, "docs": [ "Vault account for token A. Token A of the pool will be deposit / withdraw from this vault account." ] }, { "name": "bVault", "isMut": true, "isSigner": false, "docs": [ "Vault account for token B. Token B of the pool will be deposit / withdraw from this vault account." ] }, { "name": "aVaultLpMint", "isMut": true, "isSigner": false, "docs": [ "LP token mint of vault A" ] }, { "name": "bVaultLpMint", "isMut": true, "isSigner": false, "docs": [ "LP token mint of vault B" ] }, { "name": "aTokenVault", "isMut": true, "isSigner": false, "docs": [ "Token vault account of vault A" ] }, { "name": "bTokenVault", "isMut": true, "isSigner": false, "docs": [ "Token vault account of vault B" ] }, { "name": "userDestinationToken", "isMut": true, "isSigner": false, "docs": [ "User token account to receive token upon success liquidity removal." ] }, { "name": "user", "isMut": false, "isSigner": true, "docs": [ "User account. Must be owner of the user_pool_lp account." ] }, { "name": "vaultProgram", "isMut": false, "isSigner": false, "docs": [ "Vault program. The pool will deposit/withdraw liquidity from the vault." ] }, { "name": "tokenProgram", "isMut": false, "isSigner": false, "docs": [ "Token program." ] } ], "args": [ { "name": "poolTokenAmount", "type": "u64" }, { "name": "minimumOutAmount", "type": "u64" } ] }, { "name": "addImbalanceLiquidity", "docs": [ "Deposit tokens to the pool in an imbalance ratio. Only supported by pool with stable swap curve." ], "accounts": [ { "name": "pool", "isMut": true, "isSigner": false, "docs": [ "Pool account (PDA)" ] }, { "name": "lpMint", "isMut": true, "isSigner": false, "docs": [ "LP token mint of the pool" ] }, { "name": "userPoolLp", "isMut": true, "isSigner": false, "docs": [ "user pool lp token account. lp will be burned from this account upon success liquidity removal." ] }, { "name": "aVaultLp", "isMut": true, "isSigner": false, "docs": [ "LP token account of vault A. Used to receive/burn the vault LP upon deposit/withdraw from the vault." ] }, { "name": "bVaultLp", "isMut": true, "isSigner": false, "docs": [ "LP token account of vault B. Used to receive/burn the vault LP upon deposit/withdraw from the vault." ] }, { "name": "aVault", "isMut": true, "isSigner": false, "docs": [ "Vault account for token a. token a of the pool will be deposit / withdraw from this vault account." ] }, { "name": "bVault", "isMut": true, "isSigner": false, "docs": [ "Vault account for token b. token b of the pool will be deposit / withdraw from this vault account." ] }, { "name": "aVaultLpMint", "isMut": true, "isSigner": false, "docs": [ "LP token mint of vault a" ] }, { "name": "bVaultLpMint", "isMut": true, "isSigner": false, "docs": [ "LP token mint of vault b" ] }, { "name": "aTokenVault", "isMut": true, "isSigner": false, "docs": [ "Token vault account of vault A" ] }, { "name": "bTokenVault", "isMut": true, "isSigner": false, "docs": [ "Token vault account of vault B" ] }, { "name": "userAToken", "isMut": true, "isSigner": false, "docs": [ "User token A account. Token will be transfer from this account if it is add liquidity operation. Else, token will be transfer into this account." ] }, { "name": "userBToken", "isMut": true, "isSigner": false, "docs": [ "User token B account. Token will be transfer from this account if it is add liquidity operation. Else, token will be transfer into this account." ] }, { "name": "user", "isMut": false, "isSigner": true, "docs": [ "User account. Must be owner of user_a_token, and user_b_token." ] }, { "name": "vaultProgram", "isMut": false, "isSigner": false, "docs": [ "Vault program. the pool will deposit/withdraw liquidity from the vault." ] }, { "name": "tokenProgram", "isMut": false, "isSigner": false, "docs": [ "Token program." ] } ], "args": [ { "name": "minimumPoolTokenAmount", "type": "u64" }, { "name": "tokenAAmount", "type": "u64" }, { "name": "tokenBAmount", "type": "u64" } ] }, { "name": "removeBalanceLiquidity", "docs": [ "Withdraw tokens from the pool in a balanced ratio. User will still able to withdraw from pool even the pool is disabled. This allow user to exit their liquidity when there's some unforeseen event happen." ], "accounts": [ { "name": "pool", "isMut": true, "isSigner": false, "docs": [ "Pool account (PDA)" ] }, { "name": "lpMint", "isMut": true, "isSigner": false, "docs": [ "LP token mint of the pool" ] }, { "name": "userPoolLp", "isMut": true, "isSigner": false, "docs": [ "user pool lp token account. lp will be burned from this account upon success liquidity removal." ] }, { "name": "aVaultLp", "isMut": true, "isSigner": false, "docs": [ "LP token account of vault A. Used to receive/burn the vault LP upon deposit/withdraw from the vault." ] }, { "name": "bVaultLp", "isMut": true, "isSigner": false, "docs": [ "LP token account of vault B. Used to receive/burn the vault LP upon deposit/withdraw from the vault." ] }, { "name": "aVault", "isMut": true, "isSigner": false, "docs": [ "Vault account for token a. token a of the pool will be deposit / withdraw from this vault account." ] }, { "name": "bVault", "isMut": true, "isSigner": false, "docs": [ "Vault account for token b. token b of the pool will be deposit / withdraw from this vault account." ] }, { "name": "aVaultLpMint", "isMut": true, "isSigner": false, "docs": [ "LP token mint of vault a" ] }, { "name": "bVaultLpMint", "isMut": true, "isSigner": false, "docs": [ "LP token mint of vault b" ] }, { "name": "aTokenVault", "isMut": true, "isSigner": false, "docs": [ "Token vault account of vault A" ] }, { "name": "bTokenVault", "isMut": true, "isSigner": false, "docs": [ "Token vault account of vault B" ] }, { "name": "userAToken", "isMut": true, "isSigner": false, "docs": [ "User token A account. Token will be transfer from this account if it is add liquidity operation. Else, token will be transfer into this account." ] }, { "name": "userBToken", "isMut": true, "isSigner": false, "docs": [ "User token B account. Token will be transfer from this account if it is add liquidity operation. Else, token will be transfer into this account." ] }, { "name": "user", "isMut": false, "isSigner": true, "docs": [ "User account. Must be owner of user_a_token, and user_b_token." ] }, { "name": "vaultProgram", "isMut": false, "isSigner": false, "docs": [ "Vault program. the pool will deposit/withdraw liquidity from the vault." ] }, { "name": "tokenProgram", "isMut": false, "isSigner": false, "docs": [ "Token program." ] } ], "args": [ { "name": "poolTokenAmount", "type": "u64" }, { "name": "minimumATokenOut", "type": "u64" }, { "name": "minimumBTokenOut", "type": "u64" } ] }, { "name": "addBalanceLiquidity", "docs": [ "Deposit tokens to the pool in a balanced ratio." ], "accounts": [ { "name": "pool", "isMut": true, "isSigner": false, "docs": [ "Pool account (PDA)" ] }, { "name": "lpMint", "isMut": true, "isSigner": false, "docs": [ "LP token mint of the pool" ] }, { "name": "userPoolLp", "isMut": true, "isSigner": false, "docs": [ "user pool lp token account. lp will be burned from this account upon success liquidity removal." ] }, { "name": "aVaultLp", "isMut": true, "isSigner": false, "docs": [ "LP token account of vault A. Used to receive/burn the vault LP upon deposit/withdraw from the vault." ] }, { "name": "bVaultLp", "isMut": true, "isSigner": false, "docs": [ "LP token account of vault B. Used to receive/burn the vault LP upon deposit/withdraw from the vault." ] }, { "name": "aVault", "isMut": true, "isSigner": false, "docs": [ "Vault account for token a. token a of the pool will be deposit / withdraw from this vault account." ] }, { "name": "bVault", "isMut": true, "isSigner": false, "docs": [ "Vault account for token b. token b of the pool will be deposit / withdraw from this vault account." ] }, { "name": "aVaultLpMint", "isMut": true, "isSigner": false, "docs": [ "LP token mint of vault a" ] }, { "name": "bVaultLpMint", "isMut": true, "isSigner": false, "docs": [ "LP token mint of vault b" ] }, { "name": "aTokenVault", "isMut": true, "isSigner": false, "docs": [ "Token vault account of vault A" ] }, { "name": "bTokenVault", "isMut": true, "isSigner": false, "docs": [ "Token vault account of vault B" ] }, { "name": "userAToken", "isMut": true, "isSigner": false, "docs": [ "User token A account. Token will be transfer from this account if it is add liquidity operation. Else, token will be transfer into this account." ] }, { "name": "userBToken", "isMut": true, "isSigner": false, "docs": [ "User token B account. Token will be transfer from this account if it is add liquidity operation. Else, token will be transfer into this account." ] }, { "name": "user", "isMut": false, "isSigner": true, "docs": [ "User account. Must be owner of user_a_token, and user_b_token." ] }, { "name": "vaultProgram", "isMut": false, "isSigner": false, "docs": [ "Vault program. the pool will deposit/withdraw liquidity from the vault." ] }, { "name": "tokenProgram", "isMut": false, "isSigner": false, "docs": [ "Token program." ] } ], "args": [ { "name": "poolTokenAmount", "type": "u64" }, { "name": "maximumTokenAAmount", "type": "u64" }, { "name": "maximumTokenBAmount", "type": "u64" } ] }, { "name": "setPoolFees", "docs": [ "Update trading fee charged for liquidity provider, and admin." ], "accounts": [ { "name": "pool", "isMut": true, "isS