@velora-dex/widget 0.4.4-dev.1 → 0.4.4

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 (169) hide show
  1. package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js +2 -2
  2. package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js.map +1 -1
  3. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListRow.js +2 -2
  4. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListRow.js.map +1 -1
  5. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/utils.d.ts.map +1 -1
  6. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/utils.js.map +1 -1
  7. package/dist/components/widget/PayReceiveInfo/PayReceiveInfo.d.ts +1 -1
  8. package/dist/components/widget/PayReceiveInfo/PayReceiveInfo.d.ts.map +1 -1
  9. package/dist/components/widget/PayReceiveInfo/PayReceiveInfo.js +137 -87
  10. package/dist/components/widget/PayReceiveInfo/PayReceiveInfo.js.map +1 -1
  11. package/dist/components/widget/PayReceiveInfo/types.d.ts +5 -3
  12. package/dist/components/widget/PayReceiveInfo/types.d.ts.map +1 -1
  13. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/utils.d.ts.map +1 -1
  14. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/utils.js +2 -2
  15. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/utils.js.map +1 -1
  16. package/dist/components/widget/SwapRate/SwapRate.d.ts +2 -2
  17. package/dist/components/widget/SwapRate/SwapRate.d.ts.map +1 -1
  18. package/dist/components/widget/SwapRate/SwapRate.js.map +1 -1
  19. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts +2 -2
  20. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts.map +1 -1
  21. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js +78 -69
  22. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
  23. package/dist/components/widget/TradeOverview/FillOtcOrderTradeOverview.d.ts +2 -2
  24. package/dist/components/widget/TradeOverview/FillOtcOrderTradeOverview.d.ts.map +1 -1
  25. package/dist/components/widget/TradeOverview/FillOtcOrderTradeOverview.js +14 -12
  26. package/dist/components/widget/TradeOverview/FillOtcOrderTradeOverview.js.map +1 -1
  27. package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.d.ts +2 -2
  28. package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.d.ts.map +1 -1
  29. package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.js +15 -13
  30. package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.js.map +1 -1
  31. package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.d.ts +2 -2
  32. package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.d.ts.map +1 -1
  33. package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.js +72 -63
  34. package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.js.map +1 -1
  35. package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.d.ts +2 -2
  36. package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.d.ts.map +1 -1
  37. package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.js +17 -15
  38. package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.js.map +1 -1
  39. package/dist/components/widget/TradeOverview/Step/utils.d.ts +2 -1
  40. package/dist/components/widget/TradeOverview/Step/utils.d.ts.map +1 -1
  41. package/dist/components/widget/TradeOverview/Step/utils.js +4 -2
  42. package/dist/components/widget/TradeOverview/Step/utils.js.map +1 -1
  43. package/dist/components/widget/TradeOverview/Stepper.d.ts +1 -1
  44. package/dist/components/widget/TradeOverview/Stepper.d.ts.map +1 -1
  45. package/dist/components/widget/TradeOverview/Stepper.js +59 -62
  46. package/dist/components/widget/TradeOverview/Stepper.js.map +1 -1
  47. package/dist/components/widget/TradeOverview/TradeDetails.d.ts.map +1 -1
  48. package/dist/components/widget/TradeOverview/TradeDetails.js +181 -13
  49. package/dist/components/widget/TradeOverview/TradeDetails.js.map +1 -1
  50. package/dist/components/widget/TradeOverview/TradeDetailsDisplay.js.map +1 -1
  51. package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.d.ts +2 -2
  52. package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.d.ts.map +1 -1
  53. package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.js +4 -4
  54. package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.js.map +1 -1
  55. package/dist/components/widget/TradeOverview/TradeOverview.d.ts +18 -2
  56. package/dist/components/widget/TradeOverview/TradeOverview.d.ts.map +1 -1
  57. package/dist/components/widget/TradeOverview/TradeOverview.js +145 -111
  58. package/dist/components/widget/TradeOverview/TradeOverview.js.map +1 -1
  59. package/dist/components/widget/TradeOverview/TradeOverviewFooter.d.ts +4 -1
  60. package/dist/components/widget/TradeOverview/TradeOverviewFooter.d.ts.map +1 -1
  61. package/dist/components/widget/TradeOverview/TradeOverviewFooter.js +74 -60
  62. package/dist/components/widget/TradeOverview/TradeOverviewFooter.js.map +1 -1
  63. package/dist/components/widget/TradeOverview/steps.d.ts +32 -0
  64. package/dist/components/widget/TradeOverview/steps.d.ts.map +1 -1
  65. package/dist/components/widget/TradeOverview/steps.js +12 -2
  66. package/dist/components/widget/TradeOverview/steps.js.map +1 -1
  67. package/dist/components/widget/TradeOverview/tradeFlowContext.d.ts.map +1 -1
  68. package/dist/components/widget/TradeOverview/tradeFlowContext.js +13 -1
  69. package/dist/components/widget/TradeOverview/tradeFlowContext.js.map +1 -1
  70. package/dist/components/widget/TradeOverview/utils/isNonFlowStep.d.ts +4 -0
  71. package/dist/components/widget/TradeOverview/utils/isNonFlowStep.d.ts.map +1 -0
  72. package/dist/components/widget/TradeOverview/utils/isNonFlowStep.js +6 -0
  73. package/dist/components/widget/TradeOverview/utils/isNonFlowStep.js.map +1 -0
  74. package/dist/components/widget/TradeOverview/utils/preWrap.d.ts +1 -1
  75. package/dist/components/widget/TradeOverview/utils/preWrap.d.ts.map +1 -1
  76. package/dist/components/widget/TradeOverview/utils/preWrap.js +2 -2
  77. package/dist/components/widget/TradeOverview/utils/preWrap.js.map +1 -1
  78. package/dist/components/widget/TransactionDetails/LimitOrderDetails/utils.d.ts.map +1 -1
  79. package/dist/components/widget/TransactionDetails/LimitOrderDetails/utils.js.map +1 -1
  80. package/dist/configurator/Configurator.d.ts.map +1 -1
  81. package/dist/core/inputs/hooks/useMaxButtonProps.js +2 -2
  82. package/dist/core/inputs/hooks/useMaxButtonProps.js.map +1 -1
  83. package/dist/core/inputs/hooks/useTokenFromInputProps.js +2 -2
  84. package/dist/core/inputs/hooks/useTokenFromInputProps.js.map +1 -1
  85. package/dist/core/limit/useLimitRate.d.ts.map +1 -1
  86. package/dist/core/limit/useLimitRate.js +36 -53
  87. package/dist/core/limit/useLimitRate.js.map +1 -1
  88. package/dist/core/limit/useLimitTokenFromInputProps.js +2 -2
  89. package/dist/core/limit/useLimitTokenFromInputProps.js.map +1 -1
  90. package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.d.ts.map +1 -1
  91. package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.js +9 -8
  92. package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.js.map +1 -1
  93. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts +23 -10
  94. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts.map +1 -1
  95. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js +82 -36
  96. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js.map +1 -1
  97. package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.d.ts +2 -2
  98. package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.d.ts.map +1 -1
  99. package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.js.map +1 -1
  100. package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.d.ts +6 -2
  101. package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.d.ts.map +1 -1
  102. package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.js.map +1 -1
  103. package/dist/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.js.map +1 -1
  104. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +1 -27
  105. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
  106. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js +1 -27
  107. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js.map +1 -1
  108. package/dist/hooks/swap/prices/usePricesParams.d.ts +5 -0
  109. package/dist/hooks/swap/prices/usePricesParams.d.ts.map +1 -1
  110. package/dist/hooks/swap/prices/usePricesParams.js +21 -1
  111. package/dist/hooks/swap/prices/usePricesParams.js.map +1 -1
  112. package/dist/hooks/swap/prices/useSwapPrices.d.ts.map +1 -1
  113. package/dist/hooks/swap/prices/useSwapPrices.js +67 -72
  114. package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
  115. package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.d.ts.map +1 -1
  116. package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.js +35 -35
  117. package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.js.map +1 -1
  118. package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.d.ts +2 -2
  119. package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.d.ts.map +1 -1
  120. package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.js +2 -22
  121. package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.js.map +1 -1
  122. package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.d.ts +2 -2
  123. package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.d.ts.map +1 -1
  124. package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.js.map +1 -1
  125. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +3 -1
  126. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
  127. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +72 -27
  128. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
  129. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.d.ts +3 -1
  130. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.d.ts.map +1 -1
  131. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js +178 -85
  132. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js.map +1 -1
  133. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts +1 -0
  134. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts.map +1 -1
  135. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js +17 -15
  136. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js.map +1 -1
  137. package/dist/hooks/swap/tradeFlow/useLimitOrderStep.d.ts.map +1 -1
  138. package/dist/hooks/swap/tradeFlow/useLimitOrderStep.js +2 -1
  139. package/dist/hooks/swap/tradeFlow/useLimitOrderStep.js.map +1 -1
  140. package/dist/hooks/swap/tradeFlow/useMarketFlow.d.ts +2 -1
  141. package/dist/hooks/swap/tradeFlow/useMarketFlow.d.ts.map +1 -1
  142. package/dist/hooks/swap/tradeFlow/useMarketFlow.js +37 -11
  143. package/dist/hooks/swap/tradeFlow/useMarketFlow.js.map +1 -1
  144. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.d.ts +2 -0
  145. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.d.ts.map +1 -1
  146. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js +161 -79
  147. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js.map +1 -1
  148. package/dist/hooks/tokens/allowance/utils.d.ts +10 -2
  149. package/dist/hooks/tokens/allowance/utils.d.ts.map +1 -1
  150. package/dist/hooks/tokens/allowance/utils.js +19 -8
  151. package/dist/hooks/tokens/allowance/utils.js.map +1 -1
  152. package/dist/hooks/useSDK.d.ts +1 -1
  153. package/dist/hooks/useSDK.d.ts.map +1 -1
  154. package/dist/hooks/useSDK.js +1 -1
  155. package/dist/hooks/useSDK.js.map +1 -1
  156. package/dist/lib/constants/index.d.ts +1 -1
  157. package/dist/lib/constants/index.js +2 -2
  158. package/dist/lib/constants/index.js.map +1 -1
  159. package/dist/lib/constants/urls.d.ts.map +1 -1
  160. package/dist/lib/constants/urls.js.map +1 -1
  161. package/dist/lib/utils/fee.js +1 -1
  162. package/dist/lib/utils/fee.js.map +1 -1
  163. package/dist/lib/utils/slippage.d.ts.map +1 -1
  164. package/dist/lib/utils/slippage.js +1 -1
  165. package/dist/lib/utils/slippage.js.map +1 -1
  166. package/dist/lib/utils/toDecimal.d.ts.map +1 -1
  167. package/dist/lib/utils/toDecimal.js +5 -3
  168. package/dist/lib/utils/toDecimal.js.map +1 -1
  169. package/package.json +1 -1
@@ -1,4 +1,3 @@
1
- import { useFetchOnlySDK } from '../../../useSDK.js';
2
1
  import 'viem';
3
2
  import { deltaOrdersQueryKey } from '../../prices/delta/queries/useDeltaOrders.js';
4
3
  import { usePostDeltaOrder } from '../../prices/delta/mutations/usePostDeltaOrder.js';
@@ -20,11 +19,6 @@ function useDepositAndSubmitDeltaOrder({
20
19
  chainId,
21
20
  client: viemClient
22
21
  });
23
- const {
24
- sdk: fetchOnlySDK
25
- } = useFetchOnlySDK({
26
- chainId
27
- });
28
22
  const depositPrep = {
29
23
  isCreatingOrder: deltaOrderToPostMut.isPending,
30
24
  isOrderHashReady: deltaOrderToPostMut.isSuccess,
@@ -113,18 +107,9 @@ function useDepositAndSubmitDeltaOrder({
113
107
  signal
114
108
  } = createDeltaOrderInput;
115
109
  signal?.throwIfAborted();
116
- const orderToPost = await deltaOrderToPostMut.mutateAsync(createDeltaOrderInput);
117
- signal?.throwIfAborted();
118
- let orderIsPosted = false;
119
- const sendUnsentOrderOnPageHide = () => {
120
- if (orderIsPosted) return;
121
- orderIsPosted = true;
122
- fetchOnlySDK?.postDeltaOrder(orderToPost);
123
- };
124
- window.addEventListener("pagehide", sendUnsentOrderOnPageHide, {
125
- once: true
126
- });
127
110
  try {
111
+ const orderToPost = await deltaOrderToPostMut.mutateAsync(createDeltaOrderInput);
112
+ signal?.throwIfAborted();
128
113
  const depositTxHash = await sendDepositTxMut.mutateAsync({
129
114
  orderHash: orderToPost.orderHash,
130
115
  depositAmount: depositAmount.toString(),
@@ -151,16 +136,11 @@ function useDepositAndSubmitDeltaOrder({
151
136
  }
152
137
  });
153
138
  }
154
- const depositTxReceipt = await depositTxReceiptPromise;
155
- logger.log("[DepositAndSubmit] depositNativeAndPreSign tx mined, receipt:", depositTxReceipt);
156
139
  const orderFromAPI = await postOrderMut.mutateAsync(orderToPost);
157
- orderIsPosted = true;
158
140
  return orderFromAPI;
159
141
  } catch (error_0) {
160
142
  logger.error("[DepositAndSubmit] error", error_0);
161
143
  throw error_0;
162
- } finally {
163
- window.removeEventListener("pagehide", sendUnsentOrderOnPageHide);
164
144
  }
165
145
  };
166
146
  const reset = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"useDepositAndSubmitDeltaOrder.js","sources":["../../../../../src/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.ts"],"sourcesContent":["import { useFetchOnlySDK } from \"@/hooks/useSDK\";\n\nimport { type Address, type TransactionReceipt } from \"viem\";\nimport {\n deltaOrdersQueryKey,\n type SubmittedDeltaOrderFromAPI,\n} from \"../../prices/delta/queries/useDeltaOrders\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { LoggerInstance } from \"@/lib/utils/logger\";\nimport type { DeltaOrderApiResponse, MinViemClient } from \"@velora-dex/sdk\";\nimport { usePostDeltaOrder } from \"../../prices/delta/mutations/usePostDeltaOrder\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport type { CreateDeltaOrderInput } from \"../../prices/delta/mutations/useCreateDeltaOrder\";\nimport type { TxSentObject } from \"@/lib/utils/transactionHandlers\";\nimport { assert } from \"ts-essentials\";\nimport { useAwaitTx, useEnsureTxReceipt } from \"@/hooks/txs/queries/useAwaitTx\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { useDeltaOrderToPost } from \"../../prices/delta/mutations/useDeltaOrderToPost\";\nimport { useSendDepositPreSignDeltaOrderTx } from \"../../prices/delta/mutations/useSendDepositPreSignDeltaOrderTx\";\nimport type { PreSignDeltaOrderToPost } from \"../../prices/delta/mutations/types\";\n\nexport type DeltaOrderDepositResult = {\n depositPrep: {\n order?: PreSignDeltaOrderToPost;\n isCreatingOrder: boolean;\n isOrderHashReady: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n depositTx: {\n txHash?: Address;\n receipt?: TransactionReceipt;\n isConfirmingTX: boolean;\n isConfirmingTxError: boolean;\n isTxSent: boolean;\n isTxPending: boolean;\n isTxMined: boolean;\n isTxAwaitingError: boolean;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n };\n postingOrder: {\n order?: SubmittedDeltaOrderFromAPI;\n isPostingOrder: boolean;\n isOrderSent: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n order?: SubmittedDeltaOrderFromAPI;\n isCreatingOrder: boolean;\n isOrderSent: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n};\n\ntype UseDepositAndSubmitDeltaOrderInput = {\n chainId: SupportedChainId;\n account?: Address;\n logger: LoggerInstance;\n viemClient?: MinViemClient;\n};\n\ntype UseDepositAndSubmitDeltaOrderResult = {\n deltaOrderDeposit: DeltaOrderDepositResult;\n depositAndSubmitDeltaOrder: DepositAndSubmitDeltaOrderFunc;\n reset: () => void;\n};\n\nexport function useDepositAndSubmitDeltaOrder({\n chainId,\n account,\n logger,\n viemClient,\n}: UseDepositAndSubmitDeltaOrderInput): UseDepositAndSubmitDeltaOrderResult {\n const queryClient = useQueryClient();\n\n const deltaOrderToPostMut = useDeltaOrderToPost({\n chainId,\n client: viemClient,\n });\n\n const { sdk: fetchOnlySDK } = useFetchOnlySDK({\n chainId,\n });\n\n const depositPrep: DeltaOrderDepositResult[\"depositPrep\"] = {\n isCreatingOrder: deltaOrderToPostMut.isPending,\n isOrderHashReady: deltaOrderToPostMut.isSuccess,\n order: deltaOrderToPostMut.data,\n isPending: deltaOrderToPostMut.isPending,\n isError: deltaOrderToPostMut.isError,\n isSuccess: deltaOrderToPostMut.isSuccess,\n error: deltaOrderToPostMut.error,\n };\n\n /* 1. submit depositNativeAndPreSign tx */\n const sendDepositTxMut = useSendDepositPreSignDeltaOrderTx({\n chainId,\n client: viemClient,\n });\n\n /* 2. await depositNativeAndPreSign tx */\n const awaitDepositTx = useAwaitTx({\n hash: sendDepositTxMut.data,\n chainId,\n });\n\n const depositTx = {\n txHash: sendDepositTxMut.data,\n receipt: awaitDepositTx.data,\n /* tx sending */\n isConfirmingTX: sendDepositTxMut.isPending,\n isConfirmingTxError: sendDepositTxMut.isError,\n isTxSent: sendDepositTxMut.isSuccess,\n /* tx awaiting */\n isTxPending: awaitDepositTx.isLoading,\n isTxMined: awaitDepositTx.isSuccess,\n isTxAwaitingError: awaitDepositTx.isError,\n /* combined */\n isPending: sendDepositTxMut.isPending || awaitDepositTx.isLoading,\n isSuccess: awaitDepositTx.isSuccess, // final success\n isError: sendDepositTxMut.isError || awaitDepositTx.isError,\n error: sendDepositTxMut.error || awaitDepositTx.error,\n };\n\n /* 3. post Pre-signed Order */\n\n const postOrderMut = usePostDeltaOrder({\n chainId,\n account,\n client: viemClient,\n mutationOptions: {\n onSuccess: (order) => {\n logger.log(\"[DepositAndSubmit] Create Delta Order success\", order);\n queryClient.invalidateQueries({\n queryKey: deltaOrdersQueryKey({\n userAddress: order.user,\n }),\n exact: false,\n });\n },\n onError: (error) => {\n logger.error(\"[DepositAndSubmit] Create Delta Order error\", error);\n },\n },\n });\n\n const deltaOrderPosting: DeltaOrderDepositResult[\"postingOrder\"] = {\n order: postOrderMut.data,\n isPostingOrder: postOrderMut.isPending,\n isOrderSent: postOrderMut.isSuccess,\n isPending: postOrderMut.isPending,\n isError: postOrderMut.isError,\n isSuccess: postOrderMut.isSuccess,\n error: postOrderMut.error,\n };\n\n const deltaOrderDeposit: DeltaOrderDepositResult = {\n order: postOrderMut.data,\n depositPrep: depositPrep,\n depositTx,\n postingOrder: deltaOrderPosting,\n isCreatingOrder:\n depositPrep.isCreatingOrder ||\n depositTx.isPending ||\n deltaOrderPosting.isPostingOrder,\n isOrderSent: deltaOrderPosting.isOrderSent,\n isPending:\n depositPrep.isPending ||\n depositTx.isPending ||\n deltaOrderPosting.isPending,\n isError:\n depositPrep.isError || depositTx.isError || deltaOrderPosting.isError,\n isSuccess: deltaOrderPosting.isSuccess,\n error: depositPrep.error || depositTx.error || deltaOrderPosting.error,\n };\n\n const ensureTxReceipt = useEnsureTxReceipt();\n\n const depositAndSubmitDeltaOrder: DepositAndSubmitDeltaOrderFunc = async ({\n depositAmount: _depositAmount,\n createDeltaOrderInput,\n onTxSent,\n }) => {\n const depositAmount = BigInt(_depositAmount);\n\n assert(\n isETHaddress(createDeltaOrderInput.orderInput.srcToken),\n \"srcToken must be ETH\"\n );\n assert(depositAmount > 0n, \"depositAmount must be greater than 0\");\n\n // deposit ETH + depositTx + POST order\n\n const { signal } = createDeltaOrderInput;\n\n // if aborted by this point, throw an error\n signal?.throwIfAborted();\n\n const orderToPost = await deltaOrderToPostMut.mutateAsync(\n createDeltaOrderInput\n );\n\n // if aborted by this point, throw an error\n signal?.throwIfAborted();\n\n let orderIsPosted = false;\n\n const sendUnsentOrderOnPageHide = () => {\n if (orderIsPosted) return;\n orderIsPosted = true;\n fetchOnlySDK?.postDeltaOrder(orderToPost);\n };\n\n // subscribe to `pagehide` event\n // in that case POST the Order just in case the page is never reloaded or localStorage survives until then.\n window.addEventListener(\"pagehide\", sendUnsentOrderOnPageHide, {\n once: true,\n });\n\n try {\n const depositTxHash = await sendDepositTxMut.mutateAsync({\n orderHash: orderToPost.orderHash,\n depositAmount: depositAmount.toString(),\n signal,\n });\n\n logger.log(\n \"[DepositAndSubmit] awaiting depositNativeAndPreSign txHash:\",\n depositTxHash\n );\n\n const depositTxReceiptPromise = ensureTxReceipt({\n hash: depositTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\n \"[DepositAndSubmit] onReplaced:txHash\",\n depositTxHash,\n data\n );\n },\n });\n\n if (onTxSent) {\n onTxSent({\n chainId,\n action: \"depositNativeAndPreSign\",\n receiptPromise: depositTxReceiptPromise,\n transactionHash: depositTxHash,\n transactionSpecificData: {\n action: \"depositNativeAndPreSign\",\n order: orderToPost,\n depositAmount,\n },\n });\n }\n\n // 5. wait for the depositNativeAndPreSign tx to be mined\n const depositTxReceipt = await depositTxReceiptPromise;\n\n logger.log(\n \"[DepositAndSubmit] depositNativeAndPreSign tx mined, receipt:\",\n depositTxReceipt\n );\n\n // 6. POST the Order to API with signature=0x\n const orderFromAPI = await postOrderMut.mutateAsync(orderToPost);\n orderIsPosted = true;\n\n return orderFromAPI;\n } catch (error) {\n logger.error(\"[DepositAndSubmit] error\", error);\n throw error;\n } finally {\n window.removeEventListener(\"pagehide\", sendUnsentOrderOnPageHide);\n }\n };\n\n const reset = () => {\n deltaOrderToPostMut.reset();\n sendDepositTxMut.reset();\n postOrderMut.reset();\n };\n\n return {\n deltaOrderDeposit,\n depositAndSubmitDeltaOrder,\n reset,\n };\n}\n\ntype DepositAndSubmitDeltaOrderInput = {\n createDeltaOrderInput: CreateDeltaOrderInput;\n depositAmount: string;\n onTxSent?: (txSent: TxSentObject) => void;\n};\n\ntype DepositAndSubmitDeltaOrderFunc = (\n input: DepositAndSubmitDeltaOrderInput\n) => Promise<DeltaOrderApiResponse>;\n"],"names":["useDepositAndSubmitDeltaOrder","chainId","account","logger","viemClient","queryClient","useQueryClient","deltaOrderToPostMut","useDeltaOrderToPost","client","sdk","fetchOnlySDK","useFetchOnlySDK","depositPrep","isCreatingOrder","isPending","isOrderHashReady","isSuccess","order","data","isError","error","sendDepositTxMut","useSendDepositPreSignDeltaOrderTx","awaitDepositTx","useAwaitTx","hash","depositTx","txHash","receipt","isConfirmingTX","isConfirmingTxError","isTxSent","isTxPending","isLoading","isTxMined","isTxAwaitingError","postOrderMut","usePostDeltaOrder","mutationOptions","onSuccess","log","invalidateQueries","queryKey","deltaOrdersQueryKey","userAddress","user","exact","onError","deltaOrderPosting","isPostingOrder","isOrderSent","deltaOrderDeposit","postingOrder","ensureTxReceipt","useEnsureTxReceipt","depositAndSubmitDeltaOrder","depositAmount","_depositAmount","createDeltaOrderInput","onTxSent","BigInt","assert","isETHaddress","orderInput","srcToken","signal","throwIfAborted","orderToPost","mutateAsync","orderIsPosted","sendUnsentOrderOnPageHide","postDeltaOrder","window","addEventListener","once","depositTxHash","orderHash","toString","depositTxReceiptPromise","onReplaced","action","receiptPromise","transactionHash","transactionSpecificData","depositTxReceipt","orderFromAPI","removeEventListener","reset"],"mappings":"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"}
1
+ {"version":3,"file":"useDepositAndSubmitDeltaOrder.js","sources":["../../../../../src/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.ts"],"sourcesContent":["import { type Address, type TransactionReceipt } from \"viem\";\nimport {\n deltaOrdersQueryKey,\n type SubmittedDeltaOrderFromAPI,\n} from \"../../prices/delta/queries/useDeltaOrders\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { LoggerInstance } from \"@/lib/utils/logger\";\nimport type { DeltaOrderApiResponse, MinViemClient } from \"@velora-dex/sdk\";\nimport { usePostDeltaOrder } from \"../../prices/delta/mutations/usePostDeltaOrder\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport type { CreateAndSubmitDeltaOrderInput } from \"../../prices/delta/mutations/useCreateDeltaOrder\";\nimport type { TxSentObject } from \"@/lib/utils/transactionHandlers\";\nimport { assert } from \"ts-essentials\";\nimport { useAwaitTx, useEnsureTxReceipt } from \"@/hooks/txs/queries/useAwaitTx\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { useDeltaOrderToPost } from \"../../prices/delta/mutations/useDeltaOrderToPost\";\nimport { useSendDepositPreSignDeltaOrderTx } from \"../../prices/delta/mutations/useSendDepositPreSignDeltaOrderTx\";\nimport type { PreSignDeltaOrderToPost } from \"../../prices/delta/mutations/types\";\n\nexport type DeltaOrderDepositResult = {\n depositPrep: {\n order?: PreSignDeltaOrderToPost;\n isCreatingOrder: boolean;\n isOrderHashReady: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n depositTx: {\n txHash?: Address;\n receipt?: TransactionReceipt;\n isConfirmingTX: boolean;\n isConfirmingTxError: boolean;\n isTxSent: boolean;\n isTxPending: boolean;\n isTxMined: boolean;\n isTxAwaitingError: boolean;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n };\n postingOrder: {\n order?: SubmittedDeltaOrderFromAPI;\n isPostingOrder: boolean;\n isOrderSent: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n order?: SubmittedDeltaOrderFromAPI;\n isCreatingOrder: boolean;\n isOrderSent: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n};\n\ntype UseDepositAndSubmitDeltaOrderInput = {\n chainId: SupportedChainId;\n account?: Address;\n logger: LoggerInstance;\n viemClient?: MinViemClient;\n};\n\ntype UseDepositAndSubmitDeltaOrderResult = {\n deltaOrderDeposit: DeltaOrderDepositResult;\n depositAndSubmitDeltaOrder: DepositAndSubmitDeltaOrderFunc;\n reset: () => void;\n};\n\nexport function useDepositAndSubmitDeltaOrder({\n chainId,\n account,\n logger,\n viemClient,\n}: UseDepositAndSubmitDeltaOrderInput): UseDepositAndSubmitDeltaOrderResult {\n const queryClient = useQueryClient();\n\n const deltaOrderToPostMut = useDeltaOrderToPost({\n chainId,\n client: viemClient,\n });\n\n const depositPrep: DeltaOrderDepositResult[\"depositPrep\"] = {\n isCreatingOrder: deltaOrderToPostMut.isPending,\n isOrderHashReady: deltaOrderToPostMut.isSuccess,\n order: deltaOrderToPostMut.data,\n isPending: deltaOrderToPostMut.isPending,\n isError: deltaOrderToPostMut.isError,\n isSuccess: deltaOrderToPostMut.isSuccess,\n error: deltaOrderToPostMut.error,\n };\n\n /* 1. submit depositNativeAndPreSign tx */\n const sendDepositTxMut = useSendDepositPreSignDeltaOrderTx({\n chainId,\n client: viemClient,\n });\n\n /* 2. await depositNativeAndPreSign tx */\n const awaitDepositTx = useAwaitTx({\n hash: sendDepositTxMut.data,\n chainId,\n });\n\n const depositTx = {\n txHash: sendDepositTxMut.data,\n receipt: awaitDepositTx.data,\n /* tx sending */\n isConfirmingTX: sendDepositTxMut.isPending,\n isConfirmingTxError: sendDepositTxMut.isError,\n isTxSent: sendDepositTxMut.isSuccess,\n /* tx awaiting */\n isTxPending: awaitDepositTx.isLoading,\n isTxMined: awaitDepositTx.isSuccess,\n isTxAwaitingError: awaitDepositTx.isError,\n /* combined */\n isPending: sendDepositTxMut.isPending || awaitDepositTx.isLoading,\n isSuccess: awaitDepositTx.isSuccess, // final success\n isError: sendDepositTxMut.isError || awaitDepositTx.isError,\n error: sendDepositTxMut.error || awaitDepositTx.error,\n };\n\n /* 3. post Pre-signed Order */\n\n const postOrderMut = usePostDeltaOrder({\n chainId,\n account,\n client: viemClient,\n mutationOptions: {\n onSuccess: (order) => {\n logger.log(\"[DepositAndSubmit] Create Delta Order success\", order);\n queryClient.invalidateQueries({\n queryKey: deltaOrdersQueryKey({\n userAddress: order.user,\n }),\n exact: false,\n });\n },\n onError: (error) => {\n logger.error(\"[DepositAndSubmit] Create Delta Order error\", error);\n },\n },\n });\n\n const deltaOrderPosting: DeltaOrderDepositResult[\"postingOrder\"] = {\n order: postOrderMut.data,\n isPostingOrder: postOrderMut.isPending,\n isOrderSent: postOrderMut.isSuccess,\n isPending: postOrderMut.isPending,\n isError: postOrderMut.isError,\n isSuccess: postOrderMut.isSuccess,\n error: postOrderMut.error,\n };\n\n const deltaOrderDeposit: DeltaOrderDepositResult = {\n order: postOrderMut.data,\n depositPrep: depositPrep,\n depositTx,\n postingOrder: deltaOrderPosting,\n isCreatingOrder:\n depositPrep.isCreatingOrder ||\n depositTx.isPending ||\n deltaOrderPosting.isPostingOrder,\n isOrderSent: deltaOrderPosting.isOrderSent,\n isPending:\n depositPrep.isPending ||\n depositTx.isPending ||\n deltaOrderPosting.isPending,\n isError:\n depositPrep.isError || depositTx.isError || deltaOrderPosting.isError,\n isSuccess: deltaOrderPosting.isSuccess,\n error: depositPrep.error || depositTx.error || deltaOrderPosting.error,\n };\n\n const ensureTxReceipt = useEnsureTxReceipt();\n\n const depositAndSubmitDeltaOrder: DepositAndSubmitDeltaOrderFunc = async ({\n depositAmount: _depositAmount,\n createDeltaOrderInput,\n onTxSent,\n }) => {\n const depositAmount = BigInt(_depositAmount);\n\n assert(\n isETHaddress(createDeltaOrderInput.orderInput.srcToken),\n \"srcToken must be ETH\"\n );\n assert(depositAmount > 0n, \"depositAmount must be greater than 0\");\n\n // sign depositTx + POST order\n\n const { signal } = createDeltaOrderInput;\n\n // if aborted by this point, throw an error\n signal?.throwIfAborted();\n\n try {\n const orderToPost = await deltaOrderToPostMut.mutateAsync(\n createDeltaOrderInput\n );\n\n // if aborted by this point, throw an error\n signal?.throwIfAborted();\n\n const depositTxHash = await sendDepositTxMut.mutateAsync({\n orderHash: orderToPost.orderHash,\n depositAmount: depositAmount.toString(),\n signal,\n });\n\n logger.log(\n \"[DepositAndSubmit] awaiting depositNativeAndPreSign txHash:\",\n depositTxHash\n );\n\n const depositTxReceiptPromise = ensureTxReceipt({\n hash: depositTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\n \"[DepositAndSubmit] onReplaced:txHash\",\n depositTxHash,\n data\n );\n },\n });\n\n if (onTxSent) {\n onTxSent({\n chainId,\n action: \"depositNativeAndPreSign\",\n receiptPromise: depositTxReceiptPromise,\n transactionHash: depositTxHash,\n transactionSpecificData: {\n action: \"depositNativeAndPreSign\",\n order: orderToPost,\n depositAmount,\n },\n });\n }\n\n // 6. POST the Order to API with signature=0x\n const orderFromAPI = await postOrderMut.mutateAsync(orderToPost);\n\n return orderFromAPI;\n } catch (error) {\n logger.error(\"[DepositAndSubmit] error\", error);\n throw error;\n }\n };\n\n const reset = () => {\n deltaOrderToPostMut.reset();\n sendDepositTxMut.reset();\n postOrderMut.reset();\n };\n\n return {\n deltaOrderDeposit,\n depositAndSubmitDeltaOrder,\n reset,\n };\n}\n\ntype DepositAndSubmitDeltaOrderInput = {\n createDeltaOrderInput: CreateAndSubmitDeltaOrderInput;\n depositAmount: string;\n onTxSent?: (txSent: TxSentObject) => void;\n};\n\ntype DepositAndSubmitDeltaOrderFunc = (\n input: DepositAndSubmitDeltaOrderInput\n) => Promise<DeltaOrderApiResponse>;\n"],"names":["useDepositAndSubmitDeltaOrder","chainId","account","logger","viemClient","queryClient","useQueryClient","deltaOrderToPostMut","useDeltaOrderToPost","client","depositPrep","isCreatingOrder","isPending","isOrderHashReady","isSuccess","order","data","isError","error","sendDepositTxMut","useSendDepositPreSignDeltaOrderTx","awaitDepositTx","useAwaitTx","hash","depositTx","txHash","receipt","isConfirmingTX","isConfirmingTxError","isTxSent","isTxPending","isLoading","isTxMined","isTxAwaitingError","postOrderMut","usePostDeltaOrder","mutationOptions","onSuccess","log","invalidateQueries","queryKey","deltaOrdersQueryKey","userAddress","user","exact","onError","deltaOrderPosting","isPostingOrder","isOrderSent","deltaOrderDeposit","postingOrder","ensureTxReceipt","useEnsureTxReceipt","depositAndSubmitDeltaOrder","depositAmount","_depositAmount","createDeltaOrderInput","onTxSent","BigInt","assert","isETHaddress","orderInput","srcToken","signal","throwIfAborted","orderToPost","mutateAsync","depositTxHash","orderHash","toString","depositTxReceiptPromise","onReplaced","action","receiptPromise","transactionHash","transactionSpecificData","orderFromAPI","reset"],"mappings":"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"}
@@ -4,7 +4,7 @@ import { SubmittedDeltaOrderFromAPI } from '../../prices/delta/queries/useDeltaO
4
4
  import { SupportedChainId } from '../../../../lib/web3/wagmi/types';
5
5
  import { LoggerInstance } from '../../../../lib/utils/logger';
6
6
  import { DeltaOrderApiResponse, MinViemClient } from '@velora-dex/sdk';
7
- import { CreateDeltaOrderInput } from '../../prices/delta/mutations/useCreateDeltaOrder';
7
+ import { CreateAndSubmitDeltaOrderInput } from '../../prices/delta/mutations/useCreateDeltaOrder';
8
8
  import { CallsSentObject } from '../../../../lib/utils/transactionHandlers';
9
9
  import { ApprovalFlowResult, BatchTxStepResult, SignPermitFlowResult } from './types';
10
10
  export type DeltaOrderPreSignResult = {
@@ -51,7 +51,7 @@ type UsePreSignAndSubmitDeltaOrderResult = {
51
51
  };
52
52
  export declare function usePreSignAndSubmitDeltaOrder({ chainId, account, logger, viemClient, }: UsePreSignAndSubmitDeltaOrderInput): UsePreSignAndSubmitDeltaOrderResult;
53
53
  type PreSignAndSubmitDeltaOrderInput = {
54
- createDeltaOrderInput: CreateDeltaOrderInput;
54
+ createDeltaOrderInput: CreateAndSubmitDeltaOrderInput;
55
55
  approval: Pick<ApprovalFlowResult, "spender" | "allowanceToSet" | "token" | "chainId">;
56
56
  onTxSent?: (txSent: CallsSentObject) => void;
57
57
  };
@@ -1 +1 @@
1
- {"version":3,"file":"usePreSignAndSubmitDeltaOrder.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usePreSignAndSubmitDeltaOrder.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePreSignAndSubmitDeltaOrder.js","sources":["../../../../../src/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.ts"],"sourcesContent":["import { useFetchOnlySDK } from \"@/hooks/useSDK\";\nimport type { PreSignDeltaOrderToPost } from \"../../prices/delta/mutations/types\";\nimport { useCreatePreSignableDeltaOrder } from \"../../prices/delta/mutations/useCreatePreSignableDeltaOrder\";\nimport {\n useBatchWithApproveTxs,\n type TxParams,\n} from \"@/hooks/batch/useBatchWithApproveTxs\";\nimport { useSendBatchTx } from \"@/hooks/batch/useSendBatchTx\";\nimport {\n useAwaitCalls,\n useEnsureCallsStatus,\n} from \"@/hooks/batch/useAwaitCalls\";\nimport { isAddress, type Address } from \"viem\";\nimport {\n deltaOrdersQueryKey,\n type SubmittedDeltaOrderFromAPI,\n} from \"../../prices/delta/queries/useDeltaOrders\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { LoggerInstance } from \"@/lib/utils/logger\";\nimport type { DeltaOrderApiResponse, MinViemClient } from \"@velora-dex/sdk\";\nimport { useConnectedSafe } from \"@/hooks/connectors/useIsConnectedSafe\";\nimport { useCanBatchTxs } from \"@/hooks/batch/useCanBatchTxs\";\nimport { usePostDeltaOrder } from \"../../prices/delta/mutations/usePostDeltaOrder\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport type { CreateDeltaOrderInput } from \"../../prices/delta/mutations/useCreateDeltaOrder\";\nimport type { CallsSentObject } from \"@/lib/utils/transactionHandlers\";\nimport type {\n ApprovalFlowResult,\n BatchTxStepResult,\n SignPermitFlowResult,\n} from \"./types\";\nimport { assert } from \"ts-essentials\";\nimport { useEnsureContractsQuery } from \"../../prices/market/queries/useSpenderAndContracts\";\n\nexport type DeltaOrderPreSignResult = {\n canPreSignBatch: boolean;\n preSignPrep: {\n order?: PreSignDeltaOrderToPost;\n isCreatingOrder: boolean;\n isOrderHashReady: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n preSignBatch: BatchTxStepResult;\n postingOrder: {\n order?: SubmittedDeltaOrderFromAPI;\n isPostingOrder: boolean;\n isOrderSent: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n order?: SubmittedDeltaOrderFromAPI;\n isCreatingOrder: boolean;\n isOrderSent: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n};\n\ntype UsePreSignAndSubmitDeltaOrderInput = {\n chainId: SupportedChainId;\n account?: Address;\n logger: LoggerInstance;\n viemClient?: MinViemClient;\n};\n\ntype UsePreSignAndSubmitDeltaOrderResult = {\n deltaOrderPreSign: DeltaOrderPreSignResult;\n canBatchTxs?: boolean;\n isConnectedToSafe: boolean;\n preSignAndSubmitDeltaOrder: PreSignAndSubmitDeltaOrderFunc;\n reset: () => void;\n};\n\nexport function usePreSignAndSubmitDeltaOrder({\n chainId,\n account,\n logger,\n viemClient,\n}: UsePreSignAndSubmitDeltaOrderInput): UsePreSignAndSubmitDeltaOrderResult {\n const queryClient = useQueryClient();\n\n const { forCurrentChain: canBatchTxs } = useCanBatchTxs();\n const isConnectedToSafe = useConnectedSafe();\n\n /* 1. submit Batch tx (Approve + Delta pre-sign) */\n\n const createPreSignableOrderMut = useCreatePreSignableDeltaOrder({\n chainId,\n client: viemClient,\n });\n\n const { sdk: fetchOnlySDK } = useFetchOnlySDK({\n chainId,\n });\n\n const preSignPreparations: DeltaOrderPreSignResult[\"preSignPrep\"] = {\n isCreatingOrder: createPreSignableOrderMut.isPending,\n isOrderHashReady: createPreSignableOrderMut.isSuccess,\n order: createPreSignableOrderMut.data?.orderToPost,\n isPending: createPreSignableOrderMut.isPending,\n isError: createPreSignableOrderMut.isError,\n isSuccess: createPreSignableOrderMut.isSuccess,\n error: createPreSignableOrderMut.error,\n };\n\n const { addTxWithApprovals } = useBatchWithApproveTxs();\n\n const batchTxMut = useSendBatchTx({\n onSuccess: () => {\n logger.log(\"Batch tx success\");\n },\n onError: (error) => {\n logger.error(\"Batch tx error\", error);\n },\n });\n\n /* 2. await Batch tx */\n const batchTxMined = useAwaitCalls({\n id: batchTxMut.data?.id,\n });\n\n // for a successful SendCalls execution there will either be one receipt only,\n // or several receipts with the last one for the last tx from the batch\n const lastCallsReceipt =\n batchTxMined.data?.receipts?.[batchTxMined.data.receipts.length - 1];\n\n const deltaPreSignBatch: BatchTxStepResult = {\n canBatchTxs,\n callsId: batchTxMut.data?.id,\n txHash: lastCallsReceipt?.transactionHash,\n receipt: lastCallsReceipt,\n /* calls sending */\n isConfirmingCalls: batchTxMut.isPending,\n isConfirmingCallsError: batchTxMut.isError,\n isCallsSent: batchTxMut.isSuccess,\n /* calls awaiting */\n isCallsPending: batchTxMined.isLoading,\n isCallsMined: batchTxMined.isSuccess,\n isCallsAwaitingError: batchTxMined.isError,\n /* combined */\n isPending: batchTxMut.isPending || batchTxMined.isLoading,\n isSuccess: batchTxMined.isSuccess,\n isError: batchTxMut.isError || batchTxMined.isError,\n error: batchTxMut.error || batchTxMined.error,\n };\n\n /* 3. post Pre-signed Order */\n\n const postOrderMut = usePostDeltaOrder({\n chainId,\n account,\n client: viemClient,\n mutationOptions: {\n onSuccess: (order) => {\n logger.log(\"Create Delta Order success\", order);\n queryClient.invalidateQueries({\n queryKey: deltaOrdersQueryKey({\n userAddress: order.user,\n }),\n exact: false,\n });\n },\n onError: (error) => {\n logger.error(\"Create Delta Order error\", error);\n },\n },\n });\n\n const deltaOrderPosting: DeltaOrderPreSignResult[\"postingOrder\"] = {\n order: postOrderMut.data,\n isPostingOrder: postOrderMut.isPending,\n isOrderSent: postOrderMut.isSuccess,\n isPending: postOrderMut.isPending,\n isError: postOrderMut.isError,\n isSuccess: postOrderMut.isSuccess,\n error: postOrderMut.error,\n };\n\n const deltaOrderPreSign: DeltaOrderPreSignResult = {\n canPreSignBatch: !!canBatchTxs,\n order: postOrderMut.data,\n preSignPrep: preSignPreparations,\n preSignBatch: deltaPreSignBatch,\n postingOrder: deltaOrderPosting,\n isCreatingOrder:\n preSignPreparations.isCreatingOrder ||\n deltaPreSignBatch.isPending ||\n deltaOrderPosting.isPostingOrder,\n isOrderSent: deltaOrderPosting.isOrderSent,\n isPending:\n preSignPreparations.isPending ||\n deltaPreSignBatch.isPending ||\n deltaOrderPosting.isPending,\n isError:\n preSignPreparations.isError ||\n deltaPreSignBatch.isError ||\n deltaOrderPosting.isError,\n isSuccess: deltaOrderPosting.isSuccess,\n error:\n preSignPreparations.error ||\n deltaPreSignBatch.error ||\n deltaOrderPosting.error,\n };\n\n const ensureCallsStatus = useEnsureCallsStatus();\n const { ensureContractsLoaded } = useEnsureContractsQuery({ chainId });\n\n const preSignAndSubmitDeltaOrder: PreSignAndSubmitDeltaOrderFunc = async ({\n createDeltaOrderInput,\n approval,\n onTxSent,\n }) => {\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 const { signal } = createDeltaOrderInput;\n\n const { orderToPost, preSignCalldata } =\n await createPreSignableOrderMut.mutateAsync(createDeltaOrderInput);\n\n // if aborted by this point, throw an error\n signal?.throwIfAborted();\n\n const { ParaswapDelta: DeltaContract } = await ensureContractsLoaded({\n signal,\n });\n\n assert(\n DeltaContract && isAddress(DeltaContract),\n `DeltaContract is not available on chain ${chainId}`\n );\n\n const txsParams: [TxParams, ...TxParams[]] = [\n {\n to: DeltaContract,\n account,\n data: preSignCalldata,\n value: 0n,\n chainId,\n },\n ];\n\n const needToApprove =\n approval.allowanceToSet &&\n approval.allowanceToSet > 0n &&\n approval.spender;\n\n const approveProps = needToApprove\n ? [\n {\n spender: approval.spender,\n allowanceToSet: approval.allowanceToSet,\n token: approval.token,\n chainId: approval.chainId,\n },\n ]\n : undefined;\n\n // 4. construct a sendCalls batch with Approve Token + setPreSignature call\n const { calls } = await addTxWithApprovals({\n txsParams,\n approveProps,\n });\n\n // if aborted by this point, throw an error\n signal?.throwIfAborted();\n\n let orderIsPosted = false;\n\n const sendUnsentOrderOnPageHide = () => {\n if (orderIsPosted) return;\n orderIsPosted = true;\n fetchOnlySDK?.postDeltaOrder(orderToPost);\n };\n\n // check if the page was closed after sendCalls succeeded but before the Order was posted.\n // in that case POST the Order just in case the page is never reloaded or localStorage survives until then.\n // `pagehide` event is more reliable on desktop and does not fire on tab switching in browser,\n // but on mobile minimizing the browser doesn't fire `pagehide` event but does `visibilitychange`.\n // with `visibilitychange` though we can't reliably resume the flow because navigator.sendBeacon doesn't return response\n window.addEventListener(\"pagehide\", sendUnsentOrderOnPageHide, {\n once: true,\n });\n // prepared to POST Order in case of page close before sending the Approve+setPreSignature batch tx request,\n // because inside Safe it's very easy to switch page and go to Transactions page by clicking in a popup,\n // so the Widget state will be lost but the Safe would already receive a tx to sign\n // and it's not obvious that the Delta flow was aborted\n const unsubscribeFromPageHide = () => {\n window.removeEventListener(\"pagehide\", sendUnsentOrderOnPageHide);\n };\n\n try {\n // 5. send the Approve+setPreSignature batch tx request to the wallet\n const sendCallsResult = await batchTxMut.sendCalls({\n txsParams: calls,\n });\n\n const sendCallsReceiptPromise = ensureCallsStatus({\n id: sendCallsResult.id,\n }).then((status) => status.receipts?.[status.receipts.length - 1]);\n\n logger.log(\n \"~ deltaOrder ~ awaiting setPreSignature calls id :\",\n sendCallsResult.id\n );\n\n if (onTxSent) {\n onTxSent({\n chainId,\n action: \"preSignDeltaOrder\",\n callsId: sendCallsResult.id,\n receiptPromise: sendCallsReceiptPromise,\n transactionSpecificData: {\n action: \"preSignDeltaOrder\",\n order: orderToPost,\n },\n });\n }\n\n // 6. wait for that batch tx to be mined;\n const res = await sendCallsReceiptPromise;\n logger.log(\"~ deltaOrder ~ setPreSignature calls result :\", res);\n\n // 7. POST the Order to API with signature=0x\n const orderFromAPI = await postOrderMut.mutateAsync(orderToPost);\n orderIsPosted = true;\n\n return orderFromAPI;\n } catch (error) {\n logger.error(\"Pre-sign and submit Delta Order error\", error);\n throw error;\n } finally {\n unsubscribeFromPageHide();\n }\n };\n\n const reset = () => {\n createPreSignableOrderMut.reset();\n batchTxMut.reset();\n postOrderMut.reset();\n };\n\n return {\n deltaOrderPreSign,\n canBatchTxs,\n isConnectedToSafe,\n preSignAndSubmitDeltaOrder,\n reset,\n };\n}\n\ntype PreSignAndSubmitDeltaOrderInput = {\n createDeltaOrderInput: CreateDeltaOrderInput;\n approval: Pick<\n ApprovalFlowResult,\n \"spender\" | \"allowanceToSet\" | \"token\" | \"chainId\"\n >;\n onTxSent?: (txSent: CallsSentObject) => void;\n};\n\ntype PreSignAndSubmitDeltaOrderFunc = (\n input: PreSignAndSubmitDeltaOrderInput\n) => Promise<DeltaOrderApiResponse>;\n\ntype ShouldApproveOrBatchInput = {\n approval: Pick<ApprovalFlowResult, \"needsApproval\" | \"allowanceToSet\">;\n signPermit: Pick<\n SignPermitFlowResult,\n \"isPermitSupported\" | \"isPermitReadyToSign\"\n >;\n canBatchTxs?: boolean;\n isConnectedToSafe: boolean;\n};\n\ntype ShouldApproveOrBatchResult = {\n shouldDoApprovalTxOrPermit: boolean;\n tryPermit: boolean;\n shouldPreSignBatch: boolean;\n};\n\nexport function shouldApproveOrBatch({\n approval,\n signPermit,\n canBatchTxs,\n isConnectedToSafe,\n}: ShouldApproveOrBatchInput): ShouldApproveOrBatchResult {\n // can sign a Permit\n const tryPermit =\n signPermit.isPermitSupported && signPermit.isPermitReadyToSign;\n\n const allowanceToSet = approval.allowanceToSet ?? 0n;\n // need to Approve Token or sign Permit for it\n const tokenNeedsApproval = approval.needsApproval && allowanceToSet > 0n;\n\n let numberOfActions = 1; // Delta Order creation\n let numberOfTxs = 0;\n\n if (tokenNeedsApproval) {\n // needs to approve a token\n numberOfActions++;\n if (!tryPermit) {\n // can't sign a Permit\n numberOfTxs++;\n }\n }\n\n /*\n if connected to Safe, or needs to approve a token with a tx\n and can batch txs, then pre-sign the batch;\n that way Safe does only one action (Approve+setPreSignature batch tx)\n and a wallet that would otherwise potentially Approve Token (tx, not Permit),\n and then sign Order, basically has to make at least one tx, does only one action as well.\n*/\n let shouldPreSignBatch = false;\n // wallet can batch txs\n if (canBatchTxs) {\n // wallet is Safe and there will be multiple actions Safe needs to perform\n if (isConnectedToSafe && numberOfActions > 1) {\n // do it in one batch tx\n shouldPreSignBatch = true;\n } else if (numberOfTxs > 0 && numberOfActions > 1) {\n // if at least one tx to perform, batch it with actions\n shouldPreSignBatch = true;\n }\n // else if only one action (Delta signing), then can signTypedData only\n }\n\n // will do an Approval of Token (tx or Permit)\n const shouldDoApprovalTxOrPermit = tokenNeedsApproval && !shouldPreSignBatch;\n\n return {\n shouldDoApprovalTxOrPermit,\n tryPermit,\n shouldPreSignBatch,\n };\n}\n"],"names":["usePreSignAndSubmitDeltaOrder","chainId","account","logger","viemClient","queryClient","useQueryClient","forCurrentChain","canBatchTxs","useCanBatchTxs","isConnectedToSafe","useConnectedSafe","createPreSignableOrderMut","useCreatePreSignableDeltaOrder","client","sdk","fetchOnlySDK","useFetchOnlySDK","preSignPreparations","isCreatingOrder","isPending","isOrderHashReady","isSuccess","order","data","orderToPost","isError","error","addTxWithApprovals","useBatchWithApproveTxs","batchTxMut","useSendBatchTx","onSuccess","log","onError","batchTxMined","useAwaitCalls","id","lastCallsReceipt","receipts","length","deltaPreSignBatch","callsId","txHash","transactionHash","receipt","isConfirmingCalls","isConfirmingCallsError","isCallsSent","isCallsPending","isLoading","isCallsMined","isCallsAwaitingError","postOrderMut","usePostDeltaOrder","mutationOptions","invalidateQueries","queryKey","deltaOrdersQueryKey","userAddress","user","exact","deltaOrderPosting","isPostingOrder","isOrderSent","deltaOrderPreSign","canPreSignBatch","preSignPrep","preSignBatch","postingOrder","ensureCallsStatus","useEnsureCallsStatus","ensureContractsLoaded","useEnsureContractsQuery","preSignAndSubmitDeltaOrder","createDeltaOrderInput","approval","onTxSent","signal","preSignCalldata","mutateAsync","throwIfAborted","ParaswapDelta","DeltaContract","assert","isAddress","txsParams","to","value","needToApprove","allowanceToSet","spender","approveProps","token","undefined","calls","orderIsPosted","sendUnsentOrderOnPageHide","postDeltaOrder","window","addEventListener","once","unsubscribeFromPageHide","removeEventListener","sendCallsResult","sendCalls","sendCallsReceiptPromise","then","status","action","receiptPromise","transactionSpecificData","res","orderFromAPI","reset","shouldApproveOrBatch","signPermit","tryPermit","isPermitSupported","isPermitReadyToSign","tokenNeedsApproval","needsApproval","numberOfActions","numberOfTxs","shouldPreSignBatch","shouldDoApprovalTxOrPermit"],"mappings":"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"}
1
+ {"version":3,"file":"usePreSignAndSubmitDeltaOrder.js","sources":["../../../../../src/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.ts"],"sourcesContent":["import { useFetchOnlySDK } from \"@/hooks/useSDK\";\nimport type { PreSignDeltaOrderToPost } from \"../../prices/delta/mutations/types\";\nimport { useCreatePreSignableDeltaOrder } from \"../../prices/delta/mutations/useCreatePreSignableDeltaOrder\";\nimport {\n useBatchWithApproveTxs,\n type TxParams,\n} from \"@/hooks/batch/useBatchWithApproveTxs\";\nimport { useSendBatchTx } from \"@/hooks/batch/useSendBatchTx\";\nimport {\n useAwaitCalls,\n useEnsureCallsStatus,\n} from \"@/hooks/batch/useAwaitCalls\";\nimport { isAddress, type Address } from \"viem\";\nimport {\n deltaOrdersQueryKey,\n type SubmittedDeltaOrderFromAPI,\n} from \"../../prices/delta/queries/useDeltaOrders\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { LoggerInstance } from \"@/lib/utils/logger\";\nimport type { DeltaOrderApiResponse, MinViemClient } from \"@velora-dex/sdk\";\nimport { useConnectedSafe } from \"@/hooks/connectors/useIsConnectedSafe\";\nimport { useCanBatchTxs } from \"@/hooks/batch/useCanBatchTxs\";\nimport { usePostDeltaOrder } from \"../../prices/delta/mutations/usePostDeltaOrder\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport type { CreateAndSubmitDeltaOrderInput } from \"../../prices/delta/mutations/useCreateDeltaOrder\";\nimport type { CallsSentObject } from \"@/lib/utils/transactionHandlers\";\nimport type {\n ApprovalFlowResult,\n BatchTxStepResult,\n SignPermitFlowResult,\n} from \"./types\";\nimport { assert } from \"ts-essentials\";\nimport { useEnsureContractsQuery } from \"../../prices/market/queries/useSpenderAndContracts\";\n\nexport type DeltaOrderPreSignResult = {\n canPreSignBatch: boolean;\n preSignPrep: {\n order?: PreSignDeltaOrderToPost;\n isCreatingOrder: boolean;\n isOrderHashReady: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n preSignBatch: BatchTxStepResult;\n postingOrder: {\n order?: SubmittedDeltaOrderFromAPI;\n isPostingOrder: boolean;\n isOrderSent: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n order?: SubmittedDeltaOrderFromAPI;\n isCreatingOrder: boolean;\n isOrderSent: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n};\n\ntype UsePreSignAndSubmitDeltaOrderInput = {\n chainId: SupportedChainId;\n account?: Address;\n logger: LoggerInstance;\n viemClient?: MinViemClient;\n};\n\ntype UsePreSignAndSubmitDeltaOrderResult = {\n deltaOrderPreSign: DeltaOrderPreSignResult;\n canBatchTxs?: boolean;\n isConnectedToSafe: boolean;\n preSignAndSubmitDeltaOrder: PreSignAndSubmitDeltaOrderFunc;\n reset: () => void;\n};\n\nexport function usePreSignAndSubmitDeltaOrder({\n chainId,\n account,\n logger,\n viemClient,\n}: UsePreSignAndSubmitDeltaOrderInput): UsePreSignAndSubmitDeltaOrderResult {\n const queryClient = useQueryClient();\n\n const { forCurrentChain: canBatchTxs } = useCanBatchTxs();\n const isConnectedToSafe = useConnectedSafe();\n\n /* 1. submit Batch tx (Approve + Delta pre-sign) */\n\n const createPreSignableOrderMut = useCreatePreSignableDeltaOrder({\n chainId,\n client: viemClient,\n });\n\n const { sdk: fetchOnlySDK } = useFetchOnlySDK({\n chainId,\n });\n\n const preSignPreparations: DeltaOrderPreSignResult[\"preSignPrep\"] = {\n isCreatingOrder: createPreSignableOrderMut.isPending,\n isOrderHashReady: createPreSignableOrderMut.isSuccess,\n order: createPreSignableOrderMut.data?.orderToPost,\n isPending: createPreSignableOrderMut.isPending,\n isError: createPreSignableOrderMut.isError,\n isSuccess: createPreSignableOrderMut.isSuccess,\n error: createPreSignableOrderMut.error,\n };\n\n const { addTxWithApprovals } = useBatchWithApproveTxs();\n\n const batchTxMut = useSendBatchTx({\n onSuccess: () => {\n logger.log(\"Batch tx success\");\n },\n onError: (error) => {\n logger.error(\"Batch tx error\", error);\n },\n });\n\n /* 2. await Batch tx */\n const batchTxMined = useAwaitCalls({\n id: batchTxMut.data?.id,\n });\n\n // for a successful SendCalls execution there will either be one receipt only,\n // or several receipts with the last one for the last tx from the batch\n const lastCallsReceipt =\n batchTxMined.data?.receipts?.[batchTxMined.data.receipts.length - 1];\n\n const deltaPreSignBatch: BatchTxStepResult = {\n canBatchTxs,\n callsId: batchTxMut.data?.id,\n txHash: lastCallsReceipt?.transactionHash,\n receipt: lastCallsReceipt,\n /* calls sending */\n isConfirmingCalls: batchTxMut.isPending,\n isConfirmingCallsError: batchTxMut.isError,\n isCallsSent: batchTxMut.isSuccess,\n /* calls awaiting */\n isCallsPending: batchTxMined.isLoading,\n isCallsMined: batchTxMined.isSuccess,\n isCallsAwaitingError: batchTxMined.isError,\n /* combined */\n isPending: batchTxMut.isPending || batchTxMined.isLoading,\n isSuccess: batchTxMined.isSuccess,\n isError: batchTxMut.isError || batchTxMined.isError,\n error: batchTxMut.error || batchTxMined.error,\n };\n\n /* 3. post Pre-signed Order */\n\n const postOrderMut = usePostDeltaOrder({\n chainId,\n account,\n client: viemClient,\n mutationOptions: {\n onSuccess: (order) => {\n logger.log(\"Create Delta Order success\", order);\n queryClient.invalidateQueries({\n queryKey: deltaOrdersQueryKey({\n userAddress: order.user,\n }),\n exact: false,\n });\n },\n onError: (error) => {\n logger.error(\"Create Delta Order error\", error);\n },\n },\n });\n\n const deltaOrderPosting: DeltaOrderPreSignResult[\"postingOrder\"] = {\n order: postOrderMut.data,\n isPostingOrder: postOrderMut.isPending,\n isOrderSent: postOrderMut.isSuccess,\n isPending: postOrderMut.isPending,\n isError: postOrderMut.isError,\n isSuccess: postOrderMut.isSuccess,\n error: postOrderMut.error,\n };\n\n const deltaOrderPreSign: DeltaOrderPreSignResult = {\n canPreSignBatch: !!canBatchTxs,\n order: postOrderMut.data,\n preSignPrep: preSignPreparations,\n preSignBatch: deltaPreSignBatch,\n postingOrder: deltaOrderPosting,\n isCreatingOrder:\n preSignPreparations.isCreatingOrder ||\n deltaPreSignBatch.isPending ||\n deltaOrderPosting.isPostingOrder,\n isOrderSent: deltaOrderPosting.isOrderSent,\n isPending:\n preSignPreparations.isPending ||\n deltaPreSignBatch.isPending ||\n deltaOrderPosting.isPending,\n isError:\n preSignPreparations.isError ||\n deltaPreSignBatch.isError ||\n deltaOrderPosting.isError,\n isSuccess: deltaOrderPosting.isSuccess,\n error:\n preSignPreparations.error ||\n deltaPreSignBatch.error ||\n deltaOrderPosting.error,\n };\n\n const ensureCallsStatus = useEnsureCallsStatus();\n const { ensureContractsLoaded } = useEnsureContractsQuery({ chainId });\n\n const preSignAndSubmitDeltaOrder: PreSignAndSubmitDeltaOrderFunc = async ({\n createDeltaOrderInput,\n approval,\n onTxSent,\n }) => {\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 const { signal } = createDeltaOrderInput;\n\n const { orderToPost, preSignCalldata } =\n await createPreSignableOrderMut.mutateAsync(createDeltaOrderInput);\n\n // if aborted by this point, throw an error\n signal?.throwIfAborted();\n\n const { ParaswapDelta: DeltaContract } = await ensureContractsLoaded({\n signal,\n });\n\n assert(\n DeltaContract && isAddress(DeltaContract),\n `DeltaContract is not available on chain ${chainId}`\n );\n\n const txsParams: [TxParams, ...TxParams[]] = [\n {\n to: DeltaContract,\n account,\n data: preSignCalldata,\n value: 0n,\n chainId,\n },\n ];\n\n const needToApprove =\n approval.allowanceToSet &&\n approval.allowanceToSet > 0n &&\n approval.spender;\n\n const approveProps = needToApprove\n ? [\n {\n spender: approval.spender,\n allowanceToSet: approval.allowanceToSet,\n token: approval.token,\n chainId: approval.chainId,\n },\n ]\n : undefined;\n\n // 4. construct a sendCalls batch with Approve Token + setPreSignature call\n const { calls } = await addTxWithApprovals({\n txsParams,\n approveProps,\n });\n\n // if aborted by this point, throw an error\n signal?.throwIfAborted();\n\n let orderIsPosted = false;\n\n const sendUnsentOrderOnPageHide = () => {\n if (orderIsPosted) return;\n orderIsPosted = true;\n fetchOnlySDK?.postDeltaOrder(orderToPost);\n };\n\n // check if the page was closed after sendCalls succeeded but before the Order was posted.\n // in that case POST the Order just in case the page is never reloaded or localStorage survives until then.\n // `pagehide` event is more reliable on desktop and does not fire on tab switching in browser,\n // but on mobile minimizing the browser doesn't fire `pagehide` event but does `visibilitychange`.\n // with `visibilitychange` though we can't reliably resume the flow because navigator.sendBeacon doesn't return response\n window.addEventListener(\"pagehide\", sendUnsentOrderOnPageHide, {\n once: true,\n });\n // prepared to POST Order in case of page close before sending the Approve+setPreSignature batch tx request,\n // because inside Safe it's very easy to switch page and go to Transactions page by clicking in a popup,\n // so the Widget state will be lost but the Safe would already receive a tx to sign\n // and it's not obvious that the Delta flow was aborted\n const unsubscribeFromPageHide = () => {\n window.removeEventListener(\"pagehide\", sendUnsentOrderOnPageHide);\n };\n\n try {\n // 5. send the Approve+setPreSignature batch tx request to the wallet\n const sendCallsResult = await batchTxMut.sendCalls({\n txsParams: calls,\n });\n\n const sendCallsReceiptPromise = ensureCallsStatus({\n id: sendCallsResult.id,\n }).then((status) => status.receipts?.[status.receipts.length - 1]);\n\n logger.log(\n \"~ deltaOrder ~ awaiting setPreSignature calls id :\",\n sendCallsResult.id\n );\n\n if (onTxSent) {\n onTxSent({\n chainId,\n action: \"preSignDeltaOrder\",\n callsId: sendCallsResult.id,\n receiptPromise: sendCallsReceiptPromise,\n transactionSpecificData: {\n action: \"preSignDeltaOrder\",\n order: orderToPost,\n },\n });\n }\n\n // 6. wait for that batch tx to be mined;\n const res = await sendCallsReceiptPromise;\n logger.log(\"~ deltaOrder ~ setPreSignature calls result :\", res);\n\n // 7. POST the Order to API with signature=0x\n const orderFromAPI = await postOrderMut.mutateAsync(orderToPost);\n orderIsPosted = true;\n\n return orderFromAPI;\n } catch (error) {\n logger.error(\"Pre-sign and submit Delta Order error\", error);\n throw error;\n } finally {\n unsubscribeFromPageHide();\n }\n };\n\n const reset = () => {\n createPreSignableOrderMut.reset();\n batchTxMut.reset();\n postOrderMut.reset();\n };\n\n return {\n deltaOrderPreSign,\n canBatchTxs,\n isConnectedToSafe,\n preSignAndSubmitDeltaOrder,\n reset,\n };\n}\n\ntype PreSignAndSubmitDeltaOrderInput = {\n createDeltaOrderInput: CreateAndSubmitDeltaOrderInput;\n approval: Pick<\n ApprovalFlowResult,\n \"spender\" | \"allowanceToSet\" | \"token\" | \"chainId\"\n >;\n onTxSent?: (txSent: CallsSentObject) => void;\n};\n\ntype PreSignAndSubmitDeltaOrderFunc = (\n input: PreSignAndSubmitDeltaOrderInput\n) => Promise<DeltaOrderApiResponse>;\n\ntype ShouldApproveOrBatchInput = {\n approval: Pick<ApprovalFlowResult, \"needsApproval\" | \"allowanceToSet\">;\n signPermit: Pick<\n SignPermitFlowResult,\n \"isPermitSupported\" | \"isPermitReadyToSign\"\n >;\n canBatchTxs?: boolean;\n isConnectedToSafe: boolean;\n};\n\ntype ShouldApproveOrBatchResult = {\n shouldDoApprovalTxOrPermit: boolean;\n tryPermit: boolean;\n shouldPreSignBatch: boolean;\n};\n\nexport function shouldApproveOrBatch({\n approval,\n signPermit,\n canBatchTxs,\n isConnectedToSafe,\n}: ShouldApproveOrBatchInput): ShouldApproveOrBatchResult {\n // can sign a Permit\n const tryPermit =\n signPermit.isPermitSupported && signPermit.isPermitReadyToSign;\n\n const allowanceToSet = approval.allowanceToSet ?? 0n;\n // need to Approve Token or sign Permit for it\n const tokenNeedsApproval = approval.needsApproval && allowanceToSet > 0n;\n\n let numberOfActions = 1; // Delta Order creation\n let numberOfTxs = 0;\n\n if (tokenNeedsApproval) {\n // needs to approve a token\n numberOfActions++;\n if (!tryPermit) {\n // can't sign a Permit\n numberOfTxs++;\n }\n }\n\n /*\n if connected to Safe, or needs to approve a token with a tx\n and can batch txs, then pre-sign the batch;\n that way Safe does only one action (Approve+setPreSignature batch tx)\n and a wallet that would otherwise potentially Approve Token (tx, not Permit),\n and then sign Order, basically has to make at least one tx, does only one action as well.\n*/\n let shouldPreSignBatch = false;\n // wallet can batch txs\n if (canBatchTxs) {\n // wallet is Safe and there will be multiple actions Safe needs to perform\n if (isConnectedToSafe && numberOfActions > 1) {\n // do it in one batch tx\n shouldPreSignBatch = true;\n } else if (numberOfTxs > 0 && numberOfActions > 1) {\n // if at least one tx to perform, batch it with actions\n shouldPreSignBatch = true;\n }\n // else if only one action (Delta signing), then can signTypedData only\n }\n\n // will do an Approval of Token (tx or Permit)\n const shouldDoApprovalTxOrPermit = tokenNeedsApproval && !shouldPreSignBatch;\n\n return {\n shouldDoApprovalTxOrPermit,\n tryPermit,\n shouldPreSignBatch,\n };\n}\n"],"names":["usePreSignAndSubmitDeltaOrder","chainId","account","logger","viemClient","queryClient","useQueryClient","forCurrentChain","canBatchTxs","useCanBatchTxs","isConnectedToSafe","useConnectedSafe","createPreSignableOrderMut","useCreatePreSignableDeltaOrder","client","sdk","fetchOnlySDK","useFetchOnlySDK","preSignPreparations","isCreatingOrder","isPending","isOrderHashReady","isSuccess","order","data","orderToPost","isError","error","addTxWithApprovals","useBatchWithApproveTxs","batchTxMut","useSendBatchTx","onSuccess","log","onError","batchTxMined","useAwaitCalls","id","lastCallsReceipt","receipts","length","deltaPreSignBatch","callsId","txHash","transactionHash","receipt","isConfirmingCalls","isConfirmingCallsError","isCallsSent","isCallsPending","isLoading","isCallsMined","isCallsAwaitingError","postOrderMut","usePostDeltaOrder","mutationOptions","invalidateQueries","queryKey","deltaOrdersQueryKey","userAddress","user","exact","deltaOrderPosting","isPostingOrder","isOrderSent","deltaOrderPreSign","canPreSignBatch","preSignPrep","preSignBatch","postingOrder","ensureCallsStatus","useEnsureCallsStatus","ensureContractsLoaded","useEnsureContractsQuery","preSignAndSubmitDeltaOrder","createDeltaOrderInput","approval","onTxSent","signal","preSignCalldata","mutateAsync","throwIfAborted","ParaswapDelta","DeltaContract","assert","isAddress","txsParams","to","value","needToApprove","allowanceToSet","spender","approveProps","token","undefined","calls","orderIsPosted","sendUnsentOrderOnPageHide","postDeltaOrder","window","addEventListener","once","unsubscribeFromPageHide","removeEventListener","sendCallsResult","sendCalls","sendCallsReceiptPromise","then","status","action","receiptPromise","transactionSpecificData","res","orderFromAPI","reset","shouldApproveOrBatch","signPermit","tryPermit","isPermitSupported","isPermitReadyToSign","tokenNeedsApproval","needsApproval","numberOfActions","numberOfTxs","shouldPreSignBatch","shouldDoApprovalTxOrPermit"],"mappings":"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"}
@@ -33,6 +33,7 @@ type RunDeltaOrderOptions = {
33
33
  type DeltaOrderSubmissionResult = {
34
34
  order?: SubmittedDeltaOrderFromAPI;
35
35
  isCreatingOrder: boolean;
36
+ isPostingOrder: boolean;
36
37
  isOrderSent: boolean;
37
38
  isPending: boolean;
38
39
  isError: boolean;
@@ -81,8 +82,9 @@ export type UseDeltaFlowResult = {
81
82
  error: Error | null;
82
83
  result?: SubmitDeltaOrderResult;
83
84
  usedPrice?: DeltaPrice | BridgePrice;
85
+ freshPrice?: DeltaPrice | BridgePrice;
84
86
  submittedDeltaOrder?: Omit<DeltaAuction, "signature" | "transactions">;
85
87
  };
86
- export declare function useDeltaFlow({ deltaPrice, }: UseDeltaFlowInput): UseDeltaFlowResult;
88
+ export declare function useDeltaFlow({ deltaPrice: _deltaPrice, }: UseDeltaFlowInput): UseDeltaFlowResult;
87
89
  export {};
88
90
  //# sourceMappingURL=useDeltaFlow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useDeltaFlow.d.ts","sourceRoot":"","sources":["../../../../src/hooks/swap/tradeFlow/useDeltaFlow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useDeltaFlow.d.ts","sourceRoot":"","sources":["../../../../src/hooks/swap/tradeFlow/useDeltaFlow.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { useChainId, useAccount } from 'wagmi';
1
+ import { useAccount } from 'wagmi';
2
2
  import { assert } from 'ts-essentials';
3
3
  import { useEnsureTxReceipt } from '../../txs/queries/useAwaitTx.js';
4
4
  import { deltaOrdersQueryKey } from '../prices/delta/queries/useDeltaOrders.js';
5
- import { useCreateDeltaOrder } from '../prices/delta/mutations/useCreateDeltaOrder.js';
5
+ import { useCreateAndSubmitDeltaOrder } from '../prices/delta/mutations/useCreateDeltaOrder.js';
6
6
  import { useMinViemClient } from '../../useMinViemClient.js';
7
7
  import { useWatchDeltaAuction, useEnsureDeltaOrderExecuted } from '../prices/delta/queries/useWatchDeltaOrder.js';
8
8
  import { getOverallOrderStatus } from '../prices/delta/orders/utils.js';
@@ -17,7 +17,7 @@ import { useMarkPermit1Or2NonceAsUsed } from './common/useSignPermit1Or2.js';
17
17
  import { produceDeltaOrderDeadline } from '../../permit/utils/deadlines.js';
18
18
  import { encodePermit2TransferFromSigDataForDelta } from '../../permit/utils/encodeArgs.js';
19
19
  import { useLogger } from '../../../core/logger.js';
20
- import { useDeltaPriceQueryForPrice, useSubscribeToDeltaPrice, isBridgePrice } from '../prices/delta/queries/useDeltaPriceQuery.js';
20
+ import { useDeltaPriceQuery, useSubscribeToDeltaPrice, isBridgePrice } from '../prices/delta/queries/useDeltaPriceQuery.js';
21
21
  import { usePartner } from '../../usePartner.js';
22
22
  import { useWidgetEvents } from '../../../core/state/widgetEventsAtom.js';
23
23
  import { usePreSignAndSubmitDeltaOrder, shouldApproveOrBatch } from './common/usePreSignAndSubmitDeltaOrder.js';
@@ -30,17 +30,42 @@ import { protocolNameAtom } from '../../../components/widget/TradeParameters/sta
30
30
  import { useDepositAndSubmitDeltaOrder } from './common/useDepositAndSubmitDeltaOrder.js';
31
31
  import { isETHaddress } from '../../../tokens/utils/eth.js';
32
32
  import { useCancelOrWithdrawAndCancelDeltaOrder } from '../prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js';
33
+ import { usePricesParams, useExtraDeltaPriceParams } from '../prices/usePricesParams.js';
34
+ import { useSelectedBridgePrice } from '../prices/delta/bridge/useSelectedBridgePrice.js';
33
35
 
34
36
  const deltaOrderFlowType = "deltaOrder";
35
37
  const DELTA_ORDER_MUTATION_KEY = "runDeltaOrderFlow";
36
38
  function useDeltaFlow({
37
- deltaPrice
39
+ deltaPrice: _deltaPrice
38
40
  }) {
39
41
  const logger = useLogger("DeltaFlow");
40
- const chainId = useChainId();
41
42
  const {
42
43
  resolvedSlippage
43
44
  } = useSlippage("swap");
45
+ const {
46
+ priceParams,
47
+ chainId,
48
+ destChainId
49
+ } = usePricesParams("swap");
50
+ const extraDeltaPriceParams = useExtraDeltaPriceParams();
51
+ const {
52
+ result: deltaPriceQuery,
53
+ queryKey: deltaPriceQueryKey
54
+ } = useDeltaPriceQuery({
55
+ priceParams: {
56
+ ...priceParams,
57
+ ...extraDeltaPriceParams
58
+ },
59
+ chainId,
60
+ destChainId,
61
+ query: {
62
+ enabled: false
63
+ }
64
+ });
65
+ const selectedBridgePrice = useSelectedBridgePrice({
66
+ price: deltaPriceQuery.data
67
+ });
68
+ const deltaPrice = selectedBridgePrice || deltaPriceQuery.data || _deltaPrice;
44
69
  const swapSideFromInput = useSwapSide();
45
70
  const {
46
71
  approval,
@@ -66,7 +91,7 @@ function useDeltaFlow({
66
91
  account
67
92
  });
68
93
  const queryClient = useQueryClient();
69
- const createOrderMut = useCreateDeltaOrder({
94
+ const createAndSubmitOrderMut = useCreateAndSubmitDeltaOrder({
70
95
  chainId,
71
96
  account,
72
97
  client: minClient,
@@ -80,13 +105,14 @@ function useDeltaFlow({
80
105
  }
81
106
  });
82
107
  const deltaOrderCreateAndSubmit = {
83
- order: createOrderMut.data,
84
- isCreatingOrder: createOrderMut.isPending,
85
- isOrderSent: createOrderMut.isSuccess,
86
- isPending: createOrderMut.isPending,
87
- isError: createOrderMut.isError,
88
- isSuccess: createOrderMut.isSuccess,
89
- error: createOrderMut.error
108
+ order: createAndSubmitOrderMut.order,
109
+ isCreatingOrder: createAndSubmitOrderMut.isPending,
110
+ isPostingOrder: createAndSubmitOrderMut.isPostingOrder,
111
+ isOrderSent: createAndSubmitOrderMut.isSuccess,
112
+ isPending: createAndSubmitOrderMut.isPending,
113
+ isError: createAndSubmitOrderMut.isError,
114
+ isSuccess: createAndSubmitOrderMut.isSuccess,
115
+ error: createAndSubmitOrderMut.error
90
116
  };
91
117
  const {
92
118
  deltaOrderPreSign,
@@ -112,8 +138,9 @@ function useDeltaFlow({
112
138
  });
113
139
  const deltaOrderSubmission = {
114
140
  order: deltaOrderCreateAndSubmit.order || deltaOrderPreSign.order || deltaOrderDeposit.order,
115
- isCreatingOrder: deltaOrderCreateAndSubmit.isPending || deltaOrderPreSign.isCreatingOrder || deltaOrderDeposit.isCreatingOrder,
116
- isOrderSent: deltaOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isOrderSent || deltaOrderDeposit.isOrderSent,
141
+ isPostingOrder: deltaOrderCreateAndSubmit.isPostingOrder || deltaOrderPreSign.postingOrder.isPostingOrder || deltaOrderDeposit.postingOrder.isPostingOrder,
142
+ isCreatingOrder: deltaOrderCreateAndSubmit.isCreatingOrder || deltaOrderPreSign.isCreatingOrder || deltaOrderDeposit.isCreatingOrder,
143
+ isOrderSent: deltaOrderCreateAndSubmit.isOrderSent || deltaOrderPreSign.isOrderSent || deltaOrderDeposit.isOrderSent,
117
144
  isPending: deltaOrderCreateAndSubmit.isPending || deltaOrderPreSign.isPending || deltaOrderDeposit.isPending,
118
145
  isError: deltaOrderCreateAndSubmit.isError || deltaOrderPreSign.isError || deltaOrderDeposit.isError,
119
146
  isSuccess: deltaOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isSuccess || deltaOrderDeposit.isSuccess,
@@ -206,18 +233,18 @@ function useDeltaFlow({
206
233
  } = usePartner();
207
234
  const protocolName = useAtomValue(protocolNameAtom);
208
235
  const bridgePreference = useAtomValue(bridgePreferenceAtom);
209
- const getQueryForPrice = useDeltaPriceQueryForPrice();
210
236
  const subscribeToPrice = useSubscribeToDeltaPrice();
211
237
  const {
212
238
  onSwap
213
239
  } = useWidgetEvents();
214
240
  const submitDeltaOrder = async ({
215
241
  onTxSent,
216
- onOrderSent
242
+ onOrderSent,
243
+ lastPrice
217
244
  } = {}) => {
218
245
  approveTxMut.reset();
219
246
  signPermitMut.reset();
220
- createOrderMut.reset();
247
+ createAndSubmitOrderMut.reset();
221
248
  cancelOrderMut.reset();
222
249
  resetPreSignAndSubmitDeltaOrder();
223
250
  resetDepositAndSubmitDeltaOrder();
@@ -233,6 +260,22 @@ function useDeltaFlow({
233
260
  const allowanceToSet = approval.allowanceToSet;
234
261
  const allowanceToPermit = signPermit.amountToPermit;
235
262
  let freshPrice = deltaPrice;
263
+ if (freshPrice.hmac === lastPrice?.hmac) {
264
+ const newPriceResult = await deltaPriceQuery.refetch({
265
+ cancelRefetch: false
266
+ });
267
+ signal.throwIfAborted();
268
+ if (newPriceResult.data) {
269
+ freshPrice = newPriceResult.data;
270
+ if (isBridgePrice(freshPrice)) {
271
+ freshPrice = extractSelectedBridgePrice({
272
+ price: freshPrice,
273
+ protocolName,
274
+ bridgePreference
275
+ });
276
+ }
277
+ }
278
+ }
236
279
  let unsubscribeFromPrice;
237
280
  usingPriceRef.current = freshPrice;
238
281
  const shouldDepositAndPreSign = (
@@ -252,10 +295,7 @@ function useDeltaFlow({
252
295
  });
253
296
  try {
254
297
  if (shouldDoApprovalTxOrPermit && allowanceToSet) {
255
- const queryKey = getQueryForPrice({
256
- chainId,
257
- price: freshPrice
258
- })?.queryKey;
298
+ const queryKey = deltaPriceQueryKey;
259
299
  if (queryKey) {
260
300
  const approvedAmount = allowanceToSet;
261
301
  unsubscribeFromPrice = subscribeToPrice({
@@ -377,7 +417,7 @@ function useDeltaFlow({
377
417
  signature: signedPermitResult.signature
378
418
  });
379
419
  }
380
- const destChainId = isBridgePrice(deltaPriceToUse) ? deltaPriceToUse.bridge.destinationChainId : chainId;
420
+ const destChainId_0 = isBridgePrice(deltaPriceToUse) ? deltaPriceToUse.bridge.destinationChainId : chainId;
381
421
  onSwap?.({
382
422
  event: {
383
423
  name: "Swap:request",
@@ -397,7 +437,7 @@ function useDeltaFlow({
397
437
  srcToken: deltaPriceToUse.srcToken,
398
438
  destToken: deltaPriceToUse.destToken,
399
439
  permit,
400
- destChainId,
440
+ destChainId: destChainId_0,
401
441
  deltaPrice: deltaPriceToUse,
402
442
  partner,
403
443
  partnerAddress,
@@ -421,7 +461,7 @@ function useDeltaFlow({
421
461
  onTxSent
422
462
  });
423
463
  } else {
424
- orderFromAPI = await createOrderMut.mutateAsync(createOrderInput);
464
+ orderFromAPI = await createAndSubmitOrderMut.mutateAsync(createOrderInput);
425
465
  }
426
466
  if (signedPermitResult) {
427
467
  markNonceAsUsed(signedPermitResult.signedPermitData);
@@ -509,15 +549,19 @@ function useDeltaFlow({
509
549
  usingPriceRef.current = null;
510
550
  approveTxMut.reset();
511
551
  signPermitMut.reset();
512
- createOrderMut.reset();
552
+ createAndSubmitOrderMut.reset();
513
553
  deltaOrderMut.reset();
514
554
  cancelOrderMut.reset();
515
555
  resetPreSignAndSubmitDeltaOrder();
516
556
  resetDepositAndSubmitDeltaOrder();
517
557
  };
518
558
  const retryFlow = (options) => {
559
+ const lastPrice_0 = usingPriceRef.current;
519
560
  reset();
520
- return runDeltaOrderFlow(options);
561
+ return runDeltaOrderFlow({
562
+ ...options,
563
+ lastPrice: lastPrice_0
564
+ });
521
565
  };
522
566
  const usedPrice = usingPriceRef.current || deltaPrice;
523
567
  const result = deltaOrderMut.data;
@@ -545,6 +589,7 @@ function useDeltaFlow({
545
589
  error: deltaOrderMut.error,
546
590
  result,
547
591
  usedPrice,
592
+ freshPrice: deltaPrice,
548
593
  submittedDeltaOrder
549
594
  };
550
595
  }