@0xsquid/react-hooks 8.7.1 → 8.7.2-beta-interactive-to-amount.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 (31) hide show
  1. package/dist/core/queries/queries-keys.d.ts +1 -1
  2. package/dist/core/types/config.d.ts +1 -1
  3. package/dist/core/types/event.d.ts +1 -2
  4. package/dist/hooks/store/useSquidStore.d.ts +2 -1
  5. package/dist/hooks/swap/useSwap.d.ts +4 -2
  6. package/dist/hooks/transaction/useGetRoute.d.ts +8 -8
  7. package/dist/{index-Dgqm3ZeG.js → index-6eFn7nS3.js} +62 -33
  8. package/dist/index-6eFn7nS3.js.map +1 -0
  9. package/dist/{index-DQERpZr8.js → index-uUESkMSI.js} +62 -32
  10. package/dist/index-uUESkMSI.js.map +1 -0
  11. package/dist/{index.es-BKxEl9R1.js → index.es-C0R5BhSh.js} +2 -2
  12. package/dist/{index.es-BKxEl9R1.js.map → index.es-C0R5BhSh.js.map} +1 -1
  13. package/dist/{index.es-DOFFrTzb.js → index.es-CRHo3jIu.js} +2 -2
  14. package/dist/{index.es-DOFFrTzb.js.map → index.es-CRHo3jIu.js.map} +1 -1
  15. package/dist/index.esm.js +1 -1
  16. package/dist/index.js +2 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/{secretService-CqdaN_la.js → secretService-B87PUWJl.js} +2 -2
  19. package/dist/{secretService-CqdaN_la.js.map → secretService-B87PUWJl.js.map} +1 -1
  20. package/dist/{secretService-DXExZJnA.js → secretService-C8LsM_VG.js} +2 -2
  21. package/dist/{secretService-DXExZJnA.js.map → secretService-C8LsM_VG.js.map} +1 -1
  22. package/dist/services/internal/eventService.d.ts +1 -2
  23. package/dist/services/internal/numberService.d.ts +1 -0
  24. package/dist/{stellarService.client-eK7yYyOR.js → stellarService.client-BFgOtfFI.js} +2 -2
  25. package/dist/{stellarService.client-eK7yYyOR.js.map → stellarService.client-BFgOtfFI.js.map} +1 -1
  26. package/dist/{stellarService.client-BmkrPHkP.js → stellarService.client-DidQHS07.js} +2 -2
  27. package/dist/{stellarService.client-BmkrPHkP.js.map → stellarService.client-DidQHS07.js.map} +1 -1
  28. package/package.json +3 -3
  29. package/dist/core/types/route.d.ts +0 -4
  30. package/dist/index-DQERpZr8.js.map +0 -1
  31. package/dist/index-Dgqm3ZeG.js.map +0 -1
@@ -3971,6 +3971,9 @@ const getNumericValue = ({ value, precision, useComaEvery3Digits = true, hideIfZ
3971
3971
  const finalValue = `${isNegative ? "-" : ""}${prefix}${formattedIfVerySmall}${suffix ? ` ${suffix}` : ""}`;
3972
3972
  return wrapInParens ? `(${finalValue})` : finalValue;
3973
3973
  };
3974
+ function isZeroAmount(amount) {
3975
+ return !amount || amount === "0";
3976
+ }
3974
3977
 
3975
3978
  /**
3976
3979
  * Creates a hash string from quote request parameters to track changes
@@ -22413,14 +22416,15 @@ const keys = () => ({
22413
22416
  // ============
22414
22417
  // Transactions
22415
22418
  // ============
22416
- transaction: (fromChainId, toChainId, toTokenAddress, fromTokenAddress, price, slippage, sourceUserAddress, degenMode, destinationAddress, fallbackAddress, quoteOnly, fromChainType, preHook, postHook, overrideGasRefundAddress) => [
22419
+ transaction: (fromChainId, toChainId, toTokenAddress, fromTokenAddress, fromAmount, toAmount, slippage, sourceUserAddress, degenMode, destinationAddress, fallbackAddress, quoteOnly, fromChainType, preHook, postHook, overrideGasRefundAddress) => [
22417
22420
  ...keys().transactions(),
22418
22421
  exports.QueryKeys.Transaction,
22419
22422
  fromChainId,
22420
22423
  toChainId,
22421
22424
  toTokenAddress,
22422
22425
  fromTokenAddress,
22423
- price,
22426
+ fromAmount,
22427
+ toAmount,
22424
22428
  slippage,
22425
22429
  sourceUserAddress,
22426
22430
  degenMode,
@@ -23315,7 +23319,7 @@ const filterViewableTokens = (tokens, config, direction) => {
23315
23319
  };
23316
23320
  const getSecretNetworkBalances = async (chainData, cosmosAddress, squidTokens, keplrTypeWallet) => {
23317
23321
  const squidSecretTokens = squidTokens.filter((t) => t.chainId === CHAIN_IDS.SECRET);
23318
- const { fetchAllSecretBalances } = await Promise.resolve().then(function () { return require('./secretService-DXExZJnA.js'); });
23322
+ const { fetchAllSecretBalances } = await Promise.resolve().then(function () { return require('./secretService-C8LsM_VG.js'); });
23319
23323
  return fetchAllSecretBalances(chainData, cosmosAddress, squidSecretTokens, keplrTypeWallet);
23320
23324
  };
23321
23325
  function getTokenAssetsKey(token) {
@@ -25172,10 +25176,7 @@ const useConfigStore = zustand.create(() => ({
25172
25176
  isInitialized: false,
25173
25177
  }));
25174
25178
  const useTransactionStore = zustand.create((set, get) => ({
25175
- fromPrice: undefined,
25176
- txLocalId: undefined,
25177
25179
  transactions: {},
25178
- currentTransaction: undefined,
25179
25180
  setTransactionState(txId, tx) {
25180
25181
  if (!txId)
25181
25182
  return;
@@ -26713,7 +26714,7 @@ function useStellarWallets() {
26713
26714
  try {
26714
26715
  const { allowAllModules: initializeAllModules } = await import('@creit.tech/stellar-wallets-kit');
26715
26716
  const { LedgerModule } = await import('@creit.tech/stellar-wallets-kit/modules/ledger.module');
26716
- const { formatStellarWallet } = await Promise.resolve().then(function () { return require('./stellarService.client-eK7yYyOR.js'); });
26717
+ const { formatStellarWallet } = await Promise.resolve().then(function () { return require('./stellarService.client-BFgOtfFI.js'); });
26717
26718
  const modules = [...initializeAllModules(), new LedgerModule()];
26718
26719
  const promises = modules.map(async (module) => {
26719
26720
  const isAvailable = await module.isAvailable();
@@ -27612,7 +27613,8 @@ const useMultiChainWallet = (chain) => {
27612
27613
 
27613
27614
  const useSwap = () => {
27614
27615
  const { initialAssets, defaultTokensPerChain, disabledChains, availableChains, } = useConfigStore((state) => state.config);
27615
- const fromPrice = useTransactionStore((state) => state.fromPrice);
27616
+ const fromAmount = useTransactionStore((state) => state.fromAmount);
27617
+ const toAmount = useTransactionStore((state) => state.toAmount);
27616
27618
  const { swapRoute } = useSwapRoutePersistStore();
27617
27619
  const { tokens } = useSquidTokens();
27618
27620
  const queryClient = reactQuery.useQueryClient();
@@ -27664,8 +27666,17 @@ const useSwap = () => {
27664
27666
  }),
27665
27667
  };
27666
27668
  }, [destAddressData, destAddressEnsData.data, toChain?.chainType]);
27667
- const fromPriceChanged = React.useCallback((price) => {
27668
- useTransactionStore.setState({ fromPrice: price || undefined });
27669
+ const fromAmountChanged = React.useCallback((amount) => {
27670
+ useTransactionStore.setState({
27671
+ fromAmount: amount || undefined,
27672
+ toAmount: undefined,
27673
+ });
27674
+ }, []);
27675
+ const toAmountChanged = React.useCallback((amount) => {
27676
+ useTransactionStore.setState({
27677
+ toAmount: amount || undefined,
27678
+ fromAmount: undefined,
27679
+ });
27669
27680
  }, []);
27670
27681
  /**
27671
27682
  * When user changes something from the SwapView
@@ -27825,8 +27836,10 @@ const useSwap = () => {
27825
27836
  tokenItems,
27826
27837
  onSwapChange,
27827
27838
  invertSwaps,
27828
- fromPrice,
27829
- fromPriceChanged,
27839
+ fromAmount,
27840
+ toAmount,
27841
+ fromAmountChanged,
27842
+ toAmountChanged,
27830
27843
  toToken,
27831
27844
  fromToken,
27832
27845
  fromChain,
@@ -30033,7 +30046,7 @@ function hederaWalletConnect(parameters) {
30033
30046
  const optionalChains = config.chains.map((x) => x.id);
30034
30047
  if (!optionalChains.length)
30035
30048
  return;
30036
- const { EthereumProvider } = await Promise.resolve().then(function () { return require('./index.es-BKxEl9R1.js'); });
30049
+ const { EthereumProvider } = await Promise.resolve().then(function () { return require('./index.es-C0R5BhSh.js'); });
30037
30050
  const rawProvider = await EthereumProvider.init({
30038
30051
  ...restParameters,
30039
30052
  disableProviderPing: true,
@@ -32438,7 +32451,7 @@ const useHistory = (txType) => {
32438
32451
  fromChain: tx.params.fromChain,
32439
32452
  fromToken: tx.params.fromToken,
32440
32453
  fromAddress: tx.params.fromAddress,
32441
- fromAmount: tx.params.fromAmount,
32454
+ fromAmount: tx.params.fromAmount || tx.estimate.fromAmount,
32442
32455
  toChain: tx.params.toChain,
32443
32456
  toToken: tx.params.toToken,
32444
32457
  toAddress: tx.params.toAddress,
@@ -32679,7 +32692,7 @@ const useApproval = ({ squidRoute, }) => {
32679
32692
  const publicClient = wagmi.usePublicClient();
32680
32693
  const queryClient = reactQuery.useQueryClient();
32681
32694
  const squid = useSquidStore((state) => state.squid);
32682
- const { fromChain, fromToken, fromPrice, isSameChain } = useSwap();
32695
+ const { fromChain, fromToken, fromAmount, toAmount, isSameChain } = useSwap();
32683
32696
  const { evmSigner } = useSigner({ chain: fromChain });
32684
32697
  const { connector: activeConnector } = wagmi.useAccount();
32685
32698
  const { getChainType } = useSquidChains();
@@ -32852,7 +32865,7 @@ const useApproval = ({ squidRoute, }) => {
32852
32865
  // This is to ensure we're using the latest expiry timestamp
32853
32866
  if (squidRoute) {
32854
32867
  queryClient.refetchQueries({
32855
- queryKey: keys().transaction(squidRoute.params.fromChain, squidRoute.params.toChain, squidRoute.params.toToken, squidRoute.params.fromToken, fromPrice, squidRoute.params.slippage, squidRoute.params.fromAddress, squidRoute.params.bypassGuardrails, squidRoute.params.toAddress, squidRoute.params.fallbackAddresses?.[0]?.address, squidRoute.params.quoteOnly, getChainType(squidRoute.params.fromChain), squidRoute.params.preHook, squidRoute.params.postHook,
32868
+ queryKey: keys().transaction(squidRoute.params.fromChain, squidRoute.params.toChain, squidRoute.params.toToken, squidRoute.params.fromToken, fromAmount, toAmount, squidRoute.params.slippage, squidRoute.params.fromAddress, squidRoute.params.bypassGuardrails, squidRoute.params.toAddress, squidRoute.params.fallbackAddresses?.[0]?.address, squidRoute.params.quoteOnly, getChainType(squidRoute.params.fromChain), squidRoute.params.preHook, squidRoute.params.postHook,
32856
32869
  // TODO: update types
32857
32870
  squidRoute.params?.overrideGasRefundAddress),
32858
32871
  });
@@ -32871,7 +32884,7 @@ const AXELAR_PROVIDER_IMAGE_URL = "https://raw.githubusercontent.com/0xsquid/ass
32871
32884
  const useEstimate = (squidRoute) => {
32872
32885
  const collectFees = useConfigStore((state) => state.config.collectFees);
32873
32886
  const { tokens } = useSquidTokens();
32874
- const { fromChain, toChain, fromPrice } = useSwap();
32887
+ const { fromChain, toChain, fromAmount } = useSwap();
32875
32888
  const fromToken = React.useMemo(() => findToken(tokens, squidRoute?.params.fromChain, squidRoute?.params.fromToken), [tokens, squidRoute?.params.fromChain, squidRoute?.params.fromToken]);
32876
32889
  const { chainFeeParams, gasToken } = useSourceChainGasToken({
32877
32890
  fromChain,
@@ -32967,9 +32980,9 @@ const useEstimate = (squidRoute) => {
32967
32980
  const slippageFormatted = Number(squidRoute?.estimate?.aggregateSlippage ?? 0).toFixed(2) + "%";
32968
32981
  const fromBalanceEnoughToSwap = React.useMemo(() => {
32969
32982
  const fromBalanceNum = Number(fromBalanceFormatted ?? 0);
32970
- const fromPriceNum = Number(fromPrice ?? 0);
32971
- return fromBalanceNum >= fromPriceNum;
32972
- }, [fromBalanceFormatted, fromPrice]);
32983
+ const fromAmountNum = Number(fromAmount ?? 0);
32984
+ return fromBalanceNum >= fromAmountNum;
32985
+ }, [fromBalanceFormatted, fromAmount]);
32973
32986
  return {
32974
32987
  ...estimateResults,
32975
32988
  fromBalanceFormatted,
@@ -36188,8 +36201,12 @@ const useExecuteTransaction = (squidRoute) => {
36188
36201
  if (!depositData?.depositAddress) {
36189
36202
  throw new Error("Deposit address is required");
36190
36203
  }
36204
+ const fromAmount = route.params.fromAmount || route.estimate.fromAmount;
36205
+ if (isZeroAmount(fromAmount)) {
36206
+ throw new Error("fromAmount is required for Solana transfer");
36207
+ }
36191
36208
  const signature = await executeSolanaTransfer({
36192
- amount: BigInt(route.params.fromAmount),
36209
+ amount: BigInt(fromAmount),
36193
36210
  target: depositData.depositAddress,
36194
36211
  signer: solanaSigner,
36195
36212
  connection: solanaConnection,
@@ -36699,8 +36716,12 @@ const useGetRoute = () => {
36699
36716
  * These data will be used to trigger the transaction
36700
36717
  * @returns {Route} Route data
36701
36718
  */
36702
- return reactQuery.useMutation(async ({ fromChain, toChain, fromToken, toToken, sourceUserAddress, destinationAddress, fromPrice, bypassGuardrails, quoteOnly, fromChainType, postHook, preHook, overrideGasRefundAddress, }) => {
36703
- if (!fromChain || !toChain || !fromToken || !toToken || !fromPrice) {
36719
+ return reactQuery.useMutation(async ({ fromChain, toChain, fromToken, toToken, sourceUserAddress, destinationAddress, fromPrice = "", toPrice = "", bypassGuardrails, quoteOnly, fromChainType, postHook, preHook, overrideGasRefundAddress, }) => {
36720
+ if (!fromChain ||
36721
+ !toChain ||
36722
+ !fromToken ||
36723
+ !toToken ||
36724
+ (!fromPrice && !toPrice)) {
36704
36725
  return undefined;
36705
36726
  }
36706
36727
  // Dispatch requestQuote event
@@ -36710,6 +36731,7 @@ const useGetRoute = () => {
36710
36731
  fromToken: fromToken.address,
36711
36732
  toToken: toToken.address,
36712
36733
  fromAmount: fromPrice,
36734
+ toAmount: toPrice,
36713
36735
  fromAddress: sourceUserAddress,
36714
36736
  toAddress: destinationAddress,
36715
36737
  });
@@ -36718,13 +36740,13 @@ const useGetRoute = () => {
36718
36740
  const fromTokenAddress = fromToken.address;
36719
36741
  const toTokenAddress = toToken.address;
36720
36742
  const fromAmount = parseToBigInt(fromPrice?.toString() ?? "0", fromToken?.decimals).toString();
36743
+ const toAmount = parseToBigInt(toPrice?.toString() ?? "0", toToken?.decimals).toString();
36721
36744
  const fromAddress = sourceUserAddress ??
36722
36745
  chainTypeToZeroAddressMap[fromChainType ?? squidTypes.ChainType.EVM];
36723
36746
  const params = {
36724
36747
  fromChain,
36725
36748
  fromToken: fromTokenAddress,
36726
36749
  fromAddress,
36727
- fromAmount,
36728
36750
  toChain,
36729
36751
  toToken: toTokenAddress,
36730
36752
  toAddress: destinationAddress ?? "",
@@ -36741,12 +36763,18 @@ const useGetRoute = () => {
36741
36763
  cosmosFallbackAddresses[0].address) {
36742
36764
  params.fallbackAddresses = cosmosFallbackAddresses;
36743
36765
  }
36766
+ if (!isZeroAmount(fromAmount)) {
36767
+ params.fromAmount = fromAmount;
36768
+ }
36769
+ else if (!isZeroAmount(toAmount)) {
36770
+ params.toAmount = toAmount;
36771
+ }
36744
36772
  const { route } = await squid.getRoute({
36745
36773
  ...params,
36746
36774
  });
36747
36775
  // Cache the route data
36748
36776
  // Useful when the getRoute mutation is called from another hook
36749
- queryClient.setQueryData(keys().transaction(fromChain, toChain, toToken.address, fromToken.address, fromPrice, config.slippage, sourceUserAddress, config.degenMode, destinationAddress, swapRoute?.fallbackAddress, quoteOnly, fromChainType, config.preHook, config.postHook, overrideGasRefundAddress), route);
36777
+ queryClient.setQueryData(keys().transaction(fromChain, toChain, toToken.address, fromToken.address, fromPrice, toPrice, config.slippage, sourceUserAddress, config.degenMode, destinationAddress, swapRoute?.fallbackAddress, quoteOnly, fromChainType, config.preHook, config.postHook, overrideGasRefundAddress), route);
36750
36778
  return route;
36751
36779
  });
36752
36780
  };
@@ -36760,7 +36788,7 @@ refetchIntervalInBackground = false, refetchInterval = 30000, quoteOnly = true,
36760
36788
  const depositRefundAddress = useSwapRoutePersistStore((store) => store.swapRoute?.depositRefundAddress);
36761
36789
  const { isAvailableAsPaymentMethod, isEnabled: isDepositAddressEnabled } = useDepositAddress();
36762
36790
  const getRouteMutation = useGetRoute();
36763
- const { fromChain, toChain, fromPrice, destinationAddress: { address: destinationAddress } = {}, fromToken, toToken, } = useSwap();
36791
+ const { fromChain, toChain, fromAmount, toAmount, destinationAddress: { address: destinationAddress } = {}, fromToken, toToken, } = useSwap();
36764
36792
  const { connectedAddress: { address: sourceConnectedAddress }, } = useMultiChainWallet(fromChain);
36765
36793
  // When the payment method is deposit address, users can specify a refund address on the source chain
36766
36794
  // Tokens will be sent to this address in case of swap failure
@@ -36769,12 +36797,13 @@ refetchIntervalInBackground = false, refetchInterval = 30000, quoteOnly = true,
36769
36797
  const sourceUserAddress = isDepositAddressEnabled && isAvailableAsPaymentMethod
36770
36798
  ? depositRefundAddress ?? sourceConnectedAddress
36771
36799
  : sourceConnectedAddress;
36772
- 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), [
36800
+ const squidRouteQueryKeys = React.useMemo(() => keys().transaction(fromChain?.chainId, toChain?.chainId, toToken?.address, fromToken?.address, fromAmount, toAmount, config.slippage, sourceUserAddress, config.degenMode, destinationAddress, fallbackAddress, quoteOnly, fromChain?.chainType, config.preHook, config.postHook, config.overrideGasRefundAddress), [
36773
36801
  fromChain?.chainId,
36774
36802
  toChain?.chainId,
36775
36803
  toToken?.address,
36776
36804
  fromToken?.address,
36777
- fromPrice,
36805
+ fromAmount,
36806
+ toAmount,
36778
36807
  config.slippage,
36779
36808
  sourceUserAddress,
36780
36809
  config.degenMode,
@@ -36789,8 +36818,7 @@ refetchIntervalInBackground = false, refetchInterval = 30000, quoteOnly = true,
36789
36818
  const queryEnabled = enabled != undefined
36790
36819
  ? enabled
36791
36820
  : squid !== undefined &&
36792
- fromPrice !== undefined &&
36793
- fromPrice !== "0" &&
36821
+ (!isZeroAmount(fromAmount) || !isZeroAmount(toAmount)) &&
36794
36822
  toChain?.chainId !== undefined &&
36795
36823
  toToken?.address !== undefined;
36796
36824
  const queryClient = reactQuery.useQueryClient();
@@ -36808,7 +36836,8 @@ refetchIntervalInBackground = false, refetchInterval = 30000, quoteOnly = true,
36808
36836
  toToken,
36809
36837
  sourceUserAddress,
36810
36838
  destinationAddress,
36811
- fromPrice,
36839
+ fromPrice: fromAmount,
36840
+ toPrice: toAmount,
36812
36841
  bypassGuardrails: config.degenMode,
36813
36842
  quoteOnly,
36814
36843
  fromChainType: fromChain?.chainType,
@@ -37615,6 +37644,7 @@ exports.isWalletAddressValid = isWalletAddressValid;
37615
37644
  exports.isXamanXAppContext = isXamanXAppContext;
37616
37645
  exports.isXionSmartContractAddress = isXionSmartContractAddress;
37617
37646
  exports.isXrplAddressValid = isXrplAddressValid;
37647
+ exports.isZeroAmount = isZeroAmount;
37618
37648
  exports.mergeWallets = mergeWallets;
37619
37649
  exports.nativeBitcoinTokenAddress = nativeBitcoinTokenAddress;
37620
37650
  exports.nativeCosmosTokenAddress = nativeCosmosTokenAddress;
@@ -37737,4 +37767,4 @@ exports.useXrplTrustLine = useXrplTrustLine;
37737
37767
  exports.waitForReceiptWithRetry = waitForReceiptWithRetry;
37738
37768
  exports.walletIconBaseUrl = walletIconBaseUrl;
37739
37769
  exports.walletSupportsChainType = walletSupportsChainType;
37740
- //# sourceMappingURL=index-DQERpZr8.js.map
37770
+ //# sourceMappingURL=index-uUESkMSI.js.map