@dzapio/sdk 2.0.34 → 2.0.36

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/index.js CHANGED
@@ -7,6 +7,9 @@ var viemChains = require('viem/chains');
7
7
  var utils = require('viem/utils');
8
8
  var actions = require('viem/actions');
9
9
  var Decimal = require('decimal.js');
10
+ var bitcoinAddressValidation = require('bitcoin-address-validation');
11
+ var web3_js = require('@solana/web3.js');
12
+ var TonWeb = require('tonweb');
10
13
 
11
14
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
15
 
@@ -31,6 +34,7 @@ function _interopNamespace(e) {
31
34
  var Axios__default = /*#__PURE__*/_interopDefault(Axios);
32
35
  var viemChains__namespace = /*#__PURE__*/_interopNamespace(viemChains);
33
36
  var Decimal__default = /*#__PURE__*/_interopDefault(Decimal);
37
+ var TonWeb__default = /*#__PURE__*/_interopDefault(TonWeb);
34
38
 
35
39
  var __defProp = Object.defineProperty;
36
40
  var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
@@ -12863,6 +12867,8 @@ var getEIP2612PermitSignature = async (params) => {
12863
12867
 
12864
12868
  // src/constants/chains.ts
12865
12869
  var exclusiveChainIds = {
12870
+ aptos: 116201519,
12871
+ ethereum: 1,
12866
12872
  zkSync: 324,
12867
12873
  arthera: 10242,
12868
12874
  gnosis: 100,
@@ -12882,7 +12888,21 @@ var exclusiveChainIds = {
12882
12888
  citrea: 4114,
12883
12889
  pushTestnet: 42101,
12884
12890
  astralisTestnet: 71261,
12885
- btcln: 1002
12891
+ btc: 1e3,
12892
+ btcln: 1002,
12893
+ solana: 7565164,
12894
+ tron: 728126428,
12895
+ sui: 19219,
12896
+ ton: 607
12897
+ };
12898
+ var chainTypes = {
12899
+ evm: "evm",
12900
+ bvm: "bvm",
12901
+ svm: "svm",
12902
+ aptosvm: "aptosvm",
12903
+ suivm: "suivm",
12904
+ tonvm: "tonvm",
12905
+ tronvm: "tronvm"
12886
12906
  };
12887
12907
 
12888
12908
  // src/constants/contract.ts
@@ -15428,7 +15448,8 @@ var _DZapClient = class _DZapClient {
15428
15448
  *
15429
15449
  * @param params - Configuration object for status checking
15430
15450
  * @param params.txHash - Transaction hash for single transaction status (requires chainId)
15431
- * @param params.chainId - Chain ID for single transaction status (requires txHash)
15451
+ * @param params.chainId - Chain ID for single transaction status (required with txHash or txId)
15452
+ * @param params.txId - Transaction ID for single transaction status (requires chainId)
15432
15453
  * @returns Promise resolving to status response(s) with transaction state and details
15433
15454
  *
15434
15455
  * @example
@@ -15449,15 +15470,16 @@ var _DZapClient = class _DZapClient {
15449
15470
  * For cross-chain transactions, this tracks the complete bridge process across both chains.
15450
15471
  *
15451
15472
  * @param params - Configuration object for status checking
15452
- * @param params.txHashes - Transaction hash for single transaction status (requires chainId)
15453
- * @param params.chainIds - Chain ID for single transaction status (requires txHash)
15473
+ * @param params.txHashes - Comma-separated transaction hashes (requires chainIds)
15474
+ * @param params.chainIds - Comma-separated chain IDs aligned to txHashes or txIds
15475
+ * @param params.txIds - Comma-separated transaction IDs (requires chainIds)
15454
15476
  * @returns Promise resolving to status response(s) with transaction state and details
15455
15477
  *
15456
15478
  * @example
15457
15479
  * ```typescript
15458
15480
  *
15459
15481
  * // Multiple transactions status
15460
- * const multiStatus = await client.getTradeTxnStatus({
15482
+ * const multiStatus = await client.getTradeMultiTxnStatus({
15461
15483
  * txHashes: '0x123...,0x456...',
15462
15484
  * chainIds: '1,42161'
15463
15485
  * });
@@ -16164,16 +16186,22 @@ var _DZapClient = class _DZapClient {
16164
16186
  * Zap transactions involve multiple steps and this method provides detailed progress information
16165
16187
  * including which steps have completed and any potential issues encountered.
16166
16188
  *
16167
- * @param request - The zap transaction status request containing transaction identification
16189
+ * @param request - `chainId` with either `txnHash` or `txnId` to identify the zap transaction
16168
16190
  * @returns Promise resolving to detailed zap transaction status information
16169
16191
  *
16170
16192
  * @example
16171
16193
  * ```typescript
16172
16194
  * const zapStatus = await client.getZapTxnStatus({
16173
- * chainId: '1',
16195
+ * chainId: 1,
16174
16196
  * txnHash: '0x...'
16175
16197
  * });
16176
16198
  *
16199
+ * // Or by internal transaction id:
16200
+ * const zapStatusByTxnId = await client.getZapTxnStatus({
16201
+ * chainId: 1,
16202
+ * txnId: '0x...'
16203
+ * });
16204
+ *
16177
16205
  * console.log('Zap status:', zapStatus.status);
16178
16206
  * console.log('Completed steps:', zapStatus.completedSteps);
16179
16207
  * console.log('Current step:', zapStatus.currentStep);
@@ -16406,6 +16434,526 @@ var contractErrorActions = {
16406
16434
  INCREASE_SLIPPAGE: "INCREASE_SLIPPAGE",
16407
16435
  INCREASE_ALLOWANCE: "INCREASE_ALLOWANCE"
16408
16436
  };
16437
+ var APTOS_DEFAULT_RPC = "https://fullnode.mainnet.aptoslabs.com";
16438
+ var aptosAccountRegex = /^0x[a-fA-F0-9]{1,64}$/;
16439
+ var moveCoinTypeRegex = /^0x[a-fA-F0-9]{1,64}::[A-Za-z_][A-Za-z0-9_]*::[A-Za-z_][A-Za-z0-9_]*$/;
16440
+ async function classifyAptosvmAddress(params) {
16441
+ const { address, chainConfig, rpcUrls } = params;
16442
+ if (isNativeCurrency(address, chainConfig)) {
16443
+ return {
16444
+ valid: true,
16445
+ kind: "native" /* NATIVE */,
16446
+ isNative: true,
16447
+ isToken: true,
16448
+ isContract: false,
16449
+ address
16450
+ };
16451
+ }
16452
+ if (moveCoinTypeRegex.test(address)) {
16453
+ return {
16454
+ valid: true,
16455
+ kind: "token" /* TOKEN */,
16456
+ isNative: false,
16457
+ isToken: true,
16458
+ isContract: false,
16459
+ address
16460
+ };
16461
+ }
16462
+ if (!aptosAccountRegex.test(address)) {
16463
+ return {
16464
+ valid: false,
16465
+ kind: "invalid" /* INVALID */,
16466
+ isNative: false,
16467
+ isToken: false,
16468
+ isContract: false,
16469
+ address
16470
+ };
16471
+ }
16472
+ const baseUrl = ((rpcUrls == null ? void 0 : rpcUrls[0]) ?? APTOS_DEFAULT_RPC).replace(/\/$/, "");
16473
+ try {
16474
+ const response = await Axios__default.default.get(`${baseUrl}/v1/accounts/${address}/modules`, {
16475
+ params: { limit: 1 },
16476
+ validateStatus: (status) => status < 500
16477
+ });
16478
+ if (response.status === 200) {
16479
+ const modules = response.data;
16480
+ if (Array.isArray(modules) && modules.length > 0) {
16481
+ return {
16482
+ valid: true,
16483
+ kind: "contract" /* CONTRACT */,
16484
+ isNative: false,
16485
+ isToken: false,
16486
+ isContract: true,
16487
+ address
16488
+ };
16489
+ }
16490
+ return {
16491
+ valid: true,
16492
+ kind: "wallet" /* WALLET */,
16493
+ isNative: false,
16494
+ isToken: false,
16495
+ isContract: false,
16496
+ address
16497
+ };
16498
+ }
16499
+ if (response.status === 404) {
16500
+ return {
16501
+ valid: true,
16502
+ kind: "wallet" /* WALLET */,
16503
+ isNative: false,
16504
+ isToken: false,
16505
+ isContract: false,
16506
+ address
16507
+ };
16508
+ }
16509
+ return null;
16510
+ } catch (e) {
16511
+ const message = e instanceof Error ? e.message : String(e);
16512
+ console.error(`RPC error (Aptos getModules): ${message}`);
16513
+ return null;
16514
+ }
16515
+ }
16516
+ async function classifyBvmAddress(params) {
16517
+ const { address, chainId, chainConfig } = params;
16518
+ const chain = chainConfig[chainId];
16519
+ const isMainnet = (chain == null ? void 0 : chain.mainnet) ?? true;
16520
+ const isValidBtc = bitcoinAddressValidation.validate(address, isMainnet ? bitcoinAddressValidation.Network.mainnet : bitcoinAddressValidation.Network.testnet);
16521
+ if (!isValidBtc) {
16522
+ return {
16523
+ valid: false,
16524
+ kind: "invalid" /* INVALID */,
16525
+ isNative: false,
16526
+ isToken: false,
16527
+ isContract: false,
16528
+ address
16529
+ };
16530
+ }
16531
+ if (isNativeCurrency(address, chainConfig)) {
16532
+ return {
16533
+ valid: true,
16534
+ kind: "native" /* NATIVE */,
16535
+ isNative: true,
16536
+ isToken: true,
16537
+ isContract: false,
16538
+ address
16539
+ };
16540
+ }
16541
+ return {
16542
+ valid: true,
16543
+ kind: "wallet" /* WALLET */,
16544
+ isNative: false,
16545
+ isToken: false,
16546
+ isContract: false,
16547
+ address
16548
+ };
16549
+ }
16550
+ async function classifyEvmAddress(params) {
16551
+ const { chainId, rpcUrls, chainConfig } = params;
16552
+ const address = formatToken(params.address);
16553
+ if (!viem.isAddress(address)) {
16554
+ return {
16555
+ valid: false,
16556
+ kind: "invalid" /* INVALID */,
16557
+ isNative: false,
16558
+ isToken: false,
16559
+ isContract: false,
16560
+ address
16561
+ };
16562
+ }
16563
+ if (isNativeCurrency(address, chainConfig)) {
16564
+ return {
16565
+ valid: true,
16566
+ kind: "native" /* NATIVE */,
16567
+ isNative: true,
16568
+ isToken: true,
16569
+ isContract: false,
16570
+ address
16571
+ };
16572
+ }
16573
+ const publicClient = getPublicClient({ rpcUrls, chainId });
16574
+ let bytecode;
16575
+ try {
16576
+ bytecode = await publicClient.getCode({ address });
16577
+ } catch (e) {
16578
+ const message = e instanceof Error ? e.message : String(e);
16579
+ console.error(`RPC error (getCode): ${message}`);
16580
+ return null;
16581
+ }
16582
+ if (!bytecode || bytecode === "0x") {
16583
+ return {
16584
+ valid: true,
16585
+ kind: "wallet" /* WALLET */,
16586
+ isNative: false,
16587
+ isToken: false,
16588
+ isContract: false,
16589
+ address
16590
+ };
16591
+ }
16592
+ try {
16593
+ await publicClient.readContract({
16594
+ address,
16595
+ abi: abi5,
16596
+ functionName: erc20Functions.decimals
16597
+ });
16598
+ return {
16599
+ valid: true,
16600
+ kind: "token" /* TOKEN */,
16601
+ isNative: false,
16602
+ isToken: true,
16603
+ isContract: true,
16604
+ address
16605
+ };
16606
+ } catch {
16607
+ return {
16608
+ valid: true,
16609
+ kind: "contract" /* CONTRACT */,
16610
+ isNative: false,
16611
+ isToken: false,
16612
+ isContract: true,
16613
+ address
16614
+ };
16615
+ }
16616
+ }
16617
+ var SUI_DEFAULT_RPC = "https://fullnode.mainnet.sui.io";
16618
+ var suiAccountRegex = /^0x[a-fA-F0-9]{1,64}$/;
16619
+ var moveCoinTypeRegex2 = /^0x[a-fA-F0-9]{1,64}::[A-Za-z_][A-Za-z0-9_]*::[A-Za-z_][A-Za-z0-9_]*$/;
16620
+ async function classifySuivmAddress(params) {
16621
+ var _a, _b, _c, _d;
16622
+ const { address, chainConfig, rpcUrls } = params;
16623
+ if (isNativeCurrency(address, chainConfig)) {
16624
+ return {
16625
+ valid: true,
16626
+ kind: "native" /* NATIVE */,
16627
+ isNative: true,
16628
+ isToken: true,
16629
+ isContract: false,
16630
+ address
16631
+ };
16632
+ }
16633
+ if (moveCoinTypeRegex2.test(address)) {
16634
+ return {
16635
+ valid: true,
16636
+ kind: "token" /* TOKEN */,
16637
+ isNative: false,
16638
+ isToken: true,
16639
+ isContract: true,
16640
+ address
16641
+ };
16642
+ }
16643
+ if (!suiAccountRegex.test(address)) {
16644
+ return {
16645
+ valid: false,
16646
+ kind: "invalid" /* INVALID */,
16647
+ isNative: false,
16648
+ isToken: false,
16649
+ isContract: false,
16650
+ address
16651
+ };
16652
+ }
16653
+ const rpcUrl = (rpcUrls == null ? void 0 : rpcUrls[0]) ?? SUI_DEFAULT_RPC;
16654
+ try {
16655
+ const response = await Axios__default.default.post(rpcUrl, {
16656
+ jsonrpc: "2.0",
16657
+ id: 1,
16658
+ method: "sui_getObject",
16659
+ params: [address, { showType: true }]
16660
+ });
16661
+ if (response.status !== 200 || ((_a = response.data) == null ? void 0 : _a.error)) {
16662
+ return null;
16663
+ }
16664
+ const result = (_b = response.data) == null ? void 0 : _b.result;
16665
+ if (((_c = result == null ? void 0 : result.data) == null ? void 0 : _c.type) === "package" || ((_d = result == null ? void 0 : result.data) == null ? void 0 : _d.dataType) === "package") {
16666
+ return {
16667
+ valid: true,
16668
+ kind: "contract" /* CONTRACT */,
16669
+ isNative: false,
16670
+ isToken: false,
16671
+ isContract: true,
16672
+ address
16673
+ };
16674
+ }
16675
+ return {
16676
+ valid: true,
16677
+ kind: "wallet" /* WALLET */,
16678
+ isNative: false,
16679
+ isToken: false,
16680
+ isContract: false,
16681
+ address
16682
+ };
16683
+ } catch (e) {
16684
+ const message = e instanceof Error ? e.message : String(e);
16685
+ console.error(`RPC error (Sui sui_getObject): ${message}`);
16686
+ return null;
16687
+ }
16688
+ }
16689
+ var TOKEN_PROGRAM_ID = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
16690
+ var TOKEN_2022_PROGRAM_ID = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb";
16691
+ function parseSvmAddress(address) {
16692
+ try {
16693
+ return new web3_js.PublicKey(address);
16694
+ } catch {
16695
+ return null;
16696
+ }
16697
+ }
16698
+ function svmTokenProgramOwner(owner) {
16699
+ return owner === TOKEN_PROGRAM_ID || owner === TOKEN_2022_PROGRAM_ID;
16700
+ }
16701
+ async function classifySvmAddress(params) {
16702
+ const { address, rpcUrls, chainConfig } = params;
16703
+ const pubkey = parseSvmAddress(address);
16704
+ if (!pubkey) {
16705
+ return {
16706
+ valid: false,
16707
+ kind: "invalid" /* INVALID */,
16708
+ isNative: false,
16709
+ isToken: false,
16710
+ isContract: false,
16711
+ address
16712
+ };
16713
+ }
16714
+ const normalized = pubkey.toBase58();
16715
+ if (isNativeCurrency(normalized, chainConfig)) {
16716
+ return {
16717
+ valid: true,
16718
+ kind: "native" /* NATIVE */,
16719
+ isNative: true,
16720
+ isToken: true,
16721
+ isContract: false,
16722
+ address: normalized
16723
+ };
16724
+ }
16725
+ const connection = new web3_js.Connection((rpcUrls == null ? void 0 : rpcUrls[0]) || web3_js.clusterApiUrl("mainnet-beta"));
16726
+ let parsed;
16727
+ try {
16728
+ parsed = await connection.getParsedAccountInfo(pubkey);
16729
+ } catch (e) {
16730
+ const message = e instanceof Error ? e.message : String(e);
16731
+ console.error(`RPC error (getParsedAccountInfo): ${message}`);
16732
+ return null;
16733
+ }
16734
+ const value = parsed.value;
16735
+ if (!value) {
16736
+ return {
16737
+ valid: true,
16738
+ kind: "wallet" /* WALLET */,
16739
+ isNative: false,
16740
+ isToken: false,
16741
+ isContract: false,
16742
+ address: normalized
16743
+ };
16744
+ }
16745
+ if (value.executable) {
16746
+ return {
16747
+ valid: true,
16748
+ kind: "contract" /* CONTRACT */,
16749
+ isNative: false,
16750
+ isToken: false,
16751
+ isContract: true,
16752
+ address: normalized
16753
+ };
16754
+ }
16755
+ const owner = value.owner.toBase58();
16756
+ const data = value.data;
16757
+ if (typeof data === "object" && data !== null && "parsed" in data) {
16758
+ const rawParsed = data.parsed;
16759
+ const innerType = rawParsed && typeof rawParsed === "object" && rawParsed !== null && "type" in rawParsed ? String(rawParsed.type) : void 0;
16760
+ if (svmTokenProgramOwner(owner) && innerType === "mint") {
16761
+ return {
16762
+ valid: true,
16763
+ kind: "token" /* TOKEN */,
16764
+ isNative: false,
16765
+ isToken: true,
16766
+ isContract: true,
16767
+ address: normalized
16768
+ };
16769
+ }
16770
+ if (svmTokenProgramOwner(owner) && innerType === "account") {
16771
+ return {
16772
+ valid: true,
16773
+ kind: "contract" /* CONTRACT */,
16774
+ isNative: false,
16775
+ isToken: false,
16776
+ isContract: true,
16777
+ address: normalized
16778
+ };
16779
+ }
16780
+ }
16781
+ return {
16782
+ valid: true,
16783
+ kind: "wallet" /* WALLET */,
16784
+ isNative: false,
16785
+ isToken: false,
16786
+ isContract: false,
16787
+ address: normalized
16788
+ };
16789
+ }
16790
+ var TON_DEFAULT_RPC = "https://toncenter.com/api/v2";
16791
+ async function classifyTonvmAddress(params) {
16792
+ var _a, _b, _c, _d, _e;
16793
+ const { address, chainConfig, rpcUrls } = params;
16794
+ if (!TonWeb__default.default.utils.Address.isValid(address)) {
16795
+ return {
16796
+ valid: false,
16797
+ kind: "invalid" /* INVALID */,
16798
+ isNative: false,
16799
+ isToken: false,
16800
+ isContract: false,
16801
+ address
16802
+ };
16803
+ }
16804
+ if (isNativeCurrency(address, chainConfig)) {
16805
+ return {
16806
+ valid: true,
16807
+ kind: "native" /* NATIVE */,
16808
+ isNative: true,
16809
+ isToken: true,
16810
+ isContract: false,
16811
+ address
16812
+ };
16813
+ }
16814
+ const baseUrl = ((rpcUrls == null ? void 0 : rpcUrls[0]) ?? TON_DEFAULT_RPC).replace(/\/$/, "");
16815
+ try {
16816
+ const infoResponse = await Axios__default.default.get(`${baseUrl}/getAddressInformation`, {
16817
+ params: { address }
16818
+ });
16819
+ if (infoResponse.status !== 200 || ((_a = infoResponse.data) == null ? void 0 : _a.error) || ((_b = infoResponse.data) == null ? void 0 : _b.ok) === false) {
16820
+ return null;
16821
+ }
16822
+ const result = (_c = infoResponse.data) == null ? void 0 : _c.result;
16823
+ if (!(result == null ? void 0 : result.code)) {
16824
+ return {
16825
+ valid: true,
16826
+ kind: "wallet" /* WALLET */,
16827
+ isNative: false,
16828
+ isToken: false,
16829
+ isContract: false,
16830
+ address
16831
+ };
16832
+ }
16833
+ try {
16834
+ const jettonResponse = await Axios__default.default.post(
16835
+ `${baseUrl}/runGetMethod`,
16836
+ { address, method: "get_jetton_data", stack: [] },
16837
+ { validateStatus: (status) => status < 500 }
16838
+ );
16839
+ if (((_e = (_d = jettonResponse.data) == null ? void 0 : _d.result) == null ? void 0 : _e.exit_code) === 0) {
16840
+ return {
16841
+ valid: true,
16842
+ kind: "token" /* TOKEN */,
16843
+ isNative: false,
16844
+ isToken: true,
16845
+ isContract: true,
16846
+ address
16847
+ };
16848
+ }
16849
+ } catch {
16850
+ }
16851
+ return {
16852
+ valid: true,
16853
+ kind: "contract" /* CONTRACT */,
16854
+ isNative: false,
16855
+ isToken: false,
16856
+ isContract: true,
16857
+ address
16858
+ };
16859
+ } catch (e) {
16860
+ const message = e instanceof Error ? e.message : String(e);
16861
+ console.error(`RPC error (TON getAddressInformation): ${message}`);
16862
+ return null;
16863
+ }
16864
+ }
16865
+ var TRON_DEFAULT_RPC = "https://api.trongrid.io";
16866
+ var tronAddressRegex = /^T[1-9A-HJ-NP-Za-km-z]{33}$/;
16867
+ async function classifyTronvmAddress(params) {
16868
+ var _a, _b;
16869
+ const { address, chainConfig, rpcUrls } = params;
16870
+ if (!tronAddressRegex.test(address)) {
16871
+ return {
16872
+ valid: false,
16873
+ kind: "invalid" /* INVALID */,
16874
+ isNative: false,
16875
+ isToken: false,
16876
+ isContract: false,
16877
+ address
16878
+ };
16879
+ }
16880
+ if (isNativeCurrency(address, chainConfig)) {
16881
+ return {
16882
+ valid: true,
16883
+ kind: "native" /* NATIVE */,
16884
+ isNative: true,
16885
+ isToken: true,
16886
+ isContract: false,
16887
+ address
16888
+ };
16889
+ }
16890
+ const baseUrl = ((rpcUrls == null ? void 0 : rpcUrls[0]) ?? TRON_DEFAULT_RPC).replace(/\/$/, "");
16891
+ try {
16892
+ const response = await Axios__default.default.post(`${baseUrl}/wallet/getcontract`, { value: address, visible: true });
16893
+ if (response.status !== 200 || ((_a = response.data) == null ? void 0 : _a.error)) {
16894
+ return null;
16895
+ }
16896
+ const contract = response.data;
16897
+ const hasBytecode = (contract == null ? void 0 : contract.bytecode) && String(contract.bytecode).length > 0;
16898
+ if (!hasBytecode) {
16899
+ return {
16900
+ valid: true,
16901
+ kind: "wallet" /* WALLET */,
16902
+ isNative: false,
16903
+ isToken: false,
16904
+ isContract: false,
16905
+ address
16906
+ };
16907
+ }
16908
+ const abiEntries = ((_b = contract == null ? void 0 : contract.abi) == null ? void 0 : _b.entrys) ?? [];
16909
+ const isToken = abiEntries.some((entry) => entry.name === "decimals");
16910
+ return {
16911
+ valid: true,
16912
+ kind: isToken ? "token" /* TOKEN */ : "contract" /* CONTRACT */,
16913
+ isNative: false,
16914
+ isToken,
16915
+ isContract: true,
16916
+ address
16917
+ };
16918
+ } catch (e) {
16919
+ const message = e instanceof Error ? e.message : String(e);
16920
+ console.error(`RPC error (Tron getcontract): ${message}`);
16921
+ return null;
16922
+ }
16923
+ }
16924
+
16925
+ // src/utils/address/index.ts
16926
+ var classifiers = {
16927
+ [chainTypes.evm]: classifyEvmAddress,
16928
+ [chainTypes.svm]: classifySvmAddress,
16929
+ [chainTypes.bvm]: classifyBvmAddress,
16930
+ [chainTypes.suivm]: classifySuivmAddress,
16931
+ [chainTypes.aptosvm]: classifyAptosvmAddress,
16932
+ [chainTypes.tonvm]: classifyTonvmAddress,
16933
+ [chainTypes.tronvm]: classifyTronvmAddress
16934
+ };
16935
+ var getChainType = (chainId, chainConfig) => {
16936
+ var _a;
16937
+ const type = (_a = chainConfig[chainId]) == null ? void 0 : _a.chainType;
16938
+ return type;
16939
+ };
16940
+ var classifyAddress = async (params) => {
16941
+ const chainConfig = await dZapClient_default.getChainConfig();
16942
+ const chainType = getChainType(params.chainId, chainConfig);
16943
+ if (!chainType) {
16944
+ throw new Error(`Chain type not found for chainId ${params.chainId}`);
16945
+ }
16946
+ const resolver = classifiers[chainType];
16947
+ if (!resolver) {
16948
+ throw new Error(`Resolver not found for chainType ${chainType}`);
16949
+ }
16950
+ return resolver({
16951
+ address: params.address,
16952
+ chainId: params.chainId,
16953
+ chainConfig,
16954
+ rpcUrls: params.rpcUrls
16955
+ });
16956
+ };
16409
16957
 
16410
16958
  // src/zap/constants/path.ts
16411
16959
  var zapPathAction = {
@@ -16436,6 +16984,7 @@ exports.arthera = arthera;
16436
16984
  exports.astralisTestnet = astralisTestnet;
16437
16985
  exports.checkEIP2612PermitSupport = checkEIP2612PermitSupport;
16438
16986
  exports.citrea = citrea;
16987
+ exports.classifyAddress = classifyAddress;
16439
16988
  exports.contractErrorActions = contractErrorActions;
16440
16989
  exports.customViemChains = customViemChains;
16441
16990
  exports.erc20Functions = erc20Functions;