@shogun-sdk/swap 0.0.2-test.24 → 0.0.2-test.25
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.
- package/dist/core.cjs +21 -14
- package/dist/core.d.cts +2 -1
- package/dist/core.d.ts +2 -1
- package/dist/core.js +7 -0
- package/dist/index.cjs +21 -14
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +7 -0
- package/dist/react.cjs +19 -13
- package/dist/react.js +6 -0
- package/package.json +2 -2
package/dist/core.cjs
CHANGED
|
@@ -32,6 +32,7 @@ __export(core_exports, {
|
|
|
32
32
|
isEvmChain: () => import_intents_sdk12.isEvmChain,
|
|
33
33
|
isNativeAddress: () => isNativeAddress,
|
|
34
34
|
isViemWalletClient: () => isViemWalletClient,
|
|
35
|
+
normalizeEvmTokenAddress: () => normalizeEvmTokenAddress,
|
|
35
36
|
serializeBigIntsToStrings: () => serializeBigIntsToStrings
|
|
36
37
|
});
|
|
37
38
|
module.exports = __toCommonJS(core_exports);
|
|
@@ -44,12 +45,13 @@ async function getTokenList(params) {
|
|
|
44
45
|
|
|
45
46
|
// src/core/getQuote.ts
|
|
46
47
|
var import_intents_sdk4 = require("@shogun-sdk/intents-sdk");
|
|
47
|
-
var
|
|
48
|
+
var import_viem2 = require("viem");
|
|
48
49
|
|
|
49
50
|
// src/core/executeOrder/normalizeNative.ts
|
|
50
51
|
var import_intents_sdk3 = require("@shogun-sdk/intents-sdk");
|
|
51
52
|
|
|
52
53
|
// src/utils/address.ts
|
|
54
|
+
var import_viem = require("viem");
|
|
53
55
|
var NATIVE_TOKEN = {
|
|
54
56
|
ETH: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
|
|
55
57
|
SOL: "So11111111111111111111111111111111111111111",
|
|
@@ -60,6 +62,10 @@ var isNativeAddress = (tokenAddress) => {
|
|
|
60
62
|
const normalizedTokenAddress = tokenAddress.toLowerCase();
|
|
61
63
|
return !!tokenAddress && NATIVE_ADDRESSES.includes(normalizedTokenAddress);
|
|
62
64
|
};
|
|
65
|
+
function normalizeEvmTokenAddress(address) {
|
|
66
|
+
const lower = address.toLowerCase();
|
|
67
|
+
return lower === NATIVE_TOKEN.ETH.toLowerCase() ? import_viem.zeroAddress : address;
|
|
68
|
+
}
|
|
63
69
|
|
|
64
70
|
// src/utils/chain.ts
|
|
65
71
|
var import_intents_sdk2 = require("@shogun-sdk/intents-sdk");
|
|
@@ -230,7 +236,7 @@ function buildQuoteParams({
|
|
|
230
236
|
tokenOut,
|
|
231
237
|
sourceChainId,
|
|
232
238
|
destChainId,
|
|
233
|
-
amount: (0,
|
|
239
|
+
amount: (0, import_viem2.parseUnits)(amount.toString(), tokenIn.decimals ?? 18),
|
|
234
240
|
slippage
|
|
235
241
|
};
|
|
236
242
|
}
|
|
@@ -286,12 +292,12 @@ async function getBalances(params, options) {
|
|
|
286
292
|
|
|
287
293
|
// src/core/executeOrder/execute.ts
|
|
288
294
|
var import_intents_sdk11 = require("@shogun-sdk/intents-sdk");
|
|
289
|
-
var
|
|
295
|
+
var import_viem6 = require("viem");
|
|
290
296
|
|
|
291
297
|
// src/wallet-adapter/evm-wallet-adapter/adapter.ts
|
|
292
298
|
var import_ethers = require("ethers/lib/ethers.js");
|
|
293
299
|
var import_utils2 = require("ethers/lib/utils.js");
|
|
294
|
-
var
|
|
300
|
+
var import_viem3 = require("viem");
|
|
295
301
|
function isEVMTransaction(tx) {
|
|
296
302
|
return typeof tx.from === "string";
|
|
297
303
|
}
|
|
@@ -357,7 +363,7 @@ var adaptViemWallet = (wallet) => {
|
|
|
357
363
|
functionName,
|
|
358
364
|
args = []
|
|
359
365
|
}) => {
|
|
360
|
-
const publicClient = wallet.extend(
|
|
366
|
+
const publicClient = wallet.extend(import_viem3.publicActions);
|
|
361
367
|
return await publicClient.readContract({
|
|
362
368
|
address: address2,
|
|
363
369
|
abi,
|
|
@@ -367,7 +373,7 @@ var adaptViemWallet = (wallet) => {
|
|
|
367
373
|
};
|
|
368
374
|
return {
|
|
369
375
|
vmType: "EVM" /* EVM */,
|
|
370
|
-
transport: (0,
|
|
376
|
+
transport: (0, import_viem3.custom)(wallet.transport),
|
|
371
377
|
getChainId: async () => wallet.getChainId(),
|
|
372
378
|
address,
|
|
373
379
|
sendTransaction,
|
|
@@ -379,7 +385,7 @@ var adaptViemWallet = (wallet) => {
|
|
|
379
385
|
|
|
380
386
|
// src/core/executeOrder/handleEvmExecution.ts
|
|
381
387
|
var import_intents_sdk9 = require("@shogun-sdk/intents-sdk");
|
|
382
|
-
var
|
|
388
|
+
var import_viem5 = require("viem");
|
|
383
389
|
|
|
384
390
|
// src/core/executeOrder/stageMessages.ts
|
|
385
391
|
var DEFAULT_STAGE_MESSAGES = {
|
|
@@ -535,7 +541,7 @@ async function handleOrderPollingResult({
|
|
|
535
541
|
}
|
|
536
542
|
|
|
537
543
|
// src/core/executeOrder/ensurePermit2Allowance.ts
|
|
538
|
-
var
|
|
544
|
+
var import_viem4 = require("viem");
|
|
539
545
|
var import_intents_sdk8 = require("@shogun-sdk/intents-sdk");
|
|
540
546
|
async function ensurePermit2Allowance({
|
|
541
547
|
chainId,
|
|
@@ -553,22 +559,22 @@ async function ensurePermit2Allowance({
|
|
|
553
559
|
}
|
|
554
560
|
currentAllowance = await wallet.readContract({
|
|
555
561
|
address: tokenIn,
|
|
556
|
-
abi:
|
|
562
|
+
abi: import_viem4.erc20Abi,
|
|
557
563
|
functionName: "allowance",
|
|
558
564
|
args: [accountAddress, spender]
|
|
559
565
|
});
|
|
560
566
|
} catch (error) {
|
|
561
567
|
console.warn(`[Permit2] Failed to read allowance for ${tokenIn}`, error);
|
|
562
568
|
}
|
|
563
|
-
const approvalAmount = increaseByDelta ? currentAllowance + requiredAmount :
|
|
569
|
+
const approvalAmount = increaseByDelta ? currentAllowance + requiredAmount : import_viem4.maxUint256;
|
|
564
570
|
console.debug(
|
|
565
571
|
`[Permit2] Approving ${approvalAmount} for ${tokenIn} (current: ${currentAllowance}, required: ${requiredAmount})`
|
|
566
572
|
);
|
|
567
573
|
await wallet.sendTransaction({
|
|
568
574
|
to: tokenIn,
|
|
569
575
|
from: accountAddress,
|
|
570
|
-
data: (0,
|
|
571
|
-
abi:
|
|
576
|
+
data: (0, import_viem4.encodeFunctionData)({
|
|
577
|
+
abi: import_viem4.erc20Abi,
|
|
572
578
|
functionName: "approve",
|
|
573
579
|
args: [spender, approvalAmount]
|
|
574
580
|
}),
|
|
@@ -593,12 +599,13 @@ async function handleEvmExecution({
|
|
|
593
599
|
const messageFor = (stage) => DEFAULT_STAGE_MESSAGES[stage];
|
|
594
600
|
await wallet.switchChain(chainId);
|
|
595
601
|
const tokenIn = normalizeNative(chainId, quote.tokenIn.address);
|
|
602
|
+
quote.tokenOut.address = normalizeEvmTokenAddress(quote.tokenOut.address);
|
|
596
603
|
const shouldWrapNative = isNativeAddress(quote.tokenIn.address);
|
|
597
604
|
update("processing", shouldWrapNative ? `${messageFor("processing")} (wrapping native token)` : messageFor("processing"));
|
|
598
605
|
if (shouldWrapNative) {
|
|
599
606
|
await wallet.sendTransaction({
|
|
600
607
|
to: tokenIn,
|
|
601
|
-
data: (0,
|
|
608
|
+
data: (0, import_viem5.encodeFunctionData)({
|
|
602
609
|
abi: [{ type: "function", name: "deposit", stateMutability: "payable", inputs: [], outputs: [] }],
|
|
603
610
|
functionName: "deposit",
|
|
604
611
|
args: []
|
|
@@ -808,7 +815,7 @@ async function executeOrder({
|
|
|
808
815
|
log("Error:", unsupported);
|
|
809
816
|
return { status: false, message: unsupported, stage: "error" };
|
|
810
817
|
} catch (error) {
|
|
811
|
-
const message = error instanceof
|
|
818
|
+
const message = error instanceof import_viem6.BaseError ? error.shortMessage : error instanceof Error ? error.message : String(error);
|
|
812
819
|
log("Execution failed:", { message, error });
|
|
813
820
|
update("error", message);
|
|
814
821
|
return { status: false, message, stage: "error" };
|
package/dist/core.d.cts
CHANGED
|
@@ -129,9 +129,10 @@ declare const NATIVE_TOKEN: {
|
|
|
129
129
|
readonly SUI: "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI";
|
|
130
130
|
};
|
|
131
131
|
declare const isNativeAddress: (tokenAddress: string) => boolean;
|
|
132
|
+
declare function normalizeEvmTokenAddress(address: string): string;
|
|
132
133
|
|
|
133
134
|
declare function isViemWalletClient(wallet: WalletClient | AdaptedWallet): wallet is WalletClient;
|
|
134
135
|
|
|
135
136
|
declare function serializeBigIntsToStrings<T>(obj: T): T;
|
|
136
137
|
|
|
137
|
-
export { BalanceRequestParams, BalanceResponse, NATIVE_TOKEN, QuoteTokenInfo, SOLANA_CHAIN_ID, SupportedChains, SwapQuoteParams, SwapQuoteResponse, buildQuoteParams, getBalances, getQuote, getTokenList, isNativeAddress, isViemWalletClient, serializeBigIntsToStrings };
|
|
138
|
+
export { BalanceRequestParams, BalanceResponse, NATIVE_TOKEN, QuoteTokenInfo, SOLANA_CHAIN_ID, SupportedChains, SwapQuoteParams, SwapQuoteResponse, buildQuoteParams, getBalances, getQuote, getTokenList, isNativeAddress, isViemWalletClient, normalizeEvmTokenAddress, serializeBigIntsToStrings };
|
package/dist/core.d.ts
CHANGED
|
@@ -129,9 +129,10 @@ declare const NATIVE_TOKEN: {
|
|
|
129
129
|
readonly SUI: "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI";
|
|
130
130
|
};
|
|
131
131
|
declare const isNativeAddress: (tokenAddress: string) => boolean;
|
|
132
|
+
declare function normalizeEvmTokenAddress(address: string): string;
|
|
132
133
|
|
|
133
134
|
declare function isViemWalletClient(wallet: WalletClient | AdaptedWallet): wallet is WalletClient;
|
|
134
135
|
|
|
135
136
|
declare function serializeBigIntsToStrings<T>(obj: T): T;
|
|
136
137
|
|
|
137
|
-
export { BalanceRequestParams, BalanceResponse, NATIVE_TOKEN, QuoteTokenInfo, SOLANA_CHAIN_ID, SupportedChains, SwapQuoteParams, SwapQuoteResponse, buildQuoteParams, getBalances, getQuote, getTokenList, isNativeAddress, isViemWalletClient, serializeBigIntsToStrings };
|
|
138
|
+
export { BalanceRequestParams, BalanceResponse, NATIVE_TOKEN, QuoteTokenInfo, SOLANA_CHAIN_ID, SupportedChains, SwapQuoteParams, SwapQuoteResponse, buildQuoteParams, getBalances, getQuote, getTokenList, isNativeAddress, isViemWalletClient, normalizeEvmTokenAddress, serializeBigIntsToStrings };
|
package/dist/core.js
CHANGED
|
@@ -12,6 +12,7 @@ import { parseUnits } from "viem";
|
|
|
12
12
|
import { isEvmChain } from "@shogun-sdk/intents-sdk";
|
|
13
13
|
|
|
14
14
|
// src/utils/address.ts
|
|
15
|
+
import { zeroAddress } from "viem";
|
|
15
16
|
var NATIVE_TOKEN = {
|
|
16
17
|
ETH: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
|
|
17
18
|
SOL: "So11111111111111111111111111111111111111111",
|
|
@@ -22,6 +23,10 @@ var isNativeAddress = (tokenAddress) => {
|
|
|
22
23
|
const normalizedTokenAddress = tokenAddress.toLowerCase();
|
|
23
24
|
return !!tokenAddress && NATIVE_ADDRESSES.includes(normalizedTokenAddress);
|
|
24
25
|
};
|
|
26
|
+
function normalizeEvmTokenAddress(address) {
|
|
27
|
+
const lower = address.toLowerCase();
|
|
28
|
+
return lower === NATIVE_TOKEN.ETH.toLowerCase() ? zeroAddress : address;
|
|
29
|
+
}
|
|
25
30
|
|
|
26
31
|
// src/utils/chain.ts
|
|
27
32
|
import { ChainID } from "@shogun-sdk/intents-sdk";
|
|
@@ -561,6 +566,7 @@ async function handleEvmExecution({
|
|
|
561
566
|
const messageFor = (stage) => DEFAULT_STAGE_MESSAGES[stage];
|
|
562
567
|
await wallet.switchChain(chainId);
|
|
563
568
|
const tokenIn = normalizeNative(chainId, quote.tokenIn.address);
|
|
569
|
+
quote.tokenOut.address = normalizeEvmTokenAddress(quote.tokenOut.address);
|
|
564
570
|
const shouldWrapNative = isNativeAddress(quote.tokenIn.address);
|
|
565
571
|
update("processing", shouldWrapNative ? `${messageFor("processing")} (wrapping native token)` : messageFor("processing"));
|
|
566
572
|
if (shouldWrapNative) {
|
|
@@ -806,5 +812,6 @@ export {
|
|
|
806
812
|
isEvmChain3 as isEvmChain,
|
|
807
813
|
isNativeAddress,
|
|
808
814
|
isViemWalletClient,
|
|
815
|
+
normalizeEvmTokenAddress,
|
|
809
816
|
serializeBigIntsToStrings
|
|
810
817
|
};
|
package/dist/index.cjs
CHANGED
|
@@ -33,6 +33,7 @@ __export(src_exports, {
|
|
|
33
33
|
getTokenList: () => getTokenList,
|
|
34
34
|
isNativeAddress: () => isNativeAddress,
|
|
35
35
|
isViemWalletClient: () => isViemWalletClient,
|
|
36
|
+
normalizeEvmTokenAddress: () => normalizeEvmTokenAddress,
|
|
36
37
|
serializeBigIntsToStrings: () => serializeBigIntsToStrings,
|
|
37
38
|
useBalances: () => useBalances,
|
|
38
39
|
useExecuteOrder: () => useExecuteOrder,
|
|
@@ -49,12 +50,13 @@ async function getTokenList(params) {
|
|
|
49
50
|
|
|
50
51
|
// src/core/getQuote.ts
|
|
51
52
|
var import_intents_sdk4 = require("@shogun-sdk/intents-sdk");
|
|
52
|
-
var
|
|
53
|
+
var import_viem2 = require("viem");
|
|
53
54
|
|
|
54
55
|
// src/core/executeOrder/normalizeNative.ts
|
|
55
56
|
var import_intents_sdk3 = require("@shogun-sdk/intents-sdk");
|
|
56
57
|
|
|
57
58
|
// src/utils/address.ts
|
|
59
|
+
var import_viem = require("viem");
|
|
58
60
|
var NATIVE_TOKEN = {
|
|
59
61
|
ETH: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
|
|
60
62
|
SOL: "So11111111111111111111111111111111111111111",
|
|
@@ -65,6 +67,10 @@ var isNativeAddress = (tokenAddress) => {
|
|
|
65
67
|
const normalizedTokenAddress = tokenAddress.toLowerCase();
|
|
66
68
|
return !!tokenAddress && NATIVE_ADDRESSES.includes(normalizedTokenAddress);
|
|
67
69
|
};
|
|
70
|
+
function normalizeEvmTokenAddress(address) {
|
|
71
|
+
const lower = address.toLowerCase();
|
|
72
|
+
return lower === NATIVE_TOKEN.ETH.toLowerCase() ? import_viem.zeroAddress : address;
|
|
73
|
+
}
|
|
68
74
|
|
|
69
75
|
// src/utils/chain.ts
|
|
70
76
|
var import_intents_sdk2 = require("@shogun-sdk/intents-sdk");
|
|
@@ -235,7 +241,7 @@ function buildQuoteParams({
|
|
|
235
241
|
tokenOut,
|
|
236
242
|
sourceChainId,
|
|
237
243
|
destChainId,
|
|
238
|
-
amount: (0,
|
|
244
|
+
amount: (0, import_viem2.parseUnits)(amount.toString(), tokenIn.decimals ?? 18),
|
|
239
245
|
slippage
|
|
240
246
|
};
|
|
241
247
|
}
|
|
@@ -291,7 +297,7 @@ async function getBalances(params, options) {
|
|
|
291
297
|
|
|
292
298
|
// src/core/executeOrder/execute.ts
|
|
293
299
|
var import_intents_sdk11 = require("@shogun-sdk/intents-sdk");
|
|
294
|
-
var
|
|
300
|
+
var import_viem6 = require("viem");
|
|
295
301
|
|
|
296
302
|
// src/wallet-adapter/svm-wallet-adapter/adapter.ts
|
|
297
303
|
var import_web3 = require("@solana/web3.js");
|
|
@@ -333,7 +339,7 @@ var adaptSolanaWallet = (walletAddress, chainId, rpcUrl, signAndSendTransaction)
|
|
|
333
339
|
// src/wallet-adapter/evm-wallet-adapter/adapter.ts
|
|
334
340
|
var import_ethers = require("ethers/lib/ethers.js");
|
|
335
341
|
var import_utils2 = require("ethers/lib/utils.js");
|
|
336
|
-
var
|
|
342
|
+
var import_viem3 = require("viem");
|
|
337
343
|
function isEVMTransaction(tx) {
|
|
338
344
|
return typeof tx.from === "string";
|
|
339
345
|
}
|
|
@@ -457,7 +463,7 @@ var adaptViemWallet = (wallet) => {
|
|
|
457
463
|
functionName,
|
|
458
464
|
args = []
|
|
459
465
|
}) => {
|
|
460
|
-
const publicClient = wallet.extend(
|
|
466
|
+
const publicClient = wallet.extend(import_viem3.publicActions);
|
|
461
467
|
return await publicClient.readContract({
|
|
462
468
|
address: address2,
|
|
463
469
|
abi,
|
|
@@ -467,7 +473,7 @@ var adaptViemWallet = (wallet) => {
|
|
|
467
473
|
};
|
|
468
474
|
return {
|
|
469
475
|
vmType: "EVM" /* EVM */,
|
|
470
|
-
transport: (0,
|
|
476
|
+
transport: (0, import_viem3.custom)(wallet.transport),
|
|
471
477
|
getChainId: async () => wallet.getChainId(),
|
|
472
478
|
address,
|
|
473
479
|
sendTransaction,
|
|
@@ -479,7 +485,7 @@ var adaptViemWallet = (wallet) => {
|
|
|
479
485
|
|
|
480
486
|
// src/core/executeOrder/handleEvmExecution.ts
|
|
481
487
|
var import_intents_sdk9 = require("@shogun-sdk/intents-sdk");
|
|
482
|
-
var
|
|
488
|
+
var import_viem5 = require("viem");
|
|
483
489
|
|
|
484
490
|
// src/core/executeOrder/stageMessages.ts
|
|
485
491
|
var DEFAULT_STAGE_MESSAGES = {
|
|
@@ -635,7 +641,7 @@ async function handleOrderPollingResult({
|
|
|
635
641
|
}
|
|
636
642
|
|
|
637
643
|
// src/core/executeOrder/ensurePermit2Allowance.ts
|
|
638
|
-
var
|
|
644
|
+
var import_viem4 = require("viem");
|
|
639
645
|
var import_intents_sdk8 = require("@shogun-sdk/intents-sdk");
|
|
640
646
|
async function ensurePermit2Allowance({
|
|
641
647
|
chainId,
|
|
@@ -653,22 +659,22 @@ async function ensurePermit2Allowance({
|
|
|
653
659
|
}
|
|
654
660
|
currentAllowance = await wallet.readContract({
|
|
655
661
|
address: tokenIn,
|
|
656
|
-
abi:
|
|
662
|
+
abi: import_viem4.erc20Abi,
|
|
657
663
|
functionName: "allowance",
|
|
658
664
|
args: [accountAddress, spender]
|
|
659
665
|
});
|
|
660
666
|
} catch (error) {
|
|
661
667
|
console.warn(`[Permit2] Failed to read allowance for ${tokenIn}`, error);
|
|
662
668
|
}
|
|
663
|
-
const approvalAmount = increaseByDelta ? currentAllowance + requiredAmount :
|
|
669
|
+
const approvalAmount = increaseByDelta ? currentAllowance + requiredAmount : import_viem4.maxUint256;
|
|
664
670
|
console.debug(
|
|
665
671
|
`[Permit2] Approving ${approvalAmount} for ${tokenIn} (current: ${currentAllowance}, required: ${requiredAmount})`
|
|
666
672
|
);
|
|
667
673
|
await wallet.sendTransaction({
|
|
668
674
|
to: tokenIn,
|
|
669
675
|
from: accountAddress,
|
|
670
|
-
data: (0,
|
|
671
|
-
abi:
|
|
676
|
+
data: (0, import_viem4.encodeFunctionData)({
|
|
677
|
+
abi: import_viem4.erc20Abi,
|
|
672
678
|
functionName: "approve",
|
|
673
679
|
args: [spender, approvalAmount]
|
|
674
680
|
}),
|
|
@@ -693,12 +699,13 @@ async function handleEvmExecution({
|
|
|
693
699
|
const messageFor = (stage) => DEFAULT_STAGE_MESSAGES[stage];
|
|
694
700
|
await wallet.switchChain(chainId);
|
|
695
701
|
const tokenIn = normalizeNative(chainId, quote.tokenIn.address);
|
|
702
|
+
quote.tokenOut.address = normalizeEvmTokenAddress(quote.tokenOut.address);
|
|
696
703
|
const shouldWrapNative = isNativeAddress(quote.tokenIn.address);
|
|
697
704
|
update("processing", shouldWrapNative ? `${messageFor("processing")} (wrapping native token)` : messageFor("processing"));
|
|
698
705
|
if (shouldWrapNative) {
|
|
699
706
|
await wallet.sendTransaction({
|
|
700
707
|
to: tokenIn,
|
|
701
|
-
data: (0,
|
|
708
|
+
data: (0, import_viem5.encodeFunctionData)({
|
|
702
709
|
abi: [{ type: "function", name: "deposit", stateMutability: "payable", inputs: [], outputs: [] }],
|
|
703
710
|
functionName: "deposit",
|
|
704
711
|
args: []
|
|
@@ -908,7 +915,7 @@ async function executeOrder({
|
|
|
908
915
|
log("Error:", unsupported);
|
|
909
916
|
return { status: false, message: unsupported, stage: "error" };
|
|
910
917
|
} catch (error) {
|
|
911
|
-
const message = error instanceof
|
|
918
|
+
const message = error instanceof import_viem6.BaseError ? error.shortMessage : error instanceof Error ? error.message : String(error);
|
|
912
919
|
log("Execution failed:", { message, error });
|
|
913
920
|
update("error", message);
|
|
914
921
|
return { status: false, message, stage: "error" };
|
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { NATIVE_TOKEN, SOLANA_CHAIN_ID, SupportedChains, buildQuoteParams, getBalances, getQuote, getTokenList, isNativeAddress, isViemWalletClient, serializeBigIntsToStrings } from './core.cjs';
|
|
1
|
+
export { NATIVE_TOKEN, SOLANA_CHAIN_ID, SupportedChains, buildQuoteParams, getBalances, getQuote, getTokenList, isNativeAddress, isViemWalletClient, normalizeEvmTokenAddress, serializeBigIntsToStrings } from './core.cjs';
|
|
2
2
|
export { B as BalanceRequestParams, c as BalanceResponse, P as PlaceOrderResult, Q as QuoteTokenInfo, b as Stage, S as SwapQuoteParams, a as SwapQuoteResponse, T as TokenBalance, f as TokenInfo, d as TokenSearchResponse, e as executeOrder } from './execute-Xvw4wXBo.cjs';
|
|
3
3
|
export { ChainID, isEvmChain } from '@shogun-sdk/intents-sdk';
|
|
4
4
|
export { useBalances, useExecuteOrder, useQuote, useTokenList } from './react.cjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { NATIVE_TOKEN, SOLANA_CHAIN_ID, SupportedChains, buildQuoteParams, getBalances, getQuote, getTokenList, isNativeAddress, isViemWalletClient, serializeBigIntsToStrings } from './core.js';
|
|
1
|
+
export { NATIVE_TOKEN, SOLANA_CHAIN_ID, SupportedChains, buildQuoteParams, getBalances, getQuote, getTokenList, isNativeAddress, isViemWalletClient, normalizeEvmTokenAddress, serializeBigIntsToStrings } from './core.js';
|
|
2
2
|
export { B as BalanceRequestParams, c as BalanceResponse, P as PlaceOrderResult, Q as QuoteTokenInfo, b as Stage, S as SwapQuoteParams, a as SwapQuoteResponse, T as TokenBalance, f as TokenInfo, d as TokenSearchResponse, e as executeOrder } from './execute-D2qcOzkI.js';
|
|
3
3
|
export { ChainID, isEvmChain } from '@shogun-sdk/intents-sdk';
|
|
4
4
|
export { useBalances, useExecuteOrder, useQuote, useTokenList } from './react.js';
|
package/dist/index.js
CHANGED
|
@@ -12,6 +12,7 @@ import { parseUnits } from "viem";
|
|
|
12
12
|
import { isEvmChain } from "@shogun-sdk/intents-sdk";
|
|
13
13
|
|
|
14
14
|
// src/utils/address.ts
|
|
15
|
+
import { zeroAddress } from "viem";
|
|
15
16
|
var NATIVE_TOKEN = {
|
|
16
17
|
ETH: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
|
|
17
18
|
SOL: "So11111111111111111111111111111111111111111",
|
|
@@ -22,6 +23,10 @@ var isNativeAddress = (tokenAddress) => {
|
|
|
22
23
|
const normalizedTokenAddress = tokenAddress.toLowerCase();
|
|
23
24
|
return !!tokenAddress && NATIVE_ADDRESSES.includes(normalizedTokenAddress);
|
|
24
25
|
};
|
|
26
|
+
function normalizeEvmTokenAddress(address) {
|
|
27
|
+
const lower = address.toLowerCase();
|
|
28
|
+
return lower === NATIVE_TOKEN.ETH.toLowerCase() ? zeroAddress : address;
|
|
29
|
+
}
|
|
25
30
|
|
|
26
31
|
// src/utils/chain.ts
|
|
27
32
|
import { ChainID } from "@shogun-sdk/intents-sdk";
|
|
@@ -658,6 +663,7 @@ async function handleEvmExecution({
|
|
|
658
663
|
const messageFor = (stage) => DEFAULT_STAGE_MESSAGES[stage];
|
|
659
664
|
await wallet.switchChain(chainId);
|
|
660
665
|
const tokenIn = normalizeNative(chainId, quote.tokenIn.address);
|
|
666
|
+
quote.tokenOut.address = normalizeEvmTokenAddress(quote.tokenOut.address);
|
|
661
667
|
const shouldWrapNative = isNativeAddress(quote.tokenIn.address);
|
|
662
668
|
update("processing", shouldWrapNative ? `${messageFor("processing")} (wrapping native token)` : messageFor("processing"));
|
|
663
669
|
if (shouldWrapNative) {
|
|
@@ -1198,6 +1204,7 @@ export {
|
|
|
1198
1204
|
getTokenList,
|
|
1199
1205
|
isNativeAddress,
|
|
1200
1206
|
isViemWalletClient,
|
|
1207
|
+
normalizeEvmTokenAddress,
|
|
1201
1208
|
serializeBigIntsToStrings,
|
|
1202
1209
|
useBalances,
|
|
1203
1210
|
useExecuteOrder,
|
package/dist/react.cjs
CHANGED
|
@@ -113,9 +113,10 @@ var import_react2 = require("react");
|
|
|
113
113
|
|
|
114
114
|
// src/core/executeOrder/execute.ts
|
|
115
115
|
var import_intents_sdk9 = require("@shogun-sdk/intents-sdk");
|
|
116
|
-
var
|
|
116
|
+
var import_viem5 = require("viem");
|
|
117
117
|
|
|
118
118
|
// src/utils/address.ts
|
|
119
|
+
var import_viem = require("viem");
|
|
119
120
|
var NATIVE_TOKEN = {
|
|
120
121
|
ETH: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
|
|
121
122
|
SOL: "So11111111111111111111111111111111111111111",
|
|
@@ -126,6 +127,10 @@ var isNativeAddress = (tokenAddress) => {
|
|
|
126
127
|
const normalizedTokenAddress = tokenAddress.toLowerCase();
|
|
127
128
|
return !!tokenAddress && NATIVE_ADDRESSES.includes(normalizedTokenAddress);
|
|
128
129
|
};
|
|
130
|
+
function normalizeEvmTokenAddress(address) {
|
|
131
|
+
const lower = address.toLowerCase();
|
|
132
|
+
return lower === NATIVE_TOKEN.ETH.toLowerCase() ? import_viem.zeroAddress : address;
|
|
133
|
+
}
|
|
129
134
|
|
|
130
135
|
// src/utils/chain.ts
|
|
131
136
|
var import_intents_sdk2 = require("@shogun-sdk/intents-sdk");
|
|
@@ -216,7 +221,7 @@ function serializeBigIntsToStrings(obj) {
|
|
|
216
221
|
// src/wallet-adapter/evm-wallet-adapter/adapter.ts
|
|
217
222
|
var import_ethers = require("ethers/lib/ethers.js");
|
|
218
223
|
var import_utils = require("ethers/lib/utils.js");
|
|
219
|
-
var
|
|
224
|
+
var import_viem2 = require("viem");
|
|
220
225
|
function isEVMTransaction(tx) {
|
|
221
226
|
return typeof tx.from === "string";
|
|
222
227
|
}
|
|
@@ -282,7 +287,7 @@ var adaptViemWallet = (wallet) => {
|
|
|
282
287
|
functionName,
|
|
283
288
|
args = []
|
|
284
289
|
}) => {
|
|
285
|
-
const publicClient = wallet.extend(
|
|
290
|
+
const publicClient = wallet.extend(import_viem2.publicActions);
|
|
286
291
|
return await publicClient.readContract({
|
|
287
292
|
address: address2,
|
|
288
293
|
abi,
|
|
@@ -292,7 +297,7 @@ var adaptViemWallet = (wallet) => {
|
|
|
292
297
|
};
|
|
293
298
|
return {
|
|
294
299
|
vmType: "EVM" /* EVM */,
|
|
295
|
-
transport: (0,
|
|
300
|
+
transport: (0, import_viem2.custom)(wallet.transport),
|
|
296
301
|
getChainId: async () => wallet.getChainId(),
|
|
297
302
|
address,
|
|
298
303
|
sendTransaction,
|
|
@@ -304,7 +309,7 @@ var adaptViemWallet = (wallet) => {
|
|
|
304
309
|
|
|
305
310
|
// src/core/executeOrder/handleEvmExecution.ts
|
|
306
311
|
var import_intents_sdk7 = require("@shogun-sdk/intents-sdk");
|
|
307
|
-
var
|
|
312
|
+
var import_viem4 = require("viem");
|
|
308
313
|
|
|
309
314
|
// src/core/executeOrder/normalizeNative.ts
|
|
310
315
|
var import_intents_sdk3 = require("@shogun-sdk/intents-sdk");
|
|
@@ -472,7 +477,7 @@ async function handleOrderPollingResult({
|
|
|
472
477
|
}
|
|
473
478
|
|
|
474
479
|
// src/core/executeOrder/ensurePermit2Allowance.ts
|
|
475
|
-
var
|
|
480
|
+
var import_viem3 = require("viem");
|
|
476
481
|
var import_intents_sdk6 = require("@shogun-sdk/intents-sdk");
|
|
477
482
|
async function ensurePermit2Allowance({
|
|
478
483
|
chainId,
|
|
@@ -490,22 +495,22 @@ async function ensurePermit2Allowance({
|
|
|
490
495
|
}
|
|
491
496
|
currentAllowance = await wallet.readContract({
|
|
492
497
|
address: tokenIn,
|
|
493
|
-
abi:
|
|
498
|
+
abi: import_viem3.erc20Abi,
|
|
494
499
|
functionName: "allowance",
|
|
495
500
|
args: [accountAddress, spender]
|
|
496
501
|
});
|
|
497
502
|
} catch (error) {
|
|
498
503
|
console.warn(`[Permit2] Failed to read allowance for ${tokenIn}`, error);
|
|
499
504
|
}
|
|
500
|
-
const approvalAmount = increaseByDelta ? currentAllowance + requiredAmount :
|
|
505
|
+
const approvalAmount = increaseByDelta ? currentAllowance + requiredAmount : import_viem3.maxUint256;
|
|
501
506
|
console.debug(
|
|
502
507
|
`[Permit2] Approving ${approvalAmount} for ${tokenIn} (current: ${currentAllowance}, required: ${requiredAmount})`
|
|
503
508
|
);
|
|
504
509
|
await wallet.sendTransaction({
|
|
505
510
|
to: tokenIn,
|
|
506
511
|
from: accountAddress,
|
|
507
|
-
data: (0,
|
|
508
|
-
abi:
|
|
512
|
+
data: (0, import_viem3.encodeFunctionData)({
|
|
513
|
+
abi: import_viem3.erc20Abi,
|
|
509
514
|
functionName: "approve",
|
|
510
515
|
args: [spender, approvalAmount]
|
|
511
516
|
}),
|
|
@@ -530,12 +535,13 @@ async function handleEvmExecution({
|
|
|
530
535
|
const messageFor = (stage) => DEFAULT_STAGE_MESSAGES[stage];
|
|
531
536
|
await wallet.switchChain(chainId);
|
|
532
537
|
const tokenIn = normalizeNative(chainId, quote.tokenIn.address);
|
|
538
|
+
quote.tokenOut.address = normalizeEvmTokenAddress(quote.tokenOut.address);
|
|
533
539
|
const shouldWrapNative = isNativeAddress(quote.tokenIn.address);
|
|
534
540
|
update("processing", shouldWrapNative ? `${messageFor("processing")} (wrapping native token)` : messageFor("processing"));
|
|
535
541
|
if (shouldWrapNative) {
|
|
536
542
|
await wallet.sendTransaction({
|
|
537
543
|
to: tokenIn,
|
|
538
|
-
data: (0,
|
|
544
|
+
data: (0, import_viem4.encodeFunctionData)({
|
|
539
545
|
abi: [{ type: "function", name: "deposit", stateMutability: "payable", inputs: [], outputs: [] }],
|
|
540
546
|
functionName: "deposit",
|
|
541
547
|
args: []
|
|
@@ -745,7 +751,7 @@ async function executeOrder({
|
|
|
745
751
|
log("Error:", unsupported);
|
|
746
752
|
return { status: false, message: unsupported, stage: "error" };
|
|
747
753
|
} catch (error) {
|
|
748
|
-
const message = error instanceof
|
|
754
|
+
const message = error instanceof import_viem5.BaseError ? error.shortMessage : error instanceof Error ? error.message : String(error);
|
|
749
755
|
log("Execution failed:", { message, error });
|
|
750
756
|
update("error", message);
|
|
751
757
|
return { status: false, message, stage: "error" };
|
|
@@ -849,7 +855,7 @@ var import_react3 = require("react");
|
|
|
849
855
|
|
|
850
856
|
// src/core/getQuote.ts
|
|
851
857
|
var import_intents_sdk10 = require("@shogun-sdk/intents-sdk");
|
|
852
|
-
var
|
|
858
|
+
var import_viem6 = require("viem");
|
|
853
859
|
async function getQuote(params) {
|
|
854
860
|
if (!params.tokenIn?.address || !params.tokenOut?.address) {
|
|
855
861
|
throw new Error("Both tokenIn and tokenOut must include an address.");
|
package/dist/react.js
CHANGED
|
@@ -85,6 +85,7 @@ import { ChainID as ChainID3, isEvmChain as isEvmChain2 } from "@shogun-sdk/inte
|
|
|
85
85
|
import { BaseError } from "viem";
|
|
86
86
|
|
|
87
87
|
// src/utils/address.ts
|
|
88
|
+
import { zeroAddress } from "viem";
|
|
88
89
|
var NATIVE_TOKEN = {
|
|
89
90
|
ETH: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
|
|
90
91
|
SOL: "So11111111111111111111111111111111111111111",
|
|
@@ -95,6 +96,10 @@ var isNativeAddress = (tokenAddress) => {
|
|
|
95
96
|
const normalizedTokenAddress = tokenAddress.toLowerCase();
|
|
96
97
|
return !!tokenAddress && NATIVE_ADDRESSES.includes(normalizedTokenAddress);
|
|
97
98
|
};
|
|
99
|
+
function normalizeEvmTokenAddress(address) {
|
|
100
|
+
const lower = address.toLowerCase();
|
|
101
|
+
return lower === NATIVE_TOKEN.ETH.toLowerCase() ? zeroAddress : address;
|
|
102
|
+
}
|
|
98
103
|
|
|
99
104
|
// src/utils/chain.ts
|
|
100
105
|
import { ChainID } from "@shogun-sdk/intents-sdk";
|
|
@@ -505,6 +510,7 @@ async function handleEvmExecution({
|
|
|
505
510
|
const messageFor = (stage) => DEFAULT_STAGE_MESSAGES[stage];
|
|
506
511
|
await wallet.switchChain(chainId);
|
|
507
512
|
const tokenIn = normalizeNative(chainId, quote.tokenIn.address);
|
|
513
|
+
quote.tokenOut.address = normalizeEvmTokenAddress(quote.tokenOut.address);
|
|
508
514
|
const shouldWrapNative = isNativeAddress(quote.tokenIn.address);
|
|
509
515
|
update("processing", shouldWrapNative ? `${messageFor("processing")} (wrapping native token)` : messageFor("processing"));
|
|
510
516
|
if (shouldWrapNative) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shogun-sdk/swap",
|
|
3
|
-
"version": "0.0.2-test.
|
|
3
|
+
"version": "0.0.2-test.25",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Shogun Network Swap utilities and helpers",
|
|
6
6
|
"author": "Shogun Network",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"@solana/web3.js": "^1.98.4",
|
|
58
58
|
"ethers": "^5.6.1",
|
|
59
59
|
"wagmi": "2.18.0",
|
|
60
|
-
"@shogun-sdk/intents-sdk": "1.2.6-test.
|
|
60
|
+
"@shogun-sdk/intents-sdk": "1.2.6-test.9"
|
|
61
61
|
},
|
|
62
62
|
"peerDependencies": {
|
|
63
63
|
"viem": "^2.38.1",
|