11use super :: {
22 PROGRAM_ADDRESS ,
33 client:: JupiterClient ,
4- model:: { DynamicSlippage , QuoteDataRequest , QuoteRequest as JupiterRequest , QuoteResponse } ,
4+ model:: { QuoteDataRequest , QuoteRequest as JupiterRequest , QuoteResponse } ,
55} ;
66use crate :: {
77 FetchQuoteData , Options , ProviderData , ProviderType , Quote , QuoteRequest , Route , Swapper , SwapperChainAsset , SwapperError , SwapperMode , SwapperProvider , SwapperQuoteData ,
8- SwapperSlippageMode , error:: INVALID_ADDRESS ,
8+ error:: INVALID_ADDRESS ,
99} ;
1010use alloy_primitives:: U256 ;
1111use async_trait:: async_trait;
@@ -19,6 +19,8 @@ use gem_solana::{
1919use primitives:: { AssetId , Chain } ;
2020use std:: collections:: HashSet ;
2121
22+ const INSTRUCTION_VERSION : & str = "V2" ;
23+
2224#[ derive( Debug ) ]
2325pub struct Jupiter < C , R >
2426where
@@ -127,22 +129,15 @@ where
127129 let slippage_bps = swap_options. slippage . bps ;
128130 let platform_fee_bps = swap_options. fee . unwrap_or_default ( ) . solana . bps ;
129131
130- let auto_slippage = match swap_options. slippage . mode {
131- SwapperSlippageMode :: Auto => true ,
132- SwapperSlippageMode :: Exact => false ,
133- } ;
134-
135132 let quote_request = JupiterRequest {
136133 input_mint : input_mint. clone ( ) ,
137134 output_mint : output_mint. clone ( ) ,
138135 amount : request. value . clone ( ) ,
139136 platform_fee_bps,
140137 slippage_bps,
141- auto_slippage,
142- max_auto_slippage_bps : slippage_bps,
138+ instruction_version : INSTRUCTION_VERSION . to_string ( ) ,
143139 } ;
144140 let swap_quote = self . http_client . get_swap_quote ( quote_request) . await ?;
145- let computed_auto_slippage = swap_quote. computed_auto_slippage . unwrap_or ( swap_quote. slippage_bps ) ;
146141
147142 // Updated docs: https://dev.jup.ag/docs/api/swap-api/quote
148143 // The value includes platform fees and DEX fees, excluding slippage.
@@ -159,7 +154,7 @@ where
159154 route_data: serde_json:: to_string( & swap_quote) . unwrap_or_default( ) ,
160155 gas_limit: None ,
161156 } ] ,
162- slippage_bps : computed_auto_slippage ,
157+ slippage_bps : swap_quote . slippage_bps ,
163158 } ,
164159 request : request. clone ( ) ,
165160 eta_in_seconds : None ,
@@ -178,19 +173,11 @@ where
178173 let quote_response: QuoteResponse = serde_json:: from_str ( & route. route_data ) . map_err ( |_| SwapperError :: InvalidRoute ) ?;
179174 let fee_account = self . fetch_fee_account ( & quote. request . mode , & quote. request . options , & input_mint, & output_mint) . await ?;
180175
181- let dynamic_slippage = match quote. request . options . slippage . mode {
182- SwapperSlippageMode :: Auto => Some ( DynamicSlippage {
183- max_bps : quote. request . options . slippage . bps ,
184- } ) ,
185- SwapperSlippageMode :: Exact => None ,
186- } ;
187-
188176 let request = QuoteDataRequest {
189177 user_public_key : quote. request . wallet_address . clone ( ) ,
190178 fee_account,
191179 quote_response,
192180 prioritization_fee_lamports : 500_000 ,
193- dynamic_slippage,
194181 } ;
195182
196183 let quote_data = self . http_client . get_swap_quote_data ( & request) . await ?;
0 commit comments