use crate::{OrcaWhirlpoolDecoder, PROGRAM_ID};
#[cfg(feature = "postgres")]
pub mod postgres;
#[cfg(feature = "graphql")]
pub mod graphql;
pub mod close_bundled_position;
pub mod close_position;
pub mod close_position_with_token_extensions;
pub mod collect_fees;
pub mod collect_fees_v2;
pub mod collect_protocol_fees;
pub mod collect_protocol_fees_v2;
pub mod collect_reward;
pub mod collect_reward_v2;
pub mod cpi_event;
pub mod decrease_liquidity;
pub mod decrease_liquidity_v2;
pub mod delete_position_bundle;
pub mod delete_token_badge;
pub mod idl_include;
pub mod increase_liquidity;
pub mod increase_liquidity_by_token_amounts_v2;
pub mod increase_liquidity_v2;
pub mod initialize_adaptive_fee_tier;
pub mod initialize_config;
pub mod initialize_config_extension;
pub mod initialize_dynamic_tick_array;
pub mod initialize_fee_tier;
pub mod initialize_pool;
pub mod initialize_pool_v2;
pub mod initialize_pool_with_adaptive_fee;
pub mod initialize_position_bundle;
pub mod initialize_position_bundle_with_metadata;
pub mod initialize_reward;
pub mod initialize_reward_v2;
pub mod initialize_tick_array;
pub mod initialize_token_badge;
pub mod lock_position;
pub mod migrate_repurpose_reward_authority_space;
pub mod open_bundled_position;
pub mod open_position;
pub mod open_position_with_metadata;
pub mod open_position_with_token_extensions;
pub mod reposition_liquidity_v2;
pub mod reset_position_range;
pub mod set_adaptive_fee_constants;
pub mod set_collect_protocol_fees_authority;
pub mod set_config_extension_authority;
pub mod set_config_feature_flag;
pub mod set_default_base_fee_rate;
pub mod set_default_fee_rate;
pub mod set_default_protocol_fee_rate;
pub mod set_delegated_fee_authority;
pub mod set_fee_authority;
pub mod set_fee_rate;
pub mod set_fee_rate_by_delegated_fee_authority;
pub mod set_initialize_pool_authority;
pub mod set_preset_adaptive_fee_constants;
pub mod set_protocol_fee_rate;
pub mod set_reward_authority;
pub mod set_reward_authority_by_super_authority;
pub mod set_reward_emissions;
pub mod set_reward_emissions_super_authority;
pub mod set_reward_emissions_v2;
pub mod set_token_badge_attribute;
pub mod set_token_badge_authority;
pub mod swap;
pub mod swap_v2;
pub mod transfer_locked_position;
pub mod two_hop_swap;
pub mod two_hop_swap_v2;
pub mod update_fees_and_rewards;
pub use self::{
close_bundled_position::*, close_position::*, close_position_with_token_extensions::*,
collect_fees::*, collect_fees_v2::*, collect_protocol_fees::*, collect_protocol_fees_v2::*,
collect_reward::*, collect_reward_v2::*, cpi_event::*, decrease_liquidity::*,
decrease_liquidity_v2::*, delete_position_bundle::*, delete_token_badge::*, idl_include::*,
increase_liquidity::*, increase_liquidity_by_token_amounts_v2::*, increase_liquidity_v2::*,
initialize_adaptive_fee_tier::*, initialize_config::*, initialize_config_extension::*,
initialize_dynamic_tick_array::*, initialize_fee_tier::*, initialize_pool::*,
initialize_pool_v2::*, initialize_pool_with_adaptive_fee::*, initialize_position_bundle::*,
initialize_position_bundle_with_metadata::*, initialize_reward::*, initialize_reward_v2::*,
initialize_tick_array::*, initialize_token_badge::*, lock_position::*,
migrate_repurpose_reward_authority_space::*, open_bundled_position::*, open_position::*,
open_position_with_metadata::*, open_position_with_token_extensions::*,
reposition_liquidity_v2::*, reset_position_range::*, set_adaptive_fee_constants::*,
set_collect_protocol_fees_authority::*, set_config_extension_authority::*,
set_config_feature_flag::*, set_default_base_fee_rate::*, set_default_fee_rate::*,
set_default_protocol_fee_rate::*, set_delegated_fee_authority::*, set_fee_authority::*,
set_fee_rate::*, set_fee_rate_by_delegated_fee_authority::*, set_initialize_pool_authority::*,
set_preset_adaptive_fee_constants::*, set_protocol_fee_rate::*, set_reward_authority::*,
set_reward_authority_by_super_authority::*, set_reward_emissions::*,
set_reward_emissions_super_authority::*, set_reward_emissions_v2::*,
set_token_badge_attribute::*, set_token_badge_authority::*, swap::*, swap_v2::*,
transfer_locked_position::*, two_hop_swap::*, two_hop_swap_v2::*, update_fees_and_rewards::*,
};
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(tag = "type", content = "data"))]
pub enum OrcaWhirlpoolInstruction {
CloseBundledPosition {
program_id: solana_pubkey::Pubkey,
data: CloseBundledPosition,
accounts: CloseBundledPositionInstructionAccounts,
},
ClosePosition {
program_id: solana_pubkey::Pubkey,
data: ClosePosition,
accounts: ClosePositionInstructionAccounts,
},
ClosePositionWithTokenExtensions {
program_id: solana_pubkey::Pubkey,
data: ClosePositionWithTokenExtensions,
accounts: ClosePositionWithTokenExtensionsInstructionAccounts,
},
CollectFees {
program_id: solana_pubkey::Pubkey,
data: CollectFees,
accounts: CollectFeesInstructionAccounts,
},
CollectFeesV2 {
program_id: solana_pubkey::Pubkey,
data: CollectFeesV2,
accounts: CollectFeesV2InstructionAccounts,
},
CollectProtocolFees {
program_id: solana_pubkey::Pubkey,
data: CollectProtocolFees,
accounts: CollectProtocolFeesInstructionAccounts,
},
CollectProtocolFeesV2 {
program_id: solana_pubkey::Pubkey,
data: CollectProtocolFeesV2,
accounts: CollectProtocolFeesV2InstructionAccounts,
},
CollectReward {
program_id: solana_pubkey::Pubkey,
data: CollectReward,
accounts: CollectRewardInstructionAccounts,
},
CollectRewardV2 {
program_id: solana_pubkey::Pubkey,
data: CollectRewardV2,
accounts: CollectRewardV2InstructionAccounts,
},
DecreaseLiquidity {
program_id: solana_pubkey::Pubkey,
data: DecreaseLiquidity,
accounts: DecreaseLiquidityInstructionAccounts,
},
DecreaseLiquidityV2 {
program_id: solana_pubkey::Pubkey,
data: DecreaseLiquidityV2,
accounts: DecreaseLiquidityV2InstructionAccounts,
},
DeletePositionBundle {
program_id: solana_pubkey::Pubkey,
data: DeletePositionBundle,
accounts: DeletePositionBundleInstructionAccounts,
},
DeleteTokenBadge {
program_id: solana_pubkey::Pubkey,
data: DeleteTokenBadge,
accounts: DeleteTokenBadgeInstructionAccounts,
},
IdlInclude {
program_id: solana_pubkey::Pubkey,
data: IdlInclude,
accounts: IdlIncludeInstructionAccounts,
},
IncreaseLiquidity {
program_id: solana_pubkey::Pubkey,
data: IncreaseLiquidity,
accounts: IncreaseLiquidityInstructionAccounts,
},
IncreaseLiquidityByTokenAmountsV2 {
program_id: solana_pubkey::Pubkey,
data: IncreaseLiquidityByTokenAmountsV2,
accounts: IncreaseLiquidityByTokenAmountsV2InstructionAccounts,
},
IncreaseLiquidityV2 {
program_id: solana_pubkey::Pubkey,
data: IncreaseLiquidityV2,
accounts: IncreaseLiquidityV2InstructionAccounts,
},
InitializeAdaptiveFeeTier {
program_id: solana_pubkey::Pubkey,
data: InitializeAdaptiveFeeTier,
accounts: InitializeAdaptiveFeeTierInstructionAccounts,
},
InitializeConfig {
program_id: solana_pubkey::Pubkey,
data: InitializeConfig,
accounts: InitializeConfigInstructionAccounts,
},
InitializeConfigExtension {
program_id: solana_pubkey::Pubkey,
data: InitializeConfigExtension,
accounts: InitializeConfigExtensionInstructionAccounts,
},
InitializeDynamicTickArray {
program_id: solana_pubkey::Pubkey,
data: InitializeDynamicTickArray,
accounts: InitializeDynamicTickArrayInstructionAccounts,
},
InitializeFeeTier {
program_id: solana_pubkey::Pubkey,
data: InitializeFeeTier,
accounts: InitializeFeeTierInstructionAccounts,
},
InitializePool {
program_id: solana_pubkey::Pubkey,
data: InitializePool,
accounts: InitializePoolInstructionAccounts,
},
InitializePoolV2 {
program_id: solana_pubkey::Pubkey,
data: InitializePoolV2,
accounts: InitializePoolV2InstructionAccounts,
},
InitializePoolWithAdaptiveFee {
program_id: solana_pubkey::Pubkey,
data: InitializePoolWithAdaptiveFee,
accounts: InitializePoolWithAdaptiveFeeInstructionAccounts,
},
InitializePositionBundle {
program_id: solana_pubkey::Pubkey,
data: InitializePositionBundle,
accounts: InitializePositionBundleInstructionAccounts,
},
InitializePositionBundleWithMetadata {
program_id: solana_pubkey::Pubkey,
data: InitializePositionBundleWithMetadata,
accounts: InitializePositionBundleWithMetadataInstructionAccounts,
},
InitializeReward {
program_id: solana_pubkey::Pubkey,
data: InitializeReward,
accounts: InitializeRewardInstructionAccounts,
},
InitializeRewardV2 {
program_id: solana_pubkey::Pubkey,
data: InitializeRewardV2,
accounts: InitializeRewardV2InstructionAccounts,
},
InitializeTickArray {
program_id: solana_pubkey::Pubkey,
data: InitializeTickArray,
accounts: InitializeTickArrayInstructionAccounts,
},
InitializeTokenBadge {
program_id: solana_pubkey::Pubkey,
data: InitializeTokenBadge,
accounts: InitializeTokenBadgeInstructionAccounts,
},
LockPosition {
program_id: solana_pubkey::Pubkey,
data: LockPosition,
accounts: LockPositionInstructionAccounts,
},
MigrateRepurposeRewardAuthoritySpace {
program_id: solana_pubkey::Pubkey,
data: MigrateRepurposeRewardAuthoritySpace,
accounts: MigrateRepurposeRewardAuthoritySpaceInstructionAccounts,
},
OpenBundledPosition {
program_id: solana_pubkey::Pubkey,
data: OpenBundledPosition,
accounts: OpenBundledPositionInstructionAccounts,
},
OpenPosition {
program_id: solana_pubkey::Pubkey,
data: OpenPosition,
accounts: OpenPositionInstructionAccounts,
},
OpenPositionWithMetadata {
program_id: solana_pubkey::Pubkey,
data: OpenPositionWithMetadata,
accounts: OpenPositionWithMetadataInstructionAccounts,
},
OpenPositionWithTokenExtensions {
program_id: solana_pubkey::Pubkey,
data: OpenPositionWithTokenExtensions,
accounts: OpenPositionWithTokenExtensionsInstructionAccounts,
},
RepositionLiquidityV2 {
program_id: solana_pubkey::Pubkey,
data: RepositionLiquidityV2,
accounts: RepositionLiquidityV2InstructionAccounts,
},
ResetPositionRange {
program_id: solana_pubkey::Pubkey,
data: ResetPositionRange,
accounts: ResetPositionRangeInstructionAccounts,
},
SetAdaptiveFeeConstants {
program_id: solana_pubkey::Pubkey,
data: SetAdaptiveFeeConstants,
accounts: SetAdaptiveFeeConstantsInstructionAccounts,
},
SetCollectProtocolFeesAuthority {
program_id: solana_pubkey::Pubkey,
data: SetCollectProtocolFeesAuthority,
accounts: SetCollectProtocolFeesAuthorityInstructionAccounts,
},
SetConfigExtensionAuthority {
program_id: solana_pubkey::Pubkey,
data: SetConfigExtensionAuthority,
accounts: SetConfigExtensionAuthorityInstructionAccounts,
},
SetConfigFeatureFlag {
program_id: solana_pubkey::Pubkey,
data: SetConfigFeatureFlag,
accounts: SetConfigFeatureFlagInstructionAccounts,
},
SetDefaultBaseFeeRate {
program_id: solana_pubkey::Pubkey,
data: SetDefaultBaseFeeRate,
accounts: SetDefaultBaseFeeRateInstructionAccounts,
},
SetDefaultFeeRate {
program_id: solana_pubkey::Pubkey,
data: SetDefaultFeeRate,
accounts: SetDefaultFeeRateInstructionAccounts,
},
SetDefaultProtocolFeeRate {
program_id: solana_pubkey::Pubkey,
data: SetDefaultProtocolFeeRate,
accounts: SetDefaultProtocolFeeRateInstructionAccounts,
},
SetDelegatedFeeAuthority {
program_id: solana_pubkey::Pubkey,
data: SetDelegatedFeeAuthority,
accounts: SetDelegatedFeeAuthorityInstructionAccounts,
},
SetFeeAuthority {
program_id: solana_pubkey::Pubkey,
data: SetFeeAuthority,
accounts: SetFeeAuthorityInstructionAccounts,
},
SetFeeRate {
program_id: solana_pubkey::Pubkey,
data: SetFeeRate,
accounts: SetFeeRateInstructionAccounts,
},
SetFeeRateByDelegatedFeeAuthority {
program_id: solana_pubkey::Pubkey,
data: SetFeeRateByDelegatedFeeAuthority,
accounts: SetFeeRateByDelegatedFeeAuthorityInstructionAccounts,
},
SetInitializePoolAuthority {
program_id: solana_pubkey::Pubkey,
data: SetInitializePoolAuthority,
accounts: SetInitializePoolAuthorityInstructionAccounts,
},
SetPresetAdaptiveFeeConstants {
program_id: solana_pubkey::Pubkey,
data: SetPresetAdaptiveFeeConstants,
accounts: SetPresetAdaptiveFeeConstantsInstructionAccounts,
},
SetProtocolFeeRate {
program_id: solana_pubkey::Pubkey,
data: SetProtocolFeeRate,
accounts: SetProtocolFeeRateInstructionAccounts,
},
SetRewardAuthority {
program_id: solana_pubkey::Pubkey,
data: SetRewardAuthority,
accounts: SetRewardAuthorityInstructionAccounts,
},
SetRewardAuthorityBySuperAuthority {
program_id: solana_pubkey::Pubkey,
data: SetRewardAuthorityBySuperAuthority,
accounts: SetRewardAuthorityBySuperAuthorityInstructionAccounts,
},
SetRewardEmissions {
program_id: solana_pubkey::Pubkey,
data: SetRewardEmissions,
accounts: SetRewardEmissionsInstructionAccounts,
},
SetRewardEmissionsSuperAuthority {
program_id: solana_pubkey::Pubkey,
data: SetRewardEmissionsSuperAuthority,
accounts: SetRewardEmissionsSuperAuthorityInstructionAccounts,
},
SetRewardEmissionsV2 {
program_id: solana_pubkey::Pubkey,
data: SetRewardEmissionsV2,
accounts: SetRewardEmissionsV2InstructionAccounts,
},
SetTokenBadgeAttribute {
program_id: solana_pubkey::Pubkey,
data: SetTokenBadgeAttribute,
accounts: SetTokenBadgeAttributeInstructionAccounts,
},
SetTokenBadgeAuthority {
program_id: solana_pubkey::Pubkey,
data: SetTokenBadgeAuthority,
accounts: SetTokenBadgeAuthorityInstructionAccounts,
},
Swap {
program_id: solana_pubkey::Pubkey,
data: Swap,
accounts: SwapInstructionAccounts,
},
SwapV2 {
program_id: solana_pubkey::Pubkey,
data: SwapV2,
accounts: SwapV2InstructionAccounts,
},
TransferLockedPosition {
program_id: solana_pubkey::Pubkey,
data: TransferLockedPosition,
accounts: TransferLockedPositionInstructionAccounts,
},
TwoHopSwap {
program_id: solana_pubkey::Pubkey,
data: TwoHopSwap,
accounts: TwoHopSwapInstructionAccounts,
},
TwoHopSwapV2 {
program_id: solana_pubkey::Pubkey,
data: TwoHopSwapV2,
accounts: TwoHopSwapV2InstructionAccounts,
},
UpdateFeesAndRewards {
program_id: solana_pubkey::Pubkey,
data: UpdateFeesAndRewards,
accounts: UpdateFeesAndRewardsInstructionAccounts,
},
CpiEvent {
program_id: solana_pubkey::Pubkey,
data: CpiEvent,
accounts: CpiEventInstructionAccounts,
},
}
impl carbon_core::instruction::InstructionDecoder<'_> for OrcaWhirlpoolDecoder {
type InstructionType = OrcaWhirlpoolInstruction;
fn decode_instruction(
&self,
instruction: &solana_instruction::Instruction,
) -> Option<Self::InstructionType> {
if instruction.program_id != PROGRAM_ID {
return None;
}
carbon_core::try_decode_instructions!(
instruction,
PROGRAM_ID,
OrcaWhirlpoolInstruction::CloseBundledPosition => CloseBundledPosition,
OrcaWhirlpoolInstruction::ClosePosition => ClosePosition,
OrcaWhirlpoolInstruction::ClosePositionWithTokenExtensions => ClosePositionWithTokenExtensions,
OrcaWhirlpoolInstruction::CollectFees => CollectFees,
OrcaWhirlpoolInstruction::CollectFeesV2 => CollectFeesV2,
OrcaWhirlpoolInstruction::CollectProtocolFees => CollectProtocolFees,
OrcaWhirlpoolInstruction::CollectProtocolFeesV2 => CollectProtocolFeesV2,
OrcaWhirlpoolInstruction::CollectReward => CollectReward,
OrcaWhirlpoolInstruction::CollectRewardV2 => CollectRewardV2,
OrcaWhirlpoolInstruction::DecreaseLiquidity => DecreaseLiquidity,
OrcaWhirlpoolInstruction::DecreaseLiquidityV2 => DecreaseLiquidityV2,
OrcaWhirlpoolInstruction::DeletePositionBundle => DeletePositionBundle,
OrcaWhirlpoolInstruction::DeleteTokenBadge => DeleteTokenBadge,
OrcaWhirlpoolInstruction::IdlInclude => IdlInclude,
OrcaWhirlpoolInstruction::IncreaseLiquidity => IncreaseLiquidity,
OrcaWhirlpoolInstruction::IncreaseLiquidityByTokenAmountsV2 => IncreaseLiquidityByTokenAmountsV2,
OrcaWhirlpoolInstruction::IncreaseLiquidityV2 => IncreaseLiquidityV2,
OrcaWhirlpoolInstruction::InitializeAdaptiveFeeTier => InitializeAdaptiveFeeTier,
OrcaWhirlpoolInstruction::InitializeConfig => InitializeConfig,
OrcaWhirlpoolInstruction::InitializeConfigExtension => InitializeConfigExtension,
OrcaWhirlpoolInstruction::InitializeDynamicTickArray => InitializeDynamicTickArray,
OrcaWhirlpoolInstruction::InitializeFeeTier => InitializeFeeTier,
OrcaWhirlpoolInstruction::InitializePool => InitializePool,
OrcaWhirlpoolInstruction::InitializePoolV2 => InitializePoolV2,
OrcaWhirlpoolInstruction::InitializePoolWithAdaptiveFee => InitializePoolWithAdaptiveFee,
OrcaWhirlpoolInstruction::InitializePositionBundle => InitializePositionBundle,
OrcaWhirlpoolInstruction::InitializePositionBundleWithMetadata => InitializePositionBundleWithMetadata,
OrcaWhirlpoolInstruction::InitializeReward => InitializeReward,
OrcaWhirlpoolInstruction::InitializeRewardV2 => InitializeRewardV2,
OrcaWhirlpoolInstruction::InitializeTickArray => InitializeTickArray,
OrcaWhirlpoolInstruction::InitializeTokenBadge => InitializeTokenBadge,
OrcaWhirlpoolInstruction::LockPosition => LockPosition,
OrcaWhirlpoolInstruction::MigrateRepurposeRewardAuthoritySpace => MigrateRepurposeRewardAuthoritySpace,
OrcaWhirlpoolInstruction::OpenBundledPosition => OpenBundledPosition,
OrcaWhirlpoolInstruction::OpenPosition => OpenPosition,
OrcaWhirlpoolInstruction::OpenPositionWithMetadata => OpenPositionWithMetadata,
OrcaWhirlpoolInstruction::OpenPositionWithTokenExtensions => OpenPositionWithTokenExtensions,
OrcaWhirlpoolInstruction::RepositionLiquidityV2 => RepositionLiquidityV2,
OrcaWhirlpoolInstruction::ResetPositionRange => ResetPositionRange,
OrcaWhirlpoolInstruction::SetAdaptiveFeeConstants => SetAdaptiveFeeConstants,
OrcaWhirlpoolInstruction::SetCollectProtocolFeesAuthority => SetCollectProtocolFeesAuthority,
OrcaWhirlpoolInstruction::SetConfigExtensionAuthority => SetConfigExtensionAuthority,
OrcaWhirlpoolInstruction::SetConfigFeatureFlag => SetConfigFeatureFlag,
OrcaWhirlpoolInstruction::SetDefaultBaseFeeRate => SetDefaultBaseFeeRate,
OrcaWhirlpoolInstruction::SetDefaultFeeRate => SetDefaultFeeRate,
OrcaWhirlpoolInstruction::SetDefaultProtocolFeeRate => SetDefaultProtocolFeeRate,
OrcaWhirlpoolInstruction::SetDelegatedFeeAuthority => SetDelegatedFeeAuthority,
OrcaWhirlpoolInstruction::SetFeeAuthority => SetFeeAuthority,
OrcaWhirlpoolInstruction::SetFeeRate => SetFeeRate,
OrcaWhirlpoolInstruction::SetFeeRateByDelegatedFeeAuthority => SetFeeRateByDelegatedFeeAuthority,
OrcaWhirlpoolInstruction::SetInitializePoolAuthority => SetInitializePoolAuthority,
OrcaWhirlpoolInstruction::SetPresetAdaptiveFeeConstants => SetPresetAdaptiveFeeConstants,
OrcaWhirlpoolInstruction::SetProtocolFeeRate => SetProtocolFeeRate,
OrcaWhirlpoolInstruction::SetRewardAuthority => SetRewardAuthority,
OrcaWhirlpoolInstruction::SetRewardAuthorityBySuperAuthority => SetRewardAuthorityBySuperAuthority,
OrcaWhirlpoolInstruction::SetRewardEmissions => SetRewardEmissions,
OrcaWhirlpoolInstruction::SetRewardEmissionsSuperAuthority => SetRewardEmissionsSuperAuthority,
OrcaWhirlpoolInstruction::SetRewardEmissionsV2 => SetRewardEmissionsV2,
OrcaWhirlpoolInstruction::SetTokenBadgeAttribute => SetTokenBadgeAttribute,
OrcaWhirlpoolInstruction::SetTokenBadgeAuthority => SetTokenBadgeAuthority,
OrcaWhirlpoolInstruction::Swap => Swap,
OrcaWhirlpoolInstruction::SwapV2 => SwapV2,
OrcaWhirlpoolInstruction::TransferLockedPosition => TransferLockedPosition,
OrcaWhirlpoolInstruction::TwoHopSwap => TwoHopSwap,
OrcaWhirlpoolInstruction::TwoHopSwapV2 => TwoHopSwapV2,
OrcaWhirlpoolInstruction::UpdateFeesAndRewards => UpdateFeesAndRewards,
OrcaWhirlpoolInstruction::CpiEvent => CpiEvent,
)
}
}