@shogun-sdk/intents-sdk 1.2.5 → 1.2.6-test

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.
Files changed (121) hide show
  1. package/README.md +3 -19
  2. package/dist/esm/chains.js +3 -0
  3. package/dist/esm/chains.js.map +1 -1
  4. package/dist/esm/constants.js +9 -0
  5. package/dist/esm/constants.js.map +1 -1
  6. package/dist/esm/core/evm/chain-provider.js +2 -1
  7. package/dist/esm/core/evm/chain-provider.js.map +1 -1
  8. package/dist/esm/core/evm/cross-chain-limit-order.js +1 -1
  9. package/dist/esm/core/evm/cross-chain-limit-order.js.map +1 -1
  10. package/dist/esm/core/evm/permit2-signature-transfer.js +15 -0
  11. package/dist/esm/core/evm/permit2-signature-transfer.js.map +1 -0
  12. package/dist/esm/core/evm/single-chain-dca-order.js +1 -1
  13. package/dist/esm/core/evm/single-chain-dca-order.js.map +1 -1
  14. package/dist/esm/core/evm/single-chain-limit-order.js +1 -1
  15. package/dist/esm/core/evm/single-chain-limit-order.js.map +1 -1
  16. package/dist/esm/core/solana/dca/single-chain-dca-order.js +3 -2
  17. package/dist/esm/core/solana/dca/single-chain-dca-order.js.map +1 -1
  18. package/dist/esm/core/solana/dca/single-chain-limit-order.js +3 -2
  19. package/dist/esm/core/solana/dca/single-chain-limit-order.js.map +1 -1
  20. package/dist/esm/core/solana/utils.js +14 -4
  21. package/dist/esm/core/solana/utils.js.map +1 -1
  22. package/dist/esm/core/sui/single-chain-dca-order.js +2 -1
  23. package/dist/esm/core/sui/single-chain-dca-order.js.map +1 -1
  24. package/dist/esm/core/sui/single-chain-limit-order.js +2 -1
  25. package/dist/esm/core/sui/single-chain-limit-order.js.map +1 -1
  26. package/dist/esm/index.js +6 -3
  27. package/dist/esm/index.js.map +1 -1
  28. package/dist/esm/types/token-list.js +2 -0
  29. package/dist/esm/types/token-list.js.map +1 -0
  30. package/dist/esm/utils/defillama.js +1 -0
  31. package/dist/esm/utils/defillama.js.map +1 -1
  32. package/dist/esm/utils/quote/aggregator.js +158 -42
  33. package/dist/esm/utils/quote/aggregator.js.map +1 -1
  34. package/dist/esm/utils/quote/paraswap.js +1 -0
  35. package/dist/esm/utils/quote/paraswap.js.map +1 -1
  36. package/dist/esm/utils/quote/pumpfun/estimations.js +169 -0
  37. package/dist/esm/utils/quote/pumpfun/estimations.js.map +1 -0
  38. package/dist/esm/utils/quote/pumpfun/estimations_amm.js +130 -0
  39. package/dist/esm/utils/quote/pumpfun/estimations_amm.js.map +1 -0
  40. package/dist/esm/utils/quote/pumpfun/index.js +198 -0
  41. package/dist/esm/utils/quote/pumpfun/index.js.map +1 -0
  42. package/dist/esm/utils/quote/pumpfun/models.js +70 -0
  43. package/dist/esm/utils/quote/pumpfun/models.js.map +1 -0
  44. package/dist/esm/utils/quote/pumpfun/utils.js +269 -0
  45. package/dist/esm/utils/quote/pumpfun/utils.js.map +1 -0
  46. package/dist/esm/utils/quote/raydium.js +336 -0
  47. package/dist/esm/utils/quote/raydium.js.map +1 -0
  48. package/dist/esm/utils/quote/stablecoins-tokens.js +1 -0
  49. package/dist/esm/utils/quote/stablecoins-tokens.js.map +1 -1
  50. package/dist/esm/utils/quote/utils.js +8 -0
  51. package/dist/esm/utils/quote/utils.js.map +1 -0
  52. package/dist/esm/utils/tokens/index.js +37 -0
  53. package/dist/esm/utils/tokens/index.js.map +1 -0
  54. package/dist/types/chains.d.ts +4 -2
  55. package/dist/types/chains.d.ts.map +1 -1
  56. package/dist/types/constants.d.ts +2 -1
  57. package/dist/types/constants.d.ts.map +1 -1
  58. package/dist/types/core/evm/chain-provider.d.ts.map +1 -1
  59. package/dist/types/core/evm/permit2-signature-transfer.d.ts +3 -0
  60. package/dist/types/core/evm/permit2-signature-transfer.d.ts.map +1 -0
  61. package/dist/types/core/solana/dca/single-chain-dca-order.d.ts +1 -2
  62. package/dist/types/core/solana/dca/single-chain-dca-order.d.ts.map +1 -1
  63. package/dist/types/core/solana/dca/single-chain-limit-order.d.ts +1 -2
  64. package/dist/types/core/solana/dca/single-chain-limit-order.d.ts.map +1 -1
  65. package/dist/types/core/solana/utils.d.ts +2 -0
  66. package/dist/types/core/solana/utils.d.ts.map +1 -1
  67. package/dist/types/core/sui/single-chain-dca-order.d.ts.map +1 -1
  68. package/dist/types/core/sui/single-chain-limit-order.d.ts.map +1 -1
  69. package/dist/types/index.d.ts +5 -3
  70. package/dist/types/index.d.ts.map +1 -1
  71. package/dist/types/types/token-list.d.ts +30 -0
  72. package/dist/types/types/token-list.d.ts.map +1 -0
  73. package/dist/types/utils/defillama.d.ts +1 -0
  74. package/dist/types/utils/defillama.d.ts.map +1 -1
  75. package/dist/types/utils/quote/aggregator.d.ts +42 -5
  76. package/dist/types/utils/quote/aggregator.d.ts.map +1 -1
  77. package/dist/types/utils/quote/paraswap.d.ts.map +1 -1
  78. package/dist/types/utils/quote/pumpfun/estimations.d.ts +30 -0
  79. package/dist/types/utils/quote/pumpfun/estimations.d.ts.map +1 -0
  80. package/dist/types/utils/quote/pumpfun/estimations_amm.d.ts +49 -0
  81. package/dist/types/utils/quote/pumpfun/estimations_amm.d.ts.map +1 -0
  82. package/dist/types/utils/quote/pumpfun/index.d.ts +10 -0
  83. package/dist/types/utils/quote/pumpfun/index.d.ts.map +1 -0
  84. package/dist/types/utils/quote/pumpfun/models.d.ts +94 -0
  85. package/dist/types/utils/quote/pumpfun/models.d.ts.map +1 -0
  86. package/dist/types/utils/quote/pumpfun/utils.d.ts +50 -0
  87. package/dist/types/utils/quote/pumpfun/utils.d.ts.map +1 -0
  88. package/dist/types/utils/quote/raydium.d.ts +98 -0
  89. package/dist/types/utils/quote/raydium.d.ts.map +1 -0
  90. package/dist/types/utils/quote/stablecoins-tokens.d.ts.map +1 -1
  91. package/dist/types/utils/quote/utils.d.ts +5 -0
  92. package/dist/types/utils/quote/utils.d.ts.map +1 -0
  93. package/dist/types/utils/tokens/index.d.ts +20 -0
  94. package/dist/types/utils/tokens/index.d.ts.map +1 -0
  95. package/package.json +20 -18
  96. package/src/chains.ts +3 -0
  97. package/src/constants.ts +12 -2
  98. package/src/core/evm/chain-provider.ts +2 -1
  99. package/src/core/evm/cross-chain-limit-order.ts +1 -1
  100. package/src/core/evm/permit2-signature-transfer.ts +15 -0
  101. package/src/core/evm/single-chain-dca-order.ts +1 -1
  102. package/src/core/evm/single-chain-limit-order.ts +1 -1
  103. package/src/core/solana/dca/single-chain-dca-order.ts +3 -3
  104. package/src/core/solana/dca/single-chain-limit-order.ts +3 -2
  105. package/src/core/solana/utils.ts +24 -12
  106. package/src/core/sui/single-chain-dca-order.ts +2 -2
  107. package/src/core/sui/single-chain-limit-order.ts +2 -2
  108. package/src/index.ts +14 -4
  109. package/src/types/token-list.ts +35 -0
  110. package/src/utils/defillama.ts +1 -0
  111. package/src/utils/quote/aggregator.ts +210 -55
  112. package/src/utils/quote/paraswap.ts +1 -0
  113. package/src/utils/quote/pumpfun/estimations.ts +206 -0
  114. package/src/utils/quote/pumpfun/estimations_amm.ts +165 -0
  115. package/src/utils/quote/pumpfun/index.ts +266 -0
  116. package/src/utils/quote/pumpfun/models.ts +163 -0
  117. package/src/utils/quote/pumpfun/utils.ts +343 -0
  118. package/src/utils/quote/raydium.ts +506 -0
  119. package/src/utils/quote/stablecoins-tokens.ts +1 -0
  120. package/src/utils/quote/utils.ts +8 -0
  121. package/src/utils/tokens/index.ts +38 -0
package/src/constants.ts CHANGED
@@ -15,6 +15,7 @@ export const PERMIT2_ADDRESS: Record<SupportedEvmChain, EvmAddress> = {
15
15
  [ChainID.Optimism]: '0x000000000022d473030f116ddee9f6b43ac78ba3' as EvmAddress,
16
16
  [ChainID.Base]: '0x000000000022d473030f116ddee9f6b43ac78ba3' as EvmAddress,
17
17
  [ChainID.Hyperliquid]: '0x000000000022d473030f116ddee9f6b43ac78ba3' as EvmAddress,
18
+ [ChainID.BSC]: '0x000000000022d473030f116ddee9f6b43ac78ba3' as EvmAddress,
18
19
  };
19
20
 
20
21
  // Production guard addresses
@@ -26,6 +27,7 @@ export const PROD_CROSS_CHAIN_GUARD_ADDRESSES: Record<SupportedChain, SolanaAddr
26
27
  [ChainID.Solana]:
27
28
  'AiTqNSZe6Nxs2myiUX1cP6YfiER3v2pWuMYMSLYcrpyo' as SolanaAddress<'AiTqNSZe6Nxs2myiUX1cP6YfiER3v2pWuMYMSLYcrpyo'>,
28
29
  [ChainID.Sui]: '0x70d005df81d0fd7f7a7aaf87fa8676bff427f7202897b373bbf3d5bf0a8792de',
30
+ [ChainID.BSC]: '0x338E91366F825A906646adD722755c40b02D7234' as EvmAddress,
29
31
  };
30
32
 
31
33
  // Test guard addresses
@@ -37,6 +39,7 @@ export const TEST_CROSS_CHAIN_GUARD_ADDRESSES: Record<SupportedChain, SolanaAddr
37
39
  [ChainID.Solana]:
38
40
  '97XuksD34dyU3qyPDNwQ8qfPw1zHoUa7xVxBVdojSJ7E' as SolanaAddress<'97XuksD34dyU3qyPDNwQ8qfPw1zHoUa7xVxBVdojSJ7E'>,
39
41
  [ChainID.Sui]: '0x47f2934f621483bc485feeb78972dd2fb25840074e296fffb9e64f9bde6d2ff1',
42
+ [ChainID.BSC]: '0x41E46ea2a85E49c28A0cE313B4F7a6AEC1AfD852' as EvmAddress,
40
43
  };
41
44
 
42
45
  // Prod guard addresses
@@ -50,7 +53,8 @@ export const PROD_SINGLE_CHAIN_GUARD_ADDRESSES: Record<
50
53
  [ChainID.Hyperliquid]: '0x618ee9b6829261108d811b91581e00da192b0b75' as EvmAddress,
51
54
  [ChainID.Solana]:
52
55
  'CwWkajHjBCWMKZdwR5D1P5M6Fgf9dAyxqZ1qDZgZGo1e' as SolanaAddress<'CwWkajHjBCWMKZdwR5D1P5M6Fgf9dAyxqZ1qDZgZGo1e'>,
53
- };
56
+ [ChainID.BSC]: '0xA69c47F93Ccc5BcCdc4b3c71646F61Fa5baa3323' as EvmAddress,
57
+ };
54
58
 
55
59
  // Test guard addresses
56
60
  export const TEST_SINGLE_CHAIN_GUARD_ADDRESSES: Record<
@@ -63,13 +67,15 @@ export const TEST_SINGLE_CHAIN_GUARD_ADDRESSES: Record<
63
67
  [ChainID.Hyperliquid]: '0x6a2f41f905035fa89b7329c0661061b580b1eb92' as EvmAddress,
64
68
  [ChainID.Solana]:
65
69
  '4wi5wsgSs9q9WV55s9AvKWTdeMNPcDXhzcbx5SoRRFcg' as SolanaAddress<'4wi5wsgSs9q9WV55s9AvKWTdeMNPcDXhzcbx5SoRRFcg'>,
66
- };
70
+ [ChainID.BSC]: '0xBc68262535d2a8D42bA80c9bbF5299DfbfEc0040' as EvmAddress,
71
+ };
67
72
 
68
73
  export const PROD_DCA_SINGLE_CHAIN_GUARD_ADDRESSES: Record<SupportedEvmChain, EvmAddress> = {
69
74
  [ChainID.Arbitrum]: '0x0000000000000000000000000000000000000000' as EvmAddress,
70
75
  [ChainID.Optimism]: '0x0000000000000000000000000000000000000000' as EvmAddress,
71
76
  [ChainID.Base]: '0x1ab119e95a87ff59a57eba6dec6599aff8b2d7e4' as EvmAddress,
72
77
  [ChainID.Hyperliquid]: '0x490911e5236f68ba921cbecc4b82b5e01b745731' as EvmAddress,
78
+ [ChainID.BSC]: '0x12052867995d5fb757f5ea8EC49eb99ee502C1e8' as EvmAddress,
73
79
  };
74
80
 
75
81
  // Test guard addresses
@@ -78,6 +84,7 @@ export const TEST_DCA_SINGLE_CHAIN_GUARD_ADDRESSES: Record<SupportedEvmChain, Ev
78
84
  [ChainID.Optimism]: '0x0000000000000000000000000000000000000000' as EvmAddress,
79
85
  [ChainID.Base]: '0x79fd6a458066396c8938823049b6e614ce6b71f2' as EvmAddress,
80
86
  [ChainID.Hyperliquid]: '0x5156e6c7b7a1c60ed4d6b2175f88f1f6875c78d8' as EvmAddress,
87
+ [ChainID.BSC]: '0x25c283094f9EDA9F1455a1ecbEEf10c69311D962' as EvmAddress,
81
88
  };
82
89
 
83
90
  export const CROSS_CHAIN_GUARD_ADDRESSES = useProdConfig
@@ -140,6 +147,7 @@ export const WRAPPED_ETH_ADDRESSES: Record<SupportedEvmChain, EvmAddress> = {
140
147
  [ChainID.Optimism]: '0x4200000000000000000000000000000000000006' as EvmAddress,
141
148
  [ChainID.Base]: '0x4200000000000000000000000000000000000006' as EvmAddress,
142
149
  [ChainID.Hyperliquid]: '0x5555555555555555555555555555555555555555' as EvmAddress,
150
+ [ChainID.BSC]: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c' as EvmAddress,
143
151
  };
144
152
 
145
153
  export const NATIVE_SUI_TOKEN_ADDRESS = '0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI';
@@ -149,3 +157,5 @@ export function isNativeEvmToken(tokenAddress: string): boolean {
149
157
 
150
158
  return NATIVE_EVM_ETH_ADDRESSES.some((addr) => addr.toLowerCase() === normalizedAddress);
151
159
  }
160
+
161
+ export const TOKEN_SEARCH_API_BASE_URL = 'https://token-search-api.vercel.app';
@@ -12,7 +12,7 @@ import {
12
12
  type WalletClient,
13
13
  } from 'viem';
14
14
  import { privateKeyToAccount } from 'viem/accounts';
15
- import { arbitrum, base, optimism } from 'viem/chains';
15
+ import { arbitrum, base, optimism, bsc } from 'viem/chains';
16
16
  import { ChainID, type SupportedEvmChain } from '../../chains.js';
17
17
  import type { EVMConfig } from '../../config.js';
18
18
  import { ERC20ABI } from './abi/erc20.js';
@@ -26,6 +26,7 @@ export const chainIdToProviderChainMap: Record<SupportedEvmChain, Chain> = {
26
26
  [ChainID.Optimism]: optimism,
27
27
  [ChainID.Base]: base,
28
28
  [ChainID.Hyperliquid]: hyperEVM,
29
+ [ChainID.BSC]: bsc,
29
30
  };
30
31
 
31
32
  export class ChainProvider {
@@ -1,5 +1,5 @@
1
1
  import { ethers, type TypedDataField, type AddressLike, type BigNumberish } from "ethers";
2
- import { SignatureTransfer } from "@uniswap/permit2-sdk";
2
+ import { SignatureTransfer } from "./permit2-signature-transfer.js";
3
3
 
4
4
  export const OrderInfoType: Record<string, TypedDataField[]> = {
5
5
  OrderInfo: [
@@ -0,0 +1,15 @@
1
+ let SignatureTransfer: any
2
+
3
+ // Only use createRequire in Node (never in browsers)
4
+ if (typeof process !== "undefined" && process.versions?.node) {
5
+ const { createRequire } = await import("module")
6
+ const require = createRequire(import.meta.url)
7
+ const pkg = require("@uniswap/permit2-sdk")
8
+ SignatureTransfer = pkg.SignatureTransfer
9
+ } else {
10
+ // Fallback for Vite / Vue / browser builds
11
+ const pkg = await import("@uniswap/permit2-sdk")
12
+ SignatureTransfer = (pkg as any).SignatureTransfer
13
+ }
14
+
15
+ export { SignatureTransfer }
@@ -1,5 +1,5 @@
1
1
  import { ethers, type TypedDataField, type AddressLike, type BigNumberish, type BytesLike } from "ethers";
2
- import { SignatureTransfer } from "@uniswap/permit2-sdk";
2
+ import { SignatureTransfer } from "./permit2-signature-transfer.js";
3
3
  import { TransferDataType, type TransferDataStruct } from "./types.js";
4
4
 
5
5
  export const SingleChainDcaOrderType: Record<string, TypedDataField[]> = {
@@ -1,5 +1,5 @@
1
1
  import { ethers, type TypedDataField, type AddressLike, type BigNumberish, type BytesLike } from "ethers";
2
- import { SignatureTransfer } from "@uniswap/permit2-sdk";
2
+ import { SignatureTransfer } from "./permit2-signature-transfer.js";
3
3
  import { TransferDataType, type TransferDataStruct } from "./types.js";
4
4
 
5
5
  export const SingleChainLimitOrderType: Record<string, TypedDataField[]> = {
@@ -1,8 +1,8 @@
1
- import { BN } from "@coral-xyz/anchor";
1
+ import { BN } from "bn.js";
2
2
  import { PublicKey } from "@solana/web3.js";
3
- import { keccak256 } from "js-sha3";
4
3
  import type { ExtraTransfer } from "./single-chain-limit-order.js";
5
-
4
+ import pkg from "js-sha3";
5
+ const { keccak256 } = pkg;
6
6
  /**
7
7
  * Generate secret number and prepare secret hash for single chain DCA orders
8
8
  * @param tokenOut Token OUT Pubkey
@@ -1,6 +1,7 @@
1
- import { BN } from "@coral-xyz/anchor";
1
+ import { BN } from "bn.js";
2
2
  import { PublicKey } from "@solana/web3.js";
3
- import { keccak256 } from "js-sha3";
3
+ import pkg from "js-sha3";
4
+ const { keccak256 } = pkg;
4
5
 
5
6
  export type ExtraTransfer = {
6
7
  token: PublicKey;
@@ -5,28 +5,40 @@ import sha3 from 'js-sha3';
5
5
  import type { DcaSingleChainOrder } from '../orders/dca-single-chain.js';
6
6
 
7
7
  export function genSecretHashAndNumber(order: SingleChainOrder | DcaSingleChainOrder): {
8
- secretHash: number[];
9
- secretNumber: string;
8
+ secretHash: number[]
9
+ secretNumber: string
10
10
  } {
11
- const tokenOut = new PublicKey(order.tokenOut);
12
- const receiver = new PublicKey(order.destinationAddress);
11
+ const rawTokenOut = new PublicKey(order.tokenOut)
12
+ const tokenOut = formatTokenPubkey(rawTokenOut)
13
+ const receiver = new PublicKey(order.destinationAddress)
13
14
 
14
- const extraTransfers = order.extraTransfers ?? [];
15
- const secretNumber = new BN(crypto.getRandomValues(new Uint8Array(8)));
15
+ const extraTransfers = order.extraTransfers ?? []
16
+ const secretNumber = new BN(crypto.getRandomValues(new Uint8Array(8)))
16
17
 
17
18
  const fullArray = [
18
19
  ...tokenOut.toBuffer(),
19
20
  ...receiver.toBuffer(),
20
21
  ...Buffer.concat(
21
22
  extraTransfers.map((t) =>
22
- Buffer.concat([new PublicKey(t.token).toBuffer(), new PublicKey(t.receiver).toBuffer()]),
23
+ Buffer.concat([
24
+ new PublicKey(t.token).toBuffer(),
25
+ new PublicKey(t.receiver).toBuffer(),
26
+ ]),
23
27
  ),
24
28
  ),
25
- ...secretNumber.toArrayLike(Buffer, 'le', 8),
26
- ];
29
+ ...secretNumber.toArrayLike(Buffer, "le", 8),
30
+ ]
27
31
 
28
- const value = sha3.keccak256(Uint8Array.from(fullArray));
29
- const secretHash = [...Uint8Array.from(Buffer.from(value, 'hex'))];
32
+ const value = sha3.keccak256(Uint8Array.from(fullArray))
33
+ const secretHash = [...Uint8Array.from(Buffer.from(value, "hex"))]
30
34
 
31
- return { secretHash, secretNumber: secretNumber.toString() };
35
+ return { secretHash, secretNumber: secretNumber.toString() }
32
36
  }
37
+
38
+ export function formatTokenPubkey(token: PublicKey) {
39
+ if (token.equals(new PublicKey("So11111111111111111111111111111111111111111"))) {
40
+ return PublicKey.default
41
+ }
42
+
43
+ return token;
44
+ }
@@ -1,12 +1,12 @@
1
1
  import { bcs, fromHex } from '@mysten/bcs';
2
- import { keccak256 } from "js-sha3";
3
2
  import { normalizeStructTag, normalizeSuiAddress, normalizeSuiObjectId } from "@mysten/sui/utils";
4
3
  import { Transaction } from '@mysten/sui/transactions';
5
4
  import { ValidationError } from '../../errors/index.js';
6
5
  import { createSuiClient } from './client.js';
7
6
  import { SUI_PACKAGE_ID, SUI_GUARD_COLLATERAL_TYPE, SUI_GUARD_STABLECOIN_TYPE, NATIVE_SUI_TOKEN_ADDRESS } from '../../constants.js';
8
7
  import type { DcaSingleChainOrder } from '../orders/dca-single-chain.js';
9
-
8
+ import pkg from "js-sha3";
9
+ const { keccak256 } = pkg;
10
10
  /**
11
11
  * Generates secret hash based on types, addresses and secret number for single chain DCA orders
12
12
  * @param coinOutType Type tag of Coin OUT
@@ -1,12 +1,12 @@
1
1
  import { bcs, fromHex } from '@mysten/bcs';
2
- import { keccak256 } from "js-sha3";
3
2
  import { normalizeStructTag, normalizeSuiAddress, normalizeSuiObjectId } from "@mysten/sui/utils";
4
3
  import { Transaction } from '@mysten/sui/transactions';
5
4
  import { ValidationError } from '../../errors/index.js';
6
5
  import { createSuiClient } from './client.js';
7
6
  import { SUI_PACKAGE_ID, SUI_GUARD_COLLATERAL_TYPE, SUI_GUARD_STABLECOIN_TYPE, NATIVE_SUI_TOKEN_ADDRESS } from '../../constants.js';
8
7
  import type { SingleChainOrder } from '../orders/single-chain.js';
9
-
8
+ import pkg from "js-sha3";
9
+ const { keccak256 } = pkg;
10
10
  /**
11
11
  * Generates random U64 number
12
12
  */
package/src/index.ts CHANGED
@@ -42,6 +42,7 @@ export { getSolanaOrdersWithLockedFunds } from './core/solana/inspect.js';
42
42
  export {
43
43
  getSolanaCrossChainOrderInstructions,
44
44
  getSolanaSingleChainOrderInstructions,
45
+ type SolanaOrderInstructionResult
45
46
  } from './core/solana/order-instructions.js';
46
47
  export {
47
48
  cancelCrossChainOrderInstructionsAsBytes,
@@ -50,7 +51,11 @@ export {
50
51
  export { getSuiOrderTransaction } from './core/sui/order-transaction.js';
51
52
  export { getSuiCancelCrossChainOrder } from './core/sui/cancel.js';
52
53
  export { getDcaSecretHash, getSuiSingleChainDcaOrderTransaction } from './core/sui/single-chain-dca-order.js';
53
- export { getSecretHash, getRandomU64Number as getSuiRandomU64Number, getSuiSingleChainLimitOrderTransaction } from './core/sui/single-chain-limit-order.js';
54
+ export {
55
+ getSecretHash,
56
+ getRandomU64Number as getSuiRandomU64Number,
57
+ getSuiSingleChainLimitOrderTransaction,
58
+ } from './core/sui/single-chain-limit-order.js';
54
59
  export { generateExecutionDetailsHash } from './utils/generate-execution-details-hash.js';
55
60
  export {
56
61
  createSuiSingleChainLimitOrderIntentRequest,
@@ -63,7 +68,7 @@ export {
63
68
  type CreateSuiCrossChainOrderIntentParams,
64
69
  } from './core/sui/intent-helpers.js';
65
70
 
66
- export * from './constants.js'
71
+ export * from './constants.js';
67
72
 
68
73
  export { getSolanaDcaSingleChainOrderInstructions } from './core/solana/dca/create-order.js';
69
74
 
@@ -74,8 +79,12 @@ export { QuoteProvider, type IntentsQuoteParams, type QuoteResponse } from './ut
74
79
 
75
80
  export { CROSS_CHAIN_GUARD_ADDRESSES, SINGLE_CHAIN_GUARD_ADDRESSES, PERMIT2_ADDRESS } from './constants.js';
76
81
 
77
- export { prepareDcaSecretData, } from './core/solana/dca/single-chain-dca-order.js'
78
- export { prepareSecretData } from './core/solana/dca/single-chain-limit-order.js'
82
+ export { prepareDcaSecretData } from './core/solana/dca/single-chain-dca-order.js';
83
+ export { prepareSecretData } from './core/solana/dca/single-chain-limit-order.js';
84
+
85
+ // Token List and Search Helper
86
+ export { getTokenList } from './utils/tokens/index.js';
87
+ export { type TokenSearchParams, type TokenInfo, type TokenSearchResponse } from './types/token-list.js';
79
88
 
80
89
  // EVM Intent Helpers
81
90
  export {
@@ -106,3 +115,4 @@ export {
106
115
  type CreateSolanaSingleChainDcaOrderIntentParams,
107
116
  type CreateSolanaCrossChainOrderIntentParams,
108
117
  } from './core/solana/intent-helpers.js';
118
+
@@ -0,0 +1,35 @@
1
+ export interface TokenSearchParams {
2
+ /** Optional: search phrase (symbol, token name, or address) */
3
+ q?: string;
4
+
5
+ /** Optional: Chain ID filter (e.g. 8453 = Base, 42161 = Arbitrum, 7565164 = Solana, 101 = Sui) */
6
+ networkId?: number;
7
+
8
+ /** Optional: page number for pagination (default = 1) */
9
+ page?: number;
10
+
11
+ /** Optional: number of results per page (default = 20) */
12
+ limit?: number;
13
+
14
+ /** Optional: Abort signal to cancel requests (useful in UI search inputs) */
15
+ signal?: AbortSignal;
16
+ }
17
+
18
+ /** Normalized token shape returned by the API */
19
+ export interface TokenInfo {
20
+ address: string;
21
+ symbol: string;
22
+ name: string;
23
+ chainId: number;
24
+ decimals: number;
25
+ image?: string;
26
+ isVerified?: boolean;
27
+ }
28
+
29
+ /** Paginated API response */
30
+ export interface TokenSearchResponse {
31
+ count: number;
32
+ page: number;
33
+ limit: number;
34
+ results: TokenInfo[];
35
+ }
@@ -40,6 +40,7 @@ export const chainIdToDefiLlamaChainMap = {
40
40
  [ChainID.Hyperliquid]: 'hyperliquid',
41
41
  [ChainID.Solana]: 'solana',
42
42
  [ChainID.Sui]: 'sui',
43
+ [ChainID.BSC]: 'bsc',
43
44
  } as const;
44
45
 
45
46
  /**