@kamino-finance/klend-sdk
Version:
Typescript SDK for interacting with the Kamino Lending (klend) protocol
1,150 lines • 60.4 kB
JSON
{
"version": "0.1.0",
"name": "perpetuals",
"instructions": [
{
"name": "init",
"accounts": [
{ "name": "upgradeAuthority", "isMut": true, "isSigner": true },
{ "name": "admin", "isMut": false, "isSigner": false },
{ "name": "transferAuthority", "isMut": true, "isSigner": false },
{ "name": "perpetuals", "isMut": true, "isSigner": false },
{ "name": "perpetualsProgram", "isMut": false, "isSigner": false },
{ "name": "perpetualsProgramData", "isMut": false, "isSigner": false },
{ "name": "systemProgram", "isMut": false, "isSigner": false },
{ "name": "tokenProgram", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "InitParams" } }]
},
{
"name": "addPool",
"accounts": [
{ "name": "admin", "isMut": true, "isSigner": true },
{ "name": "transferAuthority", "isMut": false, "isSigner": false },
{ "name": "perpetuals", "isMut": true, "isSigner": false },
{ "name": "pool", "isMut": true, "isSigner": false },
{ "name": "lpTokenMint", "isMut": true, "isSigner": false },
{ "name": "systemProgram", "isMut": false, "isSigner": false },
{ "name": "tokenProgram", "isMut": false, "isSigner": false },
{ "name": "rent", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "AddPoolParams" } }]
},
{
"name": "addCustody",
"accounts": [
{ "name": "admin", "isMut": true, "isSigner": true },
{ "name": "transferAuthority", "isMut": false, "isSigner": false },
{ "name": "perpetuals", "isMut": false, "isSigner": false },
{ "name": "pool", "isMut": true, "isSigner": false },
{ "name": "custody", "isMut": true, "isSigner": false },
{ "name": "custodyTokenAccount", "isMut": true, "isSigner": false },
{ "name": "custodyTokenMint", "isMut": false, "isSigner": false },
{ "name": "systemProgram", "isMut": false, "isSigner": false },
{ "name": "tokenProgram", "isMut": false, "isSigner": false },
{ "name": "rent", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "AddCustodyParams" } }]
},
{
"name": "setCustodyConfig",
"accounts": [
{ "name": "admin", "isMut": true, "isSigner": true },
{ "name": "perpetuals", "isMut": false, "isSigner": false },
{ "name": "custody", "isMut": true, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "SetCustodyConfigParams" } }]
},
{
"name": "setCustodyGlobalLimit",
"accounts": [
{ "name": "keeper", "isMut": false, "isSigner": true },
{ "name": "custody", "isMut": true, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "SetCustodyGlobalLimitParams" } }]
},
{
"name": "setPoolConfig",
"accounts": [
{ "name": "admin", "isMut": false, "isSigner": true },
{ "name": "perpetuals", "isMut": false, "isSigner": false },
{ "name": "pool", "isMut": true, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "SetPoolConfigParams" } }]
},
{
"name": "setPerpetualsConfig",
"accounts": [
{ "name": "admin", "isMut": false, "isSigner": true },
{ "name": "perpetuals", "isMut": true, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "SetPerpetualsConfigParams" } }]
},
{
"name": "transferAdmin",
"accounts": [
{ "name": "admin", "isMut": true, "isSigner": true },
{ "name": "newAdmin", "isMut": false, "isSigner": false },
{ "name": "perpetuals", "isMut": true, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "TransferAdminParams" } }]
},
{
"name": "withdrawFees",
"accounts": [
{ "name": "keeper", "isMut": false, "isSigner": true },
{ "name": "transferAuthority", "isMut": false, "isSigner": false },
{ "name": "perpetuals", "isMut": false, "isSigner": false },
{ "name": "pool", "isMut": true, "isSigner": false },
{ "name": "custody", "isMut": true, "isSigner": false },
{ "name": "custodyTokenAccount", "isMut": true, "isSigner": false },
{ "name": "custodyOracleAccount", "isMut": false, "isSigner": false },
{ "name": "receivingTokenAccount", "isMut": true, "isSigner": false },
{ "name": "tokenProgram", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "WithdrawFeesParams" } }]
},
{
"name": "testInit",
"accounts": [
{ "name": "upgradeAuthority", "isMut": true, "isSigner": true },
{ "name": "admin", "isMut": false, "isSigner": false },
{ "name": "transferAuthority", "isMut": true, "isSigner": false },
{ "name": "perpetuals", "isMut": true, "isSigner": false },
{ "name": "systemProgram", "isMut": false, "isSigner": false },
{ "name": "tokenProgram", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "TestInitParams" } }]
},
{
"name": "setTestOraclePrice",
"accounts": [
{ "name": "admin", "isMut": true, "isSigner": true },
{ "name": "perpetuals", "isMut": false, "isSigner": false },
{ "name": "pool", "isMut": false, "isSigner": false },
{ "name": "custody", "isMut": false, "isSigner": false },
{ "name": "oracleAccount", "isMut": true, "isSigner": false },
{ "name": "systemProgram", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "SetTestOraclePriceParams" } }]
},
{
"name": "setTestTime",
"accounts": [
{ "name": "admin", "isMut": false, "isSigner": true },
{ "name": "perpetuals", "isMut": true, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "SetTestTimeParams" } }]
},
{
"name": "swap",
"accounts": [
{ "name": "owner", "isMut": true, "isSigner": true },
{ "name": "fundingAccount", "isMut": true, "isSigner": false },
{ "name": "receivingAccount", "isMut": true, "isSigner": false },
{ "name": "transferAuthority", "isMut": false, "isSigner": false },
{ "name": "perpetuals", "isMut": false, "isSigner": false },
{ "name": "pool", "isMut": true, "isSigner": false },
{ "name": "receivingCustody", "isMut": true, "isSigner": false },
{ "name": "receivingCustodyOracleAccount", "isMut": false, "isSigner": false },
{ "name": "receivingCustodyTokenAccount", "isMut": true, "isSigner": false },
{ "name": "dispensingCustody", "isMut": true, "isSigner": false },
{ "name": "dispensingCustodyOracleAccount", "isMut": false, "isSigner": false },
{ "name": "dispensingCustodyTokenAccount", "isMut": true, "isSigner": false },
{ "name": "tokenProgram", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "SwapParams" } }]
},
{
"name": "swapExactOut",
"accounts": [
{ "name": "owner", "isMut": true, "isSigner": true },
{ "name": "fundingAccount", "isMut": true, "isSigner": false },
{ "name": "receivingAccount", "isMut": true, "isSigner": false },
{ "name": "transferAuthority", "isMut": false, "isSigner": false },
{ "name": "perpetuals", "isMut": false, "isSigner": false },
{ "name": "pool", "isMut": true, "isSigner": false },
{ "name": "receivingCustody", "isMut": true, "isSigner": false },
{ "name": "receivingCustodyOracleAccount", "isMut": false, "isSigner": false },
{ "name": "receivingCustodyTokenAccount", "isMut": true, "isSigner": false },
{ "name": "dispensingCustody", "isMut": true, "isSigner": false },
{ "name": "dispensingCustodyOracleAccount", "isMut": false, "isSigner": false },
{ "name": "dispensingCustodyTokenAccount", "isMut": true, "isSigner": false },
{ "name": "tokenProgram", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "SwapExactOutParams" } }]
},
{
"name": "addLiquidity",
"accounts": [
{ "name": "owner", "isMut": true, "isSigner": true },
{ "name": "fundingAccount", "isMut": true, "isSigner": false },
{ "name": "lpTokenAccount", "isMut": true, "isSigner": false },
{ "name": "transferAuthority", "isMut": false, "isSigner": false },
{ "name": "perpetuals", "isMut": false, "isSigner": false },
{ "name": "pool", "isMut": true, "isSigner": false },
{ "name": "custody", "isMut": true, "isSigner": false },
{ "name": "custodyOracleAccount", "isMut": false, "isSigner": false },
{ "name": "custodyTokenAccount", "isMut": true, "isSigner": false },
{ "name": "lpTokenMint", "isMut": true, "isSigner": false },
{ "name": "tokenProgram", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "AddLiquidityParams" } }]
},
{
"name": "removeLiquidity",
"accounts": [
{ "name": "owner", "isMut": true, "isSigner": true },
{ "name": "receivingAccount", "isMut": true, "isSigner": false },
{ "name": "lpTokenAccount", "isMut": true, "isSigner": false },
{ "name": "transferAuthority", "isMut": false, "isSigner": false },
{ "name": "perpetuals", "isMut": false, "isSigner": false },
{ "name": "pool", "isMut": true, "isSigner": false },
{ "name": "custody", "isMut": true, "isSigner": false },
{ "name": "custodyOracleAccount", "isMut": false, "isSigner": false },
{ "name": "custodyTokenAccount", "isMut": true, "isSigner": false },
{ "name": "lpTokenMint", "isMut": true, "isSigner": false },
{ "name": "tokenProgram", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "RemoveLiquidityParams" } }]
},
{
"name": "createIncreasePositionRequest",
"accounts": [
{ "name": "owner", "isMut": true, "isSigner": true },
{ "name": "fundingAccount", "isMut": true, "isSigner": false },
{ "name": "perpetuals", "isMut": false, "isSigner": false },
{ "name": "pool", "isMut": false, "isSigner": false },
{ "name": "position", "isMut": true, "isSigner": false },
{ "name": "positionRequest", "isMut": true, "isSigner": false },
{ "name": "positionRequestAta", "isMut": true, "isSigner": false },
{ "name": "custody", "isMut": false, "isSigner": false },
{ "name": "custodyOracleAccount", "isMut": false, "isSigner": false },
{ "name": "collateralCustody", "isMut": false, "isSigner": false },
{ "name": "inputMint", "isMut": false, "isSigner": false },
{ "name": "referral", "isMut": false, "isSigner": false, "isOptional": true },
{ "name": "tokenProgram", "isMut": false, "isSigner": false },
{ "name": "associatedTokenProgram", "isMut": false, "isSigner": false },
{ "name": "systemProgram", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "CreateIncreasePositionRequestParams" } }]
},
{
"name": "updateIncreasePositionRequest",
"accounts": [
{ "name": "owner", "isMut": true, "isSigner": true },
{ "name": "perpetuals", "isMut": false, "isSigner": false },
{ "name": "pool", "isMut": false, "isSigner": false },
{ "name": "position", "isMut": false, "isSigner": false },
{ "name": "positionRequest", "isMut": true, "isSigner": false },
{ "name": "custody", "isMut": false, "isSigner": false },
{ "name": "custodyOracleAccount", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "UpdateIncreasePositionRequestParams" } }]
},
{
"name": "createDecreasePositionRequest",
"accounts": [
{ "name": "owner", "isMut": true, "isSigner": true },
{ "name": "receivingAccount", "isMut": true, "isSigner": false },
{ "name": "perpetuals", "isMut": false, "isSigner": false },
{ "name": "pool", "isMut": true, "isSigner": false },
{ "name": "position", "isMut": false, "isSigner": false },
{ "name": "positionRequest", "isMut": true, "isSigner": false },
{ "name": "positionRequestAta", "isMut": true, "isSigner": false },
{ "name": "custody", "isMut": false, "isSigner": false },
{ "name": "custodyOracleAccount", "isMut": false, "isSigner": false },
{ "name": "collateralCustody", "isMut": false, "isSigner": false },
{ "name": "desiredMint", "isMut": false, "isSigner": false },
{ "name": "referral", "isMut": false, "isSigner": false, "isOptional": true },
{ "name": "tokenProgram", "isMut": false, "isSigner": false },
{ "name": "associatedTokenProgram", "isMut": false, "isSigner": false },
{ "name": "systemProgram", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "CreateDecreasePositionRequestParams" } }]
},
{
"name": "updateDecreasePositionRequest",
"accounts": [
{ "name": "owner", "isMut": true, "isSigner": true },
{ "name": "perpetuals", "isMut": false, "isSigner": false },
{ "name": "pool", "isMut": false, "isSigner": false },
{ "name": "position", "isMut": false, "isSigner": false },
{ "name": "positionRequest", "isMut": true, "isSigner": false },
{ "name": "custody", "isMut": false, "isSigner": false },
{ "name": "custodyOracleAccount", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "UpdateDecreasePositionRequestParams" } }]
},
{
"name": "closePositionRequest",
"accounts": [
{ "name": "keeper", "isMut": false, "isSigner": true, "isOptional": true },
{ "name": "owner", "isMut": true, "isSigner": false },
{ "name": "ownerAta", "isMut": true, "isSigner": false, "isOptional": true },
{ "name": "pool", "isMut": true, "isSigner": false },
{ "name": "positionRequest", "isMut": true, "isSigner": false },
{ "name": "positionRequestAta", "isMut": true, "isSigner": false },
{ "name": "position", "isMut": false, "isSigner": false },
{ "name": "tokenProgram", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "ClosePositionRequestParams" } }]
},
{
"name": "increasePosition",
"accounts": [
{ "name": "keeper", "isMut": false, "isSigner": true },
{ "name": "perpetuals", "isMut": false, "isSigner": false },
{ "name": "pool", "isMut": true, "isSigner": false },
{ "name": "positionRequest", "isMut": true, "isSigner": false },
{ "name": "positionRequestAta", "isMut": true, "isSigner": false },
{ "name": "position", "isMut": true, "isSigner": false },
{ "name": "custody", "isMut": true, "isSigner": false },
{ "name": "custodyOracleAccount", "isMut": false, "isSigner": false },
{ "name": "collateralCustody", "isMut": true, "isSigner": false },
{ "name": "collateralCustodyOracleAccount", "isMut": false, "isSigner": false },
{ "name": "collateralCustodyTokenAccount", "isMut": true, "isSigner": false },
{ "name": "tokenProgram", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "IncreasePositionParams" } }]
},
{
"name": "increasePositionPreSwap",
"accounts": [
{ "name": "keeper", "isMut": false, "isSigner": true },
{ "name": "keeperAta", "isMut": true, "isSigner": false },
{ "name": "positionRequest", "isMut": true, "isSigner": false },
{ "name": "positionRequestAta", "isMut": true, "isSigner": false },
{ "name": "position", "isMut": false, "isSigner": false },
{ "name": "collateralCustody", "isMut": false, "isSigner": false },
{ "name": "collateralCustodyTokenAccount", "isMut": false, "isSigner": false },
{ "name": "instruction", "isMut": false, "isSigner": false },
{ "name": "tokenProgram", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "IncreasePositionPreSwapParams" } }]
},
{
"name": "decreasePosition",
"accounts": [
{ "name": "keeper", "isMut": false, "isSigner": true },
{ "name": "keeperAta", "isMut": true, "isSigner": false, "isOptional": true },
{ "name": "owner", "isMut": true, "isSigner": false },
{ "name": "transferAuthority", "isMut": false, "isSigner": false },
{ "name": "perpetuals", "isMut": false, "isSigner": false },
{ "name": "pool", "isMut": true, "isSigner": false },
{ "name": "positionRequest", "isMut": true, "isSigner": false },
{ "name": "positionRequestAta", "isMut": true, "isSigner": false },
{ "name": "position", "isMut": true, "isSigner": false },
{ "name": "custody", "isMut": true, "isSigner": false },
{ "name": "custodyOracleAccount", "isMut": false, "isSigner": false },
{ "name": "collateralCustody", "isMut": true, "isSigner": false },
{ "name": "collateralCustodyOracleAccount", "isMut": false, "isSigner": false },
{ "name": "collateralCustodyTokenAccount", "isMut": true, "isSigner": false },
{ "name": "instruction", "isMut": false, "isSigner": false },
{ "name": "tokenProgram", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "DecreasePositionParams" } }]
},
{
"name": "decreasePositionPostSwap",
"accounts": [
{ "name": "keeper", "isMut": false, "isSigner": true },
{ "name": "positionRequest", "isMut": false, "isSigner": false },
{ "name": "positionRequestAta", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "DecreasePositionPostSwapParams" } }]
},
{
"name": "liquidatePosition",
"accounts": [
{ "name": "signer", "isMut": true, "isSigner": true },
{ "name": "receivingAccount", "isMut": true, "isSigner": false },
{ "name": "rewardReceivingAccount", "isMut": true, "isSigner": false },
{ "name": "transferAuthority", "isMut": false, "isSigner": false },
{ "name": "perpetuals", "isMut": false, "isSigner": false },
{ "name": "pool", "isMut": true, "isSigner": false },
{ "name": "position", "isMut": true, "isSigner": false },
{ "name": "custody", "isMut": true, "isSigner": false },
{ "name": "custodyOracleAccount", "isMut": false, "isSigner": false },
{ "name": "collateralCustody", "isMut": true, "isSigner": false },
{ "name": "collateralCustodyOracleAccount", "isMut": false, "isSigner": false },
{ "name": "collateralCustodyTokenAccount", "isMut": true, "isSigner": false },
{ "name": "tokenProgram", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "LiquidatePositionParams" } }]
},
{
"name": "getAddLiquidityAmountAndFee",
"accounts": [
{ "name": "perpetuals", "isMut": false, "isSigner": false },
{ "name": "pool", "isMut": false, "isSigner": false },
{ "name": "custody", "isMut": false, "isSigner": false },
{ "name": "custodyOracleAccount", "isMut": false, "isSigner": false },
{ "name": "lpTokenMint", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "GetAddLiquidityAmountAndFeeParams" } }],
"returns": { "defined": "AmountAndFee" }
},
{
"name": "getRemoveLiquidityAmountAndFee",
"accounts": [
{ "name": "perpetuals", "isMut": false, "isSigner": false },
{ "name": "pool", "isMut": false, "isSigner": false },
{ "name": "custody", "isMut": false, "isSigner": false },
{ "name": "custodyOracleAccount", "isMut": false, "isSigner": false },
{ "name": "lpTokenMint", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "GetRemoveLiquidityAmountAndFeeParams" } }],
"returns": { "defined": "AmountAndFee" }
},
{
"name": "getIncreasePosition",
"accounts": [
{ "name": "perpetuals", "isMut": false, "isSigner": false },
{ "name": "pool", "isMut": false, "isSigner": false },
{ "name": "position", "isMut": false, "isSigner": false, "isOptional": true },
{ "name": "custody", "isMut": false, "isSigner": false },
{ "name": "custodyOracleAccount", "isMut": false, "isSigner": false },
{ "name": "collateralCustody", "isMut": false, "isSigner": false },
{ "name": "collateralCustodyOracleAccount", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "GetIncreasePositionParams" } }],
"returns": { "defined": "IncreasePositionInfo" }
},
{
"name": "getDecreasePosition",
"accounts": [
{ "name": "perpetuals", "isMut": false, "isSigner": false },
{ "name": "pool", "isMut": false, "isSigner": false },
{ "name": "position", "isMut": false, "isSigner": false },
{ "name": "custody", "isMut": false, "isSigner": false },
{ "name": "custodyOracleAccount", "isMut": false, "isSigner": false },
{ "name": "collateralCustody", "isMut": false, "isSigner": false },
{ "name": "collateralCustodyOracleAccount", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "GetDecreasePositionParams" } }],
"returns": { "defined": "DecreasePositionInfo" }
},
{
"name": "getPnl",
"accounts": [
{ "name": "perpetuals", "isMut": false, "isSigner": false },
{ "name": "pool", "isMut": false, "isSigner": false },
{ "name": "position", "isMut": false, "isSigner": false },
{ "name": "custody", "isMut": false, "isSigner": false },
{ "name": "custodyOracleAccount", "isMut": false, "isSigner": false },
{ "name": "collateralCustody", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "GetPnlAndFeeParams" } }],
"returns": { "defined": "PnlAndFee" }
},
{
"name": "getLiquidationState",
"accounts": [
{ "name": "perpetuals", "isMut": false, "isSigner": false },
{ "name": "pool", "isMut": false, "isSigner": false },
{ "name": "position", "isMut": false, "isSigner": false },
{ "name": "custody", "isMut": false, "isSigner": false },
{ "name": "custodyOracleAccount", "isMut": false, "isSigner": false },
{ "name": "collateralCustody", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "GetLiquidationStateParams" } }],
"returns": "bool"
},
{
"name": "getOraclePrice",
"accounts": [
{ "name": "perpetuals", "isMut": false, "isSigner": false },
{ "name": "pool", "isMut": false, "isSigner": false },
{ "name": "custody", "isMut": false, "isSigner": false },
{ "name": "custodyOracleAccount", "isMut": false, "isSigner": false }
],
"args": [],
"returns": { "defined": "OraclePriceInfo" }
},
{
"name": "getSwapAmountAndFees",
"accounts": [
{ "name": "perpetuals", "isMut": false, "isSigner": false },
{ "name": "pool", "isMut": false, "isSigner": false },
{ "name": "receivingCustody", "isMut": false, "isSigner": false },
{ "name": "receivingCustodyOracleAccount", "isMut": false, "isSigner": false },
{ "name": "dispensingCustody", "isMut": false, "isSigner": false },
{ "name": "dispensingCustodyOracleAccount", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "GetSwapAmountAndFeesParams" } }],
"returns": { "defined": "SwapAmountAndFees" }
},
{
"name": "getExactOutSwapAmountAndFees",
"accounts": [
{ "name": "perpetuals", "isMut": false, "isSigner": false },
{ "name": "pool", "isMut": false, "isSigner": false },
{ "name": "receivingCustody", "isMut": false, "isSigner": false },
{ "name": "receivingCustodyOracleAccount", "isMut": false, "isSigner": false },
{ "name": "dispensingCustody", "isMut": false, "isSigner": false },
{ "name": "dispensingCustodyOracleAccount", "isMut": false, "isSigner": false }
],
"args": [{ "name": "params", "type": { "defined": "GetExactOutSwapAmountAndFeesParams" } }],
"returns": { "defined": "SwapAmountAndFees" }
}
],
"accounts": [
{
"name": "Custody",
"type": {
"kind": "struct",
"fields": [
{ "name": "pool", "type": "publicKey" },
{ "name": "mint", "type": "publicKey" },
{ "name": "tokenAccount", "type": "publicKey" },
{ "name": "decimals", "type": "u8" },
{ "name": "isStable", "type": "bool" },
{ "name": "oracle", "type": { "defined": "OracleParams" } },
{ "name": "pricing", "type": { "defined": "PricingParams" } },
{ "name": "permissions", "type": { "defined": "Permissions" } },
{ "name": "targetRatioBps", "type": "u64" },
{ "name": "assets", "type": { "defined": "Assets" } },
{ "name": "fundingRateState", "type": { "defined": "FundingRateState" } },
{ "name": "bump", "type": "u8" },
{ "name": "tokenAccountBump", "type": "u8" }
]
}
},
{
"name": "TestOracle",
"type": {
"kind": "struct",
"fields": [
{ "name": "price", "type": "u64" },
{ "name": "expo", "type": "i32" },
{ "name": "conf", "type": "u64" },
{ "name": "publishTime", "type": "i64" }
]
}
},
{
"name": "Perpetuals",
"type": {
"kind": "struct",
"fields": [
{ "name": "permissions", "type": { "defined": "Permissions" } },
{ "name": "pools", "type": { "vec": "publicKey" } },
{ "name": "admin", "type": "publicKey" },
{ "name": "transferAuthorityBump", "type": "u8" },
{ "name": "perpetualsBump", "type": "u8" },
{ "name": "inceptionTime", "type": "i64" }
]
}
},
{
"name": "Pool",
"type": {
"kind": "struct",
"fields": [
{ "name": "name", "type": "string" },
{ "name": "custodies", "type": { "vec": "publicKey" } },
{ "name": "aumUsd", "type": "u128" },
{ "name": "limit", "type": { "defined": "Limit" } },
{ "name": "fees", "type": { "defined": "Fees" } },
{ "name": "poolApr", "type": { "defined": "PoolApr" } },
{ "name": "maxRequestExecutionSec", "type": "i64" },
{ "name": "bump", "type": "u8" },
{ "name": "lpTokenBump", "type": "u8" },
{ "name": "inceptionTime", "type": "i64" }
]
}
},
{
"name": "PositionRequest",
"type": {
"kind": "struct",
"fields": [
{ "name": "owner", "type": "publicKey" },
{ "name": "pool", "type": "publicKey" },
{ "name": "custody", "type": "publicKey" },
{ "name": "position", "type": "publicKey" },
{ "name": "mint", "type": "publicKey" },
{ "name": "openTime", "type": "i64" },
{ "name": "updateTime", "type": "i64" },
{ "name": "sizeUsdDelta", "type": "u64" },
{ "name": "collateralDelta", "type": "u64" },
{ "name": "requestChange", "type": { "defined": "RequestChange" } },
{ "name": "requestType", "type": { "defined": "RequestType" } },
{ "name": "side", "type": { "defined": "Side" } },
{ "name": "priceSlippage", "type": { "option": "u64" } },
{ "name": "jupiterMinimumOut", "type": { "option": "u64" } },
{ "name": "preSwapAmount", "type": { "option": "u64" } },
{ "name": "triggerPrice", "type": { "option": "u64" } },
{ "name": "triggerAboveThreshold", "type": { "option": "bool" } },
{ "name": "entirePosition", "type": { "option": "bool" } },
{ "name": "executed", "type": "bool" },
{ "name": "counter", "type": "u64" },
{ "name": "bump", "type": "u8" },
{ "name": "referral", "type": { "option": "publicKey" } }
]
}
},
{
"name": "Position",
"type": {
"kind": "struct",
"fields": [
{ "name": "owner", "type": "publicKey" },
{ "name": "pool", "type": "publicKey" },
{ "name": "custody", "type": "publicKey" },
{ "name": "collateralCustody", "type": "publicKey" },
{ "name": "openTime", "type": "i64" },
{ "name": "updateTime", "type": "i64" },
{ "name": "side", "type": { "defined": "Side" } },
{ "name": "price", "type": "u64" },
{ "name": "sizeUsd", "type": "u64" },
{ "name": "collateralUsd", "type": "u64" },
{ "name": "realisedPnlUsd", "type": "i64" },
{ "name": "cumulativeInterestSnapshot", "type": "u128" },
{ "name": "lockedAmount", "type": "u64" },
{ "name": "bump", "type": "u8" }
]
}
}
],
"types": [
{
"name": "AddCustodyParams",
"type": {
"kind": "struct",
"fields": [
{ "name": "isStable", "type": "bool" },
{ "name": "oracle", "type": { "defined": "OracleParams" } },
{ "name": "pricing", "type": { "defined": "PricingParams" } },
{ "name": "permissions", "type": { "defined": "Permissions" } },
{ "name": "hourlyFundingBps", "type": "u64" },
{ "name": "targetRatioBps", "type": "u64" }
]
}
},
{
"name": "AddLiquidityParams",
"type": {
"kind": "struct",
"fields": [
{ "name": "tokenAmountIn", "type": "u64" },
{ "name": "minLpAmountOut", "type": "u64" },
{ "name": "tokenAmountPreSwap", "type": { "option": "u64" } }
]
}
},
{
"name": "AddPoolParams",
"type": {
"kind": "struct",
"fields": [
{ "name": "name", "type": "string" },
{ "name": "limit", "type": { "defined": "Limit" } },
{ "name": "fees", "type": { "defined": "Fees" } },
{ "name": "maxRequestExecutionSec", "type": "i64" }
]
}
},
{ "name": "ClosePositionRequestParams", "type": { "kind": "struct", "fields": [] } },
{
"name": "CreateDecreasePositionRequestParams",
"type": {
"kind": "struct",
"fields": [
{ "name": "collateralUsdDelta", "type": "u64" },
{ "name": "sizeUsdDelta", "type": "u64" },
{ "name": "requestType", "type": { "defined": "RequestType" } },
{ "name": "priceSlippage", "type": { "option": "u64" } },
{ "name": "jupiterMinimumOut", "type": { "option": "u64" } },
{ "name": "triggerPrice", "type": { "option": "u64" } },
{ "name": "triggerAboveThreshold", "type": { "option": "bool" } },
{ "name": "entirePosition", "type": { "option": "bool" } },
{ "name": "counter", "type": "u64" }
]
}
},
{
"name": "CreateIncreasePositionRequestParams",
"type": {
"kind": "struct",
"fields": [
{ "name": "sizeUsdDelta", "type": "u64" },
{ "name": "collateralTokenDelta", "type": "u64" },
{ "name": "side", "type": { "defined": "Side" } },
{ "name": "requestType", "type": { "defined": "RequestType" } },
{ "name": "priceSlippage", "type": { "option": "u64" } },
{ "name": "jupiterMinimumOut", "type": { "option": "u64" } },
{ "name": "triggerPrice", "type": { "option": "u64" } },
{ "name": "triggerAboveThreshold", "type": { "option": "bool" } },
{ "name": "counter", "type": "u64" }
]
}
},
{ "name": "DecreasePositionPostSwapParams", "type": { "kind": "struct", "fields": [] } },
{ "name": "DecreasePositionParams", "type": { "kind": "struct", "fields": [] } },
{
"name": "GetAddLiquidityAmountAndFeeParams",
"type": { "kind": "struct", "fields": [{ "name": "tokenAmountIn", "type": "u64" }] }
},
{
"name": "GetDecreasePositionParams",
"type": {
"kind": "struct",
"fields": [
{ "name": "collateralUsdDelta", "type": "u64" },
{ "name": "sizeUsdDelta", "type": "u64" }
]
}
},
{
"name": "GetExactOutSwapAmountAndFeesParams",
"type": { "kind": "struct", "fields": [{ "name": "amountOut", "type": "u64" }] }
},
{
"name": "GetIncreasePositionParams",
"type": {
"kind": "struct",
"fields": [
{ "name": "collateralTokenDelta", "type": "u64" },
{ "name": "sizeUsdDelta", "type": "u64" },
{ "name": "side", "type": { "defined": "Side" } }
]
}
},
{ "name": "GetLiquidationStateParams", "type": { "kind": "struct", "fields": [] } },
{ "name": "GetPnlAndFeeParams", "type": { "kind": "struct", "fields": [] } },
{
"name": "GetRemoveLiquidityAmountAndFeeParams",
"type": { "kind": "struct", "fields": [{ "name": "lpAmountIn", "type": "u64" }] }
},
{
"name": "GetSwapAmountAndFeesParams",
"type": { "kind": "struct", "fields": [{ "name": "amountIn", "type": "u64" }] }
},
{ "name": "IncreasePositionPreSwapParams", "type": { "kind": "struct", "fields": [] } },
{ "name": "IncreasePositionParams", "type": { "kind": "struct", "fields": [] } },
{
"name": "InitParams",
"type": {
"kind": "struct",
"fields": [
{ "name": "allowSwap", "type": "bool" },
{ "name": "allowAddLiquidity", "type": "bool" },
{ "name": "allowRemoveLiquidity", "type": "bool" },
{ "name": "allowIncreasePosition", "type": "bool" },
{ "name": "allowDecreasePosition", "type": "bool" },
{ "name": "allowCollateralWithdrawal", "type": "bool" },
{ "name": "allowLiquidatePosition", "type": "bool" }
]
}
},
{ "name": "LiquidatePositionParams", "type": { "kind": "struct", "fields": [] } },
{
"name": "RemoveLiquidityParams",
"type": {
"kind": "struct",
"fields": [
{ "name": "lpAmountIn", "type": "u64" },
{ "name": "minAmountOut", "type": "u64" }
]
}
},
{
"name": "SetCustodyConfigParams",
"type": {
"kind": "struct",
"fields": [
{ "name": "oracle", "type": { "defined": "OracleParams" } },
{ "name": "pricing", "type": { "defined": "PricingParams" } },
{ "name": "permissions", "type": { "defined": "Permissions" } },
{ "name": "hourlyFundingBps", "type": "u64" },
{ "name": "targetRatioBps", "type": "u64" }
]
}
},
{
"name": "SetCustodyGlobalLimitParams",
"type": {
"kind": "struct",
"fields": [
{ "name": "maxGlobalLongSizes", "type": "u64" },
{ "name": "maxGlobalShortSizes", "type": "u64" }
]
}
},
{
"name": "SetPerpetualsConfigParams",
"type": { "kind": "struct", "fields": [{ "name": "permissions", "type": { "defined": "Permissions" } }] }
},
{
"name": "SetPoolConfigParams",
"type": {
"kind": "struct",
"fields": [
{ "name": "fees", "type": { "defined": "Fees" } },
{ "name": "limit", "type": { "defined": "Limit" } },
{ "name": "maxRequestExecutionSec", "type": "i64" }
]
}
},
{
"name": "SetTestOraclePriceParams",
"type": {
"kind": "struct",
"fields": [
{ "name": "price", "type": "u64" },
{ "name": "expo", "type": "i32" },
{ "name": "conf", "type": "u64" },
{ "name": "publishTime", "type": "i64" }
]
}
},
{ "name": "SetTestTimeParams", "type": { "kind": "struct", "fields": [{ "name": "time", "type": "i64" }] } },
{
"name": "SwapExactOutParams",
"type": {
"kind": "struct",
"fields": [
{ "name": "amountOut", "type": "u64" },
{ "name": "maxAmountIn", "type": "u64" }
]
}
},
{
"name": "SwapParams",
"type": {
"kind": "struct",
"fields": [
{ "name": "amountIn", "type": "u64" },
{ "name": "minAmountOut", "type": "u64" }
]
}
},
{
"name": "TestInitParams",
"type": {
"kind": "struct",
"fields": [
{ "name": "allowSwap", "type": "bool" },
{ "name": "allowAddLiquidity", "type": "bool" },
{ "name": "allowRemoveLiquidity", "type": "bool" },
{ "name": "allowIncreasePosition", "type": "bool" },
{ "name": "allowDecreasePosition", "type": "bool" },
{ "name": "allowCollateralWithdrawal", "type": "bool" },
{ "name": "allowLiquidatePosition", "type": "bool" }
]
}
},
{ "name": "TransferAdminParams", "type": { "kind": "struct", "fields": [] } },
{
"name": "UpdateDecreasePositionRequestParams",
"type": {
"kind": "struct",
"fields": [
{ "name": "sizeUsdDelta", "type": "u64" },
{ "name": "triggerPrice", "type": "u64" }
]
}
},
{
"name": "UpdateIncreasePositionRequestParams",
"type": {
"kind": "struct",
"fields": [
{ "name": "sizeUsdDelta", "type": "u64" },
{ "name": "triggerPrice", "type": "u64" }
]
}
},
{ "name": "WithdrawFeesParams", "type": { "kind": "struct", "fields": [] } },
{
"name": "Assets",
"type": {
"kind": "struct",
"fields": [
{ "name": "feesReserves", "type": "u64" },
{ "name": "owned", "type": "u64" },
{ "name": "locked", "type": "u64" },
{ "name": "guaranteedUsd", "type": "u64" },
{ "name": "globalShortSizes", "type": "u64" },
{ "name": "globalShortAveragePrices", "type": "u64" }
]
}
},
{
"name": "PricingParams",
"type": {
"kind": "struct",
"fields": [
{ "name": "tradeSpreadLong", "type": "u64" },
{ "name": "tradeSpreadShort", "type": "u64" },
{ "name": "swapSpread", "type": "u64" },
{ "name": "maxLeverage", "type": "u64" },
{ "name": "maxGlobalLongSizes", "type": "u64" },
{ "name": "maxGlobalShortSizes", "type": "u64" }
]
}
},
{
"name": "FundingRateState",
"type": {
"kind": "struct",
"fields": [
{ "name": "cumulativeInterestRate", "type": "u128" },
{ "name": "lastUpdate", "type": "i64" },
{ "name": "hourlyFundingBps", "type": "u64" }
]
}
},
{
"name": "OraclePrice",
"type": {
"kind": "struct",
"fields": [
{ "name": "price", "type": "u64" },
{ "name": "exponent", "type": "i32" }
]
}
},
{
"name": "OracleParams",
"type": {
"kind": "struct",
"fields": [
{ "name": "oracleAccount", "type": "publicKey" },
{ "name": "oracleType", "type": { "defined": "OracleType" } },
{ "name": "maxPriceError", "type": "u64" },
{ "name": "maxPriceAgeSec", "type": "u32" }
]
}
},
{
"name": "AmountAndFee",
"type": {
"kind": "struct",
"fields": [
{ "name": "amount", "type": "u64" },
{ "name": "fee", "type": "u64" },
{ "name": "feeBps", "type": "u64" }
]
}
},
{
"name": "IncreasePositionInfo",
"type": {
"kind": "struct",
"fields": [
{ "name": "price", "type": "u64" },
{ "name": "liquidationPrice", "type": "u64" },
{ "name": "feeUsd", "type": "u64" },
{ "name": "collateralUsd", "type": "u64" }
]
}
},
{
"name": "DecreasePositionInfo",
"type": {
"kind": "struct",
"fields": [
{ "name": "price", "type": "u64" },
{ "name": "liquidationPrice", "type": "u64" },
{ "name": "feeUsd", "type": "u64" },
{ "name": "collateralUsd", "type": "u64" },
{ "name": "hasProfit", "type": "bool" },
{ "name": "pnlDelta", "type": "u64" },
{ "name": "transferAmountUsd", "type": "u64" },
{ "name": "transferToken", "type": "u64" }
]
}
},
{
"name": "SwapAmountAndFees",
"type": {
"kind": "struct",
"fields": [
{ "name": "amountIn", "type": "u64" },
{ "name": "amountOut", "type": "u64" },
{ "name": "feeBps", "type": "u64" },
{ "name": "feeToken", "type": "u64" }
]
}
},
{
"name": "PnlAndFee",
"type": {
"kind": "struct",
"fields": [
{ "name": "hasProfit", "type": "bool" },
{ "name": "pnlDelta", "type": "u64" },
{ "name": "openPositionFeeUsd", "type": "u64" },
{ "name": "closePositionFeeUsd", "type": "u64" },
{ "name": "fundingFeeUsd", "type": "u64" },
{ "name": "liquidationPrice", "type": "u64" }
]
}
},
{
"name": "OraclePriceInfo",
"type": {
"kind": "struct",
"fields": [
{ "name": "increaseLong", "type": "u64" },
{ "name": "increaseShort", "type": "u64" },
{ "name": "decreaseLong", "type": "u64" },
{ "name": "decreaseShort", "type": "u64" },
{ "name": "buyLp", "type": "u64" },
{ "name": "sellLp", "type": "u64" }
]
}
},
{
"name": "Permissions",
"type": {
"kind": "struct",
"fields": [
{ "name": "allowSwap", "type": "bool" },
{ "name": "allowAddLiquidity", "type": "bool" },
{ "name": "allowRemoveLiquidity", "type": "bool" },
{ "name": "allowIncreasePosition", "type": "bool" },
{ "name": "allowDecreasePosition", "type": "bool" },
{ "name": "allowCollateralWithdrawal", "type": "bool" },
{ "name": "allowLiquidatePosition", "type": "bool" }
]
}
},
{
"name": "Fees",
"type": {
"kind": "struct",
"fields": [
{ "name": "increasePositionBps", "type": "u64" },
{ "name": "decreasePositionBps", "type": "u64" },
{ "name": "addRemoveLiquidityBps", "type": "u64" },
{ "name": "swapBps", "type": "u64" },
{ "name": "taxBps", "type": "u64" },
{ "name": "stableSwapBps", "type": "u64" },
{ "name": "stableSwapTaxBps", "type": "u64" },
{ "name": "liquidationRewardBps", "type": "u64" },
{ "name": "protocolShareBps", "type": "u64" }
]
}
},
{
"name": "PoolApr",
"type": {
"kind": "struct",
"fields": [
{ "name": "lastUpdated", "type": "i64" },
{ "name": "feeAprBps", "type": "u64" },
{ "name": "realizedFeeUsd", "type": "u64" }
]
}
},
{
"name": "Limit",
"type": {
"kind": "struct",
"fields": [
{ "name": "maxAumUsd", "type": "u128" },
{ "name": "maxIndividualLpToken", "type": "u128" },
{ "name": "maxPositionUsd", "type": "u64" }
]
}
},
{
"name": "OracleType",
"type": { "kind": "enum", "variants": [{ "name": "None" }, { "name": "Test" }, { "name": "Pyth" }] }
},
{
"name": "PriceCalcMode",
"type": { "kind": "enum", "variants": [{ "name": "Min" }, { "name": "Max" }, { "name": "Ignore" }] }
},
{ "name": "RequestType", "type": { "kind": "enum", "variants": [{ "name": "Market" }, { "name": "Trigger" }] } },
{
"name": "RequestChange",
"type": { "kind": "enum", "variants": [{ "name": "None" }, { "name": "Increase" }, { "name": "Decrease" }] }
},
{
"name": "Side",
"type": { "kind": "enum", "variants": [{ "name": "None" }, { "name": "Long" }, { "name": "Short" }] }
}
],
"events": [
{
"name": "CreatePositionRequestEvent",
"fields": [
{ "name": "owner", "type": "publicKey", "index": false },
{ "name": "pool", "type": "publicKey", "index": false },
{ "name": "positionKey", "type": "publicKey", "index": false },
{ "name": "positionSide", "type": "u8", "index": false },
{ "name": "positionMint", "type": "publicKey", "index": false },
{ "name": "positionCustody", "type": "publicKey", "index": false },
{ "name": "positionCollateralMint", "type": "publicKey", "index": false },
{ "name": "positionCollateralCustody", "type": "publicKey", "index": false },
{ "name": "positionRequestKey", "type": "publicKey", "index": false },
{ "name": "positionRequestMint", "type": "publicKey", "index": false },
{ "name": "sizeUsdDelta", "type": "u64", "index": false },
{ "name": "collateralDelta", "type": "u64", "index": false },
{ "name": "priceSlippage", "type": { "option": "u64" }, "index": false },
{ "name": "jupiterMinimumOut", "type": { "option": "u64" }, "index": false },
{ "name": "preSwapAmount", "type": { "option": "u64" }, "index": false },
{ "name": "requestChange", "type": "u8", "index": false },
{ "name": "openTime", "type": "i64", "index": false },
{ "name": "referral", "type": { "option": "publicKey" }, "index": false }
]
},
{
"name": "ClosePositionRequestEvent",
"fields": [
{ "name": "positionRequestKey", "type": "publicKey", "index": false },
{ "name": "owner", "type": "publicKey", "index": false },
{ "name": "mint", "type": "publicKey", "index": false },
{ "name": "amount", "type": "u64", "index": false }
]
},
{
"name": "IncreasePositionEvent",
"fields": [
{ "name": "positionKey", "type": "publicKey", "index": false },
{ "name": "positionSide", "type": "u8", "index": false },
{ "name": "positionCustody", "type": "publicKey", "index": false },
{ "name": "positionCollateralCustody", "type": "publicKey", "index": false },
{ "name": "positionSizeUsd", "type": "u64", "index": false },
{ "name": "positionMint", "type": "publicKey", "index": false },
{ "name": "positionRequestKey", "type": "publicKey", "index": false },
{ "name": "positionRequestMint", "type": "publicKey", "index": false },
{ "name": "positionRequestChange", "type": "u8", "index": false },
{ "name": "positionRequestType", "type": "u8", "index": false },
{ "name": "positionRequestCollateralDelta", "type": "u64", "index": false },
{ "name": "owner", "type": "publicKey", "index": false },
{ "name": "pool", "type": "publicKey", "index": false },
{ "name": "sizeUsdDelta", "type": "u64", "index": false },
{ "name": "collateralUsdDelta", "type": "u64", "index": false },
{ "name": "collateralTokenDelta", "type": "u64", "index": false },
{ "name": "price", "type": "u64", "index": false },
{ "name": "priceSlippage", "type": { "opt