@robertprp/intents-sdk
Version:
Shogun Network Intent-based cross-chain swaps SDK
40 lines (32 loc) • 1.04 kB
text/typescript
import { createJupiterApiClient, SwapApi, type QuoteResponse } from '@jup-ag/api';
export type JupiterQuoteParams = {
amount: bigint;
tokenIn: string;
tokenOut: string;
swapMode: 'ExactIn' | 'ExactOut';
slippageBps?: number;
};
const NATIVE_SOL = 'So11111111111111111111111111111111111111111'
const WRAPPED_SOL = 'So11111111111111111111111111111111111111112'
export class JupiterQuoteProvider {
public swapApi: SwapApi;
constructor() {
this.swapApi = createJupiterApiClient({ fetchApi: fetch });
}
public async getQuote(params: JupiterQuoteParams): Promise<{ quote: QuoteResponse }> {
if (params.tokenIn === NATIVE_SOL) {
params.tokenIn = WRAPPED_SOL
}
if (params.tokenOut === NATIVE_SOL) {
params.tokenOut = WRAPPED_SOL
}
const quote = await this.swapApi.quoteGet({
amount: Number(params.amount),
inputMint: params.tokenIn,
outputMint: params.tokenOut,
swapMode: params.swapMode,
slippageBps: params.slippageBps,
});
return { quote };
}
}