UNPKG

@orca-so/whirlpools-sdk

Version:

Typescript SDK to interact with Orca's Whirlpool program.

1,396 lines 147 kB
{ "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