@0xsquid/react-hooks 8.11.0 → 8.11.1-beta-danal.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/core/client/index.d.ts +1 -0
  2. package/dist/core/constants.d.ts +2 -0
  3. package/dist/core/types/danal.d.ts +1 -0
  4. package/dist/core/types/wallet.d.ts +7 -0
  5. package/dist/hooks/chains/useSquidChains.d.ts +1 -0
  6. package/dist/hooks/tokens/useSquidTokens.d.ts +1 -0
  7. package/dist/hooks/wallet/useMultiChainWallet.d.ts +38 -0
  8. package/dist/hooks/wallet/useWallet.d.ts +42 -0
  9. package/dist/{index-D5bkikGx.js → index-Bz_l0J0g.js} +125 -17
  10. package/dist/index-Bz_l0J0g.js.map +1 -0
  11. package/dist/{index-BzTFES6t.js → index-COYrDBlh.js} +125 -16
  12. package/dist/index-COYrDBlh.js.map +1 -0
  13. package/dist/{index.es-DaKI7v5_.js → index.es-Bh80Pkl-.js} +2 -2
  14. package/dist/{index.es-DaKI7v5_.js.map → index.es-Bh80Pkl-.js.map} +1 -1
  15. package/dist/{index.es-wL3I3c3h.js → index.es-Cqc-vgYs.js} +2 -2
  16. package/dist/{index.es-wL3I3c3h.js.map → index.es-Cqc-vgYs.js.map} +1 -1
  17. package/dist/index.esm.js +1 -1
  18. package/dist/index.js +2 -1
  19. package/dist/index.js.map +1 -1
  20. package/dist/{secretService-D70MRo5w.js → secretService-SFoJwk5s.js} +2 -2
  21. package/dist/{secretService-D70MRo5w.js.map → secretService-SFoJwk5s.js.map} +1 -1
  22. package/dist/{secretService-BMH_eXJd.js → secretService-uItv_3Jq.js} +2 -2
  23. package/dist/{secretService-BMH_eXJd.js.map → secretService-uItv_3Jq.js.map} +1 -1
  24. package/dist/server.esm.js +6 -0
  25. package/dist/server.esm.js.map +1 -1
  26. package/dist/server.js +6 -0
  27. package/dist/server.js.map +1 -1
  28. package/dist/services/internal/danalService.d.ts +7 -0
  29. package/dist/services/internal/transactionService.d.ts +8 -0
  30. package/dist/{stellarService.client-DhwF4F1c.js → stellarService.client-C-DwcHfr.js} +2 -2
  31. package/dist/{stellarService.client-DhwF4F1c.js.map → stellarService.client-C-DwcHfr.js.map} +1 -1
  32. package/dist/{stellarService.client-BpCW1qZY.js → stellarService.client-rTXJcduV.js} +2 -2
  33. package/dist/{stellarService.client-BpCW1qZY.js.map → stellarService.client-rTXJcduV.js.map} +1 -1
  34. package/dist/tests/danalService.test.d.ts +1 -0
  35. package/package.json +2 -2
  36. package/dist/index-BzTFES6t.js.map +0 -1
  37. package/dist/index-D5bkikGx.js.map +0 -1
@@ -80,6 +80,7 @@ const suiZeroAddress = "0x0000000000000000000000000000000000000000";
80
80
  const xrplZeroAddress = "rrrrrrrrrrrrrrrrrrrrrhoLvTp";
81
81
  const stellarZeroAddress = "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF";
82
82
  const cantonZeroAddress = "none::12200000000000000000000000000000000000000000000000000000000000000000";
83
+ const danalZeroAddress = "PCI00000000000000000000000000000000000000000000000000";
83
84
  const chainTypeToZeroAddressMap = {
84
85
  [squidTypes.ChainType.EVM]: viem.zeroAddress,
85
86
  [squidTypes.ChainType.COSMOS]: cosmosZeroAddress,
@@ -89,6 +90,7 @@ const chainTypeToZeroAddressMap = {
89
90
  [squidTypes.ChainType.XRPL]: xrplZeroAddress,
90
91
  [squidTypes.ChainType.STELLAR]: stellarZeroAddress,
91
92
  [squidTypes.ChainType.CANTON]: cantonZeroAddress,
93
+ [squidTypes.ChainType.DANAL]: danalZeroAddress,
92
94
  };
93
95
  const nativeEvmTokenAddress = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
94
96
  const nativeCosmosTokenAddress = "uosmo";
@@ -98,6 +100,7 @@ const nativeSuiTokenAddress = "0x00000000000000000000000000000000000000000000000
98
100
  const nativeXrplTokenAddress = "xrp";
99
101
  const nativeStellarTokenAddress = "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA";
100
102
  const nativeCantonTokenAddress = "DSO::1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc";
103
+ const nativeDanalTokenAddress = "pci";
101
104
  // by setting slippage to undefined, it's set to "auto"
102
105
  const defaultSlippage = undefined;
103
106
  const destinationAddressResetValue = "null";
@@ -163,6 +166,7 @@ const CHAIN_IDS = {
163
166
  STELLAR: "stellar-mainnet",
164
167
  STELLAR_TESTNET: "stellar-testnet",
165
168
  CANTON: "canton",
169
+ DANAL_TESTNET: "danal-testnet",
166
170
  };
167
171
  const chainTypeToDefaultChainIdMap = {
168
172
  [squidTypes.ChainType.EVM]: CHAIN_IDS.ETHEREUM,
@@ -173,6 +177,7 @@ const chainTypeToDefaultChainIdMap = {
173
177
  [squidTypes.ChainType.XRPL]: CHAIN_IDS.XRPL,
174
178
  [squidTypes.ChainType.STELLAR]: CHAIN_IDS.STELLAR,
175
179
  [squidTypes.ChainType.CANTON]: CHAIN_IDS.CANTON,
180
+ [squidTypes.ChainType.DANAL]: CHAIN_IDS.DANAL_TESTNET,
176
181
  };
177
182
  const chainTypeToNativeTokenAddressMap = {
178
183
  [squidTypes.ChainType.EVM]: nativeEvmTokenAddress,
@@ -183,6 +188,7 @@ const chainTypeToNativeTokenAddressMap = {
183
188
  [squidTypes.ChainType.XRPL]: nativeXrplTokenAddress,
184
189
  [squidTypes.ChainType.STELLAR]: nativeStellarTokenAddress,
185
190
  [squidTypes.ChainType.CANTON]: nativeCantonTokenAddress,
191
+ [squidTypes.ChainType.DANAL]: nativeDanalTokenAddress,
186
192
  };
187
193
  const defaultConfigValues = {
188
194
  integratorId: INTEGRATOR_ID,
@@ -21126,6 +21132,34 @@ function groupCantonHoldingBalances(acsResponse) {
21126
21132
  return Object.fromEntries(Object.entries(totals).map(([key, total]) => [key, total.toString(10)]));
21127
21133
  }
21128
21134
 
21135
+ // Matches the backend validation: "PCI" + 50 uppercase-hex chars, case-sensitive.
21136
+ const DANAL_ADDRESS_REGEX = /^PCI[0-9A-F]{50}$/;
21137
+ function isDanalAddressValid(address) {
21138
+ if (!address)
21139
+ return false;
21140
+ return DANAL_ADDRESS_REGEX.test(address);
21141
+ }
21142
+ function isDanalTransferRequestBody(value) {
21143
+ if (typeof value !== "object" || value === null)
21144
+ return false;
21145
+ const { receiver, amount, memo } = value;
21146
+ return (typeof receiver === "string" &&
21147
+ receiver.length > 0 &&
21148
+ typeof amount === "string" &&
21149
+ amount.length > 0 &&
21150
+ typeof memo === "string" &&
21151
+ memo.length > 0);
21152
+ }
21153
+ function parseDanalTransferBody(data) {
21154
+ try {
21155
+ const parsed = JSON.parse(data);
21156
+ return isDanalTransferRequestBody(parsed) ? parsed : null;
21157
+ }
21158
+ catch {
21159
+ return null;
21160
+ }
21161
+ }
21162
+
21129
21163
  const solanaTokenProgramIdByAddress = {
21130
21164
  [splToken.TOKEN_PROGRAM_ID.toBase58()]: splToken.TOKEN_PROGRAM_ID,
21131
21165
  [splToken.TOKEN_2022_PROGRAM_ID.toBase58()]: splToken.TOKEN_2022_PROGRAM_ID,
@@ -21462,6 +21496,15 @@ function isOnChainTxData(squidData) {
21462
21496
  function isDepositAddressDirectTransferRoute(squidData) {
21463
21497
  return squidData.type === squidTypes.SquidDataType.DepositAddressDirectTransfer;
21464
21498
  }
21499
+ /**
21500
+ * Danal keeps SquidDataType.DepositAddressWithMemo, which XRPL/Stellar use for
21501
+ * wallet-signed transactions — so the deposit treatment is gated on the chain,
21502
+ * not just the type
21503
+ */
21504
+ function isDanalDepositRoute(route) {
21505
+ return (route.params.fromChain === CHAIN_IDS.DANAL_TESTNET &&
21506
+ route.transactionRequest?.type === squidTypes.SquidDataType.DepositAddressWithMemo);
21507
+ }
21465
21508
  function getHistoryTransactionId(tx) {
21466
21509
  switch (tx.txType) {
21467
21510
  case exports.HistoryTxType.SWAP:
@@ -21986,6 +22029,11 @@ const chainTypeToTrimLength = {
21986
22029
  start: 3,
21987
22030
  end: 3,
21988
22031
  },
22032
+ // PCI0180...E77E
22033
+ [squidTypes.ChainType.DANAL]: {
22034
+ start: 7,
22035
+ end: 4,
22036
+ },
21989
22037
  };
21990
22038
  const truncateWithEllipsis = (value, startLength, endLength) => value.length <= startLength + endLength
21991
22039
  ? value
@@ -22034,6 +22082,8 @@ const isWalletAddressValid = (chainData, address) => {
22034
22082
  return isStellarAddressValid(address);
22035
22083
  case squidTypes.ChainType.CANTON:
22036
22084
  return isCantonAddressValid(address);
22085
+ case squidTypes.ChainType.DANAL:
22086
+ return isDanalAddressValid(address);
22037
22087
  }
22038
22088
  };
22039
22089
  const redirectToExtensionsStore = (wallet) => {
@@ -22318,6 +22368,8 @@ const connectByChainType = async (chainType, wallet, defaultChain, params) => {
22318
22368
  connector,
22319
22369
  },
22320
22370
  });
22371
+ case squidTypes.ChainType.DANAL:
22372
+ return null;
22321
22373
  }
22322
22374
  };
22323
22375
  const getChainTypesToConnect = (selectedChainTypes, defaultChain, supportedChains) => {
@@ -23302,7 +23354,7 @@ const handleDestinationAddressOnSwapChange = ({ fromChainId, fromTokenAddress, t
23302
23354
  });
23303
23355
  let destinationTokenAddress = toChainId && !toTokenAddress
23304
23356
  ? defaultToAddress
23305
- : (toTokenAddress ?? swapRoute?.toTokenAddress);
23357
+ : toTokenAddress ?? swapRoute?.toTokenAddress;
23306
23358
  const lowerCaseDestinationTokenAddress = destinationTokenAddress?.toLowerCase();
23307
23359
  if (destinationTokensFiltered.find((t) => t.address === lowerCaseDestinationTokenAddress) === undefined) {
23308
23360
  destinationTokenAddress = defaultToAddress;
@@ -23354,7 +23406,7 @@ const getNewSwapParamsFromInput = ({ inputParams, initialSwapRoute, tokens, chai
23354
23406
  toTokenAddress === initialSwapRoute?.fromTokenAddress;
23355
23407
  const sourceTokenAddress = sameNewDestAndInitialSource || onlySourceChainIdChanged
23356
23408
  ? defaultFromAddress
23357
- : (fromTokenAddress ?? initialSwapRoute?.fromTokenAddress);
23409
+ : fromTokenAddress ?? initialSwapRoute?.fromTokenAddress;
23358
23410
  let destinationTokenAddress = undefined;
23359
23411
  if (!sameNewSourceAndInitialDest) {
23360
23412
  if (onlySourceChainIdChanged) {
@@ -23676,7 +23728,7 @@ const filterViewableTokens = (tokens, config, direction) => {
23676
23728
  };
23677
23729
  const getSecretNetworkBalances = async (chainData, cosmosAddress, squidTokens, keplrTypeWallet) => {
23678
23730
  const squidSecretTokens = squidTokens.filter((t) => t.chainId === CHAIN_IDS.SECRET);
23679
- const { fetchAllSecretBalances } = await Promise.resolve().then(function () { return require('./secretService-D70MRo5w.js'); });
23731
+ const { fetchAllSecretBalances } = await Promise.resolve().then(function () { return require('./secretService-SFoJwk5s.js'); });
23680
23732
  return fetchAllSecretBalances(chainData, cosmosAddress, squidSecretTokens, keplrTypeWallet);
23681
23733
  };
23682
23734
  function getTokenAssetsKey(token) {
@@ -25670,7 +25722,7 @@ const useSquidTokens = (direction) => {
25670
25722
  config.availableChains,
25671
25723
  direction,
25672
25724
  ]);
25673
- const { evmTokens, cosmosTokens, solanaTokens, bitcoinTokens, suiTokens, xrplTokens, stellarTokens, cantonTokens, } = React.useMemo(() => {
25725
+ const { evmTokens, cosmosTokens, solanaTokens, bitcoinTokens, suiTokens, xrplTokens, stellarTokens, cantonTokens, danalTokens, } = React.useMemo(() => {
25674
25726
  return tokens?.reduce((acc, token) => {
25675
25727
  switch (token.type) {
25676
25728
  case squidTypes.ChainType.EVM:
@@ -25697,6 +25749,9 @@ const useSquidTokens = (direction) => {
25697
25749
  case squidTypes.ChainType.CANTON:
25698
25750
  acc.cantonTokens.push(token);
25699
25751
  break;
25752
+ case squidTypes.ChainType.DANAL:
25753
+ acc.danalTokens.push(token);
25754
+ break;
25700
25755
  }
25701
25756
  return acc;
25702
25757
  }, {
@@ -25708,6 +25763,7 @@ const useSquidTokens = (direction) => {
25708
25763
  xrplTokens: [],
25709
25764
  stellarTokens: [],
25710
25765
  cantonTokens: [],
25766
+ danalTokens: [],
25711
25767
  });
25712
25768
  }, [tokens]);
25713
25769
  const findToken = React.useCallback((address, chainId) => {
@@ -25726,6 +25782,7 @@ const useSquidTokens = (direction) => {
25726
25782
  xrplTokens,
25727
25783
  stellarTokens,
25728
25784
  cantonTokens,
25785
+ danalTokens,
25729
25786
  };
25730
25787
  };
25731
25788
 
@@ -26262,6 +26319,7 @@ const chainTypeToRefetchInterval = {
26262
26319
  [squidTypes.ChainType.XRPL]: 1_000,
26263
26320
  [squidTypes.ChainType.STELLAR]: 1_000,
26264
26321
  [squidTypes.ChainType.CANTON]: 1_000,
26322
+ [squidTypes.ChainType.DANAL]: 1_000,
26265
26323
  };
26266
26324
  /**
26267
26325
  * Returns the status refetch interval of a Send transaction
@@ -26528,7 +26586,7 @@ const useSquidChains = (direction) => {
26528
26586
  const chain = findChain(chainId);
26529
26587
  return chain?.chainType;
26530
26588
  }, [findChain]);
26531
- const { evmChains, cosmosChains, suiChains, stellarChains, xrplChains, cantonChains, } = React.useMemo(() => {
26589
+ const { evmChains, cosmosChains, suiChains, stellarChains, xrplChains, cantonChains, danalChains, } = React.useMemo(() => {
26532
26590
  return chains.reduce((acc, chain) => {
26533
26591
  switch (chain.chainType) {
26534
26592
  case squidTypes.ChainType.EVM:
@@ -26549,6 +26607,9 @@ const useSquidChains = (direction) => {
26549
26607
  case squidTypes.ChainType.CANTON:
26550
26608
  acc.cantonChains.push(chain);
26551
26609
  break;
26610
+ case squidTypes.ChainType.DANAL:
26611
+ acc.danalChains.push(chain);
26612
+ break;
26552
26613
  }
26553
26614
  return acc;
26554
26615
  }, {
@@ -26558,6 +26619,7 @@ const useSquidChains = (direction) => {
26558
26619
  xrplChains: [],
26559
26620
  stellarChains: [],
26560
26621
  cantonChains: [],
26622
+ danalChains: [],
26561
26623
  });
26562
26624
  }, [chains]);
26563
26625
  const { supportedSourceChains, supportedDestinationChains } = React.useMemo(() => {
@@ -26579,6 +26641,7 @@ const useSquidChains = (direction) => {
26579
26641
  xrplChains,
26580
26642
  stellarChains,
26581
26643
  cantonChains,
26644
+ danalChains,
26582
26645
  getChainType,
26583
26646
  findChain,
26584
26647
  };
@@ -27424,7 +27487,7 @@ function useStellarWallets() {
27424
27487
  try {
27425
27488
  const { allowAllModules: initializeAllModules } = await import('@creit.tech/stellar-wallets-kit');
27426
27489
  const { LedgerModule } = await import('@creit.tech/stellar-wallets-kit/modules/ledger.module.mjs');
27427
- const { formatStellarWallet } = await Promise.resolve().then(function () { return require('./stellarService.client-DhwF4F1c.js'); });
27490
+ const { formatStellarWallet } = await Promise.resolve().then(function () { return require('./stellarService.client-C-DwcHfr.js'); });
27428
27491
  const modules = [...initializeAllModules(), new LedgerModule()];
27429
27492
  const promises = modules.map(async (module) => {
27430
27493
  const isAvailable = await module.isAvailable();
@@ -28234,6 +28297,8 @@ const useMultiChainWallet = (chain) => {
28234
28297
  chainType: chain.chainType,
28235
28298
  }),
28236
28299
  };
28300
+ case squidTypes.ChainType.DANAL:
28301
+ return {};
28237
28302
  }
28238
28303
  }, [
28239
28304
  chain?.chainType,
@@ -29072,6 +29137,8 @@ async function createClient(chain) {
29072
29137
  return new StellarRpcClient(chain.rpc);
29073
29138
  case squidTypes.ChainType.CANTON:
29074
29139
  return null;
29140
+ case squidTypes.ChainType.DANAL:
29141
+ return null;
29075
29142
  }
29076
29143
  }
29077
29144
 
@@ -30338,7 +30405,7 @@ const useCantonBalance = ({ chain, token, userAddress, enabled = true, refreshIn
30338
30405
  };
30339
30406
 
30340
30407
  function useNativeTokenForChain(chain) {
30341
- const { evmTokens, cosmosTokens, solanaTokens, bitcoinTokens, suiTokens, xrplTokens, stellarTokens, cantonTokens, } = useSquidTokens();
30408
+ const { evmTokens, cosmosTokens, solanaTokens, bitcoinTokens, suiTokens, xrplTokens, stellarTokens, cantonTokens, danalTokens, } = useSquidTokens();
30342
30409
  const getTokensForChainType = () => {
30343
30410
  if (!chain?.chainType)
30344
30411
  return [];
@@ -30359,6 +30426,8 @@ function useNativeTokenForChain(chain) {
30359
30426
  return stellarTokens;
30360
30427
  case squidTypes.ChainType.CANTON:
30361
30428
  return cantonTokens;
30429
+ case squidTypes.ChainType.DANAL:
30430
+ return danalTokens;
30362
30431
  }
30363
30432
  };
30364
30433
  const nativeTokenForChainType = React.useMemo(() => {
@@ -30619,6 +30688,9 @@ const useNativeBalance = (chain) => {
30619
30688
  case squidTypes.ChainType.CANTON:
30620
30689
  balance = nativeCantonBalance;
30621
30690
  break;
30691
+ case squidTypes.ChainType.DANAL:
30692
+ balance = undefined;
30693
+ break;
30622
30694
  }
30623
30695
  const balanceFormatted = !!balance
30624
30696
  ? formatBNToReadable(balance.value, balance.decimals)
@@ -30658,6 +30730,8 @@ const useNativeBalance = (chain) => {
30658
30730
  return isStellarLoading;
30659
30731
  case squidTypes.ChainType.CANTON:
30660
30732
  return isCantonLoading;
30733
+ case squidTypes.ChainType.DANAL:
30734
+ return false;
30661
30735
  }
30662
30736
  }, [
30663
30737
  chain?.chainType,
@@ -30883,7 +30957,7 @@ function hederaWalletConnect(parameters) {
30883
30957
  const optionalChains = config.chains.map((x) => x.id);
30884
30958
  if (!optionalChains.length)
30885
30959
  return;
30886
- const { EthereumProvider } = await Promise.resolve().then(function () { return require('./index.es-DaKI7v5_.js'); });
30960
+ const { EthereumProvider } = await Promise.resolve().then(function () { return require('./index.es-Bh80Pkl-.js'); });
30887
30961
  const rawProvider = await EthereumProvider.init({
30888
30962
  ...restParameters,
30889
30963
  disableProviderPing: true,
@@ -31117,6 +31191,8 @@ const useSigner = ({ chain }) => {
31117
31191
  return isStellarSignerReady;
31118
31192
  case squidTypes.ChainType.CANTON:
31119
31193
  return isCantonSignerReady;
31194
+ case squidTypes.ChainType.DANAL:
31195
+ return false;
31120
31196
  }
31121
31197
  }, [
31122
31198
  chain?.chainType,
@@ -31592,11 +31668,13 @@ function useDepositAddress(squidRoute) {
31592
31668
  CHAIN_IDS.BITCOIN,
31593
31669
  CHAIN_IDS.SOLANA,
31594
31670
  CHAIN_IDS.CANTON,
31671
+ CHAIN_IDS.DANAL_TESTNET,
31595
31672
  ];
31596
31673
  return chainsSupportingDepositAddress.includes(fromChain.chainId);
31597
31674
  }, [fromChain?.chainId]);
31598
- const routeProvidesDirectDepositAddress = !!squidRoute?.transactionRequest &&
31599
- isDepositAddressDirectTransferRoute(squidRoute.transactionRequest);
31675
+ const routeProvidesDirectDepositAddress = (!!squidRoute?.transactionRequest &&
31676
+ isDepositAddressDirectTransferRoute(squidRoute.transactionRequest)) ||
31677
+ (!!squidRoute && isDanalDepositRoute(squidRoute));
31600
31678
  const swapWillGenerateDepositAddress = isChainflipDepositRoute(squidRoute) || routeProvidesDirectDepositAddress;
31601
31679
  const paymentMethod = isAvailableAsPaymentMethod
31602
31680
  ? selectedPaymentMethod
@@ -31622,6 +31700,19 @@ function useDepositAddress(squidRoute) {
31622
31700
  });
31623
31701
  return;
31624
31702
  }
31703
+ else if (isDanalDepositRoute(route)) {
31704
+ const transferBody = parseDanalTransferBody(route.transactionRequest.data);
31705
+ if (!transferBody) {
31706
+ throw new Error("Could not parse Danal transfer request body");
31707
+ }
31708
+ setDeposit({
31709
+ amount: transferBody.amount,
31710
+ depositAddress: route.transactionRequest.target,
31711
+ statusTrackingId: transferBody.memo,
31712
+ memo: transferBody.memo,
31713
+ });
31714
+ return;
31715
+ }
31625
31716
  else if (isDepositAddressDirectTransferRoute(route.transactionRequest)) {
31626
31717
  // Canton case
31627
31718
  const orderHash = route.transactionRequest.data;
@@ -31671,7 +31762,7 @@ const useUrlSwapParams = () => {
31671
31762
 
31672
31763
  const useAllTokensWithBalanceForChainType = ({ chainType, address, direction, queryOptions, }) => {
31673
31764
  const { evmChains, cosmosChains, suiChains, xrplChains, stellarChains } = useSquidChains(direction);
31674
- const { evmTokens, cosmosTokens, solanaTokens, bitcoinTokens, suiTokens, xrplTokens, stellarTokens, cantonTokens, } = useSquidTokens(direction);
31765
+ const { evmTokens, cosmosTokens, solanaTokens, bitcoinTokens, suiTokens, xrplTokens, stellarTokens, cantonTokens, danalTokens, } = useSquidTokens(direction);
31675
31766
  const { keplrTypeWallet } = useCosmosContext();
31676
31767
  const cantonConnector = useWalletStore((store) => store.connectedWalletsByChainType[squidTypes.ChainType.CANTON]?.wallet?.connector);
31677
31768
  const placeholderData = React.useMemo(() => {
@@ -31684,6 +31775,7 @@ const useAllTokensWithBalanceForChainType = ({ chainType, address, direction, qu
31684
31775
  [squidTypes.ChainType.XRPL]: xrplTokens.map((t) => ({ ...t, balance: "0" })),
31685
31776
  [squidTypes.ChainType.STELLAR]: stellarTokens.map((t) => ({ ...t, balance: "0" })),
31686
31777
  [squidTypes.ChainType.CANTON]: cantonTokens.map((t) => ({ ...t, balance: "0" })),
31778
+ [squidTypes.ChainType.DANAL]: danalTokens.map((t) => ({ ...t, balance: "0" })),
31687
31779
  };
31688
31780
  if (!chainType) {
31689
31781
  // Return all tokens with zero balance
@@ -31706,6 +31798,7 @@ const useAllTokensWithBalanceForChainType = ({ chainType, address, direction, qu
31706
31798
  xrplTokens,
31707
31799
  stellarTokens,
31708
31800
  cantonTokens,
31801
+ danalTokens,
31709
31802
  ]);
31710
31803
  const isQueryEnabled = React.useMemo(() => {
31711
31804
  // Respect the queryOptions.enabled override if provided
@@ -31730,6 +31823,8 @@ const useAllTokensWithBalanceForChainType = ({ chainType, address, direction, qu
31730
31823
  return stellarTokens.length > 0;
31731
31824
  case squidTypes.ChainType.CANTON:
31732
31825
  return cantonTokens.length > 0;
31826
+ case squidTypes.ChainType.DANAL:
31827
+ return danalTokens.length > 0;
31733
31828
  }
31734
31829
  }, [
31735
31830
  chainType,
@@ -31743,6 +31838,7 @@ const useAllTokensWithBalanceForChainType = ({ chainType, address, direction, qu
31743
31838
  xrplTokens.length,
31744
31839
  stellarTokens.length,
31745
31840
  cantonTokens.length,
31841
+ danalTokens.length,
31746
31842
  ]);
31747
31843
  const query = reactQuery.useQuery(keys().allTokensBalance(address, chainType, direction), async () => {
31748
31844
  // Return zero balances if no address
@@ -31867,6 +31963,12 @@ const useAllConnectedWalletBalances = ({ direction, queryOptions = {
31867
31963
  direction,
31868
31964
  queryOptions,
31869
31965
  });
31966
+ const danalBalancesQuery = useAllTokensWithBalanceForChainType({
31967
+ chainType: squidTypes.ChainType.DANAL,
31968
+ address: connectedAddresses?.[squidTypes.ChainType.DANAL],
31969
+ direction,
31970
+ queryOptions,
31971
+ });
31870
31972
  // Create a map of chain type to balance query results
31871
31973
  const balanceQueries = React.useMemo(() => ({
31872
31974
  [squidTypes.ChainType.EVM]: evmBalancesQuery,
@@ -31877,6 +31979,7 @@ const useAllConnectedWalletBalances = ({ direction, queryOptions = {
31877
31979
  [squidTypes.ChainType.XRPL]: xrplBalancesQuery,
31878
31980
  [squidTypes.ChainType.STELLAR]: stellarBalancesQuery,
31879
31981
  [squidTypes.ChainType.CANTON]: cantonBalancesQuery,
31982
+ [squidTypes.ChainType.DANAL]: danalBalancesQuery,
31880
31983
  }), [
31881
31984
  evmBalancesQuery,
31882
31985
  cosmosBalancesQuery,
@@ -31886,6 +31989,7 @@ const useAllConnectedWalletBalances = ({ direction, queryOptions = {
31886
31989
  xrplBalancesQuery,
31887
31990
  stellarBalancesQuery,
31888
31991
  cantonBalancesQuery,
31992
+ danalBalancesQuery,
31889
31993
  ]);
31890
31994
  // Combine all tokens from different chains
31891
31995
  const allTokens = React.useMemo(() => Object.values(balanceQueries).flatMap((query) => query.data?.tokens ?? []), [balanceQueries]);
@@ -31993,6 +32097,8 @@ const useMultiChainBalance = ({ chain, token, userAddress, enabled = true, }) =>
31993
32097
  return stellarBalance;
31994
32098
  case squidTypes.ChainType.CANTON:
31995
32099
  return cantonBalance;
32100
+ case squidTypes.ChainType.DANAL:
32101
+ return "0";
31996
32102
  }
31997
32103
  }, [
31998
32104
  chain?.chainType,
@@ -33102,8 +33208,9 @@ function useSendTransaction({ to, amount, token, chain, }) {
33102
33208
  chain,
33103
33209
  });
33104
33210
  break;
33105
- case squidTypes.ChainType.CANTON: {
33106
- throw new Error("Not implemented");
33211
+ case squidTypes.ChainType.CANTON:
33212
+ case squidTypes.ChainType.DANAL: {
33213
+ throw new Error(`Send not implemented for chain type ${chain.chainType}`);
33107
33214
  }
33108
33215
  }
33109
33216
  return {
@@ -33309,7 +33416,8 @@ async function getSendTransactionStatus({ chain, txHash, }) {
33309
33416
  chain,
33310
33417
  });
33311
33418
  case squidTypes.ChainType.CANTON:
33312
- throw new Error("Not implemented");
33419
+ case squidTypes.ChainType.DANAL:
33420
+ throw new Error(`Send not implemented for chain type ${chain.chainType}`);
33313
33421
  }
33314
33422
  }
33315
33423
 
@@ -38179,7 +38287,7 @@ refetchIntervalInBackground = false, refetchInterval = 30000, quoteOnly = true,
38179
38287
  //
38180
38288
  // If deposit address is not selected, we use the connected address as the source address instead
38181
38289
  const sourceUserAddress = isDepositAddressActive
38182
- ? (depositRefundAddress ?? sourceConnectedAddress)
38290
+ ? depositRefundAddress ?? sourceConnectedAddress
38183
38291
  : sourceConnectedAddress;
38184
38292
  const squidRouteQueryKeys = React.useMemo(() => keys().transaction(fromChain?.chainId, toChain?.chainId, toToken?.address, fromToken?.address, fromPrice, config.slippage, sourceUserAddress, config.degenMode, destinationAddress, fallbackAddress, quoteOnly, fromChain?.chainType, config.preHook, config.postHook, config.overrideGasRefundAddress), [
38185
38293
  fromChain?.chainId,
@@ -38965,6 +39073,7 @@ exports.isChainflipBridgeTransaction = isChainflipBridgeTransaction;
38965
39073
  exports.isChainflipDepositRoute = isChainflipDepositRoute;
38966
39074
  exports.isCoralBridgeAction = isCoralBridgeAction;
38967
39075
  exports.isCosmosAddressValid = isCosmosAddressValid;
39076
+ exports.isDanalDepositRoute = isDanalDepositRoute;
38968
39077
  exports.isDepositAddressDirectTransferRoute = isDepositAddressDirectTransferRoute;
38969
39078
  exports.isEmptyObject = isEmptyObject;
38970
39079
  exports.isEvmChainNotSupportedError = isEvmChainNotSupportedError;
@@ -39114,4 +39223,4 @@ exports.useXrplTrustLine = useXrplTrustLine;
39114
39223
  exports.waitForReceiptWithRetry = waitForReceiptWithRetry;
39115
39224
  exports.walletIconBaseUrl = walletIconBaseUrl;
39116
39225
  exports.walletSupportsChainType = walletSupportsChainType;
39117
- //# sourceMappingURL=index-BzTFES6t.js.map
39226
+ //# sourceMappingURL=index-COYrDBlh.js.map