1anchor_gen::generate_cpi_crate!("idl.json");
2
3anchor_lang::declare_id!("JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB");
4
5pub mod jupiter_override {
6 use super::Side;
7 use super::SplitLeg;
8 use anchor_lang::prelude::*;
9 use anchor_lang::Discriminator;
10 use anchor_lang::{AnchorSerialize, InstructionData};
11 use std::io::Write;
12
13 #[derive(AnchorSerialize)]
14 pub enum Swap {
15 Saber,
16 SaberAddDecimalsDeposit,
17 SaberAddDecimalsWithdraw,
18 TokenSwap,
19 Sencha,
20 Step,
21 Cropper,
22 Raydium,
23 Crema,
24 Lifinity,
25 Mercurial,
26 Cykura,
27 Serum {
28 side: Side,
29 },
30 MarinadeDeposit,
31 MarinadeUnstake,
32 Aldrin {
33 side: Side,
34 },
35 AldrinV2 {
36 side: Side,
37 },
38 Whirlpool {
39 a_to_b: bool,
40 },
41 Invariant {
42 x_to_y: bool,
43 },
44 Meteora,
45 GooseFX,
46 DeltaFi {
47 stable: bool,
48 },
49 Balansol,
50 MarcoPolo {
51 x_to_y: bool,
52 },
53 Dradex {
54 side: Side,
55 },
56 LifinityV2,
57 RaydiumClmm,
58 Openbook {
59 side: Side,
60 },
61 Phoenix {
62 side: Side,
63 },
64 Symmetry {
65 from_token_id: u64,
66 to_token_id: u64,
67 },
68 }
69
70 pub enum SwapLeg {
71 Chain { swap_legs: Vec<SwapLeg> },
72 Split { split_legs: Vec<SplitLeg> },
73 Swap { swap: Swap },
74 }
75
76 impl AnchorSerialize for SwapLeg {
77 #[inline]
78 fn serialize<W: Write>(&self, writer: &mut W) -> std::io::Result<()> {
79 match self {
80 SwapLeg::Chain { swap_legs } => {
81 0u8.serialize(writer)?;
82 swap_legs.serialize(writer)
83 }
84 SwapLeg::Split { split_legs } => {
85 1u8.serialize(writer)?;
86 split_legs.serialize(writer)
87 }
88 SwapLeg::Swap { swap } => {
89 2u8.serialize(writer)?;
90 swap.serialize(writer)
91 }
92 }
93 }
94 }
95
96 #[derive(AnchorSerialize)]
97 pub struct Route {
98 pub swap_leg: SwapLeg,
99 pub in_amount: u64,
100 pub quoted_out_amount: u64,
101 pub slippage_bps: u16,
102 pub platform_fee_bps: u8,
103 }
104
105 impl Discriminator for Route {
106 const DISCRIMINATOR: [u8; 8] = [229, 23, 203, 151, 122, 227, 173, 42];
107 }
108
109 impl InstructionData for Route {}
110}