jupiter_amm_interface/
swap.rs

1use borsh::BorshSerialize;
2
3#[derive(BorshSerialize, Copy, Clone, Debug, PartialEq)]
4pub enum Side {
5    Bid,
6    Ask,
7}
8
9#[derive(BorshSerialize, Clone, PartialEq, Debug)]
10pub enum Swap {
11    Saber,
12    SaberAddDecimalsDeposit,
13    SaberAddDecimalsWithdraw,
14    TokenSwap,
15    Sencha,
16    Step,
17    Cropper,
18    Raydium,
19    Crema {
20        a_to_b: bool,
21    },
22    Lifinity,
23    Mercurial,
24    Cykura,
25    Serum {
26        side: Side,
27    },
28    MarinadeDeposit,
29    MarinadeUnstake,
30    Aldrin {
31        side: Side,
32    },
33    AldrinV2 {
34        side: Side,
35    },
36    Whirlpool {
37        a_to_b: bool,
38    },
39    Invariant {
40        x_to_y: bool,
41    },
42    Meteora,
43    GooseFX,
44    DeltaFi {
45        stable: bool,
46    },
47    Balansol,
48    MarcoPolo {
49        x_to_y: bool,
50    },
51    Dradex {
52        side: Side,
53    },
54    LifinityV2,
55    RaydiumClmm,
56    Openbook {
57        side: Side,
58    },
59    Phoenix {
60        side: Side,
61    },
62    Symmetry {
63        from_token_id: u64,
64        to_token_id: u64,
65    },
66    TokenSwapV2,
67    HeliumTreasuryManagementRedeemV0,
68    StakeDexStakeWrappedSol,
69    StakeDexSwapViaStake {
70        bridge_stake_seed: u32,
71    },
72    GooseFXV2,
73    Perps,
74    PerpsAddLiquidity,
75    PerpsRemoveLiquidity,
76    MeteoraDlmm,
77    OpenBookV2 {
78        side: Side,
79    },
80    RaydiumClmmV2,
81    StakeDexPrefundWithdrawStakeAndDepositStake {
82        bridge_stake_seed: u32,
83    },
84    Clone {
85        pool_index: u8,
86        quantity_is_input: bool,
87        quantity_is_collateral: bool,
88    },
89    SanctumS {
90        src_lst_value_calc_accs: u8,
91        dst_lst_value_calc_accs: u8,
92        src_lst_index: u32,
93        dst_lst_index: u32,
94    },
95    SanctumSAddLiquidity {
96        lst_value_calc_accs: u8,
97        lst_index: u32,
98    },
99    SanctumSRemoveLiquidity {
100        lst_value_calc_accs: u8,
101        lst_index: u32,
102    },
103    RaydiumCP,
104    WhirlpoolSwapV2 {
105        a_to_b: bool,
106        remaining_accounts_info: Option<RemainingAccountsInfo>,
107    },
108    OneIntro,
109    PumpdotfunWrappedBuy,
110    PumpdotfunWrappedSell,
111    PerpsV2Swap,
112    PerpsV2AddLiquidity,
113    PerpsV2RemoveLiquidity,
114    MoonshotWrappedBuy,
115    MoonshotWrappedSell,
116    StabbleStableSwap,
117    StabbleWeightedSwap,
118    Obric {
119        x_to_y: bool,
120    },
121    FoxBuyFromEstimatedCost,
122    FoxClaimPartial {
123        is_y: bool,
124    },
125    SolFi {
126        is_quote_to_base: bool,
127    },
128    SolayerDelegateNoInit,
129    SolayerUndelegateNoInit,
130    TokenMill {
131        side: Side,
132    },
133    DaosFunBuy,
134    DaosFunSell,
135    ZeroFi,
136    StakeDexWithdrawWrappedSol,
137}
138
139#[derive(BorshSerialize, Clone, PartialEq, Eq, Debug)]
140pub enum AccountsType {
141    TransferHookA,
142    TransferHookB,
143    // TransferHookReward,
144    // TransferHookInput,
145    // TransferHookIntermediate,
146    // TransferHookOutput,
147    //TickArray,
148    //TickArrayOne,
149    //TickArrayTwo,
150}
151
152#[derive(BorshSerialize, Clone, Debug, PartialEq)]
153pub struct RemainingAccountsSlice {
154    pub accounts_type: AccountsType,
155    pub length: u8,
156}
157
158#[derive(BorshSerialize, Clone, Debug, PartialEq)]
159pub struct RemainingAccountsInfo {
160    pub slices: Vec<RemainingAccountsSlice>,
161}