@shogun-sdk/swap 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,239 @@
1
+ /**
2
+ * Usage examples for SwapClient
3
+ */
4
+ import { SwapClient } from '../client/SwapClient.js';
5
+ import { ChainID } from '@shogun-sdk/intents-sdk';
6
+ // Example configuration with enhanced options
7
+ const config = {
8
+ apiKey: 'your-api-key-here',
9
+ apiUrl: 'https://api.shogun.network',
10
+ timeout: 30000, // 30 seconds
11
+ maxRetries: 3, // Retry failed requests up to 3 times
12
+ retryDelay: 1000, // Wait 1 second between retries
13
+ debug: true, // Enable debug logging
14
+ preferIntentsSdk: true, // Try intents-sdk first
15
+ headers: {
16
+ 'User-Agent': 'MyApp/1.0.0'
17
+ }
18
+ };
19
+ // Create the client
20
+ const swapClient = new SwapClient(config);
21
+ // Example 1: Cross-chain swap quote
22
+ export async function getCrossChainQuote() {
23
+ const params = {
24
+ sourceChainId: ChainID.Arbitrum,
25
+ destChainId: ChainID.Arbitrum,
26
+ tokenIn: '0xA0b86a33E6441b8c4C8C0C4C0C4C0C4C0C4C0C4C', // USDC on Ethereum
27
+ tokenOut: '0x1234567890123456789012345678901234567890', // Some token on Arbitrum
28
+ amount: BigInt('1000000'), // 1 USDC (6 decimals)
29
+ senderAddress: '0x1234567890123456789012345678901234567890',
30
+ destinationAddress: '0x1234567890123456789012345678901234567890',
31
+ slippageBps: 50, // 0.5% slippage
32
+ };
33
+ try {
34
+ const quote = await swapClient.getQuote(params);
35
+ console.log('Cross-chain quote:', quote);
36
+ return quote;
37
+ }
38
+ catch (error) {
39
+ console.error('Failed to get cross-chain quote:', error);
40
+ throw error;
41
+ }
42
+ }
43
+ // Example 2: Single-chain swap quote
44
+ export async function getSingleChainQuote() {
45
+ try {
46
+ const quote = await swapClient.getSingleChainQuote(ChainID.Arbitrum, '0xA0b86a33E6441b8c4C8C0C4C0C4C0C4C0C4C0C4C', // USDC
47
+ '0x1234567890123456789012345678901234567890', // Some other token
48
+ BigInt('1000000'), // 1 USDC
49
+ 50 // 0.5% slippage
50
+ );
51
+ console.log('Single-chain quote:', quote);
52
+ return quote;
53
+ }
54
+ catch (error) {
55
+ console.error('Failed to get single-chain quote:', error);
56
+ throw error;
57
+ }
58
+ }
59
+ // Example 3: Solana swap with Jito tip
60
+ export async function getSolanaSwapQuote() {
61
+ const params = {
62
+ sourceChainId: ChainID.Solana,
63
+ destChainId: ChainID.Solana,
64
+ tokenIn: 'So11111111111111111111111111111111111111112', // SOL
65
+ tokenOut: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // USDC
66
+ amount: BigInt('1000000000'), // 1 SOL (9 decimals)
67
+ senderAddress: 'YourSolanaWalletAddress',
68
+ destinationAddress: 'YourSolanaWalletAddress',
69
+ slippageBps: 100, // 1% slippage
70
+ jitoTip: 1000000, // 0.001 SOL tip
71
+ };
72
+ try {
73
+ const quote = await swapClient.getQuote(params);
74
+ console.log('Solana swap quote:', quote);
75
+ return quote;
76
+ }
77
+ catch (error) {
78
+ console.error('Failed to get Solana swap quote:', error);
79
+ throw error;
80
+ }
81
+ }
82
+ // Example 4: Using with AbortSignal for timeout control
83
+ export async function getQuoteWithTimeout() {
84
+ const controller = new AbortController();
85
+ const timeoutId = setTimeout(() => controller.abort(), 10000); // 10 second timeout
86
+ const params = {
87
+ sourceChainId: ChainID.Arbitrum,
88
+ destChainId: ChainID.Base,
89
+ tokenIn: '0xA0b86a33E6441b8c4C8C0C4C0C4C0C4C0C4C0C4C',
90
+ tokenOut: '0x1234567890123456789012345678901234567890',
91
+ amount: BigInt('1000000'),
92
+ };
93
+ try {
94
+ const quote = await swapClient.getQuote(params, controller.signal);
95
+ clearTimeout(timeoutId);
96
+ console.log('Quote with timeout:', quote);
97
+ return quote;
98
+ }
99
+ catch (error) {
100
+ clearTimeout(timeoutId);
101
+ if (error instanceof Error && error.name === 'AbortError') {
102
+ console.error('Quote request timed out');
103
+ }
104
+ else {
105
+ console.error('Failed to get quote:', error);
106
+ }
107
+ throw error;
108
+ }
109
+ }
110
+ // Example 5: Error handling and fallback behavior
111
+ export async function getQuoteWithErrorHandling() {
112
+ const params = {
113
+ sourceChainId: ChainID.Arbitrum,
114
+ destChainId: ChainID.Arbitrum,
115
+ tokenIn: '0xA0b86a33E6441b8c4C8C0C4C0C4C0C4C0C4C0C4C',
116
+ tokenOut: '0x1234567890123456789012345678901234567890',
117
+ amount: BigInt('1000000'),
118
+ };
119
+ try {
120
+ const quote = await swapClient.getQuote(params);
121
+ if (quote.error) {
122
+ console.warn('Quote returned with error:', quote.error);
123
+ // Handle the error case
124
+ return null;
125
+ }
126
+ // Check if we got a valid quote
127
+ if (quote.amountOut > 0n) {
128
+ console.log('Valid quote received from:', quote.source);
129
+ console.log('Expected output:', quote.amountOut.toString());
130
+ console.log('Price impact:', quote.priceImpact, '%');
131
+ return quote;
132
+ }
133
+ else {
134
+ console.warn('Invalid quote received');
135
+ return null;
136
+ }
137
+ }
138
+ catch (error) {
139
+ console.error('Failed to get quote:', error);
140
+ throw error;
141
+ }
142
+ }
143
+ // Example 6: Multiple quotes comparison
144
+ export async function getMultipleQuotesComparison() {
145
+ const baseParams = {
146
+ sourceChainId: ChainID.Arbitrum,
147
+ destChainId: ChainID.Arbitrum,
148
+ tokenIn: '0xA0b86a33E6441b8c4C8C0C4C0C4C0C4C0C4C0C4C',
149
+ tokenOut: '0x1234567890123456789012345678901234567890',
150
+ amount: BigInt('1000000'),
151
+ };
152
+ // Create multiple quote variations
153
+ const quoteParams = [
154
+ { ...baseParams, slippageBps: 50 }, // 0.5% slippage
155
+ { ...baseParams, slippageBps: 100 }, // 1% slippage
156
+ { ...baseParams, slippageBps: 200 }, // 2% slippage
157
+ ];
158
+ try {
159
+ const quotes = await swapClient.getMultipleQuotes(quoteParams);
160
+ console.log('Multiple quotes received:', quotes.length);
161
+ // Find the best quote
162
+ const bestQuote = await swapClient.getBestQuote(quoteParams);
163
+ if (bestQuote) {
164
+ console.log('Best quote output:', bestQuote.amountOut.toString());
165
+ console.log('Best quote source:', bestQuote.source);
166
+ }
167
+ return quotes;
168
+ }
169
+ catch (error) {
170
+ console.error('Failed to get multiple quotes:', error);
171
+ throw error;
172
+ }
173
+ }
174
+ // Example 7: Token pair validation
175
+ export async function validateTokenPair() {
176
+ const chainId = ChainID.Arbitrum;
177
+ const tokenIn = '0xA0b86a33E6441b8c4C8C0C4C0C4C0C4C0C4C0C4C'; // USDC
178
+ const tokenOut = '0x1234567890123456789012345678901234567890'; // Some token
179
+ try {
180
+ const isSupported = await swapClient.isTokenPairSupported(chainId, tokenIn, tokenOut);
181
+ console.log('Token pair supported:', isSupported);
182
+ if (isSupported) {
183
+ // Get supported tokens for the chain
184
+ }
185
+ return isSupported;
186
+ }
187
+ catch (error) {
188
+ console.error('Failed to validate token pair:', error);
189
+ throw error;
190
+ }
191
+ }
192
+ // Example 8: Gas estimation
193
+ export async function estimateSwapGas() {
194
+ const chainId = ChainID.Arbitrum;
195
+ const tokenIn = '0xA0b86a33E6441b8c4C8C0C4C0C4C0C4C0C4C0C4C';
196
+ const tokenOut = '0x1234567890123456789012345678901234567890';
197
+ const amount = BigInt('1000000');
198
+ const userAddress = '0x1234567890123456789012345678901234567890';
199
+ try {
200
+ const gasEstimate = await swapClient.estimateGas(chainId, tokenIn, tokenOut, amount, userAddress);
201
+ if (gasEstimate) {
202
+ console.log('Gas estimate:', gasEstimate.gasEstimate.toString());
203
+ console.log('Gas price:', gasEstimate.gasPrice.toString());
204
+ console.log('Total gas cost:', (gasEstimate.gasEstimate * gasEstimate.gasPrice).toString());
205
+ }
206
+ else {
207
+ console.log('Gas estimation not available for this chain');
208
+ }
209
+ return gasEstimate;
210
+ }
211
+ catch (error) {
212
+ console.error('Failed to estimate gas:', error);
213
+ throw error;
214
+ }
215
+ }
216
+ // Example 9: Dynamic configuration updates
217
+ export async function updateClientConfiguration() {
218
+ try {
219
+ // Get current configuration
220
+ const currentConfig = swapClient.getConfig();
221
+ console.log('Current config:', currentConfig);
222
+ // Update configuration
223
+ swapClient.updateConfig({
224
+ debug: false, // Disable debug logging
225
+ maxRetries: 5, // Increase retry attempts
226
+ timeout: 60000, // Increase timeout to 60 seconds
227
+ });
228
+ console.log('Configuration updated successfully');
229
+ // Verify the update
230
+ const updatedConfig = swapClient.getConfig();
231
+ console.log('Updated config:', updatedConfig);
232
+ return updatedConfig;
233
+ }
234
+ catch (error) {
235
+ console.error('Failed to update configuration:', error);
236
+ throw error;
237
+ }
238
+ }
239
+ //# sourceMappingURL=usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../../src/examples/usage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @shogun-sdk/swap
3
+ *
4
+ * Shogun Network Swap utilities and helpers
5
+ */
6
+ export * from './types/index.js';
7
+ export * from './utils/index.js';
8
+ export * from './client/SwapClient.js';
9
+ // Re-export ChainID for convenience
10
+ export { ChainID } from '@shogun-sdk/intents-sdk';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AAEvC,oCAAoC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Type definitions for swap operations
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Utility functions for swap operations
3
+ */
4
+ /**
5
+ * Calculate price impact for a swap
6
+ * @param amountIn Input amount
7
+ * @param amountOut Expected output amount
8
+ * @param tokenInPrice Price of input token in USD
9
+ * @param tokenOutPrice Price of output token in USD
10
+ * @returns Price impact as percentage
11
+ */
12
+ export function calculatePriceImpact(amountIn, amountOut, tokenInPrice, tokenOutPrice) {
13
+ const inputValue = Number(amountIn) * tokenInPrice;
14
+ const outputValue = Number(amountOut) * tokenOutPrice;
15
+ if (inputValue === 0)
16
+ return 0;
17
+ return Math.abs((inputValue - outputValue) / inputValue) * 100;
18
+ }
19
+ /**
20
+ * Validate swap parameters
21
+ * @param params Swap parameters to validate
22
+ * @throws Error if parameters are invalid
23
+ */
24
+ export function validateSwapParams(params) {
25
+ if (!params.tokenIn || !params.tokenOut) {
26
+ throw new Error('Token addresses are required');
27
+ }
28
+ if (params.tokenIn === params.tokenOut) {
29
+ throw new Error('Input and output tokens cannot be the same');
30
+ }
31
+ if (params.amountIn <= 0n) {
32
+ throw new Error('Input amount must be greater than 0');
33
+ }
34
+ if (params.amountOutMin < 0n) {
35
+ throw new Error('Minimum output amount cannot be negative');
36
+ }
37
+ if (!params.to) {
38
+ throw new Error('Recipient address is required');
39
+ }
40
+ if (params.deadline <= Math.floor(Date.now() / 1000)) {
41
+ throw new Error('Deadline must be in the future');
42
+ }
43
+ }
44
+ /**
45
+ * Format token amount for display
46
+ * @param amount Token amount in smallest units
47
+ * @param decimals Token decimals
48
+ * @returns Formatted string
49
+ */
50
+ export function formatTokenAmount(amount, decimals) {
51
+ const divisor = BigInt(10 ** decimals);
52
+ const whole = amount / divisor;
53
+ const remainder = amount % divisor;
54
+ if (remainder === 0n) {
55
+ return whole.toString();
56
+ }
57
+ const fractional = remainder.toString().padStart(decimals, '0').replace(/0+$/, '');
58
+ return `${whole}.${fractional}`;
59
+ }
60
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAgB,EAChB,SAAiB,EACjB,YAAoB,EACpB,aAAqB;IAErB,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC;IACnD,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC;IAEtD,IAAI,UAAU,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAE/B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAkB;IACnD,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,MAAM,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,QAAgB;IAChE,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,IAAI,QAAQ,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;IAC/B,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;IAEnC,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnF,OAAO,GAAG,KAAK,IAAI,UAAU,EAAE,CAAC;AAClC,CAAC"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * SwapClient - Unified client for fetching quotes from multiple sources
3
+ *
4
+ * This client combines the QuoteProvider from intents-sdk and the OneShotClient
5
+ * from money-legos to provide a unified interface for quote fetching with fallback logic.
6
+ *
7
+ * Features:
8
+ * - Intelligent fallback from intents-sdk to one-shot API
9
+ * - Comprehensive error handling and retry logic
10
+ * - Support for all major chains and protocols
11
+ * - Built-in validation and type safety
12
+ * - Configurable timeouts and retry policies
13
+ */
14
+ import { ChainID } from '@shogun-sdk/intents-sdk';
15
+ export interface SwapClientConfig {
16
+ /** API key for one-shot service */
17
+ apiKey: string;
18
+ /** API URL for one-shot service */
19
+ apiUrl: string;
20
+ /** Optional timeout for requests in milliseconds */
21
+ timeout?: number;
22
+ /** Maximum number of retry attempts for failed requests */
23
+ maxRetries?: number;
24
+ /** Delay between retry attempts in milliseconds */
25
+ retryDelay?: number;
26
+ /** Whether to enable debug logging */
27
+ debug?: boolean;
28
+ /** Custom headers to include with requests */
29
+ headers?: Record<string, string>;
30
+ /** Whether to prefer intents-sdk over one-shot API */
31
+ preferIntentsSdk?: boolean;
32
+ }
33
+ export interface UnifiedQuoteParams {
34
+ /** Source chain ID */
35
+ sourceChainId: ChainID;
36
+ /** Destination chain ID */
37
+ destChainId: ChainID;
38
+ /** Input token address */
39
+ tokenIn: string;
40
+ /** Output token address */
41
+ tokenOut: string;
42
+ /** Amount to swap (in smallest token units) */
43
+ amount: bigint;
44
+ /** Sender address */
45
+ senderAddress?: string;
46
+ /** Destination address */
47
+ destinationAddress?: string;
48
+ /** Slippage tolerance in basis points (optional) */
49
+ slippageBps?: number;
50
+ /** Affiliate wallet address (optional) */
51
+ affiliateWallet?: string;
52
+ /** Affiliate fee (optional) */
53
+ affiliateFee?: string;
54
+ /** Jito tip for Solana (optional) */
55
+ jitoTip?: number;
56
+ /** Gas refuel amount (optional) */
57
+ gasRefuel?: number;
58
+ /** Dynamic slippage flag (optional) */
59
+ dynamicSlippage?: boolean;
60
+ /** External call data (optional) */
61
+ externalCall?: string;
62
+ }
63
+ export interface UnifiedQuoteResponse {
64
+ /** Expected output amount */
65
+ amountOut: bigint;
66
+ /** Amount in USD */
67
+ amountInUsd: number;
68
+ /** Amount out in USD */
69
+ amountOutUsd: number;
70
+ /** Reduced amount out (with slippage) */
71
+ amountOutReduced?: bigint;
72
+ /** Reduced amount out in USD */
73
+ amountOutUsdReduced?: number;
74
+ /** Minimum stablecoin amount */
75
+ estimatedAmountInAsMinStablecoinAmount?: bigint;
76
+ /** Price impact percentage */
77
+ priceImpact: number;
78
+ /** Slippage percentage */
79
+ slippage: number;
80
+ /** Provider used for the quote */
81
+ provider: string;
82
+ /** Raw quote data */
83
+ rawQuote: any;
84
+ /** Source of the quote */
85
+ source: 'intents-sdk' | 'one-shot';
86
+ /** Error message if any */
87
+ error?: string;
88
+ }
89
+ export declare class SwapClient {
90
+ private readonly config;
91
+ constructor(config: SwapClientConfig);
92
+ /**
93
+ * Validates the client configuration
94
+ */
95
+ private validateConfig;
96
+ /**
97
+ * Logs debug messages if debug mode is enabled
98
+ */
99
+ private debug;
100
+ /**
101
+ * Sleeps for the specified number of milliseconds
102
+ */
103
+ private sleep;
104
+ /**
105
+ * Validates quote parameters
106
+ */
107
+ private validateQuoteParams;
108
+ /**
109
+ * Fetches a quote using the unified interface
110
+ * First tries intents-sdk QuoteProvider, then falls back to one-shot API
111
+ *
112
+ * @param params Quote parameters
113
+ * @param signal Optional AbortSignal for cancelling the request
114
+ * @returns Promise<UnifiedQuoteResponse>
115
+ */
116
+ getQuote(params: UnifiedQuoteParams, signal?: AbortSignal): Promise<UnifiedQuoteResponse>;
117
+ /**
118
+ * Gets quote from intents-sdk QuoteProvider
119
+ */
120
+ private getIntentsQuote;
121
+ /**
122
+ * Gets quote from one-shot API
123
+ */
124
+ private getOneShotQuote;
125
+ /**
126
+ * Gets a single-chain quote from intents-sdk
127
+ * Useful for same-chain swaps
128
+ */
129
+ getSingleChainQuote(chainId: ChainID, tokenIn: string, tokenOut: string, amount: bigint, slippageBps?: number, _signal?: AbortSignal): Promise<UnifiedQuoteResponse>;
130
+ /**
131
+ * Gets multiple quotes for comparison
132
+ * Useful for finding the best route
133
+ */
134
+ getMultipleQuotes(params: UnifiedQuoteParams[], signal?: AbortSignal): Promise<UnifiedQuoteResponse[]>;
135
+ /**
136
+ * Gets the best quote from multiple options
137
+ */
138
+ getBestQuote(params: UnifiedQuoteParams[], signal?: AbortSignal): Promise<UnifiedQuoteResponse | null>;
139
+ /**
140
+ * Estimates gas costs for a swap (EVM chains only)
141
+ */
142
+ estimateGas(chainId: ChainID, tokenIn: string, tokenOut: string, amount: bigint, _userAddress: string): Promise<{
143
+ gasEstimate: bigint;
144
+ gasPrice: bigint;
145
+ } | null>;
146
+ /**
147
+ * Validates if a token pair is supported for swapping
148
+ */
149
+ isTokenPairSupported(chainId: ChainID, tokenIn: string, tokenOut: string): Promise<boolean>;
150
+ /**
151
+ * Updates the client configuration
152
+ */
153
+ updateConfig(newConfig: Partial<SwapClientConfig>): void;
154
+ /**
155
+ * Gets the current configuration
156
+ */
157
+ getConfig(): SwapClientConfig;
158
+ }
159
+ //# sourceMappingURL=SwapClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwapClient.d.ts","sourceRoot":"","sources":["../../../src/client/SwapClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Usage examples for SwapClient
3
+ */
4
+ import { type SwapClientConfig } from '../client/SwapClient.js';
5
+ export declare function getCrossChainQuote(): Promise<import("../client/SwapClient.js").UnifiedQuoteResponse>;
6
+ export declare function getSingleChainQuote(): Promise<import("../client/SwapClient.js").UnifiedQuoteResponse>;
7
+ export declare function getSolanaSwapQuote(): Promise<import("../client/SwapClient.js").UnifiedQuoteResponse>;
8
+ export declare function getQuoteWithTimeout(): Promise<import("../client/SwapClient.js").UnifiedQuoteResponse>;
9
+ export declare function getQuoteWithErrorHandling(): Promise<import("../client/SwapClient.js").UnifiedQuoteResponse | null>;
10
+ export declare function getMultipleQuotesComparison(): Promise<import("../client/SwapClient.js").UnifiedQuoteResponse[]>;
11
+ export declare function validateTokenPair(): Promise<boolean>;
12
+ export declare function estimateSwapGas(): Promise<{
13
+ gasEstimate: bigint;
14
+ gasPrice: bigint;
15
+ } | null>;
16
+ export declare function updateClientConfiguration(): Promise<SwapClientConfig>;
17
+ //# sourceMappingURL=usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../../src/examples/usage.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAc,KAAK,gBAAgB,EAA2B,MAAM,yBAAyB,CAAC;AAqBrG,wBAAsB,kBAAkB,oEAoBvC;AAGD,wBAAsB,mBAAmB,oEAexC;AAGD,wBAAsB,kBAAkB,oEAqBvC;AAGD,wBAAsB,mBAAmB,oEA0BxC;AAGD,wBAAsB,yBAAyB,2EAgC9C;AAGD,wBAAsB,2BAA2B,sEAgChD;AAGD,wBAAsB,iBAAiB,qBAkBtC;AAGD,wBAAsB,eAAe;;;UAuBpC;AAGD,wBAAsB,yBAAyB,8BAwB9C"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @shogun-sdk/swap
3
+ *
4
+ * Shogun Network Swap utilities and helpers
5
+ */
6
+ export * from './types/index.js';
7
+ export * from './utils/index.js';
8
+ export * from './client/SwapClient.js';
9
+ export { ChainID } from '@shogun-sdk/intents-sdk';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AAGvC,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Type definitions for swap operations
3
+ */
4
+ export interface SwapParams {
5
+ /** Input token address */
6
+ tokenIn: string;
7
+ /** Output token address */
8
+ tokenOut: string;
9
+ /** Amount of input tokens */
10
+ amountIn: bigint;
11
+ /** Minimum amount of output tokens expected */
12
+ amountOutMin: bigint;
13
+ /** Recipient address */
14
+ to: string;
15
+ /** Transaction deadline (unix timestamp) */
16
+ deadline: number;
17
+ }
18
+ export interface SwapQuote {
19
+ /** Expected output amount */
20
+ amountOut: bigint;
21
+ /** Price impact percentage (0-100) */
22
+ priceImpact: number;
23
+ /** Gas estimate */
24
+ gasEstimate?: bigint;
25
+ }
26
+ export interface SwapResult {
27
+ /** Transaction hash */
28
+ transactionHash: string;
29
+ /** Actual amount received */
30
+ amountOut: bigint;
31
+ /** Gas used */
32
+ gasUsed?: bigint;
33
+ }
34
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,UAAU;IACzB,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,uBAAuB;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Utility functions for swap operations
3
+ */
4
+ import type { SwapParams } from '../types/index.js';
5
+ /**
6
+ * Calculate price impact for a swap
7
+ * @param amountIn Input amount
8
+ * @param amountOut Expected output amount
9
+ * @param tokenInPrice Price of input token in USD
10
+ * @param tokenOutPrice Price of output token in USD
11
+ * @returns Price impact as percentage
12
+ */
13
+ export declare function calculatePriceImpact(amountIn: bigint, amountOut: bigint, tokenInPrice: number, tokenOutPrice: number): number;
14
+ /**
15
+ * Validate swap parameters
16
+ * @param params Swap parameters to validate
17
+ * @throws Error if parameters are invalid
18
+ */
19
+ export declare function validateSwapParams(params: SwapParams): void;
20
+ /**
21
+ * Format token amount for display
22
+ * @param amount Token amount in smallest units
23
+ * @param decimals Token decimals
24
+ * @returns Formatted string
25
+ */
26
+ export declare function formatTokenAmount(amount: bigint, decimals: number): string;
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACpB,MAAM,CAOR;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAwB3D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAW1E"}