Files
sol-trade-sdk/idl/meteora_lb_clmm.json
T
2026-06-23 04:32:50 +08:00

2351 lines
78 KiB
JSON

{
"version": "0.5.1",
"name": "lb_clmm",
"constants": [
{ "name": "BASIS_POINT_MAX", "type": "i32", "value": "10000" },
{
"name": "MAX_BIN_PER_ARRAY",
"type": { "defined": "usize" },
"value": "70"
},
{
"name": "MAX_BIN_PER_POSITION",
"type": { "defined": "usize" },
"value": "70"
},
{ "name": "MIN_BIN_ID", "type": "i32", "value": "- 443636" },
{ "name": "MAX_BIN_ID", "type": "i32", "value": "443636" },
{ "name": "MAX_FEE_RATE", "type": "u64", "value": "100_000_000" },
{ "name": "FEE_PRECISION", "type": "u64", "value": "1_000_000_000" },
{ "name": "MAX_PROTOCOL_SHARE", "type": "u16", "value": "2_500" },
{ "name": "HOST_FEE_BPS", "type": "u16", "value": "2_000" },
{ "name": "NUM_REWARDS", "type": { "defined": "usize" }, "value": "2" },
{ "name": "MIN_REWARD_DURATION", "type": "u64", "value": "1" },
{ "name": "MAX_REWARD_DURATION", "type": "u64", "value": "31536000" },
{
"name": "EXTENSION_BINARRAY_BITMAP_SIZE",
"type": { "defined": "usize" },
"value": "12"
},
{ "name": "BIN_ARRAY_BITMAP_SIZE", "type": "i32", "value": "512" },
{
"name": "MAX_REWARD_BIN_SPLIT",
"type": { "defined": "usize" },
"value": "15"
},
{
"name": "BIN_ARRAY",
"type": "bytes",
"value": "[98, 105, 110, 95, 97, 114, 114, 97, 121]"
},
{
"name": "ORACLE",
"type": "bytes",
"value": "[111, 114, 97, 99, 108, 101]"
},
{
"name": "BIN_ARRAY_BITMAP_SEED",
"type": "bytes",
"value": "[98, 105, 116, 109, 97, 112]"
},
{
"name": "PRESET_PARAMETER",
"type": "bytes",
"value": "[112, 114, 101, 115, 101, 116, 95, 112, 97, 114, 97, 109, 101, 116, 101, 114]"
},
{
"name": "POSITION",
"type": "bytes",
"value": "[112, 111, 115, 105, 116, 105, 111, 110]"
}
],
"instructions": [
{
"name": "initializeLbPair",
"accounts": [
{ "name": "lbPair", "isMut": true, "isSigner": false },
{
"name": "binArrayBitmapExtension",
"isMut": true,
"isSigner": false,
"isOptional": true
},
{ "name": "tokenMintX", "isMut": false, "isSigner": false },
{ "name": "tokenMintY", "isMut": false, "isSigner": false },
{ "name": "reserveX", "isMut": true, "isSigner": false },
{ "name": "reserveY", "isMut": true, "isSigner": false },
{ "name": "oracle", "isMut": true, "isSigner": false },
{ "name": "presetParameter", "isMut": false, "isSigner": false },
{ "name": "funder", "isMut": true, "isSigner": true },
{ "name": "tokenProgram", "isMut": false, "isSigner": false },
{ "name": "systemProgram", "isMut": false, "isSigner": false },
{ "name": "rent", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [
{ "name": "activeId", "type": "i32" },
{ "name": "binStep", "type": "u16" }
]
},
{
"name": "initializePermissionLbPair",
"accounts": [
{ "name": "base", "isMut": false, "isSigner": true },
{ "name": "lbPair", "isMut": true, "isSigner": false },
{
"name": "binArrayBitmapExtension",
"isMut": true,
"isSigner": false,
"isOptional": true
},
{ "name": "tokenMintX", "isMut": false, "isSigner": false },
{ "name": "tokenMintY", "isMut": false, "isSigner": false },
{ "name": "reserveX", "isMut": true, "isSigner": false },
{ "name": "reserveY", "isMut": true, "isSigner": false },
{ "name": "oracle", "isMut": true, "isSigner": false },
{ "name": "admin", "isMut": true, "isSigner": true },
{ "name": "tokenProgram", "isMut": false, "isSigner": false },
{ "name": "systemProgram", "isMut": false, "isSigner": false },
{ "name": "rent", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [
{ "name": "ixData", "type": { "defined": "InitPermissionPairIx" } }
]
},
{
"name": "initializeBinArrayBitmapExtension",
"accounts": [
{ "name": "lbPair", "isMut": false, "isSigner": false },
{
"name": "binArrayBitmapExtension",
"isMut": true,
"isSigner": false,
"docs": [
"Initialize an account to store if a bin array is initialized."
]
},
{ "name": "funder", "isMut": true, "isSigner": true },
{ "name": "systemProgram", "isMut": false, "isSigner": false },
{ "name": "rent", "isMut": false, "isSigner": false }
],
"args": []
},
{
"name": "initializeBinArray",
"accounts": [
{ "name": "lbPair", "isMut": false, "isSigner": false },
{ "name": "binArray", "isMut": true, "isSigner": false },
{ "name": "funder", "isMut": true, "isSigner": true },
{ "name": "systemProgram", "isMut": false, "isSigner": false }
],
"args": [{ "name": "index", "type": "i64" }]
},
{
"name": "addLiquidity",
"accounts": [
{ "name": "position", "isMut": true, "isSigner": false },
{ "name": "lbPair", "isMut": true, "isSigner": false },
{
"name": "binArrayBitmapExtension",
"isMut": true,
"isSigner": false,
"isOptional": true
},
{ "name": "userTokenX", "isMut": true, "isSigner": false },
{ "name": "userTokenY", "isMut": true, "isSigner": false },
{ "name": "reserveX", "isMut": true, "isSigner": false },
{ "name": "reserveY", "isMut": true, "isSigner": false },
{ "name": "tokenXMint", "isMut": false, "isSigner": false },
{ "name": "tokenYMint", "isMut": false, "isSigner": false },
{ "name": "binArrayLower", "isMut": true, "isSigner": false },
{ "name": "binArrayUpper", "isMut": true, "isSigner": false },
{ "name": "sender", "isMut": false, "isSigner": true },
{ "name": "tokenXProgram", "isMut": false, "isSigner": false },
{ "name": "tokenYProgram", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [
{
"name": "liquidityParameter",
"type": { "defined": "LiquidityParameter" }
}
]
},
{
"name": "addLiquidityByWeight",
"accounts": [
{ "name": "position", "isMut": true, "isSigner": false },
{ "name": "lbPair", "isMut": true, "isSigner": false },
{
"name": "binArrayBitmapExtension",
"isMut": true,
"isSigner": false,
"isOptional": true
},
{ "name": "userTokenX", "isMut": true, "isSigner": false },
{ "name": "userTokenY", "isMut": true, "isSigner": false },
{ "name": "reserveX", "isMut": true, "isSigner": false },
{ "name": "reserveY", "isMut": true, "isSigner": false },
{ "name": "tokenXMint", "isMut": false, "isSigner": false },
{ "name": "tokenYMint", "isMut": false, "isSigner": false },
{ "name": "binArrayLower", "isMut": true, "isSigner": false },
{ "name": "binArrayUpper", "isMut": true, "isSigner": false },
{ "name": "sender", "isMut": false, "isSigner": true },
{ "name": "tokenXProgram", "isMut": false, "isSigner": false },
{ "name": "tokenYProgram", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [
{
"name": "liquidityParameter",
"type": { "defined": "LiquidityParameterByWeight" }
}
]
},
{
"name": "addLiquidityByStrategy",
"accounts": [
{ "name": "position", "isMut": true, "isSigner": false },
{ "name": "lbPair", "isMut": true, "isSigner": false },
{
"name": "binArrayBitmapExtension",
"isMut": true,
"isSigner": false,
"isOptional": true
},
{ "name": "userTokenX", "isMut": true, "isSigner": false },
{ "name": "userTokenY", "isMut": true, "isSigner": false },
{ "name": "reserveX", "isMut": true, "isSigner": false },
{ "name": "reserveY", "isMut": true, "isSigner": false },
{ "name": "tokenXMint", "isMut": false, "isSigner": false },
{ "name": "tokenYMint", "isMut": false, "isSigner": false },
{ "name": "binArrayLower", "isMut": true, "isSigner": false },
{ "name": "binArrayUpper", "isMut": true, "isSigner": false },
{ "name": "sender", "isMut": false, "isSigner": true },
{ "name": "tokenXProgram", "isMut": false, "isSigner": false },
{ "name": "tokenYProgram", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [
{
"name": "liquidityParameter",
"type": { "defined": "LiquidityParameterByStrategy" }
}
]
},
{
"name": "addLiquidityByStrategyOneSide",
"accounts": [
{ "name": "position", "isMut": true, "isSigner": false },
{ "name": "lbPair", "isMut": true, "isSigner": false },
{
"name": "binArrayBitmapExtension",
"isMut": true,
"isSigner": false,
"isOptional": true
},
{ "name": "userToken", "isMut": true, "isSigner": false },
{ "name": "reserve", "isMut": true, "isSigner": false },
{ "name": "tokenMint", "isMut": false, "isSigner": false },
{ "name": "binArrayLower", "isMut": true, "isSigner": false },
{ "name": "binArrayUpper", "isMut": true, "isSigner": false },
{ "name": "sender", "isMut": false, "isSigner": true },
{ "name": "tokenProgram", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [
{
"name": "liquidityParameter",
"type": { "defined": "LiquidityParameterByStrategyOneSide" }
}
]
},
{
"name": "addLiquidityOneSide",
"accounts": [
{ "name": "position", "isMut": true, "isSigner": false },
{ "name": "lbPair", "isMut": true, "isSigner": false },
{
"name": "binArrayBitmapExtension",
"isMut": true,
"isSigner": false,
"isOptional": true
},
{ "name": "userToken", "isMut": true, "isSigner": false },
{ "name": "reserve", "isMut": true, "isSigner": false },
{ "name": "tokenMint", "isMut": false, "isSigner": false },
{ "name": "binArrayLower", "isMut": true, "isSigner": false },
{ "name": "binArrayUpper", "isMut": true, "isSigner": false },
{ "name": "sender", "isMut": false, "isSigner": true },
{ "name": "tokenProgram", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [
{
"name": "liquidityParameter",
"type": { "defined": "LiquidityOneSideParameter" }
}
]
},
{
"name": "removeLiquidity",
"accounts": [
{ "name": "position", "isMut": true, "isSigner": false },
{ "name": "lbPair", "isMut": true, "isSigner": false },
{
"name": "binArrayBitmapExtension",
"isMut": true,
"isSigner": false,
"isOptional": true
},
{ "name": "userTokenX", "isMut": true, "isSigner": false },
{ "name": "userTokenY", "isMut": true, "isSigner": false },
{ "name": "reserveX", "isMut": true, "isSigner": false },
{ "name": "reserveY", "isMut": true, "isSigner": false },
{ "name": "tokenXMint", "isMut": false, "isSigner": false },
{ "name": "tokenYMint", "isMut": false, "isSigner": false },
{ "name": "binArrayLower", "isMut": true, "isSigner": false },
{ "name": "binArrayUpper", "isMut": true, "isSigner": false },
{ "name": "sender", "isMut": false, "isSigner": true },
{ "name": "tokenXProgram", "isMut": false, "isSigner": false },
{ "name": "tokenYProgram", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [
{
"name": "binLiquidityRemoval",
"type": { "vec": { "defined": "BinLiquidityReduction" } }
}
]
},
{
"name": "initializePosition",
"accounts": [
{ "name": "payer", "isMut": true, "isSigner": true },
{ "name": "position", "isMut": true, "isSigner": true },
{ "name": "lbPair", "isMut": false, "isSigner": false },
{ "name": "owner", "isMut": false, "isSigner": true },
{ "name": "systemProgram", "isMut": false, "isSigner": false },
{ "name": "rent", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [
{ "name": "lowerBinId", "type": "i32" },
{ "name": "width", "type": "i32" }
]
},
{
"name": "initializePositionPda",
"accounts": [
{ "name": "payer", "isMut": true, "isSigner": true },
{ "name": "base", "isMut": false, "isSigner": true },
{ "name": "position", "isMut": true, "isSigner": false },
{ "name": "lbPair", "isMut": false, "isSigner": false },
{
"name": "owner",
"isMut": false,
"isSigner": true,
"docs": ["owner"]
},
{ "name": "systemProgram", "isMut": false, "isSigner": false },
{ "name": "rent", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [
{ "name": "lowerBinId", "type": "i32" },
{ "name": "width", "type": "i32" }
]
},
{
"name": "initializePositionByOperator",
"accounts": [
{ "name": "payer", "isMut": true, "isSigner": true },
{ "name": "base", "isMut": false, "isSigner": true },
{ "name": "position", "isMut": true, "isSigner": false },
{ "name": "lbPair", "isMut": false, "isSigner": false },
{
"name": "operator",
"isMut": false,
"isSigner": true,
"docs": ["operator"]
},
{ "name": "systemProgram", "isMut": false, "isSigner": false },
{ "name": "rent", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [
{ "name": "lowerBinId", "type": "i32" },
{ "name": "width", "type": "i32" },
{ "name": "owner", "type": "publicKey" },
{ "name": "feeOwner", "type": "publicKey" }
]
},
{
"name": "updatePositionOperator",
"accounts": [
{ "name": "position", "isMut": true, "isSigner": false },
{ "name": "owner", "isMut": false, "isSigner": true },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [{ "name": "operator", "type": "publicKey" }]
},
{
"name": "swap",
"accounts": [
{ "name": "lbPair", "isMut": true, "isSigner": false },
{
"name": "binArrayBitmapExtension",
"isMut": false,
"isSigner": false,
"isOptional": true
},
{ "name": "reserveX", "isMut": true, "isSigner": false },
{ "name": "reserveY", "isMut": true, "isSigner": false },
{ "name": "userTokenIn", "isMut": true, "isSigner": false },
{ "name": "userTokenOut", "isMut": true, "isSigner": false },
{ "name": "tokenXMint", "isMut": false, "isSigner": false },
{ "name": "tokenYMint", "isMut": false, "isSigner": false },
{ "name": "oracle", "isMut": true, "isSigner": false },
{
"name": "hostFeeIn",
"isMut": true,
"isSigner": false,
"isOptional": true
},
{ "name": "user", "isMut": false, "isSigner": true },
{ "name": "tokenXProgram", "isMut": false, "isSigner": false },
{ "name": "tokenYProgram", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [
{ "name": "amountIn", "type": "u64" },
{ "name": "minAmountOut", "type": "u64" }
]
},
{
"name": "withdrawProtocolFee",
"accounts": [
{ "name": "lbPair", "isMut": true, "isSigner": false },
{ "name": "reserveX", "isMut": true, "isSigner": false },
{ "name": "reserveY", "isMut": true, "isSigner": false },
{ "name": "tokenXMint", "isMut": false, "isSigner": false },
{ "name": "tokenYMint", "isMut": false, "isSigner": false },
{ "name": "receiverTokenX", "isMut": true, "isSigner": false },
{ "name": "receiverTokenY", "isMut": true, "isSigner": false },
{ "name": "feeOwner", "isMut": false, "isSigner": true },
{ "name": "tokenXProgram", "isMut": false, "isSigner": false },
{ "name": "tokenYProgram", "isMut": false, "isSigner": false }
],
"args": [
{ "name": "amountX", "type": "u64" },
{ "name": "amountY", "type": "u64" }
]
},
{
"name": "updateFeeOwner",
"accounts": [
{ "name": "lbPair", "isMut": true, "isSigner": false },
{ "name": "newFeeOwner", "isMut": false, "isSigner": false },
{ "name": "admin", "isMut": false, "isSigner": true }
],
"args": []
},
{
"name": "initializeReward",
"accounts": [
{ "name": "lbPair", "isMut": true, "isSigner": false },
{ "name": "rewardVault", "isMut": true, "isSigner": false },
{ "name": "rewardMint", "isMut": false, "isSigner": false },
{ "name": "admin", "isMut": true, "isSigner": true },
{ "name": "tokenProgram", "isMut": false, "isSigner": false },
{ "name": "systemProgram", "isMut": false, "isSigner": false },
{ "name": "rent", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [
{ "name": "rewardIndex", "type": "u64" },
{ "name": "rewardDuration", "type": "u64" },
{ "name": "funder", "type": "publicKey" }
]
},
{
"name": "fundReward",
"accounts": [
{ "name": "lbPair", "isMut": true, "isSigner": false },
{ "name": "rewardVault", "isMut": true, "isSigner": false },
{ "name": "rewardMint", "isMut": false, "isSigner": false },
{ "name": "funderTokenAccount", "isMut": true, "isSigner": false },
{ "name": "funder", "isMut": false, "isSigner": true },
{ "name": "binArray", "isMut": true, "isSigner": false },
{ "name": "tokenProgram", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [
{ "name": "rewardIndex", "type": "u64" },
{ "name": "amount", "type": "u64" },
{ "name": "carryForward", "type": "bool" }
]
},
{
"name": "updateRewardFunder",
"accounts": [
{ "name": "lbPair", "isMut": true, "isSigner": false },
{ "name": "admin", "isMut": false, "isSigner": true },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [
{ "name": "rewardIndex", "type": "u64" },
{ "name": "newFunder", "type": "publicKey" }
]
},
{
"name": "updateRewardDuration",
"accounts": [
{ "name": "lbPair", "isMut": true, "isSigner": false },
{ "name": "admin", "isMut": false, "isSigner": true },
{ "name": "binArray", "isMut": true, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [
{ "name": "rewardIndex", "type": "u64" },
{ "name": "newDuration", "type": "u64" }
]
},
{
"name": "claimReward",
"accounts": [
{ "name": "lbPair", "isMut": true, "isSigner": false },
{ "name": "position", "isMut": true, "isSigner": false },
{ "name": "binArrayLower", "isMut": true, "isSigner": false },
{ "name": "binArrayUpper", "isMut": true, "isSigner": false },
{ "name": "sender", "isMut": false, "isSigner": true },
{ "name": "rewardVault", "isMut": true, "isSigner": false },
{ "name": "rewardMint", "isMut": false, "isSigner": false },
{ "name": "userTokenAccount", "isMut": true, "isSigner": false },
{ "name": "tokenProgram", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [{ "name": "rewardIndex", "type": "u64" }]
},
{
"name": "claimFee",
"accounts": [
{ "name": "lbPair", "isMut": true, "isSigner": false },
{ "name": "position", "isMut": true, "isSigner": false },
{ "name": "binArrayLower", "isMut": true, "isSigner": false },
{ "name": "binArrayUpper", "isMut": true, "isSigner": false },
{ "name": "sender", "isMut": false, "isSigner": true },
{ "name": "reserveX", "isMut": true, "isSigner": false },
{ "name": "reserveY", "isMut": true, "isSigner": false },
{ "name": "userTokenX", "isMut": true, "isSigner": false },
{ "name": "userTokenY", "isMut": true, "isSigner": false },
{ "name": "tokenXMint", "isMut": false, "isSigner": false },
{ "name": "tokenYMint", "isMut": false, "isSigner": false },
{ "name": "tokenProgram", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": []
},
{
"name": "closePosition",
"accounts": [
{ "name": "position", "isMut": true, "isSigner": false },
{ "name": "lbPair", "isMut": true, "isSigner": false },
{ "name": "binArrayLower", "isMut": true, "isSigner": false },
{ "name": "binArrayUpper", "isMut": true, "isSigner": false },
{ "name": "sender", "isMut": false, "isSigner": true },
{ "name": "rentReceiver", "isMut": true, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": []
},
{
"name": "updateFeeParameters",
"accounts": [
{ "name": "lbPair", "isMut": true, "isSigner": false },
{ "name": "admin", "isMut": false, "isSigner": true },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [
{ "name": "feeParameter", "type": { "defined": "FeeParameter" } }
]
},
{
"name": "increaseOracleLength",
"accounts": [
{ "name": "oracle", "isMut": true, "isSigner": false },
{ "name": "funder", "isMut": true, "isSigner": true },
{ "name": "systemProgram", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [{ "name": "lengthToAdd", "type": "u64" }]
},
{
"name": "initializePresetParameter",
"accounts": [
{ "name": "presetParameter", "isMut": true, "isSigner": false },
{ "name": "admin", "isMut": true, "isSigner": true },
{ "name": "systemProgram", "isMut": false, "isSigner": false },
{ "name": "rent", "isMut": false, "isSigner": false }
],
"args": [
{ "name": "ix", "type": { "defined": "InitPresetParametersIx" } }
]
},
{
"name": "initializePresetParameterV2",
"accounts": [
{ "name": "presetParameter", "isMut": true, "isSigner": false },
{ "name": "admin", "isMut": true, "isSigner": true },
{ "name": "systemProgram", "isMut": false, "isSigner": false },
{ "name": "rent", "isMut": false, "isSigner": false }
],
"args": [
{ "name": "ix", "type": { "defined": "InitPresetParametersIx" } }
]
},
{
"name": "closePresetParameter",
"accounts": [
{ "name": "presetParameter", "isMut": true, "isSigner": false },
{ "name": "admin", "isMut": true, "isSigner": true },
{ "name": "rentReceiver", "isMut": true, "isSigner": false }
],
"args": []
},
{
"name": "removeAllLiquidity",
"accounts": [
{ "name": "position", "isMut": true, "isSigner": false },
{ "name": "lbPair", "isMut": true, "isSigner": false },
{
"name": "binArrayBitmapExtension",
"isMut": true,
"isSigner": false,
"isOptional": true
},
{ "name": "userTokenX", "isMut": true, "isSigner": false },
{ "name": "userTokenY", "isMut": true, "isSigner": false },
{ "name": "reserveX", "isMut": true, "isSigner": false },
{ "name": "reserveY", "isMut": true, "isSigner": false },
{ "name": "tokenXMint", "isMut": false, "isSigner": false },
{ "name": "tokenYMint", "isMut": false, "isSigner": false },
{ "name": "binArrayLower", "isMut": true, "isSigner": false },
{ "name": "binArrayUpper", "isMut": true, "isSigner": false },
{ "name": "sender", "isMut": false, "isSigner": true },
{ "name": "tokenXProgram", "isMut": false, "isSigner": false },
{ "name": "tokenYProgram", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": []
},
{
"name": "togglePairStatus",
"accounts": [
{ "name": "lbPair", "isMut": true, "isSigner": false },
{ "name": "admin", "isMut": false, "isSigner": true }
],
"args": []
},
{
"name": "updateWhitelistedWallet",
"accounts": [
{ "name": "lbPair", "isMut": true, "isSigner": false },
{ "name": "creator", "isMut": false, "isSigner": true }
],
"args": [
{ "name": "idx", "type": "u8" },
{ "name": "wallet", "type": "publicKey" }
]
},
{
"name": "migratePosition",
"accounts": [
{ "name": "positionV2", "isMut": true, "isSigner": true },
{ "name": "positionV1", "isMut": true, "isSigner": false },
{ "name": "lbPair", "isMut": false, "isSigner": false },
{ "name": "binArrayLower", "isMut": true, "isSigner": false },
{ "name": "binArrayUpper", "isMut": true, "isSigner": false },
{ "name": "owner", "isMut": true, "isSigner": true },
{ "name": "systemProgram", "isMut": false, "isSigner": false },
{ "name": "rentReceiver", "isMut": true, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": []
},
{
"name": "migrateBinArray",
"accounts": [{ "name": "lbPair", "isMut": false, "isSigner": false }],
"args": []
},
{
"name": "updateFeesAndRewards",
"accounts": [
{ "name": "position", "isMut": true, "isSigner": false },
{ "name": "lbPair", "isMut": true, "isSigner": false },
{ "name": "binArrayLower", "isMut": true, "isSigner": false },
{ "name": "binArrayUpper", "isMut": true, "isSigner": false },
{ "name": "owner", "isMut": false, "isSigner": true }
],
"args": []
},
{
"name": "withdrawIneligibleReward",
"accounts": [
{ "name": "lbPair", "isMut": true, "isSigner": false },
{ "name": "rewardVault", "isMut": true, "isSigner": false },
{ "name": "rewardMint", "isMut": false, "isSigner": false },
{ "name": "funderTokenAccount", "isMut": true, "isSigner": false },
{ "name": "funder", "isMut": false, "isSigner": true },
{ "name": "binArray", "isMut": true, "isSigner": false },
{ "name": "tokenProgram", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [{ "name": "rewardIndex", "type": "u64" }]
},
{
"name": "setActivationSlot",
"accounts": [
{ "name": "lbPair", "isMut": true, "isSigner": false },
{ "name": "admin", "isMut": true, "isSigner": true }
],
"args": [{ "name": "activationSlot", "type": "u64" }]
},
{
"name": "setMaxSwappedAmount",
"accounts": [
{ "name": "lbPair", "isMut": true, "isSigner": false },
{ "name": "admin", "isMut": true, "isSigner": true }
],
"args": [
{ "name": "swapCapDeactivateSlot", "type": "u64" },
{ "name": "maxSwappedAmount", "type": "u64" }
]
},
{
"name": "setLockReleaseSlot",
"accounts": [
{ "name": "position", "isMut": true, "isSigner": false },
{ "name": "lbPair", "isMut": false, "isSigner": false },
{ "name": "sender", "isMut": false, "isSigner": true },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [{ "name": "newLockReleaseSlot", "type": "u64" }]
},
{
"name": "removeLiquidityByRange",
"accounts": [
{ "name": "position", "isMut": true, "isSigner": false },
{ "name": "lbPair", "isMut": true, "isSigner": false },
{
"name": "binArrayBitmapExtension",
"isMut": true,
"isSigner": false,
"isOptional": true
},
{ "name": "userTokenX", "isMut": true, "isSigner": false },
{ "name": "userTokenY", "isMut": true, "isSigner": false },
{ "name": "reserveX", "isMut": true, "isSigner": false },
{ "name": "reserveY", "isMut": true, "isSigner": false },
{ "name": "tokenXMint", "isMut": false, "isSigner": false },
{ "name": "tokenYMint", "isMut": false, "isSigner": false },
{ "name": "binArrayLower", "isMut": true, "isSigner": false },
{ "name": "binArrayUpper", "isMut": true, "isSigner": false },
{ "name": "sender", "isMut": false, "isSigner": true },
{ "name": "tokenXProgram", "isMut": false, "isSigner": false },
{ "name": "tokenYProgram", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [
{ "name": "fromBinId", "type": "i32" },
{ "name": "toBinId", "type": "i32" },
{ "name": "bpsToRemove", "type": "u16" }
]
},
{
"name": "addLiquidityOneSidePrecise",
"accounts": [
{ "name": "position", "isMut": true, "isSigner": false },
{ "name": "lbPair", "isMut": true, "isSigner": false },
{
"name": "binArrayBitmapExtension",
"isMut": true,
"isSigner": false,
"isOptional": true
},
{ "name": "userToken", "isMut": true, "isSigner": false },
{ "name": "reserve", "isMut": true, "isSigner": false },
{ "name": "tokenMint", "isMut": false, "isSigner": false },
{ "name": "binArrayLower", "isMut": true, "isSigner": false },
{ "name": "binArrayUpper", "isMut": true, "isSigner": false },
{ "name": "sender", "isMut": false, "isSigner": true },
{ "name": "tokenProgram", "isMut": false, "isSigner": false },
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [
{
"name": "parameter",
"type": { "defined": "AddLiquiditySingleSidePreciseParameter" }
}
]
},
{
"name": "goToABin",
"accounts": [
{ "name": "lbPair", "isMut": true, "isSigner": false },
{
"name": "binArrayBitmapExtension",
"isMut": false,
"isSigner": false,
"isOptional": true
},
{
"name": "fromBinArray",
"isMut": false,
"isSigner": false,
"isOptional": true
},
{
"name": "toBinArray",
"isMut": false,
"isSigner": false,
"isOptional": true
},
{ "name": "eventAuthority", "isMut": false, "isSigner": false },
{ "name": "program", "isMut": false, "isSigner": false }
],
"args": [{ "name": "binId", "type": "i32" }]
}
],
"accounts": [
{
"name": "BinArrayBitmapExtension",
"type": {
"kind": "struct",
"fields": [
{ "name": "lbPair", "type": "publicKey" },
{
"name": "positiveBinArrayBitmap",
"docs": [
"Packed initialized bin array state for start_bin_index is positive"
],
"type": { "array": [{ "array": ["u64", 8] }, 12] }
},
{
"name": "negativeBinArrayBitmap",
"docs": [
"Packed initialized bin array state for start_bin_index is negative"
],
"type": { "array": [{ "array": ["u64", 8] }, 12] }
}
]
}
},
{
"name": "BinArray",
"docs": [
"An account to contain a range of bin. For example: Bin 100 <-> 200.",
"For example:",
"BinArray index: 0 contains bin 0 <-> 599",
"index: 2 contains bin 600 <-> 1199, ..."
],
"type": {
"kind": "struct",
"fields": [
{ "name": "index", "type": "i64" },
{ "name": "version", "docs": ["Version of binArray"], "type": "u8" },
{ "name": "padding", "type": { "array": ["u8", 7] } },
{ "name": "lbPair", "type": "publicKey" },
{ "name": "bins", "type": { "array": [{ "defined": "Bin" }, 70] } }
]
}
},
{
"name": "LbPair",
"type": {
"kind": "struct",
"fields": [
{ "name": "parameters", "type": { "defined": "StaticParameters" } },
{
"name": "vParameters",
"type": { "defined": "VariableParameters" }
},
{ "name": "bumpSeed", "type": { "array": ["u8", 1] } },
{
"name": "binStepSeed",
"docs": ["Bin step signer seed"],
"type": { "array": ["u8", 2] }
},
{ "name": "pairType", "docs": ["Type of the pair"], "type": "u8" },
{ "name": "activeId", "docs": ["Active bin id"], "type": "i32" },
{
"name": "binStep",
"docs": ["Bin step. Represent the price increment / decrement."],
"type": "u16"
},
{
"name": "status",
"docs": ["Status of the pair. Check PairStatus enum."],
"type": "u8"
},
{ "name": "padding1", "type": { "array": ["u8", 5] } },
{
"name": "tokenXMint",
"docs": ["Token X mint"],
"type": "publicKey"
},
{
"name": "tokenYMint",
"docs": ["Token Y mint"],
"type": "publicKey"
},
{
"name": "reserveX",
"docs": ["LB token X vault"],
"type": "publicKey"
},
{
"name": "reserveY",
"docs": ["LB token Y vault"],
"type": "publicKey"
},
{
"name": "protocolFee",
"docs": ["Uncollected protocol fee"],
"type": { "defined": "ProtocolFee" }
},
{
"name": "feeOwner",
"docs": ["Protocol fee owner,"],
"type": "publicKey"
},
{
"name": "rewardInfos",
"docs": ["Farming reward information"],
"type": { "array": [{ "defined": "RewardInfo" }, 2] }
},
{ "name": "oracle", "docs": ["Oracle pubkey"], "type": "publicKey" },
{
"name": "binArrayBitmap",
"docs": ["Packed initialized bin array state"],
"type": { "array": ["u64", 16] }
},
{
"name": "lastUpdatedAt",
"docs": ["Last time the pool fee parameter was updated"],
"type": "i64"
},
{
"name": "whitelistedWallet",
"docs": ["Whitelisted wallet"],
"type": { "array": ["publicKey", 2] }
},
{
"name": "baseKey",
"docs": ["Base keypair. Only required for permission pair"],
"type": "publicKey"
},
{
"name": "activationSlot",
"docs": [
"Slot to enable the pair. Only applicable for permission pair."
],
"type": "u64"
},
{
"name": "swapCapDeactivateSlot",
"docs": [
"Last slot until pool remove max_swapped_amount for buying"
],
"type": "u64"
},
{
"name": "maxSwappedAmount",
"docs": [
"Max X swapped amount user can swap from y to x between activation_slot and last_slot"
],
"type": "u64"
},
{
"name": "lockDurationsInSlot",
"docs": [
"Liquidity lock duration for positions which created before activate. Only applicable for permission pair."
],
"type": "u64"
},
{ "name": "creator", "docs": ["Pool creator"], "type": "publicKey" },
{
"name": "reserved",
"docs": ["Reserved space for future use"],
"type": { "array": ["u8", 24] }
}
]
}
},
{
"name": "Oracle",
"type": {
"kind": "struct",
"fields": [
{
"name": "idx",
"docs": ["Index of latest observation slot"],
"type": "u64"
},
{
"name": "activeSize",
"docs": [
"Size of active sample. Active sample is initialized observation."
],
"type": "u64"
},
{
"name": "length",
"docs": ["Number of observations"],
"type": "u64"
}
]
}
},
{
"name": "Position",
"type": {
"kind": "struct",
"fields": [
{
"name": "lbPair",
"docs": ["The LB pair of this position"],
"type": "publicKey"
},
{
"name": "owner",
"docs": [
"Owner of the position. Client rely on this to to fetch their positions."
],
"type": "publicKey"
},
{
"name": "liquidityShares",
"docs": [
"Liquidity shares of this position in bins (lower_bin_id <-> upper_bin_id). This is the same as LP concept."
],
"type": { "array": ["u64", 70] }
},
{
"name": "rewardInfos",
"docs": ["Farming reward information"],
"type": { "array": [{ "defined": "UserRewardInfo" }, 70] }
},
{
"name": "feeInfos",
"docs": ["Swap fee to claim information"],
"type": { "array": [{ "defined": "FeeInfo" }, 70] }
},
{ "name": "lowerBinId", "docs": ["Lower bin ID"], "type": "i32" },
{ "name": "upperBinId", "docs": ["Upper bin ID"], "type": "i32" },
{
"name": "lastUpdatedAt",
"docs": ["Last updated timestamp"],
"type": "i64"
},
{
"name": "totalClaimedFeeXAmount",
"docs": ["Total claimed token fee X"],
"type": "u64"
},
{
"name": "totalClaimedFeeYAmount",
"docs": ["Total claimed token fee Y"],
"type": "u64"
},
{
"name": "totalClaimedRewards",
"docs": ["Total claimed rewards"],
"type": { "array": ["u64", 2] }
},
{
"name": "reserved",
"docs": ["Reserved space for future use"],
"type": { "array": ["u8", 160] }
}
]
}
},
{
"name": "PositionV2",
"type": {
"kind": "struct",
"fields": [
{
"name": "lbPair",
"docs": ["The LB pair of this position"],
"type": "publicKey"
},
{
"name": "owner",
"docs": [
"Owner of the position. Client rely on this to to fetch their positions."
],
"type": "publicKey"
},
{
"name": "liquidityShares",
"docs": [
"Liquidity shares of this position in bins (lower_bin_id <-> upper_bin_id). This is the same as LP concept."
],
"type": { "array": ["u128", 70] }
},
{
"name": "rewardInfos",
"docs": ["Farming reward information"],
"type": { "array": [{ "defined": "UserRewardInfo" }, 70] }
},
{
"name": "feeInfos",
"docs": ["Swap fee to claim information"],
"type": { "array": [{ "defined": "FeeInfo" }, 70] }
},
{ "name": "lowerBinId", "docs": ["Lower bin ID"], "type": "i32" },
{ "name": "upperBinId", "docs": ["Upper bin ID"], "type": "i32" },
{
"name": "lastUpdatedAt",
"docs": ["Last updated timestamp"],
"type": "i64"
},
{
"name": "totalClaimedFeeXAmount",
"docs": ["Total claimed token fee X"],
"type": "u64"
},
{
"name": "totalClaimedFeeYAmount",
"docs": ["Total claimed token fee Y"],
"type": "u64"
},
{
"name": "totalClaimedRewards",
"docs": ["Total claimed rewards"],
"type": { "array": ["u64", 2] }
},
{
"name": "operator",
"docs": ["Operator of position"],
"type": "publicKey"
},
{
"name": "lockReleaseSlot",
"docs": ["Slot which the locked liquidity can be withdraw"],
"type": "u64"
},
{
"name": "subjectedToBootstrapLiquidityLocking",
"docs": [
"Is the position subjected to liquidity locking for the launch pool."
],
"type": "u8"
},
{
"name": "feeOwner",
"docs": [
"Address is able to claim fee in this position, only valid for bootstrap_liquidity_position"
],
"type": "publicKey"
},
{
"name": "reserved",
"docs": ["Reserved space for future use"],
"type": { "array": ["u8", 87] }
}
]
}
},
{
"name": "PresetParameter",
"type": {
"kind": "struct",
"fields": [
{
"name": "binStep",
"docs": ["Bin step. Represent the price increment / decrement."],
"type": "u16"
},
{
"name": "baseFactor",
"docs": [
"Used for base fee calculation. base_fee_rate = base_factor * bin_step"
],
"type": "u16"
},
{
"name": "filterPeriod",
"docs": [
"Filter period determine high frequency trading time window."
],
"type": "u16"
},
{
"name": "decayPeriod",
"docs": [
"Decay period determine when the volatile fee start decay / decrease."
],
"type": "u16"
},
{
"name": "reductionFactor",
"docs": [
"Reduction factor controls the volatile fee rate decrement rate."
],
"type": "u16"
},
{
"name": "variableFeeControl",
"docs": [
"Used to scale the variable fee component depending on the dynamic of the market"
],
"type": "u32"
},
{
"name": "maxVolatilityAccumulator",
"docs": [
"Maximum number of bin crossed can be accumulated. Used to cap volatile fee rate."
],
"type": "u32"
},
{
"name": "minBinId",
"docs": [
"Min bin id supported by the pool based on the configured bin step."
],
"type": "i32"
},
{
"name": "maxBinId",
"docs": [
"Max bin id supported by the pool based on the configured bin step."
],
"type": "i32"
},
{
"name": "protocolShare",
"docs": [
"Portion of swap fees retained by the protocol by controlling protocol_share parameter. protocol_swap_fee = protocol_share * total_swap_fee"
],
"type": "u16"
}
]
}
}
],
"types": [
{
"name": "LiquidityParameterByStrategyOneSide",
"type": {
"kind": "struct",
"fields": [
{
"name": "amount",
"docs": ["Amount of X token or Y token to deposit"],
"type": "u64"
},
{
"name": "activeId",
"docs": ["Active bin that integrator observe off-chain"],
"type": "i32"
},
{
"name": "maxActiveBinSlippage",
"docs": ["max active bin slippage allowed"],
"type": "i32"
},
{
"name": "strategyParameters",
"docs": ["strategy parameters"],
"type": { "defined": "StrategyParameters" }
}
]
}
},
{
"name": "LiquidityParameterByStrategy",
"type": {
"kind": "struct",
"fields": [
{
"name": "amountX",
"docs": ["Amount of X token to deposit"],
"type": "u64"
},
{
"name": "amountY",
"docs": ["Amount of Y token to deposit"],
"type": "u64"
},
{
"name": "activeId",
"docs": ["Active bin that integrator observe off-chain"],
"type": "i32"
},
{
"name": "maxActiveBinSlippage",
"docs": ["max active bin slippage allowed"],
"type": "i32"
},
{
"name": "strategyParameters",
"docs": ["strategy parameters"],
"type": { "defined": "StrategyParameters" }
}
]
}
},
{
"name": "StrategyParameters",
"type": {
"kind": "struct",
"fields": [
{ "name": "minBinId", "docs": ["min bin id"], "type": "i32" },
{ "name": "maxBinId", "docs": ["max bin id"], "type": "i32" },
{
"name": "strategyType",
"docs": ["strategy type"],
"type": { "defined": "StrategyType" }
},
{
"name": "parameteres",
"docs": ["parameters"],
"type": { "array": ["u8", 64] }
}
]
}
},
{
"name": "LiquidityOneSideParameter",
"type": {
"kind": "struct",
"fields": [
{
"name": "amount",
"docs": ["Amount of X token or Y token to deposit"],
"type": "u64"
},
{
"name": "activeId",
"docs": ["Active bin that integrator observe off-chain"],
"type": "i32"
},
{
"name": "maxActiveBinSlippage",
"docs": ["max active bin slippage allowed"],
"type": "i32"
},
{
"name": "binLiquidityDist",
"docs": ["Liquidity distribution to each bins"],
"type": { "vec": { "defined": "BinLiquidityDistributionByWeight" } }
}
]
}
},
{
"name": "BinLiquidityDistributionByWeight",
"type": {
"kind": "struct",
"fields": [
{
"name": "binId",
"docs": ["Define the bin ID wish to deposit to."],
"type": "i32"
},
{
"name": "weight",
"docs": ["weight of liquidity distributed for this bin id"],
"type": "u16"
}
]
}
},
{
"name": "LiquidityParameterByWeight",
"type": {
"kind": "struct",
"fields": [
{
"name": "amountX",
"docs": ["Amount of X token to deposit"],
"type": "u64"
},
{
"name": "amountY",
"docs": ["Amount of Y token to deposit"],
"type": "u64"
},
{
"name": "activeId",
"docs": ["Active bin that integrator observe off-chain"],
"type": "i32"
},
{
"name": "maxActiveBinSlippage",
"docs": ["max active bin slippage allowed"],
"type": "i32"
},
{
"name": "binLiquidityDist",
"docs": ["Liquidity distribution to each bins"],
"type": { "vec": { "defined": "BinLiquidityDistributionByWeight" } }
}
]
}
},
{
"name": "AddLiquiditySingleSidePreciseParameter",
"type": {
"kind": "struct",
"fields": [
{
"name": "bins",
"type": { "vec": { "defined": "CompressedBinDepositAmount" } }
},
{ "name": "decompressMultiplier", "type": "u64" }
]
}
},
{
"name": "CompressedBinDepositAmount",
"type": {
"kind": "struct",
"fields": [
{ "name": "binId", "type": "i32" },
{ "name": "amount", "type": "u32" }
]
}
},
{
"name": "BinLiquidityDistribution",
"type": {
"kind": "struct",
"fields": [
{
"name": "binId",
"docs": ["Define the bin ID wish to deposit to."],
"type": "i32"
},
{
"name": "distributionX",
"docs": [
"DistributionX (or distributionY) is the percentages of amountX (or amountY) you want to add to each bin."
],
"type": "u16"
},
{
"name": "distributionY",
"docs": [
"DistributionX (or distributionY) is the percentages of amountX (or amountY) you want to add to each bin."
],
"type": "u16"
}
]
}
},
{
"name": "LiquidityParameter",
"type": {
"kind": "struct",
"fields": [
{
"name": "amountX",
"docs": ["Amount of X token to deposit"],
"type": "u64"
},
{
"name": "amountY",
"docs": ["Amount of Y token to deposit"],
"type": "u64"
},
{
"name": "binLiquidityDist",
"docs": ["Liquidity distribution to each bins"],
"type": { "vec": { "defined": "BinLiquidityDistribution" } }
}
]
}
},
{
"name": "InitPermissionPairIx",
"type": {
"kind": "struct",
"fields": [
{ "name": "activeId", "type": "i32" },
{ "name": "binStep", "type": "u16" },
{ "name": "baseFactor", "type": "u16" },
{ "name": "minBinId", "type": "i32" },
{ "name": "maxBinId", "type": "i32" },
{ "name": "lockDurationInSlot", "type": "u64" }
]
}
},
{
"name": "InitPresetParametersIx",
"type": {
"kind": "struct",
"fields": [
{
"name": "binStep",
"docs": ["Bin step. Represent the price increment / decrement."],
"type": "u16"
},
{
"name": "baseFactor",
"docs": [
"Used for base fee calculation. base_fee_rate = base_factor * bin_step"
],
"type": "u16"
},
{
"name": "filterPeriod",
"docs": [
"Filter period determine high frequency trading time window."
],
"type": "u16"
},
{
"name": "decayPeriod",
"docs": [
"Decay period determine when the volatile fee start decay / decrease."
],
"type": "u16"
},
{
"name": "reductionFactor",
"docs": [
"Reduction factor controls the volatile fee rate decrement rate."
],
"type": "u16"
},
{
"name": "variableFeeControl",
"docs": [
"Used to scale the variable fee component depending on the dynamic of the market"
],
"type": "u32"
},
{
"name": "maxVolatilityAccumulator",
"docs": [
"Maximum number of bin crossed can be accumulated. Used to cap volatile fee rate."
],
"type": "u32"
},
{
"name": "minBinId",
"docs": [
"Min bin id supported by the pool based on the configured bin step."
],
"type": "i32"
},
{
"name": "maxBinId",
"docs": [
"Max bin id supported by the pool based on the configured bin step."
],
"type": "i32"
},
{
"name": "protocolShare",
"docs": [
"Portion of swap fees retained by the protocol by controlling protocol_share parameter. protocol_swap_fee = protocol_share * total_swap_fee"
],
"type": "u16"
}
]
}
},
{
"name": "BinLiquidityReduction",
"type": {
"kind": "struct",
"fields": [
{ "name": "binId", "type": "i32" },
{ "name": "bpsToRemove", "type": "u16" }
]
}
},
{
"name": "FeeParameter",
"type": {
"kind": "struct",
"fields": [
{
"name": "protocolShare",
"docs": [
"Portion of swap fees retained by the protocol by controlling protocol_share parameter. protocol_swap_fee = protocol_share * total_swap_fee"
],
"type": "u16"
},
{
"name": "baseFactor",
"docs": ["Base factor for base fee rate"],
"type": "u16"
}
]
}
},
{
"name": "Bin",
"type": {
"kind": "struct",
"fields": [
{
"name": "amountX",
"docs": [
"Amount of token X in the bin. This already excluded protocol fees."
],
"type": "u64"
},
{
"name": "amountY",
"docs": [
"Amount of token Y in the bin. This already excluded protocol fees."
],
"type": "u64"
},
{ "name": "price", "docs": ["Bin price"], "type": "u128" },
{
"name": "liquiditySupply",
"docs": [
"Liquidities of the bin. This is the same as LP mint supply. q-number"
],
"type": "u128"
},
{
"name": "rewardPerTokenStored",
"docs": ["reward_a_per_token_stored"],
"type": { "array": ["u128", 2] }
},
{
"name": "feeAmountXPerTokenStored",
"docs": ["Swap fee amount of token X per liquidity deposited."],
"type": "u128"
},
{
"name": "feeAmountYPerTokenStored",
"docs": ["Swap fee amount of token Y per liquidity deposited."],
"type": "u128"
},
{
"name": "amountXIn",
"docs": [
"Total token X swap into the bin. Only used for tracking purpose."
],
"type": "u128"
},
{
"name": "amountYIn",
"docs": [
"Total token Y swap into he bin. Only used for tracking purpose."
],
"type": "u128"
}
]
}
},
{
"name": "ProtocolFee",
"type": {
"kind": "struct",
"fields": [
{ "name": "amountX", "type": "u64" },
{ "name": "amountY", "type": "u64" }
]
}
},
{
"name": "RewardInfo",
"docs": [
"Stores the state relevant for tracking liquidity mining rewards"
],
"type": {
"kind": "struct",
"fields": [
{
"name": "mint",
"docs": ["Reward token mint."],
"type": "publicKey"
},
{
"name": "vault",
"docs": ["Reward vault token account."],
"type": "publicKey"
},
{
"name": "funder",
"docs": ["Authority account that allows to fund rewards"],
"type": "publicKey"
},
{
"name": "rewardDuration",
"docs": ["TODO check whether we need to store it in pool"],
"type": "u64"
},
{
"name": "rewardDurationEnd",
"docs": ["TODO check whether we need to store it in pool"],
"type": "u64"
},
{
"name": "rewardRate",
"docs": ["TODO check whether we need to store it in pool"],
"type": "u128"
},
{
"name": "lastUpdateTime",
"docs": ["The last time reward states were updated."],
"type": "u64"
},
{
"name": "cumulativeSecondsWithEmptyLiquidityReward",
"docs": [
"Accumulated seconds where when farm distribute rewards, but the bin is empty. The reward will be accumulated for next reward time window."
],
"type": "u64"
}
]
}
},
{
"name": "Observation",
"type": {
"kind": "struct",
"fields": [
{
"name": "cumulativeActiveBinId",
"docs": ["Cumulative active bin ID"],
"type": "i128"
},
{
"name": "createdAt",
"docs": ["Observation sample created timestamp"],
"type": "i64"
},
{
"name": "lastUpdatedAt",
"docs": ["Observation sample last updated timestamp"],
"type": "i64"
}
]
}
},
{
"name": "StaticParameters",
"docs": ["Parameter that set by the protocol"],
"type": {
"kind": "struct",
"fields": [
{
"name": "baseFactor",
"docs": [
"Used for base fee calculation. base_fee_rate = base_factor * bin_step"
],
"type": "u16"
},
{
"name": "filterPeriod",
"docs": [
"Filter period determine high frequency trading time window."
],
"type": "u16"
},
{
"name": "decayPeriod",
"docs": [
"Decay period determine when the volatile fee start decay / decrease."
],
"type": "u16"
},
{
"name": "reductionFactor",
"docs": [
"Reduction factor controls the volatile fee rate decrement rate."
],
"type": "u16"
},
{
"name": "variableFeeControl",
"docs": [
"Used to scale the variable fee component depending on the dynamic of the market"
],
"type": "u32"
},
{
"name": "maxVolatilityAccumulator",
"docs": [
"Maximum number of bin crossed can be accumulated. Used to cap volatile fee rate."
],
"type": "u32"
},
{
"name": "minBinId",
"docs": [
"Min bin id supported by the pool based on the configured bin step."
],
"type": "i32"
},
{
"name": "maxBinId",
"docs": [
"Max bin id supported by the pool based on the configured bin step."
],
"type": "i32"
},
{
"name": "protocolShare",
"docs": [
"Portion of swap fees retained by the protocol by controlling protocol_share parameter. protocol_swap_fee = protocol_share * total_swap_fee"
],
"type": "u16"
},
{
"name": "padding",
"docs": ["Padding for bytemuck safe alignment"],
"type": { "array": ["u8", 6] }
}
]
}
},
{
"name": "VariableParameters",
"docs": ["Parameters that changes based on dynamic of the market"],
"type": {
"kind": "struct",
"fields": [
{
"name": "volatilityAccumulator",
"docs": [
"Volatility accumulator measure the number of bin crossed since reference bin ID. Normally (without filter period taken into consideration), reference bin ID is the active bin of last swap.",
"It affects the variable fee rate"
],
"type": "u32"
},
{
"name": "volatilityReference",
"docs": [
"Volatility reference is decayed volatility accumulator. It is always <= volatility_accumulator"
],
"type": "u32"
},
{
"name": "indexReference",
"docs": ["Active bin id of last swap."],
"type": "i32"
},
{
"name": "padding",
"docs": ["Padding for bytemuck safe alignment"],
"type": { "array": ["u8", 4] }
},
{
"name": "lastUpdateTimestamp",
"docs": ["Last timestamp the variable parameters was updated"],
"type": "i64"
},
{
"name": "padding1",
"docs": ["Padding for bytemuck safe alignment"],
"type": { "array": ["u8", 8] }
}
]
}
},
{
"name": "FeeInfo",
"type": {
"kind": "struct",
"fields": [
{ "name": "feeXPerTokenComplete", "type": "u128" },
{ "name": "feeYPerTokenComplete", "type": "u128" },
{ "name": "feeXPending", "type": "u64" },
{ "name": "feeYPending", "type": "u64" }
]
}
},
{
"name": "UserRewardInfo",
"type": {
"kind": "struct",
"fields": [
{
"name": "rewardPerTokenCompletes",
"type": { "array": ["u128", 2] }
},
{ "name": "rewardPendings", "type": { "array": ["u64", 2] } }
]
}
},
{
"name": "StrategyType",
"type": {
"kind": "enum",
"variants": [
{ "name": "SpotOneSide" },
{ "name": "CurveOneSide" },
{ "name": "BidAskOneSide" },
{ "name": "SpotBalanced" },
{ "name": "CurveBalanced" },
{ "name": "BidAskBalanced" },
{ "name": "SpotImBalanced" },
{ "name": "CurveImBalanced" },
{ "name": "BidAskImBalanced" }
]
}
},
{
"name": "Rounding",
"type": {
"kind": "enum",
"variants": [{ "name": "Up" }, { "name": "Down" }]
}
},
{
"name": "LayoutVersion",
"docs": ["Layout version"],
"type": {
"kind": "enum",
"variants": [{ "name": "V0" }, { "name": "V1" }]
}
},
{
"name": "PairType",
"docs": [
"Type of the Pair. 0 = Permissionless, 1 = Permission. Putting 0 as permissionless for backward compatibility."
],
"type": {
"kind": "enum",
"variants": [{ "name": "Permissionless" }, { "name": "Permission" }]
}
},
{
"name": "PairStatus",
"docs": [
"Pair status. 0 = Enabled, 1 = Disabled. Putting 0 as enabled for backward compatibility."
],
"type": {
"kind": "enum",
"variants": [{ "name": "Enabled" }, { "name": "Disabled" }]
}
}
],
"events": [
{
"name": "CompositionFee",
"fields": [
{ "name": "from", "type": "publicKey", "index": false },
{ "name": "binId", "type": "i16", "index": false },
{ "name": "tokenXFeeAmount", "type": "u64", "index": false },
{ "name": "tokenYFeeAmount", "type": "u64", "index": false },
{ "name": "protocolTokenXFeeAmount", "type": "u64", "index": false },
{ "name": "protocolTokenYFeeAmount", "type": "u64", "index": false }
]
},
{
"name": "AddLiquidity",
"fields": [
{ "name": "lbPair", "type": "publicKey", "index": false },
{ "name": "from", "type": "publicKey", "index": false },
{ "name": "position", "type": "publicKey", "index": false },
{ "name": "amounts", "type": { "array": ["u64", 2] }, "index": false },
{ "name": "activeBinId", "type": "i32", "index": false }
]
},
{
"name": "RemoveLiquidity",
"fields": [
{ "name": "lbPair", "type": "publicKey", "index": false },
{ "name": "from", "type": "publicKey", "index": false },
{ "name": "position", "type": "publicKey", "index": false },
{ "name": "amounts", "type": { "array": ["u64", 2] }, "index": false },
{ "name": "activeBinId", "type": "i32", "index": false }
]
},
{
"name": "Swap",
"fields": [
{ "name": "lbPair", "type": "publicKey", "index": false },
{ "name": "from", "type": "publicKey", "index": false },
{ "name": "startBinId", "type": "i32", "index": false },
{ "name": "endBinId", "type": "i32", "index": false },
{ "name": "amountIn", "type": "u64", "index": false },
{ "name": "amountOut", "type": "u64", "index": false },
{ "name": "swapForY", "type": "bool", "index": false },
{ "name": "fee", "type": "u64", "index": false },
{ "name": "protocolFee", "type": "u64", "index": false },
{ "name": "feeBps", "type": "u128", "index": false },
{ "name": "hostFee", "type": "u64", "index": false }
]
},
{
"name": "ClaimReward",
"fields": [
{ "name": "lbPair", "type": "publicKey", "index": false },
{ "name": "position", "type": "publicKey", "index": false },
{ "name": "owner", "type": "publicKey", "index": false },
{ "name": "rewardIndex", "type": "u64", "index": false },
{ "name": "totalReward", "type": "u64", "index": false }
]
},
{
"name": "FundReward",
"fields": [
{ "name": "lbPair", "type": "publicKey", "index": false },
{ "name": "funder", "type": "publicKey", "index": false },
{ "name": "rewardIndex", "type": "u64", "index": false },
{ "name": "amount", "type": "u64", "index": false }
]
},
{
"name": "InitializeReward",
"fields": [
{ "name": "lbPair", "type": "publicKey", "index": false },
{ "name": "rewardMint", "type": "publicKey", "index": false },
{ "name": "funder", "type": "publicKey", "index": false },
{ "name": "rewardIndex", "type": "u64", "index": false },
{ "name": "rewardDuration", "type": "u64", "index": false }
]
},
{
"name": "UpdateRewardDuration",
"fields": [
{ "name": "lbPair", "type": "publicKey", "index": false },
{ "name": "rewardIndex", "type": "u64", "index": false },
{ "name": "oldRewardDuration", "type": "u64", "index": false },
{ "name": "newRewardDuration", "type": "u64", "index": false }
]
},
{
"name": "UpdateRewardFunder",
"fields": [
{ "name": "lbPair", "type": "publicKey", "index": false },
{ "name": "rewardIndex", "type": "u64", "index": false },
{ "name": "oldFunder", "type": "publicKey", "index": false },
{ "name": "newFunder", "type": "publicKey", "index": false }
]
},
{
"name": "PositionClose",
"fields": [
{ "name": "position", "type": "publicKey", "index": false },
{ "name": "owner", "type": "publicKey", "index": false }
]
},
{
"name": "ClaimFee",
"fields": [
{ "name": "lbPair", "type": "publicKey", "index": false },
{ "name": "position", "type": "publicKey", "index": false },
{ "name": "owner", "type": "publicKey", "index": false },
{ "name": "feeX", "type": "u64", "index": false },
{ "name": "feeY", "type": "u64", "index": false }
]
},
{
"name": "LbPairCreate",
"fields": [
{ "name": "lbPair", "type": "publicKey", "index": false },
{ "name": "binStep", "type": "u16", "index": false },
{ "name": "tokenX", "type": "publicKey", "index": false },
{ "name": "tokenY", "type": "publicKey", "index": false }
]
},
{
"name": "PositionCreate",
"fields": [
{ "name": "lbPair", "type": "publicKey", "index": false },
{ "name": "position", "type": "publicKey", "index": false },
{ "name": "owner", "type": "publicKey", "index": false }
]
},
{
"name": "FeeParameterUpdate",
"fields": [
{ "name": "lbPair", "type": "publicKey", "index": false },
{ "name": "protocolShare", "type": "u16", "index": false },
{ "name": "baseFactor", "type": "u16", "index": false }
]
},
{
"name": "IncreaseObservation",
"fields": [
{ "name": "oracle", "type": "publicKey", "index": false },
{ "name": "newObservationLength", "type": "u64", "index": false }
]
},
{
"name": "WithdrawIneligibleReward",
"fields": [
{ "name": "lbPair", "type": "publicKey", "index": false },
{ "name": "rewardMint", "type": "publicKey", "index": false },
{ "name": "amount", "type": "u64", "index": false }
]
},
{
"name": "UpdatePositionOperator",
"fields": [
{ "name": "position", "type": "publicKey", "index": false },
{ "name": "oldOperator", "type": "publicKey", "index": false },
{ "name": "newOperator", "type": "publicKey", "index": false }
]
},
{
"name": "UpdatePositionLockReleaseSlot",
"fields": [
{ "name": "position", "type": "publicKey", "index": false },
{ "name": "currentSlot", "type": "u64", "index": false },
{ "name": "newLockReleaseSlot", "type": "u64", "index": false },
{ "name": "oldLockReleaseSlot", "type": "u64", "index": false },
{ "name": "sender", "type": "publicKey", "index": false }
]
},
{
"name": "GoToABin",
"fields": [
{ "name": "lbPair", "type": "publicKey", "index": false },
{ "name": "fromBinId", "type": "i32", "index": false },
{ "name": "toBinId", "type": "i32", "index": false }
]
}
],
"errors": [
{
"code": 6000,
"name": "InvalidStartBinIndex",
"msg": "Invalid start bin index"
},
{ "code": 6001, "name": "InvalidBinId", "msg": "Invalid bin id" },
{ "code": 6002, "name": "InvalidInput", "msg": "Invalid input data" },
{
"code": 6003,
"name": "ExceededAmountSlippageTolerance",
"msg": "Exceeded amount slippage tolerance"
},
{
"code": 6004,
"name": "ExceededBinSlippageTolerance",
"msg": "Exceeded bin slippage tolerance"
},
{
"code": 6005,
"name": "CompositionFactorFlawed",
"msg": "Composition factor flawed"
},
{ "code": 6006, "name": "NonPresetBinStep", "msg": "Non preset bin step" },
{ "code": 6007, "name": "ZeroLiquidity", "msg": "Zero liquidity" },
{ "code": 6008, "name": "InvalidPosition", "msg": "Invalid position" },
{ "code": 6009, "name": "BinArrayNotFound", "msg": "Bin array not found" },
{ "code": 6010, "name": "InvalidTokenMint", "msg": "Invalid token mint" },
{
"code": 6011,
"name": "InvalidAccountForSingleDeposit",
"msg": "Invalid account for single deposit"
},
{
"code": 6012,
"name": "PairInsufficientLiquidity",
"msg": "Pair insufficient liquidity"
},
{ "code": 6013, "name": "InvalidFeeOwner", "msg": "Invalid fee owner" },
{
"code": 6014,
"name": "InvalidFeeWithdrawAmount",
"msg": "Invalid fee withdraw amount"
},
{ "code": 6015, "name": "InvalidAdmin", "msg": "Invalid admin" },
{ "code": 6016, "name": "IdenticalFeeOwner", "msg": "Identical fee owner" },
{ "code": 6017, "name": "InvalidBps", "msg": "Invalid basis point" },
{ "code": 6018, "name": "MathOverflow", "msg": "Math operation overflow" },
{ "code": 6019, "name": "TypeCastFailed", "msg": "Type cast error" },
{
"code": 6020,
"name": "InvalidRewardIndex",
"msg": "Invalid reward index"
},
{
"code": 6021,
"name": "InvalidRewardDuration",
"msg": "Invalid reward duration"
},
{
"code": 6022,
"name": "RewardInitialized",
"msg": "Reward already initialized"
},
{
"code": 6023,
"name": "RewardUninitialized",
"msg": "Reward not initialized"
},
{ "code": 6024, "name": "IdenticalFunder", "msg": "Identical funder" },
{
"code": 6025,
"name": "RewardCampaignInProgress",
"msg": "Reward campaign in progress"
},
{
"code": 6026,
"name": "IdenticalRewardDuration",
"msg": "Reward duration is the same"
},
{ "code": 6027, "name": "InvalidBinArray", "msg": "Invalid bin array" },
{
"code": 6028,
"name": "NonContinuousBinArrays",
"msg": "Bin arrays must be continuous"
},
{
"code": 6029,
"name": "InvalidRewardVault",
"msg": "Invalid reward vault"
},
{
"code": 6030,
"name": "NonEmptyPosition",
"msg": "Position is not empty"
},
{
"code": 6031,
"name": "UnauthorizedAccess",
"msg": "Unauthorized access"
},
{
"code": 6032,
"name": "InvalidFeeParameter",
"msg": "Invalid fee parameter"
},
{ "code": 6033, "name": "MissingOracle", "msg": "Missing oracle account" },
{
"code": 6034,
"name": "InsufficientSample",
"msg": "Insufficient observation sample"
},
{
"code": 6035,
"name": "InvalidLookupTimestamp",
"msg": "Invalid lookup timestamp"
},
{
"code": 6036,
"name": "BitmapExtensionAccountIsNotProvided",
"msg": "Bitmap extension account is not provided"
},
{
"code": 6037,
"name": "CannotFindNonZeroLiquidityBinArrayId",
"msg": "Cannot find non-zero liquidity binArrayId"
},
{ "code": 6038, "name": "BinIdOutOfBound", "msg": "Bin id out of bound" },
{
"code": 6039,
"name": "InsufficientOutAmount",
"msg": "Insufficient amount in for minimum out"
},
{
"code": 6040,
"name": "InvalidPositionWidth",
"msg": "Invalid position width"
},
{
"code": 6041,
"name": "ExcessiveFeeUpdate",
"msg": "Excessive fee update"
},
{ "code": 6042, "name": "PoolDisabled", "msg": "Pool disabled" },
{ "code": 6043, "name": "InvalidPoolType", "msg": "Invalid pool type" },
{
"code": 6044,
"name": "ExceedMaxWhitelist",
"msg": "Whitelist for wallet is full"
},
{ "code": 6045, "name": "InvalidIndex", "msg": "Invalid index" },
{ "code": 6046, "name": "RewardNotEnded", "msg": "Reward not ended" },
{
"code": 6047,
"name": "MustWithdrawnIneligibleReward",
"msg": "Must withdraw ineligible reward"
},
{
"code": 6048,
"name": "UnauthorizedAddress",
"msg": "Unauthorized address"
},
{
"code": 6049,
"name": "OperatorsAreTheSame",
"msg": "Cannot update because operators are the same"
},
{
"code": 6050,
"name": "WithdrawToWrongTokenAccount",
"msg": "Withdraw to wrong token account"
},
{ "code": 6051, "name": "WrongRentReceiver", "msg": "Wrong rent receiver" },
{
"code": 6052,
"name": "AlreadyPassActivationSlot",
"msg": "Already activated"
},
{
"code": 6053,
"name": "LastSlotCannotBeSmallerThanActivateSlot",
"msg": "Last slot cannot be smaller than activate slot"
},
{
"code": 6054,
"name": "ExceedMaxSwappedAmount",
"msg": "Swapped amount is exceeded max swapped amount"
},
{
"code": 6055,
"name": "InvalidStrategyParameters",
"msg": "Invalid strategy parameters"
},
{ "code": 6056, "name": "LiquidityLocked", "msg": "Liquidity locked" },
{
"code": 6057,
"name": "InvalidLockReleaseSlot",
"msg": "Invalid lock release slot"
},
{
"code": 6058,
"name": "BinRangeIsNotEmpty",
"msg": "Bin range is not empty"
}
]
}