@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 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 import_viem = require("viem");
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, import_viem.parseUnits)(amount.toString(), tokenIn.decimals ?? 18),
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 import_viem5 = require("viem");
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 import_viem2 = require("viem");
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(import_viem2.publicActions);
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, import_viem2.custom)(wallet.transport),
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 import_viem4 = require("viem");
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 import_viem3 = require("viem");
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: import_viem3.erc20Abi,
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 : import_viem3.maxUint256;
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, import_viem3.encodeFunctionData)({
571
- abi: import_viem3.erc20Abi,
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, import_viem4.encodeFunctionData)({
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 import_viem5.BaseError ? error.shortMessage : error instanceof Error ? error.message : String(error);
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 import_viem = require("viem");
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, import_viem.parseUnits)(amount.toString(), tokenIn.decimals ?? 18),
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 import_viem5 = require("viem");
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 import_viem2 = require("viem");
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(import_viem2.publicActions);
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, import_viem2.custom)(wallet.transport),
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 import_viem4 = require("viem");
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 import_viem3 = require("viem");
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: import_viem3.erc20Abi,
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 : import_viem3.maxUint256;
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, import_viem3.encodeFunctionData)({
671
- abi: import_viem3.erc20Abi,
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, import_viem4.encodeFunctionData)({
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 import_viem5.BaseError ? error.shortMessage : error instanceof Error ? error.message : String(error);
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 import_viem4 = require("viem");
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 import_viem = require("viem");
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(import_viem.publicActions);
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, import_viem.custom)(wallet.transport),
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 import_viem3 = require("viem");
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 import_viem2 = require("viem");
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: import_viem2.erc20Abi,
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 : import_viem2.maxUint256;
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, import_viem2.encodeFunctionData)({
508
- abi: import_viem2.erc20Abi,
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, import_viem3.encodeFunctionData)({
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 import_viem4.BaseError ? error.shortMessage : error instanceof Error ? error.message : String(error);
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 import_viem5 = require("viem");
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.24",
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.8"
60
+ "@shogun-sdk/intents-sdk": "1.2.6-test.9"
61
61
  },
62
62
  "peerDependencies": {
63
63
  "viem": "^2.38.1",