@orca-so/whirlpools-sdk
Version:
Typescript SDK to interact with Orca's Whirlpool program.
1,396 lines • 147 kB
JSON
{
"version": "0.3.5",
"name": "whirlpool",
"instructions": [
{
"name": "initializeConfig",
"docs": [
"Initializes a WhirlpoolsConfig account that hosts info & authorities",
"required to govern a set of Whirlpools.",
"",
"### Parameters",
"- `fee_authority` - Authority authorized to initialize fee-tiers and set customs fees.",
"- `collect_protocol_fees_authority` - Authority authorized to collect protocol fees.",
"- `reward_emissions_super_authority` - Authority authorized to set reward authorities in pools."
],
"accounts": [
{
"name": "config",
"isMut": true,
"isSigner": true
},
{
"name": "funder",
"isMut": true,
"isSigner": true
},
{
"name": "systemProgram",
"isMut": false,
"isSigner": false
}
],
"args": [
{
"name": "feeAuthority",
"type": "publicKey"
},
{
"name": "collectProtocolFeesAuthority",
"type": "publicKey"
},
{
"name": "rewardEmissionsSuperAuthority",
"type": "publicKey"
},
{
"name": "defaultProtocolFeeRate",
"type": "u16"
}
]
},
{
"name": "initializePool",
"docs": [
"Initializes a Whirlpool account.",
"Fee rate is set to the default values on the config and supplied fee_tier.",
"",
"### Parameters",
"- `bumps` - The bump value when deriving the PDA of the Whirlpool address.",
"- `tick_spacing` - The desired tick spacing for this pool.",
"- `initial_sqrt_price` - The desired initial sqrt-price for this pool",
"",
"#### Special Errors",
"`InvalidTokenMintOrder` - The order of mints have to be ordered by",
"`SqrtPriceOutOfBounds` - provided initial_sqrt_price is not between 2^-64 to 2^64",
""
],
"accounts": [
{
"name": "whirlpoolsConfig",
"isMut": false,
"isSigner": false
},
{
"name": "tokenMintA",
"isMut": false,
"isSigner": false
},
{
"name": "tokenMintB",
"isMut": false,
"isSigner": false
},
{
"name": "funder",
"isMut": true,
"isSigner": true
},
{
"name": "whirlpool",
"isMut": true,
"isSigner": false
},
{
"name": "tokenVaultA",
"isMut": true,
"isSigner": true
},
{
"name": "tokenVaultB",
"isMut": true,
"isSigner": true
},
{
"name": "feeTier",
"isMut": false,
"isSigner": false
},
{
"name": "tokenProgram",
"isMut": false,
"isSigner": false
},
{
"name": "systemProgram",
"isMut": false,
"isSigner": false
},
{
"name": "rent",
"isMut": false,
"isSigner": false
}
],
"args": [
{
"name": "bumps",
"type": {
"defined": "WhirlpoolBumps"
}
},
{
"name": "tickSpacing",
"type": "u16"
},
{
"name": "initialSqrtPrice",
"type": "u128"
}
]
},
{
"name": "initializeTickArray",
"docs": [
"Initializes a tick_array account to represent a tick-range in a Whirlpool.",
"",
"### Parameters",
"- `start_tick_index` - The starting tick index for this tick-array.",
"Has to be a multiple of TickArray size & the tick spacing of this pool.",
"",
"#### Special Errors",
"- `InvalidStartTick` - if the provided start tick is out of bounds or is not a multiple of",
"TICK_ARRAY_SIZE * tick spacing."
],
"accounts": [
{
"name": "whirlpool",
"isMut": false,
"isSigner": false
},
{
"name": "funder",
"isMut": true,
"isSigner": true
},
{
"name": "tickArray",
"isMut": true,
"isSigner": false
},
{
"name": "systemProgram",
"isMut": false,
"isSigner": false
}
],
"args": [
{
"name": "startTickIndex",
"type": "i32"
}
]
},
{
"name": "initializeFeeTier",
"docs": [
"Initializes a fee_tier account usable by Whirlpools in a WhirlpoolConfig space.",
"",
"### Authority",
"- \"fee_authority\" - Set authority in the WhirlpoolConfig",
"",
"### Parameters",
"- `tick_spacing` - The tick-spacing that this fee-tier suggests the default_fee_rate for.",
"- `default_fee_rate` - The default fee rate that a pool will use if the pool uses this",
"fee tier during initialization.",
"",
"#### Special Errors",
"- `FeeRateMaxExceeded` - If the provided default_fee_rate exceeds MAX_FEE_RATE."
],
"accounts": [
{
"name": "config",
"isMut": false,
"isSigner": false
},
{
"name": "feeTier",
"isMut": true,
"isSigner": false
},
{
"name": "funder",
"isMut": true,
"isSigner": true
},
{
"name": "feeAuthority",
"isMut": false,
"isSigner": true
},
{
"name": "systemProgram",
"isMut": false,
"isSigner": false
}
],
"args": [
{
"name": "tickSpacing",
"type": "u16"
},
{
"name": "defaultFeeRate",
"type": "u16"
}
]
},
{
"name": "initializeReward",
"docs": [
"Initialize reward for a Whirlpool. A pool can only support up to a set number of rewards.",
"",
"### Authority",
"- \"reward_authority\" - assigned authority by the reward_super_authority for the specified",
"reward-index in this Whirlpool",
"",
"### Parameters",
"- `reward_index` - The reward index that we'd like to initialize. (0 <= index <= NUM_REWARDS)",
"",
"#### Special Errors",
"- `InvalidRewardIndex` - If the provided reward index doesn't match the lowest uninitialized",
"index in this pool, or exceeds NUM_REWARDS, or",
"all reward slots for this pool has been initialized."
],
"accounts": [
{
"name": "rewardAuthority",
"isMut": false,
"isSigner": true
},
{
"name": "funder",
"isMut": true,
"isSigner": true
},
{
"name": "whirlpool",
"isMut": true,
"isSigner": false
},
{
"name": "rewardMint",
"isMut": false,
"isSigner": false
},
{
"name": "rewardVault",
"isMut": true,
"isSigner": true
},
{
"name": "tokenProgram",
"isMut": false,
"isSigner": false
},
{
"name": "systemProgram",
"isMut": false,
"isSigner": false
},
{
"name": "rent",
"isMut": false,
"isSigner": false
}
],
"args": [
{
"name": "rewardIndex",
"type": "u8"
}
]
},
{
"name": "setRewardEmissions",
"docs": [
"Set the reward emissions for a reward in a Whirlpool.",
"",
"### Authority",
"- \"reward_authority\" - assigned authority by the reward_super_authority for the specified",
"reward-index in this Whirlpool",
"",
"### Parameters",
"- `reward_index` - The reward index (0 <= index <= NUM_REWARDS) that we'd like to modify.",
"- `emissions_per_second_x64` - The amount of rewards emitted in this pool.",
"",
"#### Special Errors",
"- `RewardVaultAmountInsufficient` - The amount of rewards in the reward vault cannot emit",
"more than a day of desired emissions.",
"- `InvalidTimestamp` - Provided timestamp is not in order with the previous timestamp.",
"- `InvalidRewardIndex` - If the provided reward index doesn't match the lowest uninitialized",
"index in this pool, or exceeds NUM_REWARDS, or",
"all reward slots for this pool has been initialized."
],
"accounts": [
{
"name": "whirlpool",
"isMut": true,
"isSigner": false
},
{
"name": "rewardAuthority",
"isMut": false,
"isSigner": true
},
{
"name": "rewardVault",
"isMut": false,
"isSigner": false
}
],
"args": [
{
"name": "rewardIndex",
"type": "u8"
},
{
"name": "emissionsPerSecondX64",
"type": "u128"
}
]
},
{
"name": "openPosition",
"docs": [
"Open a position in a Whirlpool. A unique token will be minted to represent the position",
"in the users wallet. The position will start off with 0 liquidity.",
"",
"### Parameters",
"- `tick_lower_index` - The tick specifying the lower end of the position range.",
"- `tick_upper_index` - The tick specifying the upper end of the position range.",
"",
"#### Special Errors",
"- `InvalidTickIndex` - If a provided tick is out of bounds, out of order or not a multiple of",
"the tick-spacing in this pool."
],
"accounts": [
{
"name": "funder",
"isMut": true,
"isSigner": true
},
{
"name": "owner",
"isMut": false,
"isSigner": false
},
{
"name": "position",
"isMut": true,
"isSigner": false
},
{
"name": "positionMint",
"isMut": true,
"isSigner": true
},
{
"name": "positionTokenAccount",
"isMut": true,
"isSigner": false
},
{
"name": "whirlpool",
"isMut": false,
"isSigner": false
},
{
"name": "tokenProgram",
"isMut": false,
"isSigner": false
},
{
"name": "systemProgram",
"isMut": false,
"isSigner": false
},
{
"name": "rent",
"isMut": false,
"isSigner": false
},
{
"name": "associatedTokenProgram",
"isMut": false,
"isSigner": false
}
],
"args": [
{
"name": "bumps",
"type": {
"defined": "OpenPositionBumps"
}
},
{
"name": "tickLowerIndex",
"type": "i32"
},
{
"name": "tickUpperIndex",
"type": "i32"
}
]
},
{
"name": "openPositionWithMetadata",
"docs": [
"Open a position in a Whirlpool. A unique token will be minted to represent the position",
"in the users wallet. Additional Metaplex metadata is appended to identify the token.",
"The position will start off with 0 liquidity.",
"",
"### Parameters",
"- `tick_lower_index` - The tick specifying the lower end of the position range.",
"- `tick_upper_index` - The tick specifying the upper end of the position range.",
"",
"#### Special Errors",
"- `InvalidTickIndex` - If a provided tick is out of bounds, out of order or not a multiple of",
"the tick-spacing in this pool."
],
"accounts": [
{
"name": "funder",
"isMut": true,
"isSigner": true
},
{
"name": "owner",
"isMut": false,
"isSigner": false
},
{
"name": "position",
"isMut": true,
"isSigner": false
},
{
"name": "positionMint",
"isMut": true,
"isSigner": true
},
{
"name": "positionMetadataAccount",
"isMut": true,
"isSigner": false,
"docs": [
"https://github.com/metaplex-foundation/mpl-token-metadata/blob/master/programs/token-metadata/program/src/utils/metadata.rs#L78"
]
},
{
"name": "positionTokenAccount",
"isMut": true,
"isSigner": false
},
{
"name": "whirlpool",
"isMut": false,
"isSigner": false
},
{
"name": "tokenProgram",
"isMut": false,
"isSigner": false
},
{
"name": "systemProgram",
"isMut": false,
"isSigner": false
},
{
"name": "rent",
"isMut": false,
"isSigner": false
},
{
"name": "associatedTokenProgram",
"isMut": false,
"isSigner": false
},
{
"name": "metadataProgram",
"isMut": false,
"isSigner": false
},
{
"name": "metadataUpdateAuth",
"isMut": false,
"isSigner": false
}
],
"args": [
{
"name": "bumps",
"type": {
"defined": "OpenPositionWithMetadataBumps"
}
},
{
"name": "tickLowerIndex",
"type": "i32"
},
{
"name": "tickUpperIndex",
"type": "i32"
}
]
},
{
"name": "increaseLiquidity",
"docs": [
"Add liquidity to a position in the Whirlpool. This call also updates the position's accrued fees and rewards.",
"",
"### Authority",
"- `position_authority` - authority that owns the token corresponding to this desired position.",
"",
"### Parameters",
"- `liquidity_amount` - The total amount of Liquidity the user is willing to deposit.",
"- `token_max_a` - The maximum amount of tokenA the user is willing to deposit.",
"- `token_max_b` - The maximum amount of tokenB the user is willing to deposit.",
"",
"#### Special Errors",
"- `LiquidityZero` - Provided liquidity amount is zero.",
"- `LiquidityTooHigh` - Provided liquidity exceeds u128::max.",
"- `TokenMaxExceeded` - The required token to perform this operation exceeds the user defined amount."
],
"accounts": [
{
"name": "whirlpool",
"isMut": true,
"isSigner": false
},
{
"name": "tokenProgram",
"isMut": false,
"isSigner": false
},
{
"name": "positionAuthority",
"isMut": false,
"isSigner": true
},
{
"name": "position",
"isMut": true,
"isSigner": false
},
{
"name": "positionTokenAccount",
"isMut": false,
"isSigner": false
},
{
"name": "tokenOwnerAccountA",
"isMut": true,
"isSigner": false
},
{
"name": "tokenOwnerAccountB",
"isMut": true,
"isSigner": false
},
{
"name": "tokenVaultA",
"isMut": true,
"isSigner": false
},
{
"name": "tokenVaultB",
"isMut": true,
"isSigner": false
},
{
"name": "tickArrayLower",
"isMut": true,
"isSigner": false
},
{
"name": "tickArrayUpper",
"isMut": true,
"isSigner": false
}
],
"args": [
{
"name": "liquidityAmount",
"type": "u128"
},
{
"name": "tokenMaxA",
"type": "u64"
},
{
"name": "tokenMaxB",
"type": "u64"
}
]
},
{
"name": "decreaseLiquidity",
"docs": [
"Withdraw liquidity from a position in the Whirlpool. This call also updates the position's accrued fees and rewards.",
"",
"### Authority",
"- `position_authority` - authority that owns the token corresponding to this desired position.",
"",
"### Parameters",
"- `liquidity_amount` - The total amount of Liquidity the user desires to withdraw.",
"- `token_min_a` - The minimum amount of tokenA the user is willing to withdraw.",
"- `token_min_b` - The minimum amount of tokenB the user is willing to withdraw.",
"",
"#### Special Errors",
"- `LiquidityZero` - Provided liquidity amount is zero.",
"- `LiquidityTooHigh` - Provided liquidity exceeds u128::max.",
"- `TokenMinSubceeded` - The required token to perform this operation subceeds the user defined amount."
],
"accounts": [
{
"name": "whirlpool",
"isMut": true,
"isSigner": false
},
{
"name": "tokenProgram",
"isMut": false,
"isSigner": false
},
{
"name": "positionAuthority",
"isMut": false,
"isSigner": true
},
{
"name": "position",
"isMut": true,
"isSigner": false
},
{
"name": "positionTokenAccount",
"isMut": false,
"isSigner": false
},
{
"name": "tokenOwnerAccountA",
"isMut": true,
"isSigner": false
},
{
"name": "tokenOwnerAccountB",
"isMut": true,
"isSigner": false
},
{
"name": "tokenVaultA",
"isMut": true,
"isSigner": false
},
{
"name": "tokenVaultB",
"isMut": true,
"isSigner": false
},
{
"name": "tickArrayLower",
"isMut": true,
"isSigner": false
},
{
"name": "tickArrayUpper",
"isMut": true,
"isSigner": false
}
],
"args": [
{
"name": "liquidityAmount",
"type": "u128"
},
{
"name": "tokenMinA",
"type": "u64"
},
{
"name": "tokenMinB",
"type": "u64"
}
]
},
{
"name": "updateFeesAndRewards",
"docs": [
"Update the accrued fees and rewards for a position.",
"",
"#### Special Errors",
"- `TickNotFound` - Provided tick array account does not contain the tick for this position.",
"- `LiquidityZero` - Position has zero liquidity and therefore already has the most updated fees and reward values."
],
"accounts": [
{
"name": "whirlpool",
"isMut": true,
"isSigner": false
},
{
"name": "position",
"isMut": true,
"isSigner": false
},
{
"name": "tickArrayLower",
"isMut": false,
"isSigner": false
},
{
"name": "tickArrayUpper",
"isMut": false,
"isSigner": false
}
],
"args": []
},
{
"name": "collectFees",
"docs": [
"Collect fees accrued for this position.",
"",
"### Authority",
"- `position_authority` - authority that owns the token corresponding to this desired position."
],
"accounts": [
{
"name": "whirlpool",
"isMut": false,
"isSigner": false
},
{
"name": "positionAuthority",
"isMut": false,
"isSigner": true
},
{
"name": "position",
"isMut": true,
"isSigner": false
},
{
"name": "positionTokenAccount",
"isMut": false,
"isSigner": false
},
{
"name": "tokenOwnerAccountA",
"isMut": true,
"isSigner": false
},
{
"name": "tokenVaultA",
"isMut": true,
"isSigner": false
},
{
"name": "tokenOwnerAccountB",
"isMut": true,
"isSigner": false
},
{
"name": "tokenVaultB",
"isMut": true,
"isSigner": false
},
{
"name": "tokenProgram",
"isMut": false,
"isSigner": false
}
],
"args": []
},
{
"name": "collectReward",
"docs": [
"Collect rewards accrued for this position.",
"",
"### Authority",
"- `position_authority` - authority that owns the token corresponding to this desired position."
],
"accounts": [
{
"name": "whirlpool",
"isMut": false,
"isSigner": false
},
{
"name": "positionAuthority",
"isMut": false,
"isSigner": true
},
{
"name": "position",
"isMut": true,
"isSigner": false
},
{
"name": "positionTokenAccount",
"isMut": false,
"isSigner": false
},
{
"name": "rewardOwnerAccount",
"isMut": true,
"isSigner": false
},
{
"name": "rewardVault",
"isMut": true,
"isSigner": false
},
{
"name": "tokenProgram",
"isMut": false,
"isSigner": false
}
],
"args": [
{
"name": "rewardIndex",
"type": "u8"
}
]
},
{
"name": "collectProtocolFees",
"docs": [
"Collect the protocol fees accrued in this Whirlpool",
"",
"### Authority",
"- `collect_protocol_fees_authority` - assigned authority in the WhirlpoolConfig that can collect protocol fees"
],
"accounts": [
{
"name": "whirlpoolsConfig",
"isMut": false,
"isSigner": false
},
{
"name": "whirlpool",
"isMut": true,
"isSigner": false
},
{
"name": "collectProtocolFeesAuthority",
"isMut": false,
"isSigner": true
},
{
"name": "tokenVaultA",
"isMut": true,
"isSigner": false
},
{
"name": "tokenVaultB",
"isMut": true,
"isSigner": false
},
{
"name": "tokenDestinationA",
"isMut": true,
"isSigner": false
},
{
"name": "tokenDestinationB",
"isMut": true,
"isSigner": false
},
{
"name": "tokenProgram",
"isMut": false,
"isSigner": false
}
],
"args": []
},
{
"name": "swap",
"docs": [
"Perform a swap in this Whirlpool",
"",
"### Authority",
"- \"token_authority\" - The authority to withdraw tokens from the input token account.",
"",
"### Parameters",
"- `amount` - The amount of input or output token to swap from (depending on amount_specified_is_input).",
"- `other_amount_threshold` - The maximum/minimum of input/output token to swap into (depending on amount_specified_is_input).",
"- `sqrt_price_limit` - The maximum/minimum price the swap will swap to.",
"- `amount_specified_is_input` - Specifies the token the parameter `amount`represents. If true, the amount represents the input token of the swap.",
"- `a_to_b` - The direction of the swap. True if swapping from A to B. False if swapping from B to A.",
"",
"#### Special Errors",
"- `ZeroTradableAmount` - User provided parameter `amount` is 0.",
"- `InvalidSqrtPriceLimitDirection` - User provided parameter `sqrt_price_limit` does not match the direction of the trade.",
"- `SqrtPriceOutOfBounds` - User provided parameter `sqrt_price_limit` is over Whirlppool's max/min bounds for sqrt-price.",
"- `InvalidTickArraySequence` - User provided tick-arrays are not in sequential order required to proceed in this trade direction.",
"- `TickArraySequenceInvalidIndex` - The swap loop attempted to access an invalid array index during the query of the next initialized tick.",
"- `TickArrayIndexOutofBounds` - The swap loop attempted to access an invalid array index during tick crossing.",
"- `LiquidityOverflow` - Liquidity value overflowed 128bits during tick crossing.",
"- `InvalidTickSpacing` - The swap pool was initialized with tick-spacing of 0."
],
"accounts": [
{
"name": "tokenProgram",
"isMut": false,
"isSigner": false
},
{
"name": "tokenAuthority",
"isMut": false,
"isSigner": true
},
{
"name": "whirlpool",
"isMut": true,
"isSigner": false
},
{
"name": "tokenOwnerAccountA",
"isMut": true,
"isSigner": false
},
{
"name": "tokenVaultA",
"isMut": true,
"isSigner": false
},
{
"name": "tokenOwnerAccountB",
"isMut": true,
"isSigner": false
},
{
"name": "tokenVaultB",
"isMut": true,
"isSigner": false
},
{
"name": "tickArray0",
"isMut": true,
"isSigner": false
},
{
"name": "tickArray1",
"isMut": true,
"isSigner": false
},
{
"name": "tickArray2",
"isMut": true,
"isSigner": false
},
{
"name": "oracle",
"isMut": false,
"isSigner": false
}
],
"args": [
{
"name": "amount",
"type": "u64"
},
{
"name": "otherAmountThreshold",
"type": "u64"
},
{
"name": "sqrtPriceLimit",
"type": "u128"
},
{
"name": "amountSpecifiedIsInput",
"type": "bool"
},
{
"name": "aToB",
"type": "bool"
}
]
},
{
"name": "closePosition",
"docs": [
"Close a position in a Whirlpool. Burns the position token in the owner's wallet.",
"",
"### Authority",
"- \"position_authority\" - The authority that owns the position token.",
"",
"#### Special Errors",
"- `ClosePositionNotEmpty` - The provided position account is not empty."
],
"accounts": [
{
"name": "positionAuthority",
"isMut": false,
"isSigner": true
},
{
"name": "receiver",
"isMut": true,
"isSigner": false
},
{
"name": "position",
"isMut": true,
"isSigner": false
},
{
"name": "positionMint",
"isMut": true,
"isSigner": false
},
{
"name": "positionTokenAccount",
"isMut": true,
"isSigner": false
},
{
"name": "tokenProgram",
"isMut": false,
"isSigner": false
}
],
"args": []
},
{
"name": "setDefaultFeeRate",
"docs": [
"Set the default_fee_rate for a FeeTier",
"Only the current fee authority has permission to invoke this instruction.",
"",
"### Authority",
"- \"fee_authority\" - Set authority in the WhirlpoolConfig",
"",
"### Parameters",
"- `default_fee_rate` - The default fee rate that a pool will use if the pool uses this",
"fee tier during initialization.",
"",
"#### Special Errors",
"- `FeeRateMaxExceeded` - If the provided default_fee_rate exceeds MAX_FEE_RATE."
],
"accounts": [
{
"name": "whirlpoolsConfig",
"isMut": false,
"isSigner": false
},
{
"name": "feeTier",
"isMut": true,
"isSigner": false
},
{
"name": "feeAuthority",
"isMut": false,
"isSigner": true
}
],
"args": [
{
"name": "defaultFeeRate",
"type": "u16"
}
]
},
{
"name": "setDefaultProtocolFeeRate",
"docs": [
"Sets the default protocol fee rate for a WhirlpoolConfig",
"Protocol fee rate is represented as a basis point.",
"Only the current fee authority has permission to invoke this instruction.",
"",
"### Authority",
"- \"fee_authority\" - Set authority that can modify pool fees in the WhirlpoolConfig",
"",
"### Parameters",
"- `default_protocol_fee_rate` - Rate that is referenced during the initialization of a Whirlpool using this config.",
"",
"#### Special Errors",
"- `ProtocolFeeRateMaxExceeded` - If the provided default_protocol_fee_rate exceeds MAX_PROTOCOL_FEE_RATE."
],
"accounts": [
{
"name": "whirlpoolsConfig",
"isMut": true,
"isSigner": false
},
{
"name": "feeAuthority",
"isMut": false,
"isSigner": true
}
],
"args": [
{
"name": "defaultProtocolFeeRate",
"type": "u16"
}
]
},
{
"name": "setFeeRate",
"docs": [
"Sets the fee rate for a Whirlpool.",
"Fee rate is represented as hundredths of a basis point.",
"Only the current fee authority has permission to invoke this instruction.",
"",
"### Authority",
"- \"fee_authority\" - Set authority that can modify pool fees in the WhirlpoolConfig",
"",
"### Parameters",
"- `fee_rate` - The rate that the pool will use to calculate fees going onwards.",
"",
"#### Special Errors",
"- `FeeRateMaxExceeded` - If the provided fee_rate exceeds MAX_FEE_RATE."
],
"accounts": [
{
"name": "whirlpoolsConfig",
"isMut": false,
"isSigner": false
},
{
"name": "whirlpool",
"isMut": true,
"isSigner": false
},
{
"name": "feeAuthority",
"isMut": false,
"isSigner": true
}
],
"args": [
{
"name": "feeRate",
"type": "u16"
}
]
},
{
"name": "setProtocolFeeRate",
"docs": [
"Sets the protocol fee rate for a Whirlpool.",
"Protocol fee rate is represented as a basis point.",
"Only the current fee authority has permission to invoke this instruction.",
"",
"### Authority",
"- \"fee_authority\" - Set authority that can modify pool fees in the WhirlpoolConfig",
"",
"### Parameters",
"- `protocol_fee_rate` - The rate that the pool will use to calculate protocol fees going onwards.",
"",
"#### Special Errors",
"- `ProtocolFeeRateMaxExceeded` - If the provided default_protocol_fee_rate exceeds MAX_PROTOCOL_FEE_RATE."
],
"accounts": [
{
"name": "whirlpoolsConfig",
"isMut": false,
"isSigner": false
},
{
"name": "whirlpool",
"isMut": true,
"isSigner": false
},
{
"name": "feeAuthority",
"isMut": false,
"isSigner": true
}
],
"args": [
{
"name": "protocolFeeRate",
"type": "u16"
}
]
},
{
"name": "setFeeAuthority",
"docs": [
"Sets the fee authority for a WhirlpoolConfig.",
"The fee authority can set the fee & protocol fee rate for individual pools or",
"set the default fee rate for newly minted pools.",
"Only the current fee authority has permission to invoke this instruction.",
"",
"### Authority",
"- \"fee_authority\" - Set authority that can modify pool fees in the WhirlpoolConfig"
],
"accounts": [
{
"name": "whirlpoolsConfig",
"isMut": true,
"isSigner": false
},
{
"name": "feeAuthority",
"isMut": false,
"isSigner": true
},
{
"name": "newFeeAuthority",
"isMut": false,
"isSigner": false
}
],
"args": []
},
{
"name": "setCollectProtocolFeesAuthority",
"docs": [
"Sets the fee authority to collect protocol fees for a WhirlpoolConfig.",
"Only the current collect protocol fee authority has permission to invoke this instruction.",
"",
"### Authority",
"- \"fee_authority\" - Set authority that can collect protocol fees in the WhirlpoolConfig"
],
"accounts": [
{
"name": "whirlpoolsConfig",
"isMut": true,
"isSigner": false
},
{
"name": "collectProtocolFeesAuthority",
"isMut": false,
"isSigner": true
},
{
"name": "newCollectProtocolFeesAuthority",
"isMut": false,
"isSigner": false
}
],
"args": []
},
{
"name": "setRewardAuthority",
"docs": [
"Set the whirlpool reward authority at the provided `reward_index`.",
"Only the current reward authority for this reward index has permission to invoke this instruction.",
"",
"### Authority",
"- \"reward_authority\" - Set authority that can control reward emission for this particular reward.",
"",
"#### Special Errors",
"- `InvalidRewardIndex` - If the provided reward index doesn't match the lowest uninitialized",
"index in this pool, or exceeds NUM_REWARDS, or",
"all reward slots for this pool has been initialized."
],
"accounts": [
{
"name": "whirlpool",
"isMut": true,
"isSigner": false
},
{
"name": "rewardAuthority",
"isMut": false,
"isSigner": true
},
{
"name": "newRewardAuthority",
"isMut": false,
"isSigner": false
}
],
"args": [
{
"name": "rewardIndex",
"type": "u8"
}
]
},
{
"name": "setRewardAuthorityBySuperAuthority",
"docs": [
"Set the whirlpool reward authority at the provided `reward_index`.",
"Only the current reward super authority has permission to invoke this instruction.",
"",
"### Authority",
"- \"reward_authority\" - Set authority that can control reward emission for this particular reward.",
"",
"#### Special Errors",
"- `InvalidRewardIndex` - If the provided reward index doesn't match the lowest uninitialized",
"index in this pool, or exceeds NUM_REWARDS, or",
"all reward slots for this pool has been initialized."
],
"accounts": [
{
"name": "whirlpoolsConfig",
"isMut": false,
"isSigner": false
},
{
"name": "whirlpool",
"isMut": true,
"isSigner": false
},
{
"name": "rewardEmissionsSuperAuthority",
"isMut": false,
"isSigner": true
},
{
"name": "newRewardAuthority",
"isMut": false,
"isSigner": false
}
],
"args": [
{
"name": "rewardIndex",
"type": "u8"
}
]
},
{
"name": "setRewardEmissionsSuperAuthority",
"docs": [
"Set the whirlpool reward super authority for a WhirlpoolConfig",
"Only the current reward super authority has permission to invoke this instruction.",
"This instruction will not change the authority on any `WhirlpoolRewardInfo` whirlpool rewards.",
"",
"### Authority",
"- \"reward_emissions_super_authority\" - Set authority that can control reward authorities for all pools in this config space."
],
"accounts": [
{
"name": "whirlpoolsConfig",
"isMut": true,
"isSigner": false
},
{
"name": "rewardEmissionsSuperAuthority",
"isMut": false,
"isSigner": true
},
{
"name": "newRewardEmissionsSuperAuthority",
"isMut": false,
"isSigner": false
}
],
"args": []
},
{
"name": "twoHopSwap",
"docs": [
"Perform a two-hop swap in this Whirlpool",
"",
"### Authority",
"- \"token_authority\" - The authority to withdraw tokens from the input token account.",
"",
"### Parameters",
"- `amount` - The amount of input or output token to swap from (depending on amount_specified_is_input).",
"- `other_amount_threshold` - The maximum/minimum of input/output token to swap into (depending on amount_specified_is_input).",
"- `amount_specified_is_input` - Specifi