@velora-dex/widget 0.3.13-dev.1 → 0.4.1

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 (200) hide show
  1. package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.d.ts.map +1 -1
  2. package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.js +75 -63
  3. package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.js.map +1 -1
  4. package/dist/components/web3/ConnectExternalProvider/constants.d.ts +14 -0
  5. package/dist/components/web3/ConnectExternalProvider/constants.d.ts.map +1 -0
  6. package/dist/components/web3/ConnectExternalProvider/constants.js +6 -0
  7. package/dist/components/web3/ConnectExternalProvider/constants.js.map +1 -0
  8. package/dist/components/web3/ConnectExternalProvider/metamaskProviderWrapper.d.ts +15 -0
  9. package/dist/components/web3/ConnectExternalProvider/metamaskProviderWrapper.d.ts.map +1 -0
  10. package/dist/components/web3/ConnectExternalProvider/metamaskProviderWrapper.js +56 -0
  11. package/dist/components/web3/ConnectExternalProvider/metamaskProviderWrapper.js.map +1 -0
  12. package/dist/components/web3/ConnectExternalProvider/safeProviderWrapper.d.ts +6 -0
  13. package/dist/components/web3/ConnectExternalProvider/safeProviderWrapper.d.ts.map +1 -0
  14. package/dist/components/web3/ConnectExternalProvider/safeProviderWrapper.js +76 -0
  15. package/dist/components/web3/ConnectExternalProvider/safeProviderWrapper.js.map +1 -0
  16. package/dist/components/web3/ConnectExternalProvider/utils.d.ts +23 -0
  17. package/dist/components/web3/ConnectExternalProvider/utils.d.ts.map +1 -0
  18. package/dist/components/web3/ConnectExternalProvider/utils.js +42 -0
  19. package/dist/components/web3/ConnectExternalProvider/utils.js.map +1 -0
  20. package/dist/components/web3/ConnectWallets/index.js.map +1 -1
  21. package/dist/components/web3/ConnectWallets/walletIcons.d.ts +8 -1
  22. package/dist/components/web3/ConnectWallets/walletIcons.d.ts.map +1 -1
  23. package/dist/components/web3/ConnectWallets/walletIcons.js +23 -9
  24. package/dist/components/web3/ConnectWallets/walletIcons.js.map +1 -1
  25. package/dist/components/widget/ReceiverAddress/state/subscriptions.d.ts.map +1 -1
  26. package/dist/components/widget/ReceiverAddress/state/subscriptions.js +11 -5
  27. package/dist/components/widget/ReceiverAddress/state/subscriptions.js.map +1 -1
  28. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts.map +1 -1
  29. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js +95 -79
  30. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
  31. package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.d.ts +1 -1
  32. package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.d.ts.map +1 -1
  33. package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.js +60 -89
  34. package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.js.map +1 -1
  35. package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.d.ts.map +1 -1
  36. package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.js +1 -0
  37. package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.js.map +1 -1
  38. package/dist/components/widget/TradeOverview/utils/preWrap.d.ts +4 -1
  39. package/dist/components/widget/TradeOverview/utils/preWrap.d.ts.map +1 -1
  40. package/dist/components/widget/TradeOverview/utils/preWrap.js +2 -1
  41. package/dist/components/widget/TradeOverview/utils/preWrap.js.map +1 -1
  42. package/dist/components/widget/TransactionDetails/LimitOrderDetails/Controls.d.ts +2 -2
  43. package/dist/components/widget/TransactionDetails/LimitOrderDetails/Controls.d.ts.map +1 -1
  44. package/dist/components/widget/TransactionDetails/LimitOrderDetails/Controls.js +22 -23
  45. package/dist/components/widget/TransactionDetails/LimitOrderDetails/Controls.js.map +1 -1
  46. package/dist/components/widget/TransactionDetails/LimitOrderDetails/TransactionDetails.js +1 -1
  47. package/dist/components/widget/TransactionDetails/LimitOrderDetails/TransactionDetails.js.map +1 -1
  48. package/dist/components/widget/WrapEth/hooks/useWrapEthProps.d.ts +2 -0
  49. package/dist/components/widget/WrapEth/hooks/useWrapEthProps.d.ts.map +1 -1
  50. package/dist/components/widget/WrapEth/hooks/useWrapEthProps.js +236 -3
  51. package/dist/components/widget/WrapEth/hooks/useWrapEthProps.js.map +1 -1
  52. package/dist/configurator/Configurator.d.ts.map +1 -1
  53. package/dist/configurator/Safe/SafeConnector.d.ts +23 -0
  54. package/dist/configurator/Safe/SafeConnector.d.ts.map +1 -0
  55. package/dist/configurator/Safe/useSafeConnector.d.ts +8 -0
  56. package/dist/configurator/Safe/useSafeConnector.d.ts.map +1 -0
  57. package/dist/core/LimitOrderButton.d.ts.map +1 -1
  58. package/dist/core/LimitOrderButton.js +40 -18
  59. package/dist/core/LimitOrderButton.js.map +1 -1
  60. package/dist/core/index.d.ts.map +1 -1
  61. package/dist/core/index.js +46 -24
  62. package/dist/core/index.js.map +1 -1
  63. package/dist/core/state/configAtom.d.ts.map +1 -1
  64. package/dist/core/state/configAtom.js +5 -1
  65. package/dist/core/state/configAtom.js.map +1 -1
  66. package/dist/core/state/externalProviderAtom.d.ts +6 -0
  67. package/dist/core/state/externalProviderAtom.d.ts.map +1 -1
  68. package/dist/core/state/externalProviderAtom.js +4 -1
  69. package/dist/core/state/externalProviderAtom.js.map +1 -1
  70. package/dist/events/getters/swap.d.ts.map +1 -1
  71. package/dist/events/getters/swap.js +2 -1
  72. package/dist/events/getters/swap.js.map +1 -1
  73. package/dist/events/getters/widgetState.d.ts.map +1 -1
  74. package/dist/events/getters/widgetState.js +22 -1
  75. package/dist/events/getters/widgetState.js.map +1 -1
  76. package/dist/events/hooks/useOnWalletConnect.d.ts.map +1 -1
  77. package/dist/events/hooks/useOnWalletConnect.js +17 -1
  78. package/dist/events/hooks/useOnWalletConnect.js.map +1 -1
  79. package/dist/events/types/common.d.ts +7 -0
  80. package/dist/events/types/common.d.ts.map +1 -1
  81. package/dist/events/types/connectWallet.d.ts +4 -3
  82. package/dist/events/types/connectWallet.d.ts.map +1 -1
  83. package/dist/events/types/index.d.ts.map +1 -1
  84. package/dist/hooks/batch/useAwaitCalls.d.ts.map +1 -1
  85. package/dist/hooks/batch/useAwaitCalls.js.map +1 -1
  86. package/dist/hooks/connectors/useIsConnectedSafe.d.ts +1 -0
  87. package/dist/hooks/connectors/useIsConnectedSafe.d.ts.map +1 -1
  88. package/dist/hooks/connectors/useIsConnectedSafe.js +10 -3
  89. package/dist/hooks/connectors/useIsConnectedSafe.js.map +1 -1
  90. package/dist/hooks/connectors/useIsGnosisSafeConnector.d.ts +5 -1
  91. package/dist/hooks/connectors/useIsGnosisSafeConnector.d.ts.map +1 -1
  92. package/dist/hooks/connectors/useIsGnosisSafeConnector.js +3 -4
  93. package/dist/hooks/connectors/useIsGnosisSafeConnector.js.map +1 -1
  94. package/dist/hooks/connectors/useIsSafeThroughWalletConnect.d.ts +3 -1
  95. package/dist/hooks/connectors/useIsSafeThroughWalletConnect.d.ts.map +1 -1
  96. package/dist/hooks/connectors/useIsSafeThroughWalletConnect.js +55 -11
  97. package/dist/hooks/connectors/useIsSafeThroughWalletConnect.js.map +1 -1
  98. package/dist/hooks/otc/mutations/useFillOrder.js +2 -1
  99. package/dist/hooks/otc/mutations/useFillOrder.js.map +1 -1
  100. package/dist/hooks/otc/tradeFlow/useFillOtcOrderFlow.js +1 -0
  101. package/dist/hooks/otc/tradeFlow/useFillOtcOrderFlow.js.map +1 -1
  102. package/dist/hooks/otc/tradeFlow/useFillOtcOrderStep.d.ts.map +1 -1
  103. package/dist/hooks/otc/tradeFlow/useFillOtcOrderStep.js +7 -4
  104. package/dist/hooks/otc/tradeFlow/useFillOtcOrderStep.js.map +1 -1
  105. package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.d.ts +1 -13
  106. package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.d.ts.map +1 -1
  107. package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.js +1 -80
  108. package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.js.map +1 -1
  109. package/dist/hooks/swap/prices/delta/orders/utils.d.ts.map +1 -1
  110. package/dist/hooks/swap/prices/delta/orders/utils.js +1 -1
  111. package/dist/hooks/swap/prices/delta/orders/utils.js.map +1 -1
  112. package/dist/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.d.ts.map +1 -1
  113. package/dist/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.js +2 -1
  114. package/dist/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.js.map +1 -1
  115. package/dist/hooks/swap/prices/useSwapPrices.d.ts.map +1 -1
  116. package/dist/hooks/swap/prices/useSwapPrices.js +113 -98
  117. package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
  118. package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.d.ts +3 -1
  119. package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.d.ts.map +1 -1
  120. package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.js +22 -2
  121. package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.js.map +1 -1
  122. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +2 -3
  123. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
  124. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +14 -37
  125. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
  126. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts +2 -1
  127. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts.map +1 -1
  128. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js +14 -36
  129. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js.map +1 -1
  130. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.d.ts.map +1 -1
  131. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js +7 -4
  132. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js.map +1 -1
  133. package/dist/hooks/txs/queries/useAwaitTx.d.ts.map +1 -1
  134. package/dist/hooks/txs/queries/useAwaitTx.js +114 -20
  135. package/dist/hooks/txs/queries/useAwaitTx.js.map +1 -1
  136. package/dist/index.d.ts +1 -1
  137. package/dist/index.d.ts.map +1 -1
  138. package/dist/lib/constants/storage.d.ts +1 -1
  139. package/dist/lib/constants/storage.d.ts.map +1 -1
  140. package/dist/lib/constants/storage.js +3 -1
  141. package/dist/lib/constants/storage.js.map +1 -1
  142. package/dist/lib/constants/urls.js +2 -6
  143. package/dist/lib/constants/urls.js.map +1 -1
  144. package/dist/lib/utils/index.d.ts.map +1 -1
  145. package/dist/lib/utils/index.js.map +1 -1
  146. package/dist/lib/utils/toasts.d.ts +1 -1
  147. package/dist/lib/utils/toasts.d.ts.map +1 -1
  148. package/dist/lib/utils/toasts.js +5 -1
  149. package/dist/lib/utils/toasts.js.map +1 -1
  150. package/dist/lib/web3/wagmi/config.d.ts.map +1 -1
  151. package/dist/lib/web3/wagmi/config.js +1 -1
  152. package/dist/lib/web3/wagmi/config.js.map +1 -1
  153. package/dist/lib/web3/wagmi/external.d.ts +11 -3
  154. package/dist/lib/web3/wagmi/external.d.ts.map +1 -1
  155. package/dist/lib/web3/wagmi/external.js +28 -2
  156. package/dist/lib/web3/wagmi/external.js.map +1 -1
  157. package/dist/lib/web3/wagmi/isInIframe.d.ts +2 -0
  158. package/dist/lib/web3/wagmi/isInIframe.d.ts.map +1 -0
  159. package/dist/lib/web3/wagmi/isInIframe.js +4 -0
  160. package/dist/lib/web3/wagmi/isInIframe.js.map +1 -0
  161. package/dist/lib/web3/wagmi/isInsideSafeIframe.d.ts +0 -1
  162. package/dist/lib/web3/wagmi/isInsideSafeIframe.d.ts.map +1 -1
  163. package/dist/lib/web3/wagmi/isInsideSafeIframe.js +2 -2
  164. package/dist/lib/web3/wagmi/isInsideSafeIframe.js.map +1 -1
  165. package/dist/lib/web3/wagmi/switchChain.d.ts.map +1 -1
  166. package/dist/lib/web3/wagmi/switchChain.js +3 -3
  167. package/dist/lib/web3/wagmi/switchChain.js.map +1 -1
  168. package/dist/transactions/hash.d.ts +7 -0
  169. package/dist/transactions/hash.d.ts.map +1 -0
  170. package/dist/transactions/hash.js +34 -0
  171. package/dist/transactions/hash.js.map +1 -0
  172. package/dist/transactions/queries/ensureCallsStatus.d.ts.map +1 -1
  173. package/dist/transactions/queries/ensureCallsStatus.js +14 -3
  174. package/dist/transactions/queries/ensureCallsStatus.js.map +1 -1
  175. package/dist/transactions/queries/ensureTxReceipt.d.ts.map +1 -1
  176. package/dist/transactions/queries/ensureTxReceipt.js +48 -12
  177. package/dist/transactions/queries/ensureTxReceipt.js.map +1 -1
  178. package/dist/transactions/state/effects/finalize.d.ts +7 -1
  179. package/dist/transactions/state/effects/finalize.d.ts.map +1 -1
  180. package/dist/transactions/state/effects/finalize.js +53 -7
  181. package/dist/transactions/state/effects/finalize.js.map +1 -1
  182. package/dist/transactions/state/hooks/useActivateEffects.d.ts.map +1 -1
  183. package/dist/transactions/state/hooks/useActivateEffects.js +4 -2
  184. package/dist/transactions/state/hooks/useActivateEffects.js.map +1 -1
  185. package/dist/transactions/state/transactionsActionAtom.d.ts.map +1 -1
  186. package/dist/transactions/state/transactionsActionAtom.js +74 -18
  187. package/dist/transactions/state/transactionsActionAtom.js.map +1 -1
  188. package/dist/transactions/state/transactionsAtom.js +2 -2
  189. package/dist/transactions/state/transactionsAtom.js.map +1 -1
  190. package/dist/transactions/types.d.ts +33 -10
  191. package/dist/transactions/types.d.ts.map +1 -1
  192. package/dist/transactions/utils.d.ts +2 -1
  193. package/dist/transactions/utils.d.ts.map +1 -1
  194. package/dist/transactions/utils.js +7 -1
  195. package/dist/transactions/utils.js.map +1 -1
  196. package/package.json +4 -2
  197. package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.d.ts +0 -69
  198. package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.d.ts.map +0 -1
  199. package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.js +0 -192
  200. package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.js.map +0 -1
@@ -23,13 +23,12 @@ import { DEFAULT_DELTA_BRIDGE } from '../prices/delta/bridge/const.js';
23
23
  import { useLimitReceiverAddressValue } from '../../../core/limit/state/receiverAddressAtom.js';
24
24
  import { useChainMatches } from '../../useChainMatches.js';
25
25
  import { useSwitchChainWithGuard } from '../../useSwitchChainWithGuard.js';
26
- import { useDepositAndSubmitDeltaOrder } from './common/useDepositAndSubmitDeltaOrder.js';
27
- import { isETHaddress } from '../../../tokens/utils/eth.js';
28
26
 
29
27
  const limitOrderFlowType = "limitOrder";
30
28
  const LIMIT_ORDER_MUTATION_KEY = "runLimitOrderFlow";
31
29
  function useLimitOrderFlow({
32
- limitPrice
30
+ limitPrice,
31
+ preWrapETH
33
32
  }) {
34
33
  const logger = useLogger("LimitOrderFlow");
35
34
  const chainId = useChainId();
@@ -89,24 +88,14 @@ function useLimitOrderFlow({
89
88
  logger,
90
89
  viemClient: minClient
91
90
  });
92
- const {
93
- deltaOrderDeposit,
94
- reset: resetDepositAndSubmitDeltaOrder,
95
- depositAndSubmitDeltaOrder
96
- } = useDepositAndSubmitDeltaOrder({
97
- chainId,
98
- account,
99
- logger,
100
- viemClient: minClient
101
- });
102
91
  const limitOrderSubmission = {
103
- order: limitOrderCreateAndSubmit.order || deltaOrderPreSign.order || deltaOrderDeposit.order,
104
- isCreatingOrder: limitOrderCreateAndSubmit.isPending || deltaOrderPreSign.isCreatingOrder || deltaOrderDeposit.isCreatingOrder,
105
- isOrderSent: limitOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isOrderSent || deltaOrderDeposit.isOrderSent,
106
- isPending: limitOrderCreateAndSubmit.isPending || deltaOrderPreSign.isPending || deltaOrderDeposit.isPending,
107
- isError: limitOrderCreateAndSubmit.isError || deltaOrderPreSign.isError || deltaOrderDeposit.isError,
108
- isSuccess: limitOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isSuccess || deltaOrderDeposit.isSuccess,
109
- error: limitOrderCreateAndSubmit.error || deltaOrderPreSign.error || deltaOrderDeposit.error
92
+ order: limitOrderCreateAndSubmit.order || deltaOrderPreSign.order,
93
+ isCreatingOrder: limitOrderCreateAndSubmit.isPending || deltaOrderPreSign.isCreatingOrder,
94
+ isOrderSent: limitOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isOrderSent,
95
+ isPending: limitOrderCreateAndSubmit.isPending || deltaOrderPreSign.isPending,
96
+ isError: limitOrderCreateAndSubmit.isError || deltaOrderPreSign.isError,
97
+ isSuccess: limitOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isSuccess,
98
+ error: limitOrderCreateAndSubmit.error || deltaOrderPreSign.error
110
99
  };
111
100
  const watchOrderExecution = useWatchDeltaAuction({
112
101
  orderId: limitOrderSubmission.order?.id,
@@ -204,7 +193,6 @@ function useLimitOrderFlow({
204
193
  createOrderMut.reset();
205
194
  cancelOrderMut.reset();
206
195
  resetPreSignAndSubmitDeltaOrder();
207
- resetDepositAndSubmitDeltaOrder();
208
196
  assert(limitPrice, "Limit price data is not available");
209
197
  const abortController = new AbortController();
210
198
  currentAbortControllerRef.current = abortController;
@@ -212,16 +200,12 @@ function useLimitOrderFlow({
212
200
  let approveTxHash;
213
201
  let approveTxReceipt;
214
202
  const allowanceToSet = approval.allowanceToSet;
215
- const shouldDepositAndPreSign = (
216
- // @TODO [depositNativeAndPreSign] ensureDeltaEthBalance and compare with price.srcAmount to skip the deposit,
217
- // or deposit the difference between user dETH balance and price.srcAmount to avoid unnecessary deposits
218
- isETHaddress(limitPrice.srcTokenAddress)
219
- );
220
203
  const {
221
204
  shouldDoApprovalTxOrPermit: shouldDoApprovalTx,
222
205
  shouldPreSignBatch
223
206
  } = shouldApproveOrBatch({
224
207
  approval,
208
+ preWrapETH,
225
209
  signPermit: {
226
210
  isPermitSupported: false,
227
211
  isPermitReadyToSign: false
@@ -349,20 +333,15 @@ function useLimitOrderFlow({
349
333
  };
350
334
  }
351
335
  let orderFromAPI;
352
- if (shouldDepositAndPreSign) {
353
- orderFromAPI = await depositAndSubmitDeltaOrder({
354
- createDeltaOrderInput: createOrderInput,
355
- depositAmount: createOrderInput.orderInput.srcAmount,
356
- onTxSent
357
- });
358
- } else if (shouldPreSignBatch) {
336
+ if (!shouldPreSignBatch) {
337
+ orderFromAPI = await createOrderMut.mutateAsync(createOrderInput);
338
+ } else {
359
339
  orderFromAPI = await preSignAndSubmitDeltaOrder({
360
340
  createDeltaOrderInput: createOrderInput,
361
341
  approval,
342
+ preWrapETH,
362
343
  onTxSent
363
344
  });
364
- } else {
365
- orderFromAPI = await createOrderMut.mutateAsync(createOrderInput);
366
345
  }
367
346
  onLimitOrder?.({
368
347
  event: {
@@ -426,7 +405,6 @@ function useLimitOrderFlow({
426
405
  limitOrderMut.reset();
427
406
  cancelOrderMut.reset();
428
407
  resetPreSignAndSubmitDeltaOrder();
429
- resetDepositAndSubmitDeltaOrder();
430
408
  };
431
409
  const retryFlow = (options) => {
432
410
  reset();
@@ -1 +1 @@
1
- {"version":3,"file":"useLimitOrderFlow.js","sources":["../../../../src/hooks/swap/tradeFlow/useLimitOrderFlow.ts"],"sourcesContent":["import { useAccount, useChainId } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport { useEnsureTxReceipt } from \"@/hooks/txs/queries/useAwaitTx\";\nimport type { Address, Hash, TransactionReceipt } from \"viem\";\nimport { type SubmittedDeltaOrderFromAPI } from \"../prices/delta/queries/useDeltaOrders\";\nimport type { ApprovalFlowResult, SubmitTxResult } from \"./common/types\";\nimport {\n useCreateDeltaOrder,\n type CreateDeltaOrderInput,\n} from \"../prices/delta/mutations/useCreateDeltaOrder\";\nimport { useMinViemClient } from \"@/hooks/useMinViemClient\";\nimport { useMutation, useQueryClient } from \"@tanstack/react-query\";\nimport { useRef } from \"react\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { UserCancelledError } from \"./common/errors\";\nimport type {\n CallsSentObject,\n TxSentObject,\n} from \"@/lib/utils/transactionHandlers\";\nimport { useApproveOrPermit } from \"./common/useApproveOrPermit\";\n\nimport { useLogger } from \"@/core/logger\";\n\nimport { usePartner } from \"@/hooks/usePartner\";\nimport { useLimitDeadline } from \"@/core/limit/state/deadlineAtom\";\nimport {\n useCancelDeltaOrderEventCallbacks,\n useCancelDeltaOrders,\n} from \"../prices/delta/mutations/useCancelDeltaOrders\";\nimport { getOverallOrderStatus } from \"../prices/delta/orders/utils\";\nimport {\n deltaAuctionPollingQueryKey,\n useWatchDeltaAuction,\n type MaybeVeloraDeltaAuction,\n} from \"../prices/delta/queries/useWatchDeltaOrder\";\nimport { useWidgetEvents } from \"@/core/state/widgetEventsAtom\";\nimport {\n shouldApproveOrBatch,\n usePreSignAndSubmitDeltaOrder,\n} from \"./common/usePreSignAndSubmitDeltaOrder\";\nimport type { BridgePrice, DeltaOrderApiResponse } from \"@velora-dex/sdk\";\nimport { DEFAULT_DELTA_BRIDGE } from \"../prices/delta/bridge/const\";\nimport { useLimitReceiverAddressValue } from \"@/core/limit/state/receiverAddressAtom\";\nimport { useChainMatches } from \"@/hooks/useChainMatches\";\nimport { useSwitchChainWithGuard } from \"@/hooks/useSwitchChainWithGuard\";\nimport { useDepositAndSubmitDeltaOrder } from \"./common/useDepositAndSubmitDeltaOrder\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\n\nconst limitOrderFlowType = \"limitOrder\";\n\nexport type UserDefinedLimitPrice = {\n srcTokenAddress: string;\n destTokenAddress: string;\n srcAmount: string;\n destAmount: string;\n bridgePrice?: BridgePrice;\n};\n\nexport type UseLimitOrderFlowInput = {\n limitPrice?: UserDefinedLimitPrice;\n};\n\nexport type SubmitLimitOrderResult = {\n tradeFlowType: typeof limitOrderFlowType;\n approve: SubmitTxResult;\n limitOrder: {\n sentOrder: SubmittedDeltaOrderFromAPI;\n };\n limitPrice: UserDefinedLimitPrice;\n account: Address;\n receiverAddress?: Address;\n};\n\ntype OnTxSent = (txSent: TxSentObject | CallsSentObject) => void;\n\ntype RunLimitOrderOptions = {\n onTxSent?: OnTxSent;\n};\n\nexport type UseLimitOrderFlowResult = {\n tradeFlowType: typeof limitOrderFlowType;\n chainId: SupportedChainId;\n runLimitOrderFlow: (\n options?: RunLimitOrderOptions\n ) => Promise<SubmitLimitOrderResult>;\n reset: () => void; // reset on Error to retry\n cancelFlow: () => void; // cancel flow\n retryFlow: (\n options?: RunLimitOrderOptions\n ) => Promise<SubmitLimitOrderResult>; // reset and retry flow\n cancelLimitOrder: () => void;\n approval: ApprovalFlowResult;\n limitOrderSubmission: {\n order?: SubmittedDeltaOrderFromAPI;\n isCreatingOrder: boolean;\n isOrderSent: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n limitOrderExecution: {\n sentOrder?: SubmittedDeltaOrderFromAPI;\n lastOrderState?: MaybeVeloraDeltaAuction;\n isOrderPending: boolean;\n isOrderExecuting: boolean;\n isOrderExecuted: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n limitOrderCancelation: {\n isCancelingOrder: boolean;\n isOrderCanceled: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n result?: SubmitLimitOrderResult;\n limitPrice?: UserDefinedLimitPrice;\n};\n\nconst LIMIT_ORDER_MUTATION_KEY = \"runLimitOrderFlow\";\n\nexport function useLimitOrderFlow({\n limitPrice,\n}: UseLimitOrderFlowInput): UseLimitOrderFlowResult {\n const logger = useLogger(\"LimitOrderFlow\");\n const chainId = useChainId();\n const queryClient = useQueryClient();\n\n /* Inside useApproveOrPermit:\n 1. Get allowance for tokenFrom \n 2.1. submit Approve tx if necessary \n\n 3. await Approve tx\n */\n\n const {\n approval,\n approveTxMut,\n events: approveOrPermitEvents,\n } = useApproveOrPermit({\n srcToken: limitPrice?.srcTokenAddress,\n srcAmount: limitPrice?.srcAmount,\n spenderContractType: \"ParaswapDelta\",\n swapSide: \"SELL\",\n tradeMode: \"limit\",\n chainId,\n });\n\n /* 4.1. Build and Submit Delta Order */\n\n const { address: account } = useAccount();\n\n const { minClient } = useMinViemClient({\n chainId,\n account,\n });\n\n const createOrderMut = useCreateDeltaOrder({\n chainId,\n account,\n client: minClient,\n mutationOptions: {\n onSuccess: (order) => {\n logger.log(\"Create Limit Order success\", order);\n },\n onError: (error) => {\n logger.error(\"Create Limit Order error\", error);\n },\n },\n });\n\n const limitOrderCreateAndSubmit: UseLimitOrderFlowResult[\"limitOrderSubmission\"] =\n {\n order: createOrderMut.data,\n isCreatingOrder: createOrderMut.isPending,\n isOrderSent: createOrderMut.isSuccess,\n isPending: createOrderMut.isPending,\n isError: createOrderMut.isError,\n isSuccess: createOrderMut.isSuccess,\n error: createOrderMut.error,\n };\n\n /* 4.2.\n 1. submit Batch tx (Approve + Delta pre-sign)\n 2. await Batch tx\n 3. post Pre-signed Order\n */\n\n const {\n deltaOrderPreSign,\n canBatchTxs,\n isConnectedToSafe,\n preSignAndSubmitDeltaOrder,\n reset: resetPreSignAndSubmitDeltaOrder,\n } = usePreSignAndSubmitDeltaOrder({\n chainId,\n account,\n logger,\n viemClient: minClient,\n });\n\n const {\n deltaOrderDeposit,\n reset: resetDepositAndSubmitDeltaOrder,\n depositAndSubmitDeltaOrder: depositAndSubmitDeltaOrder,\n } = useDepositAndSubmitDeltaOrder({\n chainId,\n account,\n logger,\n viemClient: minClient,\n });\n\n /* final Delta Order submission for step 4 */\n const limitOrderSubmission: UseLimitOrderFlowResult[\"limitOrderSubmission\"] =\n {\n order:\n limitOrderCreateAndSubmit.order ||\n deltaOrderPreSign.order ||\n deltaOrderDeposit.order,\n isCreatingOrder:\n limitOrderCreateAndSubmit.isPending ||\n deltaOrderPreSign.isCreatingOrder ||\n deltaOrderDeposit.isCreatingOrder,\n isOrderSent:\n limitOrderCreateAndSubmit.isSuccess ||\n deltaOrderPreSign.isOrderSent ||\n deltaOrderDeposit.isOrderSent,\n isPending:\n limitOrderCreateAndSubmit.isPending ||\n deltaOrderPreSign.isPending ||\n deltaOrderDeposit.isPending,\n isError:\n limitOrderCreateAndSubmit.isError ||\n deltaOrderPreSign.isError ||\n deltaOrderDeposit.isError,\n isSuccess:\n limitOrderCreateAndSubmit.isSuccess ||\n deltaOrderPreSign.isSuccess ||\n deltaOrderDeposit.isSuccess,\n error:\n limitOrderCreateAndSubmit.error ||\n deltaOrderPreSign.error ||\n deltaOrderDeposit.error,\n };\n\n const watchOrderExecution = useWatchDeltaAuction({\n orderId: limitOrderSubmission.order?.id,\n onAuctionSuccess: (order) => {\n logger.log(\"Limit Order success\", order);\n },\n onAuctionFailure: (order) => {\n logger.log(\"Limit Order failure\", order);\n },\n onUpdatedAuction: (order) => {\n logger.log(\"Limit Order updated\", order);\n },\n onTimeoutGettingOrder: (order) => {\n logger.log(\"Limit Order timeout\", order);\n },\n });\n\n const orderStatus = watchOrderExecution.data\n ? getOverallOrderStatus(watchOrderExecution.data)\n : null;\n\n // refetching stops after one minute of not finding an order (order==null)\n const neverFetchedFinishedOrder =\n watchOrderExecution.data === null && watchOrderExecution.isSuccess;\n\n const limitOrderExecution: UseLimitOrderFlowResult[\"limitOrderExecution\"] = {\n sentOrder: createOrderMut.data,\n lastOrderState: watchOrderExecution.data,\n isOrderPending: orderStatus === \"pending\",\n isOrderExecuting: orderStatus === \"executing\",\n isOrderExecuted: orderStatus === \"confirmed\",\n isPending:\n watchOrderExecution.isLoading ||\n watchOrderExecution.isRefetching ||\n orderStatus === \"pending\" ||\n orderStatus === \"executing\",\n isError:\n watchOrderExecution.isError ||\n orderStatus === \"failed\" ||\n neverFetchedFinishedOrder,\n isSuccess: orderStatus === \"confirmed\",\n error: watchOrderExecution.error,\n };\n\n const cancelOrderEvents = useCancelDeltaOrderEventCallbacks(\n createOrderMut.data\n );\n\n const orderChainId = createOrderMut.data?.chainId as\n | SupportedChainId\n | undefined;\n const { forcedChainMatchesWalletChain } = useChainMatches(orderChainId);\n const { mutateAsync: switchChain } = useSwitchChainWithGuard();\n\n const cancelOrderMut = useCancelDeltaOrders({\n chainId,\n account,\n client: minClient,\n mutationOptions: {\n onMutate: async (variables) => {\n assert(orderChainId, \"orderChainId is undefined\");\n if (!forcedChainMatchesWalletChain) {\n await switchChain({\n chainId: orderChainId,\n });\n }\n cancelOrderEvents.onMutate?.(variables);\n },\n onSuccess: (successResponse, vars) => {\n logger.log(\"Cancel Limit Order success\", successResponse);\n if (limitOrderExecution.sentOrder?.id) {\n // refetch the order to get updated status\n queryClient.invalidateQueries({\n queryKey: deltaAuctionPollingQueryKey({\n orderId: limitOrderExecution.sentOrder.id,\n }),\n });\n }\n cancelOrderEvents.onSuccess?.(successResponse, vars);\n },\n onError: (error, vars) => {\n logger.error(\"Cancel Limit Order error\", error);\n cancelOrderEvents.onError?.(error, vars);\n },\n },\n });\n\n const limitOrderCancelation: UseLimitOrderFlowResult[\"limitOrderCancelation\"] =\n {\n isCancelingOrder: cancelOrderMut.isPending,\n isOrderCanceled:\n cancelOrderMut.isSuccess && !!cancelOrderMut.data?.success,\n isPending: cancelOrderMut.isPending,\n isError: cancelOrderMut.isError,\n isSuccess: cancelOrderMut.isSuccess,\n error: cancelOrderMut.error,\n };\n\n const ensureTxReceipt = useEnsureTxReceipt();\n\n const currentAbortControllerRef = useRef<AbortController | null>(null);\n\n const cancelFlow = () => {\n currentAbortControllerRef.current?.abort(new UserCancelledError());\n currentAbortControllerRef.current = null;\n };\n\n const { partner } = usePartner();\n const receiverAddress = useLimitReceiverAddressValue();\n const deadline = useLimitDeadline();\n\n const { onLimitOrder } = useWidgetEvents();\n\n const submitLimitOrder = async ({\n onTxSent,\n }: RunLimitOrderOptions = {}): Promise<SubmitLimitOrderResult> => {\n // reset all mutations except the current one,\n // otherwise we'll have previous data (txs) as mutation results\n approveTxMut.reset();\n createOrderMut.reset();\n cancelOrderMut.reset();\n resetPreSignAndSubmitDeltaOrder();\n resetDepositAndSubmitDeltaOrder();\n\n // no sense in starting flow without a price data,\n // Otherwise this flow will be stopped by disabling ReviewOrder button in the first place\n assert(limitPrice, \"Limit price data is not available\");\n\n const abortController = new AbortController();\n currentAbortControllerRef.current = abortController;\n\n const signal = abortController.signal;\n\n let approveTxHash: Hash | undefined;\n let approveTxReceipt: TransactionReceipt | undefined;\n\n // at this point this is the syncronously available price\n const allowanceToSet = approval.allowanceToSet;\n\n const shouldDepositAndPreSign =\n // @TODO [depositNativeAndPreSign] ensureDeltaEthBalance and compare with price.srcAmount to skip the deposit,\n // or deposit the difference between user dETH balance and price.srcAmount to avoid unnecessary deposits\n isETHaddress(limitPrice.srcTokenAddress);\n\n /* \n if connected to Safe, or needs to approve a token with a tx, or needs to pre-wrap ETH\n and can batch txs, then pre-sign the batch;\n that way Safe does only one action (wrapETH?+Approve+setPreSignature batch tx)\n and a wallet that would otherwise potentially wrap ETH and then Approve Token (tx, no Permit for Limit Orders)\n and then sign Order, basically has to make at least one tx, does only one action as well.\n */\n const {\n shouldDoApprovalTxOrPermit: shouldDoApprovalTx,\n shouldPreSignBatch,\n } = shouldApproveOrBatch({\n approval,\n signPermit: {\n isPermitSupported: false,\n isPermitReadyToSign: false,\n },\n canBatchTxs,\n isConnectedToSafe,\n });\n\n try {\n if (shouldDoApprovalTx && allowanceToSet) {\n try {\n approveOrPermitEvents.onApproveTx.request({ allowanceToSet });\n\n approveTxHash = await approveTxMut.approveAsync({\n allowanceData: {\n allowanceToSet,\n },\n });\n\n approveOrPermitEvents.onApproveTx.sent({\n allowanceToSet,\n txHash: approveTxHash,\n });\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n const approveTxReceiptPromise = ensureTxReceipt({\n hash: approveTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\"onReplaced:approveTx\", approveTxHash, data);\n },\n });\n\n if (onTxSent) {\n onTxSent({\n chainId,\n action: \"approve\",\n transactionHash: approveTxHash,\n receiptPromise: approveTxReceiptPromise,\n transactionSpecificData: {\n action: \"approve\",\n approvedAmount: allowanceToSet,\n tokenAddress: approval.token as Address,\n spenderAddress: approval.spender as Address,\n },\n });\n }\n\n approveTxReceipt = await approveTxReceiptPromise;\n\n approveOrPermitEvents.onApproveTx.confirmed({\n allowanceToSet,\n txHash: approveTxHash,\n txReceipt: approveTxReceipt,\n });\n\n logger.log(\"~ approveTx ~ receipt:\", approveTxReceipt);\n // @TODO check if we need to see if receipt.status === \"reverted\" and throw,\n // or if waitForTransactionReceipt already throws on such receipts\n } catch (error) {\n approveOrPermitEvents.onApproveTx.failed({\n allowanceToSet,\n error: error as Error,\n txHash: approveTxHash, // won't necessarily be available\n });\n throw error;\n }\n }\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n assert(account, \"Account is not connected\");\n\n assert(limitPrice, \"limitPrice is not available\");\n\n onLimitOrder?.({\n event: {\n name: \"LimitOrder:request\",\n params: {\n price: limitPrice,\n },\n },\n });\n const bridgePrice = limitPrice.bridgePrice;\n const destChainId = bridgePrice?.bridge.destinationChainId;\n\n let createOrderInput: CreateDeltaOrderInput;\n if (bridgePrice) {\n // crosschain order\n createOrderInput = {\n signal,\n type: \"LIMIT\",\n orderInput: {\n owner: account,\n beneficiary: receiverAddress,\n srcToken: limitPrice.srcTokenAddress,\n destToken: limitPrice.destTokenAddress,\n srcAmount: limitPrice.srcAmount,\n destAmount: limitPrice.destAmount,\n destChainId,\n deltaPrice: {\n ...bridgePrice,\n bridge: {\n ...bridgePrice.bridge,\n protocolSelector: DEFAULT_DELTA_BRIDGE.protocolSelector,\n protocolData: DEFAULT_DELTA_BRIDGE.protocolData,\n },\n partner,\n partnerFee: 0,\n },\n partner,\n deadline,\n },\n };\n } else {\n // singlechain order\n createOrderInput = {\n signal,\n type: \"LIMIT\",\n orderInput: {\n owner: account,\n beneficiary: receiverAddress,\n srcToken: limitPrice.srcTokenAddress,\n srcAmount: limitPrice.srcAmount,\n destToken: limitPrice.destTokenAddress,\n destAmount: limitPrice.destAmount,\n destChainId,\n deltaPrice: {\n destToken: limitPrice.destTokenAddress,\n destAmount: limitPrice.destAmount,\n srcAmount: limitPrice.srcAmount,\n bridge: DEFAULT_DELTA_BRIDGE,\n partner,\n partnerFee: 0,\n },\n partner,\n deadline,\n },\n };\n }\n\n let orderFromAPI: DeltaOrderApiResponse;\n\n if (shouldDepositAndPreSign) {\n orderFromAPI = await depositAndSubmitDeltaOrder({\n createDeltaOrderInput: createOrderInput,\n depositAmount: createOrderInput.orderInput.srcAmount,\n onTxSent,\n });\n } else if (shouldPreSignBatch) {\n // creating signing and POSTing the Order all together in one mutation\n // prepare Order for pre-signing and POSTing:\n // 1. builds the order\n // 2. hashes the built order\n // 3. construct DeltaContract.setPreSignature(orderHash, true) tx calldata\n\n orderFromAPI = await preSignAndSubmitDeltaOrder({\n createDeltaOrderInput: createOrderInput,\n approval,\n onTxSent,\n });\n } else {\n orderFromAPI = await createOrderMut.mutateAsync(createOrderInput);\n }\n\n onLimitOrder?.({\n event: {\n name: \"LimitOrder:sent\",\n params: {\n price: limitPrice,\n order: orderFromAPI,\n },\n },\n });\n\n return {\n tradeFlowType: limitOrderFlowType,\n approve: {\n txHash: approveTxHash,\n receipt: approveTxReceipt,\n },\n limitOrder: {\n sentOrder: orderFromAPI,\n },\n limitPrice: limitPrice,\n account,\n receiverAddress,\n };\n } catch (error) {\n logger.error(\"Order submission error\", error);\n onLimitOrder?.({\n event: {\n name: \"LimitOrder:failed\",\n params: {\n price: limitPrice,\n error: error as Error,\n },\n },\n });\n throw error;\n }\n };\n\n const cancelLimitOrder = () => {\n assert(createOrderMut.data, \"No order to cancel\");\n cancelOrderMut.mutate({\n orderIds: [createOrderMut.data.id],\n });\n };\n\n const limitOrderMut = useMutation({\n mutationFn: submitLimitOrder,\n mutationKey: [LIMIT_ORDER_MUTATION_KEY],\n onSuccess: (data) => {\n logger.log(\"Order submission success\", data);\n },\n onError: (error) => {\n logger.error(\"Order submission error\", error);\n },\n onSettled: () => {\n logger.log(\"Order submission settled\");\n },\n });\n\n const runLimitOrderFlow = limitOrderMut.mutateAsync;\n\n const reset = () => {\n approveTxMut.reset();\n createOrderMut.reset();\n limitOrderMut.reset();\n cancelOrderMut.reset();\n resetPreSignAndSubmitDeltaOrder();\n resetDepositAndSubmitDeltaOrder();\n };\n\n const retryFlow = (\n options?: RunLimitOrderOptions\n ): Promise<SubmitLimitOrderResult> => {\n reset();\n return runLimitOrderFlow(options);\n };\n\n /* 5. return result */\n return {\n tradeFlowType: limitOrderFlowType,\n chainId,\n runLimitOrderFlow,\n reset,\n cancelFlow,\n retryFlow,\n cancelLimitOrder,\n approval,\n limitOrderSubmission,\n limitOrderExecution,\n limitOrderCancelation,\n // deltaOrderMut includes all steps' queries and mutations and returns more precise errors (including cancellation)\n isPending: limitOrderMut.isPending,\n isSuccess: limitOrderSubmission.isSuccess, // approval is an optional step\n isError: limitOrderMut.isError,\n error: limitOrderMut.error,\n result: limitOrderMut.data,\n limitPrice,\n };\n}\n"],"names":["limitOrderFlowType","LIMIT_ORDER_MUTATION_KEY","useLimitOrderFlow","limitPrice","logger","useLogger","chainId","useChainId","queryClient","useQueryClient","approval","approveTxMut","events","approveOrPermitEvents","useApproveOrPermit","srcToken","srcTokenAddress","srcAmount","spenderContractType","swapSide","tradeMode","address","account","useAccount","minClient","useMinViemClient","createOrderMut","useCreateDeltaOrder","client","mutationOptions","onSuccess","order","log","onError","error","limitOrderCreateAndSubmit","data","isCreatingOrder","isPending","isOrderSent","isSuccess","isError","deltaOrderPreSign","canBatchTxs","isConnectedToSafe","preSignAndSubmitDeltaOrder","reset","resetPreSignAndSubmitDeltaOrder","usePreSignAndSubmitDeltaOrder","viemClient","deltaOrderDeposit","resetDepositAndSubmitDeltaOrder","depositAndSubmitDeltaOrder","useDepositAndSubmitDeltaOrder","limitOrderSubmission","watchOrderExecution","useWatchDeltaAuction","orderId","id","onAuctionSuccess","onAuctionFailure","onUpdatedAuction","onTimeoutGettingOrder","orderStatus","getOverallOrderStatus","neverFetchedFinishedOrder","limitOrderExecution","sentOrder","lastOrderState","isOrderPending","isOrderExecuting","isOrderExecuted","isLoading","isRefetching","cancelOrderEvents","useCancelDeltaOrderEventCallbacks","orderChainId","forcedChainMatchesWalletChain","useChainMatches","mutateAsync","switchChain","useSwitchChainWithGuard","cancelOrderMut","useCancelDeltaOrders","onMutate","variables","assert","successResponse","vars","invalidateQueries","queryKey","deltaAuctionPollingQueryKey","limitOrderCancelation","isCancelingOrder","isOrderCanceled","success","ensureTxReceipt","useEnsureTxReceipt","currentAbortControllerRef","useRef","cancelFlow","current","abort","UserCancelledError","partner","usePartner","receiverAddress","useLimitReceiverAddressValue","deadline","useLimitDeadline","onLimitOrder","useWidgetEvents","submitLimitOrder","onTxSent","abortController","AbortController","signal","approveTxHash","approveTxReceipt","allowanceToSet","shouldDepositAndPreSign","isETHaddress","shouldDoApprovalTxOrPermit","shouldDoApprovalTx","shouldPreSignBatch","shouldApproveOrBatch","signPermit","isPermitSupported","isPermitReadyToSign","onApproveTx","request","approveAsync","allowanceData","sent","txHash","throwIfAborted","approveTxReceiptPromise","hash","onReplaced","action","transactionHash","receiptPromise","transactionSpecificData","approvedAmount","tokenAddress","token","spenderAddress","spender","confirmed","txReceipt","failed","event","name","params","price","bridgePrice","destChainId","bridge","destinationChainId","createOrderInput","type","orderInput","owner","beneficiary","destToken","destTokenAddress","destAmount","deltaPrice","protocolSelector","DEFAULT_DELTA_BRIDGE","protocolData","partnerFee","orderFromAPI","createDeltaOrderInput","depositAmount","tradeFlowType","approve","receipt","limitOrder","cancelLimitOrder","mutate","orderIds","limitOrderMut","useMutation","mutationFn","mutationKey","onSettled","runLimitOrderFlow","retryFlow","options","result"],"mappings":"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"}
1
+ {"version":3,"file":"useLimitOrderFlow.js","sources":["../../../../src/hooks/swap/tradeFlow/useLimitOrderFlow.ts"],"sourcesContent":["import { useAccount, useChainId } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport { useEnsureTxReceipt } from \"@/hooks/txs/queries/useAwaitTx\";\nimport type { Address, Hash, TransactionReceipt } from \"viem\";\nimport { type SubmittedDeltaOrderFromAPI } from \"../prices/delta/queries/useDeltaOrders\";\nimport type { ApprovalFlowResult, SubmitTxResult } from \"./common/types\";\nimport {\n useCreateDeltaOrder,\n type CreateDeltaOrderInput,\n} from \"../prices/delta/mutations/useCreateDeltaOrder\";\nimport { useMinViemClient } from \"@/hooks/useMinViemClient\";\nimport { useMutation, useQueryClient } from \"@tanstack/react-query\";\nimport { useRef } from \"react\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { UserCancelledError } from \"./common/errors\";\nimport type {\n CallsSentObject,\n TxSentObject,\n} from \"@/lib/utils/transactionHandlers\";\nimport { useApproveOrPermit } from \"./common/useApproveOrPermit\";\n\nimport { useLogger } from \"@/core/logger\";\n\nimport { usePartner } from \"@/hooks/usePartner\";\nimport { useLimitDeadline } from \"@/core/limit/state/deadlineAtom\";\nimport {\n useCancelDeltaOrderEventCallbacks,\n useCancelDeltaOrders,\n} from \"../prices/delta/mutations/useCancelDeltaOrders\";\nimport { getOverallOrderStatus } from \"../prices/delta/orders/utils\";\nimport {\n deltaAuctionPollingQueryKey,\n useWatchDeltaAuction,\n type MaybeVeloraDeltaAuction,\n} from \"../prices/delta/queries/useWatchDeltaOrder\";\nimport { useWidgetEvents } from \"@/core/state/widgetEventsAtom\";\nimport {\n shouldApproveOrBatch,\n usePreSignAndSubmitDeltaOrder,\n} from \"./common/usePreSignAndSubmitDeltaOrder\";\nimport type { BridgePrice, DeltaOrderApiResponse } from \"@velora-dex/sdk\";\nimport { DEFAULT_DELTA_BRIDGE } from \"../prices/delta/bridge/const\";\nimport { useLimitReceiverAddressValue } from \"@/core/limit/state/receiverAddressAtom\";\nimport { useChainMatches } from \"@/hooks/useChainMatches\";\nimport { useSwitchChainWithGuard } from \"@/hooks/useSwitchChainWithGuard\";\n\nconst limitOrderFlowType = \"limitOrder\";\n\nexport type UserDefinedLimitPrice = {\n srcTokenAddress: string;\n destTokenAddress: string;\n srcAmount: string;\n destAmount: string;\n bridgePrice?: BridgePrice;\n};\n\nexport type UseLimitOrderFlowInput = {\n limitPrice?: UserDefinedLimitPrice;\n preWrapETH?: boolean;\n};\n\nexport type SubmitLimitOrderResult = {\n tradeFlowType: typeof limitOrderFlowType;\n approve: SubmitTxResult;\n limitOrder: {\n sentOrder: SubmittedDeltaOrderFromAPI;\n };\n limitPrice: UserDefinedLimitPrice;\n account: Address;\n receiverAddress?: Address;\n};\n\ntype OnTxSent = (txSent: TxSentObject | CallsSentObject) => void;\n\ntype RunLimitOrderOptions = {\n onTxSent?: OnTxSent;\n};\n\nexport type UseLimitOrderFlowResult = {\n tradeFlowType: typeof limitOrderFlowType;\n chainId: SupportedChainId;\n runLimitOrderFlow: (\n options?: RunLimitOrderOptions\n ) => Promise<SubmitLimitOrderResult>;\n reset: () => void; // reset on Error to retry\n cancelFlow: () => void; // cancel flow\n retryFlow: (\n options?: RunLimitOrderOptions\n ) => Promise<SubmitLimitOrderResult>; // reset and retry flow\n cancelLimitOrder: () => void;\n approval: ApprovalFlowResult;\n limitOrderSubmission: {\n order?: SubmittedDeltaOrderFromAPI;\n isCreatingOrder: boolean;\n isOrderSent: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n limitOrderExecution: {\n sentOrder?: SubmittedDeltaOrderFromAPI;\n lastOrderState?: MaybeVeloraDeltaAuction;\n isOrderPending: boolean;\n isOrderExecuting: boolean;\n isOrderExecuted: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n limitOrderCancelation: {\n isCancelingOrder: boolean;\n isOrderCanceled: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n result?: SubmitLimitOrderResult;\n limitPrice?: UserDefinedLimitPrice;\n};\n\nconst LIMIT_ORDER_MUTATION_KEY = \"runLimitOrderFlow\";\n\nexport function useLimitOrderFlow({\n limitPrice,\n preWrapETH,\n}: UseLimitOrderFlowInput): UseLimitOrderFlowResult {\n const logger = useLogger(\"LimitOrderFlow\");\n const chainId = useChainId();\n const queryClient = useQueryClient();\n\n /* Inside useApproveOrPermit:\n 1. Get allowance for tokenFrom \n 2.1. submit Approve tx if necessary \n\n 3. await Approve tx\n */\n\n const {\n approval,\n approveTxMut,\n events: approveOrPermitEvents,\n } = useApproveOrPermit({\n srcToken: limitPrice?.srcTokenAddress,\n srcAmount: limitPrice?.srcAmount,\n spenderContractType: \"ParaswapDelta\",\n swapSide: \"SELL\",\n tradeMode: \"limit\",\n chainId,\n });\n\n /* 4.1. Build and Submit Delta Order */\n\n const { address: account } = useAccount();\n\n const { minClient } = useMinViemClient({\n chainId,\n account,\n });\n\n const createOrderMut = useCreateDeltaOrder({\n chainId,\n account,\n client: minClient,\n mutationOptions: {\n onSuccess: (order) => {\n logger.log(\"Create Limit Order success\", order);\n },\n onError: (error) => {\n logger.error(\"Create Limit Order error\", error);\n },\n },\n });\n\n const limitOrderCreateAndSubmit: UseLimitOrderFlowResult[\"limitOrderSubmission\"] =\n {\n order: createOrderMut.data,\n isCreatingOrder: createOrderMut.isPending,\n isOrderSent: createOrderMut.isSuccess,\n isPending: createOrderMut.isPending,\n isError: createOrderMut.isError,\n isSuccess: createOrderMut.isSuccess,\n error: createOrderMut.error,\n };\n\n /* 4.2.\n 1. submit Batch tx (Approve + Delta pre-sign)\n 2. await Batch tx\n 3. post Pre-signed Order\n */\n\n const {\n deltaOrderPreSign,\n canBatchTxs,\n isConnectedToSafe,\n preSignAndSubmitDeltaOrder,\n reset: resetPreSignAndSubmitDeltaOrder,\n } = usePreSignAndSubmitDeltaOrder({\n chainId,\n account,\n logger,\n viemClient: minClient,\n });\n\n /* final Delta Order submission for step 4 */\n const limitOrderSubmission: UseLimitOrderFlowResult[\"limitOrderSubmission\"] =\n {\n order: limitOrderCreateAndSubmit.order || deltaOrderPreSign.order,\n isCreatingOrder:\n limitOrderCreateAndSubmit.isPending ||\n deltaOrderPreSign.isCreatingOrder,\n isOrderSent:\n limitOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isOrderSent,\n isPending:\n limitOrderCreateAndSubmit.isPending || deltaOrderPreSign.isPending,\n isError: limitOrderCreateAndSubmit.isError || deltaOrderPreSign.isError,\n isSuccess:\n limitOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isSuccess,\n error: limitOrderCreateAndSubmit.error || deltaOrderPreSign.error,\n };\n\n const watchOrderExecution = useWatchDeltaAuction({\n orderId: limitOrderSubmission.order?.id,\n onAuctionSuccess: (order) => {\n logger.log(\"Limit Order success\", order);\n },\n onAuctionFailure: (order) => {\n logger.log(\"Limit Order failure\", order);\n },\n onUpdatedAuction: (order) => {\n logger.log(\"Limit Order updated\", order);\n },\n onTimeoutGettingOrder: (order) => {\n logger.log(\"Limit Order timeout\", order);\n },\n });\n\n const orderStatus = watchOrderExecution.data\n ? getOverallOrderStatus(watchOrderExecution.data)\n : null;\n\n // refetching stops after one minute of not finding an order (order==null)\n const neverFetchedFinishedOrder =\n watchOrderExecution.data === null && watchOrderExecution.isSuccess;\n\n const limitOrderExecution: UseLimitOrderFlowResult[\"limitOrderExecution\"] = {\n sentOrder: createOrderMut.data,\n lastOrderState: watchOrderExecution.data,\n isOrderPending: orderStatus === \"pending\",\n isOrderExecuting: orderStatus === \"executing\",\n isOrderExecuted: orderStatus === \"confirmed\",\n isPending:\n watchOrderExecution.isLoading ||\n watchOrderExecution.isRefetching ||\n orderStatus === \"pending\" ||\n orderStatus === \"executing\",\n isError:\n watchOrderExecution.isError ||\n orderStatus === \"failed\" ||\n neverFetchedFinishedOrder,\n isSuccess: orderStatus === \"confirmed\",\n error: watchOrderExecution.error,\n };\n\n const cancelOrderEvents = useCancelDeltaOrderEventCallbacks(\n createOrderMut.data\n );\n\n const orderChainId = createOrderMut.data?.chainId as\n | SupportedChainId\n | undefined;\n const { forcedChainMatchesWalletChain } = useChainMatches(orderChainId);\n const { mutateAsync: switchChain } = useSwitchChainWithGuard();\n\n const cancelOrderMut = useCancelDeltaOrders({\n chainId,\n account,\n client: minClient,\n mutationOptions: {\n onMutate: async (variables) => {\n assert(orderChainId, \"orderChainId is undefined\");\n if (!forcedChainMatchesWalletChain) {\n await switchChain({\n chainId: orderChainId,\n });\n }\n cancelOrderEvents.onMutate?.(variables);\n },\n onSuccess: (successResponse, vars) => {\n logger.log(\"Cancel Limit Order success\", successResponse);\n if (limitOrderExecution.sentOrder?.id) {\n // refetch the order to get updated status\n queryClient.invalidateQueries({\n queryKey: deltaAuctionPollingQueryKey({\n orderId: limitOrderExecution.sentOrder.id,\n }),\n });\n }\n cancelOrderEvents.onSuccess?.(successResponse, vars);\n },\n onError: (error, vars) => {\n logger.error(\"Cancel Limit Order error\", error);\n cancelOrderEvents.onError?.(error, vars);\n },\n },\n });\n\n const limitOrderCancelation: UseLimitOrderFlowResult[\"limitOrderCancelation\"] =\n {\n isCancelingOrder: cancelOrderMut.isPending,\n isOrderCanceled:\n cancelOrderMut.isSuccess && !!cancelOrderMut.data?.success,\n isPending: cancelOrderMut.isPending,\n isError: cancelOrderMut.isError,\n isSuccess: cancelOrderMut.isSuccess,\n error: cancelOrderMut.error,\n };\n\n const ensureTxReceipt = useEnsureTxReceipt();\n\n const currentAbortControllerRef = useRef<AbortController | null>(null);\n\n const cancelFlow = () => {\n currentAbortControllerRef.current?.abort(new UserCancelledError());\n currentAbortControllerRef.current = null;\n };\n\n const { partner } = usePartner();\n const receiverAddress = useLimitReceiverAddressValue();\n const deadline = useLimitDeadline();\n\n const { onLimitOrder } = useWidgetEvents();\n\n const submitLimitOrder = async ({\n onTxSent,\n }: RunLimitOrderOptions = {}): Promise<SubmitLimitOrderResult> => {\n // reset all mutations except the current one,\n // otherwise we'll have previous data (txs) as mutation results\n approveTxMut.reset();\n createOrderMut.reset();\n cancelOrderMut.reset();\n resetPreSignAndSubmitDeltaOrder();\n\n // no sense in starting flow without a price data,\n // Otherwise this flow will be stopped by disabling ReviewOrder button in the first place\n assert(limitPrice, \"Limit price data is not available\");\n\n const abortController = new AbortController();\n currentAbortControllerRef.current = abortController;\n\n const signal = abortController.signal;\n\n let approveTxHash: Hash | undefined;\n let approveTxReceipt: TransactionReceipt | undefined;\n\n // at this point this is the syncronously available price\n const allowanceToSet = approval.allowanceToSet;\n\n /* \n if connected to Safe, or needs to approve a token with a tx, or needs to pre-wrap ETH\n and can batch txs, then pre-sign the batch;\n that way Safe does only one action (wrapETH?+Approve+setPreSignature batch tx)\n and a wallet that would otherwise potentially wrap ETH and then Approve Token (tx, no Permit for Limit Orders)\n and then sign Order, basically has to make at least one tx, does only one action as well.\n */\n const {\n shouldDoApprovalTxOrPermit: shouldDoApprovalTx,\n shouldPreSignBatch,\n } = shouldApproveOrBatch({\n approval,\n preWrapETH,\n signPermit: {\n isPermitSupported: false,\n isPermitReadyToSign: false,\n },\n canBatchTxs,\n isConnectedToSafe,\n });\n\n try {\n if (shouldDoApprovalTx && allowanceToSet) {\n try {\n approveOrPermitEvents.onApproveTx.request({ allowanceToSet });\n\n approveTxHash = await approveTxMut.approveAsync({\n allowanceData: {\n allowanceToSet,\n },\n });\n\n approveOrPermitEvents.onApproveTx.sent({\n allowanceToSet,\n txHash: approveTxHash,\n });\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n const approveTxReceiptPromise = ensureTxReceipt({\n hash: approveTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\"onReplaced:approveTx\", approveTxHash, data);\n },\n });\n\n if (onTxSent) {\n onTxSent({\n chainId,\n action: \"approve\",\n transactionHash: approveTxHash,\n receiptPromise: approveTxReceiptPromise,\n transactionSpecificData: {\n action: \"approve\",\n approvedAmount: allowanceToSet,\n tokenAddress: approval.token as Address,\n spenderAddress: approval.spender as Address,\n },\n });\n }\n\n approveTxReceipt = await approveTxReceiptPromise;\n\n approveOrPermitEvents.onApproveTx.confirmed({\n allowanceToSet,\n txHash: approveTxHash,\n txReceipt: approveTxReceipt,\n });\n\n logger.log(\"~ approveTx ~ receipt:\", approveTxReceipt);\n // @TODO check if we need to see if receipt.status === \"reverted\" and throw,\n // or if waitForTransactionReceipt already throws on such receipts\n } catch (error) {\n approveOrPermitEvents.onApproveTx.failed({\n allowanceToSet,\n error: error as Error,\n txHash: approveTxHash, // won't necessarily be available\n });\n throw error;\n }\n }\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n assert(account, \"Account is not connected\");\n\n assert(limitPrice, \"limitPrice is not available\");\n\n onLimitOrder?.({\n event: {\n name: \"LimitOrder:request\",\n params: {\n price: limitPrice,\n },\n },\n });\n const bridgePrice = limitPrice.bridgePrice;\n const destChainId = bridgePrice?.bridge.destinationChainId;\n\n let createOrderInput: CreateDeltaOrderInput;\n if (bridgePrice) {\n // crosschain order\n createOrderInput = {\n signal,\n type: \"LIMIT\",\n orderInput: {\n owner: account,\n beneficiary: receiverAddress,\n srcToken: limitPrice.srcTokenAddress,\n destToken: limitPrice.destTokenAddress,\n srcAmount: limitPrice.srcAmount,\n destAmount: limitPrice.destAmount,\n destChainId,\n deltaPrice: {\n ...bridgePrice,\n bridge: {\n ...bridgePrice.bridge,\n protocolSelector: DEFAULT_DELTA_BRIDGE.protocolSelector,\n protocolData: DEFAULT_DELTA_BRIDGE.protocolData,\n },\n partner,\n partnerFee: 0,\n },\n partner,\n deadline,\n },\n };\n } else {\n // singlechain order\n createOrderInput = {\n signal,\n type: \"LIMIT\",\n orderInput: {\n owner: account,\n beneficiary: receiverAddress,\n srcToken: limitPrice.srcTokenAddress,\n srcAmount: limitPrice.srcAmount,\n destToken: limitPrice.destTokenAddress,\n destAmount: limitPrice.destAmount,\n destChainId,\n deltaPrice: {\n destToken: limitPrice.destTokenAddress,\n destAmount: limitPrice.destAmount,\n srcAmount: limitPrice.srcAmount,\n bridge: DEFAULT_DELTA_BRIDGE,\n partner,\n partnerFee: 0,\n },\n partner,\n deadline,\n },\n };\n }\n\n let orderFromAPI: DeltaOrderApiResponse;\n\n if (!shouldPreSignBatch) {\n // creating signing and POSTing the Order all together in one mutation\n orderFromAPI = await createOrderMut.mutateAsync(createOrderInput);\n } else {\n // prepare Order for pre-signing and POSTing:\n // 1. builds the order\n // 2. hashes the built order\n // 3. construct DeltaContract.setPreSignature(orderHash, true) tx calldata\n\n orderFromAPI = await preSignAndSubmitDeltaOrder({\n createDeltaOrderInput: createOrderInput,\n approval,\n preWrapETH,\n onTxSent,\n });\n }\n\n onLimitOrder?.({\n event: {\n name: \"LimitOrder:sent\",\n params: {\n price: limitPrice,\n order: orderFromAPI,\n },\n },\n });\n\n return {\n tradeFlowType: limitOrderFlowType,\n approve: {\n txHash: approveTxHash,\n receipt: approveTxReceipt,\n },\n limitOrder: {\n sentOrder: orderFromAPI,\n },\n limitPrice: limitPrice,\n account,\n receiverAddress,\n };\n } catch (error) {\n logger.error(\"Order submission error\", error);\n onLimitOrder?.({\n event: {\n name: \"LimitOrder:failed\",\n params: {\n price: limitPrice,\n error: error as Error,\n },\n },\n });\n throw error;\n }\n };\n\n const cancelLimitOrder = () => {\n assert(createOrderMut.data, \"No order to cancel\");\n cancelOrderMut.mutate({\n orderIds: [createOrderMut.data.id],\n });\n };\n\n const limitOrderMut = useMutation({\n mutationFn: submitLimitOrder,\n mutationKey: [LIMIT_ORDER_MUTATION_KEY],\n onSuccess: (data) => {\n logger.log(\"Order submission success\", data);\n },\n onError: (error) => {\n logger.error(\"Order submission error\", error);\n },\n onSettled: () => {\n logger.log(\"Order submission settled\");\n },\n });\n\n const runLimitOrderFlow = limitOrderMut.mutateAsync;\n\n const reset = () => {\n approveTxMut.reset();\n createOrderMut.reset();\n limitOrderMut.reset();\n cancelOrderMut.reset();\n resetPreSignAndSubmitDeltaOrder();\n };\n\n const retryFlow = (\n options?: RunLimitOrderOptions\n ): Promise<SubmitLimitOrderResult> => {\n reset();\n return runLimitOrderFlow(options);\n };\n\n /* 5. return result */\n return {\n tradeFlowType: limitOrderFlowType,\n chainId,\n runLimitOrderFlow,\n reset,\n cancelFlow,\n retryFlow,\n cancelLimitOrder,\n approval,\n limitOrderSubmission,\n limitOrderExecution,\n limitOrderCancelation,\n // deltaOrderMut includes all steps' queries and mutations and returns more precise errors (including cancellation)\n isPending: limitOrderMut.isPending,\n isSuccess: limitOrderSubmission.isSuccess, // approval is an optional step\n isError: limitOrderMut.isError,\n error: limitOrderMut.error,\n result: limitOrderMut.data,\n limitPrice,\n };\n}\n"],"names":["limitOrderFlowType","LIMIT_ORDER_MUTATION_KEY","useLimitOrderFlow","limitPrice","preWrapETH","logger","useLogger","chainId","useChainId","queryClient","useQueryClient","approval","approveTxMut","events","approveOrPermitEvents","useApproveOrPermit","srcToken","srcTokenAddress","srcAmount","spenderContractType","swapSide","tradeMode","address","account","useAccount","minClient","useMinViemClient","createOrderMut","useCreateDeltaOrder","client","mutationOptions","onSuccess","order","log","onError","error","limitOrderCreateAndSubmit","data","isCreatingOrder","isPending","isOrderSent","isSuccess","isError","deltaOrderPreSign","canBatchTxs","isConnectedToSafe","preSignAndSubmitDeltaOrder","reset","resetPreSignAndSubmitDeltaOrder","usePreSignAndSubmitDeltaOrder","viemClient","limitOrderSubmission","watchOrderExecution","useWatchDeltaAuction","orderId","id","onAuctionSuccess","onAuctionFailure","onUpdatedAuction","onTimeoutGettingOrder","orderStatus","getOverallOrderStatus","neverFetchedFinishedOrder","limitOrderExecution","sentOrder","lastOrderState","isOrderPending","isOrderExecuting","isOrderExecuted","isLoading","isRefetching","cancelOrderEvents","useCancelDeltaOrderEventCallbacks","orderChainId","forcedChainMatchesWalletChain","useChainMatches","mutateAsync","switchChain","useSwitchChainWithGuard","cancelOrderMut","useCancelDeltaOrders","onMutate","variables","assert","successResponse","vars","invalidateQueries","queryKey","deltaAuctionPollingQueryKey","limitOrderCancelation","isCancelingOrder","isOrderCanceled","success","ensureTxReceipt","useEnsureTxReceipt","currentAbortControllerRef","useRef","cancelFlow","current","abort","UserCancelledError","partner","usePartner","receiverAddress","useLimitReceiverAddressValue","deadline","useLimitDeadline","onLimitOrder","useWidgetEvents","submitLimitOrder","onTxSent","abortController","AbortController","signal","approveTxHash","approveTxReceipt","allowanceToSet","shouldDoApprovalTxOrPermit","shouldDoApprovalTx","shouldPreSignBatch","shouldApproveOrBatch","signPermit","isPermitSupported","isPermitReadyToSign","onApproveTx","request","approveAsync","allowanceData","sent","txHash","throwIfAborted","approveTxReceiptPromise","hash","onReplaced","action","transactionHash","receiptPromise","transactionSpecificData","approvedAmount","tokenAddress","token","spenderAddress","spender","confirmed","txReceipt","failed","event","name","params","price","bridgePrice","destChainId","bridge","destinationChainId","createOrderInput","type","orderInput","owner","beneficiary","destToken","destTokenAddress","destAmount","deltaPrice","protocolSelector","DEFAULT_DELTA_BRIDGE","protocolData","partnerFee","orderFromAPI","createDeltaOrderInput","tradeFlowType","approve","receipt","limitOrder","cancelLimitOrder","mutate","orderIds","limitOrderMut","useMutation","mutationFn","mutationKey","onSettled","runLimitOrderFlow","retryFlow","options","result"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMarketSwapStep.d.ts","sourceRoot":"","sources":["../../../../src/hooks/swap/tradeFlow/useMarketSwapStep.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EAClB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAC;AAKzB,KAAK,uBAAuB,GAAG;IAC7B,eAAe,EAAE,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;IAE1D,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACpC,UAAU,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAC9C,SAAS,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC5C,iBAAiB,EAAE,OAAO,CAAC;IAC3B,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC5C,oBAAoB,CAAC,EAAE,mBAAmB,CAAC,sBAAsB,CAAC,CAAC;IACnE,aAAa,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACrD,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,kBAAkB,GAC1B,uBAAuB,CAqIzB"}
1
+ {"version":3,"file":"useMarketSwapStep.d.ts","sourceRoot":"","sources":["../../../../src/hooks/swap/tradeFlow/useMarketSwapStep.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EAClB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAC;AAMzB,KAAK,uBAAuB,GAAG;IAC7B,eAAe,EAAE,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;IAE1D,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACpC,UAAU,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAC9C,SAAS,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC5C,iBAAiB,EAAE,OAAO,CAAC;IAC3B,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC5C,oBAAoB,CAAC,EAAE,mBAAmB,CAAC,sBAAsB,CAAC,CAAC;IACnE,aAAa,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACrD,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,kBAAkB,GAC1B,uBAAuB,CA2IzB"}
@@ -3,6 +3,7 @@ import { useMarketFlow } from './useMarketFlow.js';
3
3
  import { constructTxLinkForChain } from '../../../lib/utils/explorer.js';
4
4
  import { useLogger } from '../../../core/logger.js';
5
5
  import { isUserCancelledError } from './common/errors.js';
6
+ import { getStandaloneTxHash } from '../../../transactions/hash.js';
6
7
 
7
8
  function useMarketSwapStep(options) {
8
9
  const $ = distExports.c(21);
@@ -51,15 +52,17 @@ function useMarketSwapStep(options) {
51
52
  const inSwapTxConfirmation = step?.key === "signature" && (step.subStep === "order-signature" || step.subStep === "standalone-order-signature");
52
53
  const notYetSwapTxSent = step?.key === "swap-tx-execution" && !marketFlow.swap.isTxSent && !marketFlow.swapBatch.isCallsSent;
53
54
  isFlowCancellable = approvalIsStarted || inSwapTxConfirmation || notYetSwapTxSent;
54
- const txHash = marketFlow.swapBatch.txHash || marketFlow.swap.txHash;
55
- explorerLink = txHash ? constructTxLinkForChain({
55
+ const swapTxHash = marketFlow.swapBatch.txHash || getStandaloneTxHash({
56
+ transactionHash: marketFlow.swap.txHash
57
+ });
58
+ explorerLink = swapTxHash ? constructTxLinkForChain({
56
59
  chainId: marketFlow.chainId,
57
- txHash
60
+ txHash: swapTxHash
58
61
  }) : void 0;
59
62
  logger.once.log("step", step, marketFlow, {
60
63
  isFlowCancellable,
61
64
  explorerLink,
62
- txHash
65
+ txHash: swapTxHash
63
66
  });
64
67
  $[0] = logger.once;
65
68
  $[1] = marketFlow;
@@ -1 +1 @@
1
- {"version":3,"file":"useMarketSwapStep.js","sources":["../../../../src/hooks/swap/tradeFlow/useMarketSwapStep.ts"],"sourcesContent":["import type {\n MarketSwapStep,\n MarketSwapStepKey,\n} from \"@/components/widget/TradeOverview/steps\";\nimport {\n useMarketFlow,\n type UseMarketFlowInput,\n type UseMarketFlowResult,\n type SubmitSwapResult,\n} from \"./useMarketFlow\";\nimport { constructTxLinkForChain } from \"@/lib/utils/explorer\";\nimport { useLogger } from \"@/core/logger\";\nimport { isUserCancelledError } from \"./common/errors\";\n\ntype UseMarketSwapStepResult = {\n startMarketSwap: UseMarketFlowResult[\"runMarketSwapFlow\"];\n // @TODO check if resetting is necessary on error, maybe not if submit on click works as a reset\n reset: UseMarketFlowResult[\"reset\"];\n cancelFlow: UseMarketFlowResult[\"cancelFlow\"];\n retryFlow: UseMarketFlowResult[\"retryFlow\"];\n isFlowCancellable: boolean;\n step?: MarketSwapStep;\n explorerLink?: string;\n error: Error | null;\n erroredStep?: MarketSwapStepKey;\n result?: SubmitSwapResult;\n usedPrice: UseMarketFlowResult[\"usedPrice\"];\n submittedSwapRequest?: UseMarketFlowResult[\"submittedSwapRequest\"];\n tradeFlowType: UseMarketFlowResult[\"tradeFlowType\"];\n};\n\nexport function useMarketSwapStep(\n options: UseMarketFlowInput\n): UseMarketSwapStepResult {\n const logger = useLogger(\"MarketSwapStep\");\n const marketFlow = useMarketFlow(options);\n\n const startMarketSwap = marketFlow.runMarketSwapFlow;\n const reset = marketFlow.reset;\n const cancelFlow = marketFlow.cancelFlow;\n const retryFlow = marketFlow.retryFlow;\n\n let step: MarketSwapStep | undefined;\n\n const permitSigningHappeningOrNeverHappened =\n // isPending starts as false,\n // so we can use !isPermitSigned to detect if Permit signing is happening or never happened\n marketFlow.signPermit.isPending || !marketFlow.signPermit.isPermitSigned;\n\n const approvalHappeningOrNeverHappened =\n // isPending starts as false,\n // needsApproval && !isSuccess allows to detect approve step right away even then\n marketFlow.approval.isPending || !marketFlow.approval.isSuccess;\n\n const willUsePermit =\n marketFlow.approval.needsApproval &&\n marketFlow.signPermit.isPermitSupported &&\n marketFlow.signPermit.isPermitReadyToSign &&\n !marketFlow.swapBatch.canBatchTxs;\n\n const permitOrApprovalHappeningOrNeverHappened = willUsePermit\n ? permitSigningHappeningOrNeverHappened\n : approvalHappeningOrNeverHappened;\n\n if (\n marketFlow.approval.needsApproval &&\n permitOrApprovalHappeningOrNeverHappened\n ) {\n step = { key: \"signature\", subStep: \"approval-signature\" };\n } else if (\n marketFlow.buildTxParams.isPending ||\n marketFlow.swap.isConfirmingTX ||\n marketFlow.swapBatch.isConfirmingCalls\n ) {\n const permitOrApprovalHappened = !!(\n marketFlow.approval.txHash || marketFlow.signPermit.signature\n );\n\n step = {\n key: \"signature\",\n subStep: permitOrApprovalHappened\n ? \"order-signature\"\n : \"standalone-order-signature\",\n };\n } else if (\n marketFlow.swap.isTxPending ||\n marketFlow.swapBatch.isCallsPending\n ) {\n step = { key: \"swap-tx-execution\" };\n } else if (marketFlow.isPending) {\n // if something is between steps but not clear step,\n // then assume we're at the standalone signature sub-step\n step = { key: \"signature\", subStep: \"standalone-order-signature\" };\n }\n\n const approvalIsStarted =\n step?.key === \"signature\" &&\n step.subStep === \"approval-signature\" &&\n marketFlow.approval.isTxPending;\n\n const inSwapTxConfirmation =\n step?.key === \"signature\" &&\n (step.subStep === \"order-signature\" ||\n step.subStep === \"standalone-order-signature\");\n\n const notYetSwapTxSent =\n step?.key === \"swap-tx-execution\" &&\n !marketFlow.swap.isTxSent &&\n !marketFlow.swapBatch.isCallsSent;\n\n // final tx is not yet sent, there's something to cancel;\n // but some steps are already started so we can't simply dismiss\n const isFlowCancellable =\n approvalIsStarted || inSwapTxConfirmation || notYetSwapTxSent;\n\n // either of the txHashes will be available\n const txHash = marketFlow.swapBatch.txHash || marketFlow.swap.txHash;\n const explorerLink = txHash\n ? constructTxLinkForChain({ chainId: marketFlow.chainId, txHash })\n : undefined;\n\n logger.once.log(\"step\", step, marketFlow, {\n isFlowCancellable,\n explorerLink,\n txHash,\n });\n\n // intentional cancellation is handled separately\n const error = isUserCancelledError(marketFlow.error)\n ? null\n : marketFlow.error;\n\n let erroredStep: MarketSwapStepKey | undefined;\n\n if (marketFlow.isError) {\n if (\n marketFlow.approval.isError ||\n marketFlow.signPermit.isError ||\n marketFlow.buildTxParams.isError ||\n marketFlow.swap.isConfirmingTxError ||\n marketFlow.swapBatch.isConfirmingCallsError\n ) {\n erroredStep = \"signature\";\n } else if (\n marketFlow.swap.isTxAwaitingError ||\n marketFlow.swapBatch.isCallsAwaitingError\n ) {\n erroredStep = \"swap-tx-execution\";\n }\n }\n\n return {\n startMarketSwap,\n reset,\n cancelFlow,\n retryFlow,\n isFlowCancellable,\n step,\n explorerLink,\n error,\n erroredStep,\n result: marketFlow.result,\n usedPrice: marketFlow.usedPrice,\n submittedSwapRequest: marketFlow.submittedSwapRequest,\n tradeFlowType: marketFlow.tradeFlowType,\n };\n}\n"],"names":["useMarketSwapStep","options","$","_c","logger","useLogger","marketFlow","useMarketFlow","startMarketSwap","runMarketSwapFlow","reset","cancelFlow","retryFlow","explorerLink","isFlowCancellable","step","once","permitSigningHappeningOrNeverHappened","signPermit","isPending","isPermitSigned","approvalHappeningOrNeverHappened","approval","isSuccess","willUsePermit","needsApproval","isPermitSupported","isPermitReadyToSign","swapBatch","canBatchTxs","permitOrApprovalHappeningOrNeverHappened","buildTxParams","swap","isConfirmingTX","isConfirmingCalls","permitOrApprovalHappened","txHash","signature","isTxPending","isCallsPending","approvalIsStarted","key","subStep","inSwapTxConfirmation","notYetSwapTxSent","isTxSent","isCallsSent","constructTxLinkForChain","chainId","undefined","log","t0","error","isUserCancelledError","erroredStep","isError","isConfirmingTxError","isConfirmingCallsError","isTxAwaitingError","isCallsAwaitingError","t1","result","submittedSwapRequest","tradeFlowType","usedPrice"],"mappings":"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"}
1
+ {"version":3,"file":"useMarketSwapStep.js","sources":["../../../../src/hooks/swap/tradeFlow/useMarketSwapStep.ts"],"sourcesContent":["import type {\n MarketSwapStep,\n MarketSwapStepKey,\n} from \"@/components/widget/TradeOverview/steps\";\nimport {\n useMarketFlow,\n type UseMarketFlowInput,\n type UseMarketFlowResult,\n type SubmitSwapResult,\n} from \"./useMarketFlow\";\nimport { constructTxLinkForChain } from \"@/lib/utils/explorer\";\nimport { useLogger } from \"@/core/logger\";\nimport { isUserCancelledError } from \"./common/errors\";\nimport { getStandaloneTxHash } from \"@/transactions/hash\";\n\ntype UseMarketSwapStepResult = {\n startMarketSwap: UseMarketFlowResult[\"runMarketSwapFlow\"];\n // @TODO check if resetting is necessary on error, maybe not if submit on click works as a reset\n reset: UseMarketFlowResult[\"reset\"];\n cancelFlow: UseMarketFlowResult[\"cancelFlow\"];\n retryFlow: UseMarketFlowResult[\"retryFlow\"];\n isFlowCancellable: boolean;\n step?: MarketSwapStep;\n explorerLink?: string;\n error: Error | null;\n erroredStep?: MarketSwapStepKey;\n result?: SubmitSwapResult;\n usedPrice: UseMarketFlowResult[\"usedPrice\"];\n submittedSwapRequest?: UseMarketFlowResult[\"submittedSwapRequest\"];\n tradeFlowType: UseMarketFlowResult[\"tradeFlowType\"];\n};\n\nexport function useMarketSwapStep(\n options: UseMarketFlowInput\n): UseMarketSwapStepResult {\n const logger = useLogger(\"MarketSwapStep\");\n const marketFlow = useMarketFlow(options);\n\n const startMarketSwap = marketFlow.runMarketSwapFlow;\n const reset = marketFlow.reset;\n const cancelFlow = marketFlow.cancelFlow;\n const retryFlow = marketFlow.retryFlow;\n\n let step: MarketSwapStep | undefined;\n\n const permitSigningHappeningOrNeverHappened =\n // isPending starts as false,\n // so we can use !isPermitSigned to detect if Permit signing is happening or never happened\n marketFlow.signPermit.isPending || !marketFlow.signPermit.isPermitSigned;\n\n const approvalHappeningOrNeverHappened =\n // isPending starts as false,\n // needsApproval && !isSuccess allows to detect approve step right away even then\n marketFlow.approval.isPending || !marketFlow.approval.isSuccess;\n\n const willUsePermit =\n marketFlow.approval.needsApproval &&\n marketFlow.signPermit.isPermitSupported &&\n marketFlow.signPermit.isPermitReadyToSign &&\n !marketFlow.swapBatch.canBatchTxs;\n\n const permitOrApprovalHappeningOrNeverHappened = willUsePermit\n ? permitSigningHappeningOrNeverHappened\n : approvalHappeningOrNeverHappened;\n\n if (\n marketFlow.approval.needsApproval &&\n permitOrApprovalHappeningOrNeverHappened\n ) {\n step = { key: \"signature\", subStep: \"approval-signature\" };\n } else if (\n marketFlow.buildTxParams.isPending ||\n marketFlow.swap.isConfirmingTX ||\n marketFlow.swapBatch.isConfirmingCalls\n ) {\n const permitOrApprovalHappened = !!(\n marketFlow.approval.txHash || marketFlow.signPermit.signature\n );\n\n step = {\n key: \"signature\",\n subStep: permitOrApprovalHappened\n ? \"order-signature\"\n : \"standalone-order-signature\",\n };\n } else if (\n marketFlow.swap.isTxPending ||\n marketFlow.swapBatch.isCallsPending\n ) {\n step = { key: \"swap-tx-execution\" };\n } else if (marketFlow.isPending) {\n // if something is between steps but not clear step,\n // then assume we're at the standalone signature sub-step\n step = { key: \"signature\", subStep: \"standalone-order-signature\" };\n }\n\n const approvalIsStarted =\n step?.key === \"signature\" &&\n step.subStep === \"approval-signature\" &&\n marketFlow.approval.isTxPending;\n\n const inSwapTxConfirmation =\n step?.key === \"signature\" &&\n (step.subStep === \"order-signature\" ||\n step.subStep === \"standalone-order-signature\");\n\n const notYetSwapTxSent =\n step?.key === \"swap-tx-execution\" &&\n !marketFlow.swap.isTxSent &&\n !marketFlow.swapBatch.isCallsSent;\n\n // final tx is not yet sent, there's something to cancel;\n // but some steps are already started so we can't simply dismiss\n const isFlowCancellable =\n approvalIsStarted || inSwapTxConfirmation || notYetSwapTxSent;\n\n const swapTxHash =\n // either last txHash from batch receipt\n marketFlow.swapBatch.txHash ||\n // or standalone swap txHash\n getStandaloneTxHash({ transactionHash: marketFlow.swap.txHash });\n const explorerLink = swapTxHash\n ? constructTxLinkForChain({\n chainId: marketFlow.chainId,\n txHash: swapTxHash,\n })\n : undefined;\n\n logger.once.log(\"step\", step, marketFlow, {\n isFlowCancellable,\n explorerLink,\n txHash: swapTxHash,\n });\n\n // intentional cancellation is handled separately\n const error = isUserCancelledError(marketFlow.error)\n ? null\n : marketFlow.error;\n\n let erroredStep: MarketSwapStepKey | undefined;\n\n if (marketFlow.isError) {\n if (\n marketFlow.approval.isError ||\n marketFlow.signPermit.isError ||\n marketFlow.buildTxParams.isError ||\n marketFlow.swap.isConfirmingTxError ||\n marketFlow.swapBatch.isConfirmingCallsError\n ) {\n erroredStep = \"signature\";\n } else if (\n marketFlow.swap.isTxAwaitingError ||\n marketFlow.swapBatch.isCallsAwaitingError\n ) {\n erroredStep = \"swap-tx-execution\";\n }\n }\n\n return {\n startMarketSwap,\n reset,\n cancelFlow,\n retryFlow,\n isFlowCancellable,\n step,\n explorerLink,\n error,\n erroredStep,\n result: marketFlow.result,\n usedPrice: marketFlow.usedPrice,\n submittedSwapRequest: marketFlow.submittedSwapRequest,\n tradeFlowType: marketFlow.tradeFlowType,\n };\n}\n"],"names":["useMarketSwapStep","options","$","_c","logger","useLogger","marketFlow","useMarketFlow","startMarketSwap","runMarketSwapFlow","reset","cancelFlow","retryFlow","explorerLink","isFlowCancellable","step","once","permitSigningHappeningOrNeverHappened","signPermit","isPending","isPermitSigned","approvalHappeningOrNeverHappened","approval","isSuccess","willUsePermit","needsApproval","isPermitSupported","isPermitReadyToSign","swapBatch","canBatchTxs","permitOrApprovalHappeningOrNeverHappened","buildTxParams","swap","isConfirmingTX","isConfirmingCalls","permitOrApprovalHappened","txHash","signature","isTxPending","isCallsPending","approvalIsStarted","key","subStep","inSwapTxConfirmation","notYetSwapTxSent","isTxSent","isCallsSent","swapTxHash","getStandaloneTxHash","transactionHash","constructTxLinkForChain","chainId","undefined","log","t0","error","isUserCancelledError","erroredStep","isError","isConfirmingTxError","isConfirmingCallsError","isTxAwaitingError","isCallsAwaitingError","t1","result","submittedSwapRequest","tradeFlowType","usedPrice"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useAwaitTx.d.ts","sourceRoot":"","sources":["../../../../src/hooks/txs/queries/useAwaitTx.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EAGL,KAAK,sCAAsC,EAC3C,KAAK,sCAAsC,EAC5C,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,wCAAwC,CAAC;AAIhD,MAAM,MAAM,oBAAoB,CAAC,UAAU,GAAG,sBAAsB,IAAI;IACtE,OAAO,EAAE,gBAAgB,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,sCAAsC,CAC5C,OAAO,WAAW,EAClB,gBAAgB,EAChB,UAAU,CACX,CAAC,OAAO,CAAC,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,6BAA6B,CAChE,OAAO,WAAW,EAClB,gBAAgB,CACjB,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,UAAU,GAAG,sBAAsB,IAClE,sCAAsC,CACpC,OAAO,WAAW,EAClB,gBAAgB,EAChB,UAAU,CACX,CAAC;AAEJ,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AAExD,wBAAgB,UAAU,CAAC,UAAU,GAAG,sBAAsB,EAAE,EAC9D,OAAO,EACP,aAAa,EACb,IAAI,EACJ,KAAK,GACN,EAAE,oBAAoB,CAAC,UAAU,CAAC,GAAG,oBAAoB,CAAC,UAAU,CAAC,CA2BrE;AAED,wBAAgB,kBAAkB,IAAI,iBAAiB,CAMtD"}
1
+ {"version":3,"file":"useAwaitTx.d.ts","sourceRoot":"","sources":["../../../../src/hooks/txs/queries/useAwaitTx.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EAKL,KAAK,sCAAsC,EAC3C,KAAK,sCAAsC,EAC5C,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,wCAAwC,CAAC;AAUhD,MAAM,MAAM,oBAAoB,CAAC,UAAU,GAAG,sBAAsB,IAAI;IACtE,OAAO,EAAE,gBAAgB,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,sCAAsC,CAC5C,OAAO,WAAW,EAClB,gBAAgB,EAChB,UAAU,CACX,CAAC,OAAO,CAAC,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,6BAA6B,CAChE,OAAO,WAAW,EAClB,gBAAgB,CACjB,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,UAAU,GAAG,sBAAsB,IAClE,sCAAsC,CACpC,OAAO,WAAW,EAClB,gBAAgB,EAChB,UAAU,CACX,CAAC;AAEJ,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AAExD,wBAAgB,UAAU,CAAC,UAAU,GAAG,sBAAsB,EAAE,EAC9D,OAAO,EACP,aAAa,EACb,IAAI,EACJ,KAAK,GACN,EAAE,oBAAoB,CAAC,UAAU,CAAC,GAAG,oBAAoB,CAAC,UAAU,CAAC,CA4FrE;AAED,wBAAgB,kBAAkB,IAAI,iBAAiB,CAMtD"}
@@ -1,14 +1,17 @@
1
1
  import { d as distExports } from '../../../_virtual/index.js';
2
2
  import { useQueryClient } from '@tanstack/react-query';
3
- import { useWaitForTransactionReceipt, useConfig } from 'wagmi';
3
+ import { useAccount, useConnectorClient, useConfig, useWaitForTransactionReceipt } from 'wagmi';
4
4
  import 'wagmi/query';
5
5
  import { useLogger } from '../../../core/logger.js';
6
6
  import { ensureTxReceiptFactory } from '../../../transactions/queries/ensureTxReceipt.js';
7
- import { useConnectedSafe } from '../../connectors/useIsConnectedSafe.js';
7
+ import { useConnectedSafe, useConnectedToSafeIframe } from '../../connectors/useIsConnectedSafe.js';
8
8
  import { SAFE_CALLS_WAIT_TIMEOUT } from '../../../lib/constants/index.js';
9
+ import { assert } from 'ts-essentials';
10
+ import { useIsSafeThroughWalletConnect } from '../../connectors/useIsSafeThroughWalletConnect.js';
11
+ import { useAwaitCalls } from '../../batch/useAwaitCalls.js';
9
12
 
10
13
  function useAwaitTx(t0) {
11
- const $ = distExports.c(10);
14
+ const $ = distExports.c(25);
12
15
  const {
13
16
  chainId,
14
17
  confirmations,
@@ -17,39 +20,130 @@ function useAwaitTx(t0) {
17
20
  } = t0;
18
21
  const logger = useLogger("AwaitTx");
19
22
  const isSafe = useConnectedSafe();
23
+ const isConnectedToSafeIframe = useConnectedToSafeIframe();
24
+ const isConnectedToSafeThroughWalletConnect = useIsSafeThroughWalletConnect();
20
25
  const timeout = isSafe ? SAFE_CALLS_WAIT_TIMEOUT : void 0;
26
+ const {
27
+ address: account
28
+ } = useAccount();
21
29
  let t1;
22
- if ($[0] !== hash || $[1] !== logger) {
23
- t1 = (data) => {
24
- logger.log("onReplaced:tx", hash, data);
30
+ if ($[0] !== account || $[1] !== chainId) {
31
+ t1 = {
32
+ chainId,
33
+ account
25
34
  };
26
- $[0] = hash;
27
- $[1] = logger;
35
+ $[0] = account;
36
+ $[1] = chainId;
28
37
  $[2] = t1;
29
38
  } else {
30
39
  t1 = $[2];
31
40
  }
41
+ const {
42
+ data: connectorClient
43
+ } = useConnectorClient(t1);
44
+ const wagmiConfig = useConfig();
45
+ let config = wagmiConfig;
46
+ let realtxHash = hash;
47
+ let sendCallsId;
48
+ if (isConnectedToSafeThroughWalletConnect) {
49
+ sendCallsId = hash;
50
+ } else {
51
+ if (isConnectedToSafeIframe && connectorClient) {
52
+ let t22;
53
+ if ($[3] !== chainId || $[4] !== connectorClient) {
54
+ t22 = (options) => {
55
+ assert(!options?.chainId || options.chainId === chainId, "chainId mismatch");
56
+ return connectorClient;
57
+ };
58
+ $[3] = chainId;
59
+ $[4] = connectorClient;
60
+ $[5] = t22;
61
+ } else {
62
+ t22 = $[5];
63
+ }
64
+ let t32;
65
+ if ($[6] !== t22 || $[7] !== wagmiConfig) {
66
+ t32 = {
67
+ ...wagmiConfig,
68
+ getClient: t22
69
+ };
70
+ $[6] = t22;
71
+ $[7] = wagmiConfig;
72
+ $[8] = t32;
73
+ } else {
74
+ t32 = $[8];
75
+ }
76
+ config = t32;
77
+ }
78
+ }
79
+ const callsQueryEnabled = typeof query?.enabled === "boolean" ? query.enabled : true;
32
80
  let t2;
33
- if ($[3] !== chainId || $[4] !== confirmations || $[5] !== hash || $[6] !== query || $[7] !== t1 || $[8] !== timeout) {
81
+ if ($[9] !== callsQueryEnabled) {
34
82
  t2 = {
83
+ enabled: callsQueryEnabled
84
+ };
85
+ $[9] = callsQueryEnabled;
86
+ $[10] = t2;
87
+ } else {
88
+ t2 = $[10];
89
+ }
90
+ let t3;
91
+ if ($[11] !== sendCallsId || $[12] !== t2) {
92
+ t3 = {
93
+ id: sendCallsId,
94
+ query: t2
95
+ };
96
+ $[11] = sendCallsId;
97
+ $[12] = t2;
98
+ $[13] = t3;
99
+ } else {
100
+ t3 = $[13];
101
+ }
102
+ const {
103
+ data: sendCallsReceipt,
104
+ error: sendCallsError
105
+ } = useAwaitCalls(t3);
106
+ const lastCallsReceiptTxHash = sendCallsReceipt?.receipts?.[sendCallsReceipt.receipts.length - 1]?.transactionHash;
107
+ if (isConnectedToSafeThroughWalletConnect) {
108
+ realtxHash = lastCallsReceiptTxHash;
109
+ if (!realtxHash && sendCallsError) {
110
+ realtxHash = hash;
111
+ }
112
+ }
113
+ let t4;
114
+ if ($[14] !== hash || $[15] !== logger) {
115
+ t4 = (data) => {
116
+ logger.log("onReplaced:tx", hash, data);
117
+ };
118
+ $[14] = hash;
119
+ $[15] = logger;
120
+ $[16] = t4;
121
+ } else {
122
+ t4 = $[16];
123
+ }
124
+ let t5;
125
+ if ($[17] !== chainId || $[18] !== config || $[19] !== confirmations || $[20] !== query || $[21] !== realtxHash || $[22] !== t4 || $[23] !== timeout) {
126
+ t5 = {
127
+ config,
35
128
  chainId,
36
129
  confirmations,
37
130
  timeout,
38
- hash,
131
+ hash: realtxHash,
39
132
  query,
40
- onReplaced: t1
133
+ onReplaced: t4
41
134
  };
42
- $[3] = chainId;
43
- $[4] = confirmations;
44
- $[5] = hash;
45
- $[6] = query;
46
- $[7] = t1;
47
- $[8] = timeout;
48
- $[9] = t2;
135
+ $[17] = chainId;
136
+ $[18] = config;
137
+ $[19] = confirmations;
138
+ $[20] = query;
139
+ $[21] = realtxHash;
140
+ $[22] = t4;
141
+ $[23] = timeout;
142
+ $[24] = t5;
49
143
  } else {
50
- t2 = $[9];
144
+ t5 = $[24];
51
145
  }
52
- const queryResult = useWaitForTransactionReceipt(t2);
146
+ const queryResult = useWaitForTransactionReceipt(t5);
53
147
  return queryResult;
54
148
  }
55
149
  function useEnsureTxReceipt() {
@@ -1 +1 @@
1
- {"version":3,"file":"useAwaitTx.js","sources":["../../../../src/hooks/txs/queries/useAwaitTx.ts"],"sourcesContent":["import type { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport {\n useConfig,\n useWaitForTransactionReceipt,\n type UseWaitForTransactionReceiptParameters,\n type UseWaitForTransactionReceiptReturnType,\n} from \"wagmi\";\nimport { type WaitForTransactionReceiptData } from \"wagmi/query\";\nimport { useLogger } from \"@/core/logger\";\nimport {\n ensureTxReceiptFactory,\n type EnsureTxReceiptFn,\n} from \"@/transactions/queries/ensureTxReceipt\";\nimport { useConnectedSafe } from \"@/hooks/connectors/useIsConnectedSafe\";\nimport { SAFE_CALLS_WAIT_TIMEOUT } from \"@/lib/constants\";\n\nexport type UseAwaitTxParameters<SelectData = DefaultTxReceiptSelect> = {\n chainId: SupportedChainId;\n confirmations?: number;\n hash?: `0x${string}`;\n query?: UseWaitForTransactionReceiptParameters<\n typeof wagmiConfig,\n SupportedChainId,\n SelectData\n >[\"query\"];\n};\n\nexport type DefaultTxReceiptSelect = WaitForTransactionReceiptData<\n typeof wagmiConfig,\n SupportedChainId\n>;\n\nexport type UseAwaitTxReturnType<SelectData = DefaultTxReceiptSelect> =\n UseWaitForTransactionReceiptReturnType<\n typeof wagmiConfig,\n SupportedChainId,\n SelectData\n >;\n\nexport type TxReceiptFromWagmi = DefaultTxReceiptSelect;\n\nexport function useAwaitTx<SelectData = DefaultTxReceiptSelect>({\n chainId,\n confirmations,\n hash,\n query,\n}: UseAwaitTxParameters<SelectData>): UseAwaitTxReturnType<SelectData> {\n const logger = useLogger(\"AwaitTx\");\n\n const isSafe = useConnectedSafe();\n\n const timeout = isSafe ? SAFE_CALLS_WAIT_TIMEOUT : undefined;\n\n const queryResult = useWaitForTransactionReceipt<\n typeof wagmiConfig,\n SupportedChainId,\n SelectData\n >({\n chainId,\n confirmations,\n timeout,\n hash,\n query,\n onReplaced: (data) => {\n // @TODO connect to some atom if needed to detect cancelled/sped-up txs,\n // but sped-up txs may be detected correct internally and re-awaited with a new hash,\n // need to test\n // https://viem.sh/docs/actions/public/waitForTransactionReceipt.html#json-rpc-methods\n logger.log(\"onReplaced:tx\", hash, data);\n },\n });\n\n return queryResult;\n}\n\nexport function useEnsureTxReceipt(): EnsureTxReceiptFn {\n const queryClient = useQueryClient();\n const wagmiConfig = useConfig();\n const isSafe = useConnectedSafe();\n\n return ensureTxReceiptFactory({ queryClient, wagmiConfig, isSafe });\n}\n"],"names":["useAwaitTx","t0","$","_c","chainId","confirmations","hash","query","logger","useLogger","isSafe","useConnectedSafe","timeout","SAFE_CALLS_WAIT_TIMEOUT","undefined","t1","data","log","t2","onReplaced","queryResult","useWaitForTransactionReceipt","useEnsureTxReceipt","queryClient","useQueryClient","wagmiConfig","useConfig","ensureTxReceiptFactory"],"mappings":"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"}
1
+ {"version":3,"file":"useAwaitTx.js","sources":["../../../../src/hooks/txs/queries/useAwaitTx.ts"],"sourcesContent":["import type { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport {\n useAccount,\n useConfig,\n useConnectorClient,\n useWaitForTransactionReceipt,\n type UseWaitForTransactionReceiptParameters,\n type UseWaitForTransactionReceiptReturnType,\n} from \"wagmi\";\nimport { type WaitForTransactionReceiptData } from \"wagmi/query\";\nimport { useLogger } from \"@/core/logger\";\nimport {\n ensureTxReceiptFactory,\n type EnsureTxReceiptFn,\n} from \"@/transactions/queries/ensureTxReceipt\";\nimport {\n useConnectedSafe,\n useConnectedToSafeIframe,\n} from \"@/hooks/connectors/useIsConnectedSafe\";\nimport { SAFE_CALLS_WAIT_TIMEOUT } from \"@/lib/constants\";\nimport { assert } from \"ts-essentials\";\nimport { useIsSafeThroughWalletConnect } from \"@/hooks/connectors/useIsSafeThroughWalletConnect\";\nimport { useAwaitCalls } from \"@/hooks/batch/useAwaitCalls\";\n\nexport type UseAwaitTxParameters<SelectData = DefaultTxReceiptSelect> = {\n chainId: SupportedChainId;\n confirmations?: number;\n hash?: `0x${string}`;\n query?: UseWaitForTransactionReceiptParameters<\n typeof wagmiConfig,\n SupportedChainId,\n SelectData\n >[\"query\"];\n};\n\nexport type DefaultTxReceiptSelect = WaitForTransactionReceiptData<\n typeof wagmiConfig,\n SupportedChainId\n>;\n\nexport type UseAwaitTxReturnType<SelectData = DefaultTxReceiptSelect> =\n UseWaitForTransactionReceiptReturnType<\n typeof wagmiConfig,\n SupportedChainId,\n SelectData\n >;\n\nexport type TxReceiptFromWagmi = DefaultTxReceiptSelect;\n\nexport function useAwaitTx<SelectData = DefaultTxReceiptSelect>({\n chainId,\n confirmations,\n hash,\n query,\n}: UseAwaitTxParameters<SelectData>): UseAwaitTxReturnType<SelectData> {\n const logger = useLogger(\"AwaitTx\");\n\n // connected to Safe through WalletConnect or in Safe App\n const isSafe = useConnectedSafe();\n // connected to Safe in Safe App (either directly or through external provider)\n const isConnectedToSafeIframe = useConnectedToSafeIframe();\n\n const isConnectedToSafeThroughWalletConnect = useIsSafeThroughWalletConnect();\n\n const timeout = isSafe ? SAFE_CALLS_WAIT_TIMEOUT : undefined;\n\n const { address: account } = useAccount();\n\n const { data: connectorClient } = useConnectorClient({\n chainId,\n account,\n });\n\n const wagmiConfig = useConfig();\n\n let config = wagmiConfig;\n let realtxHash = hash;\n let sendCallsId: string | undefined;\n\n if (isConnectedToSafeThroughWalletConnect) {\n /** Same logic as {@link ensureTxReceiptFactory} (Safe+WalletConnect branch). Full rationale and refs there. */\n sendCallsId = hash; // will disable calls query if no hash\n } else if (isConnectedToSafeIframe && connectorClient) {\n // always use connector client if connected through native safe connector.\n // safe provider returns a safeTxHash that is different from a real tx hash.\n // if connected to safe through WalletConnect - publicClient returns a real tx hash.\n config = {\n ...wagmiConfig,\n // doesn't work with Safe through WalletConnect connector\n getClient: (options) => {\n // either no chainId passed in options or chainId matches the expected chainId\n assert(\n !options?.chainId || options.chainId === chainId,\n \"chainId mismatch\"\n );\n return connectorClient;\n },\n } as typeof wagmiConfig;\n }\n\n // will disable calls query if disabled through query.input\n const callsQueryEnabled =\n typeof query?.enabled === \"boolean\" ? query.enabled : true;\n\n const { data: sendCallsReceipt, error: sendCallsError } = useAwaitCalls({\n id: sendCallsId,\n query: {\n enabled: callsQueryEnabled,\n },\n });\n\n const lastCallsReceiptTxHash =\n sendCallsReceipt?.receipts?.[sendCallsReceipt.receipts.length - 1]\n ?.transactionHash;\n if (isConnectedToSafeThroughWalletConnect) {\n realtxHash = lastCallsReceiptTxHash; // will disable txReceipt query if no lastCallsReceiptTxHash,\n // after callsStatus is updated to success or failure, realtxHash will be updated and txReceipt query will be enabled\n\n if (!realtxHash && sendCallsError) {\n // it is possible Safe through WalletConnect could be connected but called with a past non-Safe tx from localStorage,\n // in that case we should try to get the tx receipt normally\n realtxHash = hash;\n }\n }\n\n const queryResult = useWaitForTransactionReceipt<\n typeof wagmiConfig,\n SupportedChainId,\n SelectData\n >({\n config,\n chainId,\n confirmations,\n timeout,\n hash: realtxHash,\n query,\n onReplaced: (data) => {\n // @TODO connect to some atom if needed to detect cancelled/sped-up txs,\n // but sped-up txs may be detected correct internally and re-awaited with a new hash,\n // need to test\n // https://viem.sh/docs/actions/public/waitForTransactionReceipt.html#json-rpc-methods\n logger.log(\"onReplaced:tx\", hash, data);\n },\n });\n\n return queryResult;\n}\n\nexport function useEnsureTxReceipt(): EnsureTxReceiptFn {\n const queryClient = useQueryClient();\n const wagmiConfig = useConfig();\n const isSafe = useConnectedSafe();\n\n return ensureTxReceiptFactory({ queryClient, wagmiConfig, isSafe });\n}\n"],"names":["useAwaitTx","t0","$","_c","chainId","confirmations","hash","query","logger","useLogger","isSafe","useConnectedSafe","isConnectedToSafeIframe","useConnectedToSafeIframe","isConnectedToSafeThroughWalletConnect","useIsSafeThroughWalletConnect","timeout","SAFE_CALLS_WAIT_TIMEOUT","undefined","address","account","useAccount","t1","data","connectorClient","useConnectorClient","wagmiConfig","useConfig","config","realtxHash","sendCallsId","t2","options","assert","t3","getClient","callsQueryEnabled","enabled","id","sendCallsReceipt","error","sendCallsError","useAwaitCalls","lastCallsReceiptTxHash","receipts","length","transactionHash","t4","log","t5","onReplaced","queryResult","useWaitForTransactionReceipt","useEnsureTxReceipt","queryClient","useQueryClient","ensureTxReceiptFactory"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@ export type { WidgetProps, WidgetConfig, WidgetTheme, WidgetElements, EIP1193Pro
3
3
  export type { SupportedChainId } from './lib/web3/wagmi/types';
4
4
  export type { SwapMode } from './components/widget/SwapModeSwitcher/state/types';
5
5
  export type { MinTradeFlowToken } from './components/widget/TradeOverview';
6
- export type { LimitOrderFormState, OTCOrderFormState, SwapFormState, SettingsState, TokenFormState, WidgetState, } from './events/types/common';
6
+ export type { LimitOrderFormState, OTCOrderFormState, SwapFormState, SettingsState, TokenFormState, WidgetState, AccountState, } from './events/types/common';
7
7
  export type { WidgetEventCallbacks, OnConnectWallet, OnAllowToken, OnWrapETH, OnSwap, OnLimitOrder, OnOTCOrder, OnSettingsChange, OnCancelOrder, OnFillOTCOrder, OnFormInputChange, OnPriceChange, } from './events/types';
8
8
  export type { FormInputProps } from './core/inputs/state/types';
9
9
  export type { TradeMode } from './core/state/tradeModeAtom';