837 lines
26 KiB
JSON
837 lines
26 KiB
JSON
{
|
|
"version": "0.1.1",
|
|
"name": "lifinity_amm_v2",
|
|
"instructions": [
|
|
{
|
|
"name": "swap",
|
|
"accounts": [
|
|
{
|
|
"name": "authority",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "amm",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "userTransferAuthority",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "sourceInfo",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "destinationInfo",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "swapSource",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "swapDestination",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "poolMint",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "feeAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "oracleMainAccount",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "oracleSubAccount",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "oraclePcAccount",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "amountIn",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "minimumAmountOut",
|
|
"type": "u64"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "depositAllTokenTypes",
|
|
"accounts": [
|
|
{
|
|
"name": "amm",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "authority",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "userTransferAuthorityInfo",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "sourceAInfo",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "sourceBInfo",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "tokenA",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "tokenB",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "poolMint",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "destination",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "poolTokenAmount",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "maximumTokenAAmount",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "maximumTokenBAmount",
|
|
"type": "u64"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "withdrawAllTokenTypes",
|
|
"accounts": [
|
|
{
|
|
"name": "amm",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "authority",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "userTransferAuthorityInfo",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "sourceInfo",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "tokenA",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "tokenB",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "poolMint",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "destTokenAInfo",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "destTokenBInfo",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "poolTokenAmount",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "minimumTokenAAmount",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "minimumTokenBAmount",
|
|
"type": "u64"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "Amm",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "initializerKey",
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "initializerDepositTokenAccount",
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "initializerReceiveTokenAccount",
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "initializerAmount",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "takerAmount",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "isInitialized",
|
|
"docs": [
|
|
"Is the swap initialized, with data written to it"
|
|
],
|
|
"type": "bool"
|
|
},
|
|
{
|
|
"name": "bumpSeed",
|
|
"docs": [
|
|
"Bump seed used to generate the program address / authority"
|
|
],
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "freezeTrade",
|
|
"docs": [
|
|
"Freeze swap"
|
|
],
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "freezeDeposit",
|
|
"docs": [
|
|
"Freeze deposit"
|
|
],
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "freezeWithdraw",
|
|
"docs": [
|
|
"Freeze withdraw"
|
|
],
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "baseDecimals",
|
|
"docs": [
|
|
"Base decimals account"
|
|
],
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "tokenProgramId",
|
|
"docs": [
|
|
"Token program ID associated with the swap"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "tokenAAccount",
|
|
"docs": [
|
|
"Address of token A liquidity account"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "tokenBAccount",
|
|
"docs": [
|
|
"Address of token B liquidity account"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "poolMint",
|
|
"docs": [
|
|
"Address of pool token mint"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "tokenAMint",
|
|
"docs": [
|
|
"Address of token A mint"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "tokenBMint",
|
|
"docs": [
|
|
"Address of token B mint"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "feeAccount",
|
|
"docs": [
|
|
"Address of pool fee account"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "oracleMainAccount",
|
|
"docs": [
|
|
"Oracle Main account"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "oracleSubAccount",
|
|
"docs": [
|
|
"Oracle Sub account"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "oraclePcAccount",
|
|
"docs": [
|
|
"oracle Pc account"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "fees",
|
|
"docs": [
|
|
"Fees associated with swap"
|
|
],
|
|
"type": {
|
|
"defined": "AmmFees"
|
|
}
|
|
},
|
|
{
|
|
"name": "curve",
|
|
"docs": [
|
|
"Curve associated with swap"
|
|
],
|
|
"type": {
|
|
"defined": "AmmCurve"
|
|
}
|
|
},
|
|
{
|
|
"name": "config",
|
|
"docs": [
|
|
"Curve associated with swap"
|
|
],
|
|
"type": {
|
|
"defined": "AmmConfig"
|
|
}
|
|
},
|
|
{
|
|
"name": "ammPTemp1",
|
|
"docs": [
|
|
"Temp area"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "ammPTemp2",
|
|
"docs": [
|
|
"Temp area"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "ammPTemp3",
|
|
"docs": [
|
|
"Temp area"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "ammPTemp4",
|
|
"docs": [
|
|
"Temp area"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "ammPTemp5",
|
|
"docs": [
|
|
"Temp area"
|
|
],
|
|
"type": "publicKey"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
],
|
|
"types": [
|
|
{
|
|
"name": "AmmFees",
|
|
"docs": [
|
|
"Encapsulates all fee information and calculations for swap operations"
|
|
],
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "tradeFeeNumerator",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "tradeFeeDenominator",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "ownerTradeFeeNumerator",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "ownerTradeFeeDenominator",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "ownerWithdrawFeeNumerator",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "ownerWithdrawFeeDenominator",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "hostFeeNumerator",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "hostFeeDenominator",
|
|
"type": "u64"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "AmmCurve",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "curveType",
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "curveParameters",
|
|
"type": "u64"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "AmmConfig",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "lastPrice",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "lastBalancedPrice",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "configDenominator",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "volumeX",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "volumeY",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "volumeXInY",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "depositCap",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "regressionTarget",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "oracleType",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "oracleStatus",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "oracleMainSlotLimit",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "oracleSubConfidenceLimit",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "oracleSubSlotLimit",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "oraclePcConfidenceLimit",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "oraclePcSlotLimit",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "stdSpread",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "stdSpreadBuffer",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "spreadCoefficient",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "priceBufferCoin",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "priceBufferPc",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "rebalanceRatio",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "feeTrade",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "feePlatform",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "oracleMainSlotBuffer",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "configTemp4",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "configTemp5",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "configTemp6",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "configTemp7",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "configTemp8",
|
|
"type": "u64"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "CurveType",
|
|
"docs": [
|
|
"Curve types supported by the token-swap program."
|
|
],
|
|
"type": {
|
|
"kind": "enum",
|
|
"variants": [
|
|
{
|
|
"name": "Standard"
|
|
},
|
|
{
|
|
"name": "ConstantProduct"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
],
|
|
"errors": [
|
|
{
|
|
"code": 6000,
|
|
"name": "AlreadyInUse",
|
|
"msg": "Swap account already in use"
|
|
},
|
|
{
|
|
"code": 6001,
|
|
"name": "InvalidProgramAddress",
|
|
"msg": "Invalid program address generated from bump seed and key"
|
|
},
|
|
{
|
|
"code": 6002,
|
|
"name": "InvalidOwner",
|
|
"msg": "Input account owner is not the program address"
|
|
},
|
|
{
|
|
"code": 6003,
|
|
"name": "InvalidOutputOwner",
|
|
"msg": "Output pool account owner cannot be the program address"
|
|
},
|
|
{
|
|
"code": 6004,
|
|
"name": "ExpectedMint",
|
|
"msg": "Deserialized account is not an SPL Token mint"
|
|
},
|
|
{
|
|
"code": 6005,
|
|
"name": "ExpectedAccount",
|
|
"msg": "Deserialized account is not an SPL Token account"
|
|
},
|
|
{
|
|
"code": 6006,
|
|
"name": "EmptySupply",
|
|
"msg": "Input token account empty"
|
|
},
|
|
{
|
|
"code": 6007,
|
|
"name": "InvalidSupply",
|
|
"msg": "Pool token mint has a non-zero supply"
|
|
},
|
|
{
|
|
"code": 6008,
|
|
"name": "InvalidDelegate",
|
|
"msg": "Token account has a delegate"
|
|
},
|
|
{
|
|
"code": 6009,
|
|
"name": "InvalidInput",
|
|
"msg": "InvalidInput"
|
|
},
|
|
{
|
|
"code": 6010,
|
|
"name": "IncorrectSwapAccount",
|
|
"msg": "Address of the provided swap token account is incorrect"
|
|
},
|
|
{
|
|
"code": 6011,
|
|
"name": "IncorrectPoolMint",
|
|
"msg": "Address of the provided pool token mint is incorrect"
|
|
},
|
|
{
|
|
"code": 6012,
|
|
"name": "InvalidOutput",
|
|
"msg": "InvalidOutput"
|
|
},
|
|
{
|
|
"code": 6013,
|
|
"name": "CalculationFailure",
|
|
"msg": "General calculation failure due to overflow or underflow"
|
|
},
|
|
{
|
|
"code": 6014,
|
|
"name": "InvalidInstruction",
|
|
"msg": "Invalid instruction"
|
|
},
|
|
{
|
|
"code": 6015,
|
|
"name": "RepeatedMint",
|
|
"msg": "Swap input token accounts have the same mint"
|
|
},
|
|
{
|
|
"code": 6016,
|
|
"name": "ExceededSlippage",
|
|
"msg": "Swap instruction exceeds desired slippage limit"
|
|
},
|
|
{
|
|
"code": 6017,
|
|
"name": "InvalidCloseAuthority",
|
|
"msg": "Token account has a close authority"
|
|
},
|
|
{
|
|
"code": 6018,
|
|
"name": "InvalidFreezeAuthority",
|
|
"msg": "Pool token mint has a freeze authority"
|
|
},
|
|
{
|
|
"code": 6019,
|
|
"name": "IncorrectFeeAccount",
|
|
"msg": "Pool fee token account incorrect"
|
|
},
|
|
{
|
|
"code": 6020,
|
|
"name": "ZeroTradingTokens",
|
|
"msg": "Given pool token amount results in zero trading tokens"
|
|
},
|
|
{
|
|
"code": 6021,
|
|
"name": "FeeCalculationFailure",
|
|
"msg": "Fee calculation failed due to overflow, underflow, or unexpected 0"
|
|
},
|
|
{
|
|
"code": 6022,
|
|
"name": "ConversionFailure",
|
|
"msg": "Conversion to u64 failed with an overflow or underflow"
|
|
},
|
|
{
|
|
"code": 6023,
|
|
"name": "InvalidFee",
|
|
"msg": "The provided fee does not match the program owner's constraints"
|
|
},
|
|
{
|
|
"code": 6024,
|
|
"name": "IncorrectTokenProgramId",
|
|
"msg": "The provided token program does not match the token program expected by the swap"
|
|
},
|
|
{
|
|
"code": 6025,
|
|
"name": "IncorrectOracleAccount",
|
|
"msg": "Address of the provided oracle account is incorrect"
|
|
},
|
|
{
|
|
"code": 6026,
|
|
"name": "IncorrectConfigAccount",
|
|
"msg": "Address of the provided config account is incorrect"
|
|
},
|
|
{
|
|
"code": 6027,
|
|
"name": "UnsupportedCurveType",
|
|
"msg": "The provided curve type is not supported by the program owner"
|
|
},
|
|
{
|
|
"code": 6028,
|
|
"name": "InvalidCurve",
|
|
"msg": "The provided curve parameters are invalid"
|
|
},
|
|
{
|
|
"code": 6029,
|
|
"name": "UnsupportedCurveOperation",
|
|
"msg": "The operation cannot be performed on the given curve"
|
|
},
|
|
{
|
|
"code": 6030,
|
|
"name": "InvalidPythStatus",
|
|
"msg": "Pyth oracle status is not 'trading'"
|
|
},
|
|
{
|
|
"code": 6031,
|
|
"name": "InvalidPythPrice",
|
|
"msg": "Could not retrieve updated price feed from the Pyth oracle"
|
|
},
|
|
{
|
|
"code": 6032,
|
|
"name": "IncorrectSigner",
|
|
"msg": "Address of the provided signer account is incorrect"
|
|
},
|
|
{
|
|
"code": 6033,
|
|
"name": "ExceedPoolBalance",
|
|
"msg": "Swap amount exceeds pool balance"
|
|
},
|
|
{
|
|
"code": 6034,
|
|
"name": "ProgramIsFrozen",
|
|
"msg": "Program is frozen"
|
|
},
|
|
{
|
|
"code": 6035,
|
|
"name": "OracleConfidence",
|
|
"msg": "Oracle confidence is too high"
|
|
},
|
|
{
|
|
"code": 6036,
|
|
"name": "OverCapAmount",
|
|
"msg": "Over Pool Cap Amount"
|
|
},
|
|
{
|
|
"code": 6037,
|
|
"name": "InvalidUpdateAccount",
|
|
"msg": "Invalid update wallet address"
|
|
},
|
|
{
|
|
"code": 6038,
|
|
"name": "InvalidUpdateParam",
|
|
"msg": "Invalid update param"
|
|
},
|
|
{
|
|
"code": 6039,
|
|
"name": "InvalidInnerSwapAccount",
|
|
"msg": "Invalid inner swap account"
|
|
},
|
|
{
|
|
"code": 6040,
|
|
"name": "ExceptionErr",
|
|
"msg": "Exception err"
|
|
}
|
|
]
|
|
} |