@velora-dex/widget 0.3.11 → 0.3.13-dev.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 (68) hide show
  1. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts.map +1 -1
  2. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js +79 -95
  3. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
  4. package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.d.ts +1 -1
  5. package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.d.ts.map +1 -1
  6. package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.js +89 -60
  7. package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.js.map +1 -1
  8. package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.d.ts.map +1 -1
  9. package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.js +0 -1
  10. package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.js.map +1 -1
  11. package/dist/components/widget/TradeOverview/utils/preWrap.d.ts +1 -4
  12. package/dist/components/widget/TradeOverview/utils/preWrap.d.ts.map +1 -1
  13. package/dist/components/widget/TradeOverview/utils/preWrap.js +1 -2
  14. package/dist/components/widget/TradeOverview/utils/preWrap.js.map +1 -1
  15. package/dist/components/widget/WrapEth/hooks/useWrapEthProps.d.ts +0 -2
  16. package/dist/components/widget/WrapEth/hooks/useWrapEthProps.d.ts.map +1 -1
  17. package/dist/components/widget/WrapEth/hooks/useWrapEthProps.js +3 -236
  18. package/dist/components/widget/WrapEth/hooks/useWrapEthProps.js.map +1 -1
  19. package/dist/core/LimitOrderButton.d.ts.map +1 -1
  20. package/dist/core/LimitOrderButton.js +18 -40
  21. package/dist/core/LimitOrderButton.js.map +1 -1
  22. package/dist/core/index.d.ts +1 -1
  23. package/dist/core/index.d.ts.map +1 -1
  24. package/dist/core/index.js +206 -178
  25. package/dist/core/index.js.map +1 -1
  26. package/dist/core/state/apiConfigAtom.d.ts +14 -0
  27. package/dist/core/state/apiConfigAtom.d.ts.map +1 -0
  28. package/dist/core/state/apiConfigAtom.js +20 -0
  29. package/dist/core/state/apiConfigAtom.js.map +1 -0
  30. package/dist/core/types.d.ts +2 -0
  31. package/dist/core/types.d.ts.map +1 -1
  32. package/dist/events/types/index.d.ts.map +1 -1
  33. package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.d.ts +13 -1
  34. package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.d.ts.map +1 -1
  35. package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.js +80 -1
  36. package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.js.map +1 -1
  37. package/dist/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.d.ts.map +1 -1
  38. package/dist/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.js +1 -2
  39. package/dist/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.js.map +1 -1
  40. package/dist/hooks/swap/prices/useSwapPrices.d.ts.map +1 -1
  41. package/dist/hooks/swap/prices/useSwapPrices.js +102 -113
  42. package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
  43. package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.d.ts +69 -0
  44. package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.d.ts.map +1 -0
  45. package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.js +192 -0
  46. package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.js.map +1 -0
  47. package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.d.ts +1 -3
  48. package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.d.ts.map +1 -1
  49. package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.js +1 -20
  50. package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.js.map +1 -1
  51. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +3 -2
  52. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
  53. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +37 -14
  54. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
  55. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts +1 -2
  56. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts.map +1 -1
  57. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js +36 -14
  58. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js.map +1 -1
  59. package/dist/hooks/useSDK.d.ts.map +1 -1
  60. package/dist/hooks/useSDK.js +32 -19
  61. package/dist/hooks/useSDK.js.map +1 -1
  62. package/dist/lib/utils/index.d.ts +1 -0
  63. package/dist/lib/utils/index.d.ts.map +1 -1
  64. package/dist/lib/utils/index.js +18 -1
  65. package/dist/lib/utils/index.js.map +1 -1
  66. package/dist/transactions/types.d.ts +9 -1
  67. package/dist/transactions/types.d.ts.map +1 -1
  68. package/package.json +2 -2
@@ -0,0 +1,192 @@
1
+ import { useFetchOnlySDK } from '../../../useSDK.js';
2
+ import { useDepositPreSignDeltaOrder } from '../../prices/delta/mutations/useCreatePreSignableDeltaOrder.js';
3
+ import { isAddress } from 'viem';
4
+ import { deltaOrdersQueryKey } from '../../prices/delta/queries/useDeltaOrders.js';
5
+ import { usePostDeltaOrder } from '../../prices/delta/mutations/usePostDeltaOrder.js';
6
+ import { useQueryClient } from '@tanstack/react-query';
7
+ import { assert } from 'ts-essentials';
8
+ import { useEnsureContractsQuery } from '../../prices/market/queries/useSpenderAndContracts.js';
9
+ import { useSendArbitraryTx } from '../../../txs/mutations/useSendTx.js';
10
+ import { useAwaitTx, useEnsureTxReceipt } from '../../../txs/queries/useAwaitTx.js';
11
+ import { isETHaddress } from '../../../../tokens/utils/eth.js';
12
+
13
+ function useDepositAndSubmitDeltaOrder({
14
+ chainId,
15
+ account,
16
+ logger,
17
+ viemClient
18
+ }) {
19
+ const queryClient = useQueryClient();
20
+ const depositOrderMut = useDepositPreSignDeltaOrder({
21
+ chainId,
22
+ client: viemClient
23
+ });
24
+ const {
25
+ sdk: fetchOnlySDK
26
+ } = useFetchOnlySDK({
27
+ chainId
28
+ });
29
+ const depositPrep = {
30
+ isCreatingOrder: depositOrderMut.isPending,
31
+ isOrderHashReady: depositOrderMut.isSuccess,
32
+ order: depositOrderMut.data?.orderToPost,
33
+ isPending: depositOrderMut.isPending,
34
+ isError: depositOrderMut.isError,
35
+ isSuccess: depositOrderMut.isSuccess,
36
+ error: depositOrderMut.error
37
+ };
38
+ const sendDepositTxMut = useSendArbitraryTx();
39
+ const awaitDepositTx = useAwaitTx({
40
+ hash: sendDepositTxMut.txHash,
41
+ chainId
42
+ });
43
+ const depositTx = {
44
+ txHash: sendDepositTxMut.txHash,
45
+ receipt: awaitDepositTx.data,
46
+ /* tx sending */
47
+ isConfirmingTX: sendDepositTxMut.isPending,
48
+ isConfirmingTxError: sendDepositTxMut.isError,
49
+ isTxSent: sendDepositTxMut.isSuccess,
50
+ /* tx awaiting */
51
+ isTxPending: awaitDepositTx.isLoading,
52
+ isTxMined: awaitDepositTx.isSuccess,
53
+ isTxAwaitingError: awaitDepositTx.isError,
54
+ /* combined */
55
+ isPending: sendDepositTxMut.isPending || awaitDepositTx.isLoading,
56
+ isSuccess: awaitDepositTx.isSuccess,
57
+ // final success
58
+ isError: sendDepositTxMut.isError || awaitDepositTx.isError,
59
+ error: sendDepositTxMut.error || awaitDepositTx.error
60
+ };
61
+ const postOrderMut = usePostDeltaOrder({
62
+ chainId,
63
+ account,
64
+ client: viemClient,
65
+ mutationOptions: {
66
+ onSuccess: (order) => {
67
+ logger.log("[DepositAndSubmit] Create Delta Order success", order);
68
+ queryClient.invalidateQueries({
69
+ queryKey: deltaOrdersQueryKey({
70
+ userAddress: order.user
71
+ }),
72
+ exact: false
73
+ });
74
+ },
75
+ onError: (error) => {
76
+ logger.error("[DepositAndSubmit] Create Delta Order error", error);
77
+ }
78
+ }
79
+ });
80
+ const deltaOrderPosting = {
81
+ order: postOrderMut.data,
82
+ isPostingOrder: postOrderMut.isPending,
83
+ isOrderSent: postOrderMut.isSuccess,
84
+ isPending: postOrderMut.isPending,
85
+ isError: postOrderMut.isError,
86
+ isSuccess: postOrderMut.isSuccess,
87
+ error: postOrderMut.error
88
+ };
89
+ const deltaOrderDeposit = {
90
+ order: postOrderMut.data,
91
+ depositPrep,
92
+ depositTx,
93
+ postingOrder: deltaOrderPosting,
94
+ isCreatingOrder: depositPrep.isCreatingOrder || depositTx.isPending || deltaOrderPosting.isPostingOrder,
95
+ isOrderSent: deltaOrderPosting.isOrderSent,
96
+ isPending: depositPrep.isPending || depositTx.isPending || deltaOrderPosting.isPending,
97
+ isError: depositPrep.isError || depositTx.isError || deltaOrderPosting.isError,
98
+ isSuccess: deltaOrderPosting.isSuccess,
99
+ error: depositPrep.error || depositTx.error || deltaOrderPosting.error
100
+ };
101
+ const ensureTxReceipt = useEnsureTxReceipt();
102
+ const {
103
+ ensureContractsLoaded
104
+ } = useEnsureContractsQuery({
105
+ chainId
106
+ });
107
+ const depositAndSubmitDeltaOrder = async ({
108
+ depositAmount: _depositAmount,
109
+ createDeltaOrderInput,
110
+ onTxSent
111
+ }) => {
112
+ const depositAmount = BigInt(_depositAmount);
113
+ assert(isETHaddress(createDeltaOrderInput.orderInput.srcToken), "srcToken must be ETH");
114
+ assert(depositAmount > 0n, "depositAmount must be greater than 0");
115
+ const {
116
+ signal
117
+ } = createDeltaOrderInput;
118
+ const {
119
+ ParaswapDelta: DeltaContract
120
+ } = await ensureContractsLoaded({
121
+ signal
122
+ });
123
+ assert(DeltaContract && isAddress(DeltaContract), `DeltaContract is not available on chain ${chainId}`);
124
+ signal?.throwIfAborted();
125
+ const {
126
+ orderToPost,
127
+ depositAndPreSignCalldata
128
+ } = await depositOrderMut.mutateAsync(createDeltaOrderInput);
129
+ signal?.throwIfAborted();
130
+ let orderIsPosted = false;
131
+ const sendUnsentOrderOnPageHide = () => {
132
+ if (orderIsPosted) return;
133
+ orderIsPosted = true;
134
+ fetchOnlySDK?.postDeltaOrder(orderToPost);
135
+ };
136
+ window.addEventListener("pagehide", sendUnsentOrderOnPageHide, {
137
+ once: true
138
+ });
139
+ try {
140
+ const depositTxHash = await sendDepositTxMut.sendTransactionAsync({
141
+ to: DeltaContract,
142
+ from: account,
143
+ data: depositAndPreSignCalldata,
144
+ value: depositAmount
145
+ });
146
+ logger.log("[DepositAndSubmit] awaiting depositNativeAndPreSign txHash:", depositTxHash);
147
+ const depositTxReceiptPromise = ensureTxReceipt({
148
+ hash: depositTxHash,
149
+ chainId,
150
+ onReplaced: (data) => {
151
+ logger.log("[DepositAndSubmit] onReplaced:txHash", depositTxHash, data);
152
+ }
153
+ });
154
+ if (onTxSent) {
155
+ onTxSent({
156
+ chainId,
157
+ action: "depositNativeAndPreSign",
158
+ receiptPromise: depositTxReceiptPromise,
159
+ transactionHash: depositTxHash,
160
+ transactionSpecificData: {
161
+ action: "depositNativeAndPreSign",
162
+ order: orderToPost,
163
+ depositAmount
164
+ }
165
+ });
166
+ }
167
+ const depositTxReceipt = await depositTxReceiptPromise;
168
+ logger.log("[DepositAndSubmit] depositNativeAndPreSign tx mined, receipt:", depositTxReceipt);
169
+ const orderFromAPI = await postOrderMut.mutateAsync(orderToPost);
170
+ orderIsPosted = true;
171
+ return orderFromAPI;
172
+ } catch (error_0) {
173
+ logger.error("[DepositAndSubmit] error", error_0);
174
+ throw error_0;
175
+ } finally {
176
+ window.removeEventListener("pagehide", sendUnsentOrderOnPageHide);
177
+ }
178
+ };
179
+ const reset = () => {
180
+ depositOrderMut.reset();
181
+ sendDepositTxMut.reset();
182
+ postOrderMut.reset();
183
+ };
184
+ return {
185
+ deltaOrderDeposit,
186
+ depositAndSubmitDeltaOrder,
187
+ reset
188
+ };
189
+ }
190
+
191
+ export { useDepositAndSubmitDeltaOrder };
192
+ //# sourceMappingURL=useDepositAndSubmitDeltaOrder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDepositAndSubmitDeltaOrder.js","sources":["../../../../../src/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.ts"],"sourcesContent":["import { useFetchOnlySDK } from \"@/hooks/useSDK\";\nimport {\n useDepositPreSignDeltaOrder,\n type DeltaOrderToPost,\n} from \"../../prices/delta/mutations/useCreatePreSignableDeltaOrder\";\n\nimport { isAddress, 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 { useEnsureContractsQuery } from \"../../prices/market/queries/useSpenderAndContracts\";\nimport { useSendArbitraryTx } from \"@/hooks/txs/mutations/useSendTx\";\nimport { useAwaitTx, useEnsureTxReceipt } from \"@/hooks/txs/queries/useAwaitTx\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\n\nexport type DeltaOrderDepositResult = {\n depositPrep: {\n order?: DeltaOrderToPost;\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 depositOrderMut = useDepositPreSignDeltaOrder({\n chainId,\n client: viemClient,\n });\n\n const { sdk: fetchOnlySDK } = useFetchOnlySDK({\n chainId,\n });\n\n const depositPrep: DeltaOrderDepositResult[\"depositPrep\"] = {\n isCreatingOrder: depositOrderMut.isPending,\n isOrderHashReady: depositOrderMut.isSuccess,\n order: depositOrderMut.data?.orderToPost,\n isPending: depositOrderMut.isPending,\n isError: depositOrderMut.isError,\n isSuccess: depositOrderMut.isSuccess,\n error: depositOrderMut.error,\n };\n\n /* 1. submit depositNativeAndPreSign tx */\n const sendDepositTxMut = useSendArbitraryTx();\n\n /* 2. await depositNativeAndPreSign tx */\n const awaitDepositTx = useAwaitTx({\n hash: sendDepositTxMut.txHash,\n chainId,\n });\n\n const depositTx = {\n txHash: sendDepositTxMut.txHash,\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 const { ensureContractsLoaded } = useEnsureContractsQuery({ chainId });\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 // prepare Order for depositing + pre-signing and POSTing:\n // 1. builds the order\n // 2. hashes the built order\n // 3. construct DeltaContract.depositNativeAndPreSign(orderHash) tx calldata\n\n const { signal } = createDeltaOrderInput;\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 // if aborted by this point, throw an error\n signal?.throwIfAborted();\n\n const { orderToPost, depositAndPreSignCalldata } =\n await depositOrderMut.mutateAsync(createDeltaOrderInput);\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 // 4. send the depositNativeAndPreSign tx\n const depositTxHash = await sendDepositTxMut.sendTransactionAsync({\n to: DeltaContract,\n from: account,\n data: depositAndPreSignCalldata,\n value: depositAmount,\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 depositOrderMut.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","depositOrderMut","useDepositPreSignDeltaOrder","client","sdk","fetchOnlySDK","useFetchOnlySDK","depositPrep","isCreatingOrder","isPending","isOrderHashReady","isSuccess","order","data","orderToPost","isError","error","sendDepositTxMut","useSendArbitraryTx","awaitDepositTx","useAwaitTx","hash","txHash","depositTx","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","ensureContractsLoaded","useEnsureContractsQuery","depositAndSubmitDeltaOrder","depositAmount","_depositAmount","createDeltaOrderInput","onTxSent","BigInt","assert","isETHaddress","orderInput","srcToken","signal","ParaswapDelta","DeltaContract","isAddress","throwIfAborted","depositAndPreSignCalldata","mutateAsync","orderIsPosted","sendUnsentOrderOnPageHide","postDeltaOrder","window","addEventListener","once","depositTxHash","sendTransactionAsync","to","from","value","depositTxReceiptPromise","onReplaced","action","receiptPromise","transactionHash","transactionSpecificData","depositTxReceipt","orderFromAPI","removeEventListener","reset"],"mappings":"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"}
@@ -53,13 +53,11 @@ export declare function usePreSignAndSubmitDeltaOrder({ chainId, account, logger
53
53
  type PreSignAndSubmitDeltaOrderInput = {
54
54
  createDeltaOrderInput: CreateDeltaOrderInput;
55
55
  approval: Pick<ApprovalFlowResult, "spender" | "allowanceToSet" | "token" | "chainId">;
56
- preWrapETH?: boolean;
57
56
  onTxSent?: (txSent: CallsSentObject) => void;
58
57
  };
59
58
  type PreSignAndSubmitDeltaOrderFunc = (input: PreSignAndSubmitDeltaOrderInput) => Promise<DeltaOrderApiResponse>;
60
59
  type ShouldApproveOrBatchInput = {
61
60
  approval: Pick<ApprovalFlowResult, "needsApproval" | "allowanceToSet">;
62
- preWrapETH?: boolean;
63
61
  signPermit: Pick<SignPermitFlowResult, "isPermitSupported" | "isPermitReadyToSign">;
64
62
  canBatchTxs?: boolean;
65
63
  isConnectedToSafe: boolean;
@@ -69,6 +67,6 @@ type ShouldApproveOrBatchResult = {
69
67
  tryPermit: boolean;
70
68
  shouldPreSignBatch: boolean;
71
69
  };
72
- export declare function shouldApproveOrBatch({ approval, preWrapETH, signPermit, canBatchTxs, isConnectedToSafe, }: ShouldApproveOrBatchInput): ShouldApproveOrBatchResult;
70
+ export declare function shouldApproveOrBatch({ approval, signPermit, canBatchTxs, isConnectedToSafe, }: ShouldApproveOrBatchInput): ShouldApproveOrBatchResult;
73
71
  export {};
74
72
  //# sourceMappingURL=usePreSignAndSubmitDeltaOrder.d.ts.map
@@ -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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"}
@@ -9,8 +9,6 @@ import { useConnectedSafe } from '../../../connectors/useIsConnectedSafe.js';
9
9
  import { useCanBatchTxs } from '../../../batch/useCanBatchTxs.js';
10
10
  import { usePostDeltaOrder } from '../../prices/delta/mutations/usePostDeltaOrder.js';
11
11
  import { useQueryClient } from '@tanstack/react-query';
12
- import { wrappedNativeCurrency } from '../../../../lib/constants/weth.js';
13
- import { depositWETHCalldata } from './utils.js';
14
12
  import { assert } from 'ts-essentials';
15
13
  import { useEnsureContractsQuery } from '../../prices/market/queries/useSpenderAndContracts.js';
16
14
 
@@ -126,13 +124,11 @@ function usePreSignAndSubmitDeltaOrder({
126
124
  });
127
125
  const preSignAndSubmitDeltaOrder = async ({
128
126
  createDeltaOrderInput,
129
- preWrapETH,
130
127
  approval,
131
128
  onTxSent
132
129
  }) => {
133
130
  const {
134
- signal,
135
- orderInput
131
+ signal
136
132
  } = createDeltaOrderInput;
137
133
  const {
138
134
  orderToPost,
@@ -153,16 +149,6 @@ function usePreSignAndSubmitDeltaOrder({
153
149
  chainId
154
150
  }];
155
151
  const needToApprove = approval.allowanceToSet && approval.allowanceToSet > 0n && approval.spender;
156
- if (preWrapETH) {
157
- const wrapAmount = BigInt(orderInput.srcAmount);
158
- txsParams.unshift({
159
- to: wrappedNativeCurrency[chainId],
160
- account,
161
- data: depositWETHCalldata,
162
- value: wrapAmount,
163
- chainId
164
- });
165
- }
166
152
  const approveProps = needToApprove ? [{
167
153
  spender: approval.spender,
168
154
  allowanceToSet: approval.allowanceToSet,
@@ -234,7 +220,6 @@ function usePreSignAndSubmitDeltaOrder({
234
220
  }
235
221
  function shouldApproveOrBatch({
236
222
  approval,
237
- preWrapETH,
238
223
  signPermit,
239
224
  canBatchTxs,
240
225
  isConnectedToSafe
@@ -244,10 +229,6 @@ function shouldApproveOrBatch({
244
229
  const tokenNeedsApproval = approval.needsApproval && allowanceToSet > 0n;
245
230
  let numberOfActions = 1;
246
231
  let numberOfTxs = 0;
247
- if (preWrapETH) {
248
- numberOfActions++;
249
- numberOfTxs++;
250
- }
251
232
  if (tokenNeedsApproval) {
252
233
  numberOfActions++;
253
234
  if (!tryPermit) {
@@ -1 +1 @@
1
- {"version":3,"file":"usePreSignAndSubmitDeltaOrder.js","sources":["../../../../../src/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.ts"],"sourcesContent":["import { useFetchOnlySDK } from \"@/hooks/useSDK\";\nimport {\n useCreatePreSignableDeltaOrder,\n type DeltaOrderToPost,\n} 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 { wrappedNativeCurrency } from \"@/lib/constants/weth\";\nimport { depositWETHCalldata } from \"./utils\";\nimport { assert } from \"ts-essentials\";\nimport { useEnsureContractsQuery } from \"../../prices/market/queries/useSpenderAndContracts\";\n\nexport type DeltaOrderPreSignResult = {\n canPreSignBatch: boolean;\n preSignPrep: {\n order?: DeltaOrderToPost;\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 preWrapETH,\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, orderInput } = 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 if (preWrapETH) {\n // add WETH.deposit call,\n // we'll have Approve + Deposit WETH + setPreSignature batch tx;\n // the order doesn't really matter\n\n // avoid using approval.allowanceToSet as it may represent Unlimited Approval\n const wrapAmount = BigInt(orderInput.srcAmount);\n txsParams.unshift({\n to: wrappedNativeCurrency[chainId],\n account,\n data: depositWETHCalldata,\n value: wrapAmount,\n chainId,\n });\n }\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 await sendCallsReceiptPromise;\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 preWrapETH?: boolean;\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 preWrapETH?: boolean;\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 preWrapETH,\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 if (preWrapETH) {\n // needs to call WETH.deposit\n numberOfActions++;\n numberOfTxs++;\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, 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, 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","preWrapETH","approval","onTxSent","signal","orderInput","preSignCalldata","mutateAsync","throwIfAborted","ParaswapDelta","DeltaContract","assert","isAddress","txsParams","to","value","needToApprove","allowanceToSet","spender","wrapAmount","BigInt","srcAmount","unshift","wrappedNativeCurrency","depositWETHCalldata","approveProps","token","undefined","calls","orderIsPosted","sendUnsentOrderOnPageHide","postDeltaOrder","window","addEventListener","once","unsubscribeFromPageHide","removeEventListener","sendCallsResult","sendCalls","sendCallsReceiptPromise","then","status","action","receiptPromise","transactionSpecificData","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 {\n useCreatePreSignableDeltaOrder,\n type DeltaOrderToPost,\n} 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?: DeltaOrderToPost;\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 await sendCallsReceiptPromise;\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","orderFromAPI","reset","shouldApproveOrBatch","signPermit","tryPermit","isPermitSupported","isPermitReadyToSign","tokenNeedsApproval","needsApproval","numberOfActions","numberOfTxs","shouldPreSignBatch","shouldDoApprovalTxOrPermit"],"mappings":"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"}
@@ -7,10 +7,10 @@ import { SupportedChainId } from '../../../lib/web3/wagmi/types';
7
7
  import { CallsSentObject, TxSentObject } from '../../../lib/utils/transactionHandlers';
8
8
  import { OrderSentObject } from '../../../lib/utils/toasts';
9
9
  import { DeltaOrderPreSignResult } from './common/usePreSignAndSubmitDeltaOrder';
10
+ import { DeltaOrderDepositResult } from './common/useDepositAndSubmitDeltaOrder';
10
11
  declare const deltaOrderFlowType = "deltaOrder";
11
12
  export type UseDeltaFlowInput = {
12
13
  deltaPrice?: DeltaPrice | BridgePrice;
13
- preWrapETH?: boolean;
14
14
  };
15
15
  export type SubmitDeltaOrderResult = {
16
16
  tradeFlowType: typeof deltaOrderFlowType;
@@ -68,6 +68,7 @@ export type UseDeltaFlowResult = {
68
68
  approval: ApprovalFlowResult;
69
69
  signPermit: SignPermitFlowResult;
70
70
  deltaOrderPreSign: DeltaOrderPreSignResult;
71
+ deltaOrderDeposit: DeltaOrderDepositResult;
71
72
  deltaOrderSubmission: DeltaOrderSubmissionResult;
72
73
  deltaOrderExecution: DeltaOrderExecutionResult;
73
74
  deltaOrderCancelation: DeltaOrderCancelationResult;
@@ -79,6 +80,6 @@ export type UseDeltaFlowResult = {
79
80
  usedPrice?: DeltaPrice | BridgePrice;
80
81
  submittedDeltaOrder?: Omit<DeltaAuction, "signature" | "transactions">;
81
82
  };
82
- export declare function useDeltaFlow({ deltaPrice, preWrapETH, }: UseDeltaFlowInput): UseDeltaFlowResult;
83
+ export declare function useDeltaFlow({ deltaPrice, }: UseDeltaFlowInput): UseDeltaFlowResult;
83
84
  export {};
84
85
  //# 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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"}
@@ -30,12 +30,13 @@ import { protocolNameAtom } from '../../../components/widget/TradeParameters/sta
30
30
  import { useCancelDeltaOrderEventCallbacks, useCancelDeltaOrders } from '../prices/delta/mutations/useCancelDeltaOrders.js';
31
31
  import { useChainMatches } from '../../useChainMatches.js';
32
32
  import { useSwitchChainWithGuard } from '../../useSwitchChainWithGuard.js';
33
+ import { useDepositAndSubmitDeltaOrder } from './common/useDepositAndSubmitDeltaOrder.js';
34
+ import { isETHaddress } from '../../../tokens/utils/eth.js';
33
35
 
34
36
  const deltaOrderFlowType = "deltaOrder";
35
37
  const DELTA_ORDER_MUTATION_KEY = "runDeltaOrderFlow";
36
38
  function useDeltaFlow({
37
- deltaPrice,
38
- preWrapETH
39
+ deltaPrice
39
40
  }) {
40
41
  const logger = useLogger("DeltaFlow");
41
42
  const chainId = useChainId();
@@ -101,14 +102,24 @@ function useDeltaFlow({
101
102
  logger,
102
103
  viemClient: minClient
103
104
  });
105
+ const {
106
+ deltaOrderDeposit,
107
+ reset: resetDepositAndSubmitDeltaOrder,
108
+ depositAndSubmitDeltaOrder
109
+ } = useDepositAndSubmitDeltaOrder({
110
+ chainId,
111
+ account,
112
+ logger,
113
+ viemClient: minClient
114
+ });
104
115
  const deltaOrderSubmission = {
105
- order: deltaOrderCreateAndSubmit.order || deltaOrderPreSign.order,
106
- isCreatingOrder: deltaOrderCreateAndSubmit.isPending || deltaOrderPreSign.isCreatingOrder,
107
- isOrderSent: deltaOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isOrderSent,
108
- isPending: deltaOrderCreateAndSubmit.isPending || deltaOrderPreSign.isPending,
109
- isError: deltaOrderCreateAndSubmit.isError || deltaOrderPreSign.isError,
110
- isSuccess: deltaOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isSuccess,
111
- error: deltaOrderCreateAndSubmit.error || deltaOrderPreSign.error
116
+ order: deltaOrderCreateAndSubmit.order || deltaOrderPreSign.order || deltaOrderDeposit.order,
117
+ isCreatingOrder: deltaOrderCreateAndSubmit.isPending || deltaOrderPreSign.isCreatingOrder || deltaOrderDeposit.isCreatingOrder,
118
+ isOrderSent: deltaOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isOrderSent || deltaOrderDeposit.isOrderSent,
119
+ isPending: deltaOrderCreateAndSubmit.isPending || deltaOrderPreSign.isPending || deltaOrderDeposit.isPending,
120
+ isError: deltaOrderCreateAndSubmit.isError || deltaOrderPreSign.isError || deltaOrderDeposit.isError,
121
+ isSuccess: deltaOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isSuccess || deltaOrderDeposit.isSuccess,
122
+ error: deltaOrderCreateAndSubmit.error || deltaOrderPreSign.error || deltaOrderDeposit.error
112
123
  };
113
124
  const watchOrderExecution = useWatchDeltaAuction({
114
125
  orderId: deltaOrderSubmission.order?.id,
@@ -240,6 +251,7 @@ function useDeltaFlow({
240
251
  createOrderMut.reset();
241
252
  cancelOrderMut.reset();
242
253
  resetPreSignAndSubmitDeltaOrder();
254
+ resetDepositAndSubmitDeltaOrder();
243
255
  assert(deltaPrice, "Delta price is not available");
244
256
  const swapSide = getSwapSideFromDeltaPrice(deltaPrice);
245
257
  const abortController = new AbortController();
@@ -254,13 +266,17 @@ function useDeltaFlow({
254
266
  let freshPrice = deltaPrice;
255
267
  let unsubscribeFromPrice;
256
268
  usingPriceRef.current = freshPrice;
269
+ const shouldDepositAndPreSign = (
270
+ // @TODO [depositNativeAndPreSign] ensureDeltaEthBalance and compare with price.srcAmount to skip the deposit,
271
+ // or deposit the difference between user dETH balance and price.srcAmount to avoid unnecessary deposits
272
+ isETHaddress(freshPrice.srcToken)
273
+ );
257
274
  const {
258
275
  shouldDoApprovalTxOrPermit,
259
276
  tryPermit,
260
277
  shouldPreSignBatch
261
278
  } = shouldApproveOrBatch({
262
279
  approval,
263
- preWrapETH,
264
280
  signPermit,
265
281
  canBatchTxs,
266
282
  isConnectedToSafe
@@ -423,15 +439,20 @@ function useDeltaFlow({
423
439
  side: swapSide
424
440
  }
425
441
  };
426
- if (!shouldPreSignBatch) {
427
- orderFromAPI = await createOrderMut.mutateAsync(createOrderInput);
428
- } else {
442
+ if (shouldDepositAndPreSign) {
443
+ orderFromAPI = await depositAndSubmitDeltaOrder({
444
+ createDeltaOrderInput: createOrderInput,
445
+ depositAmount: createOrderInput.orderInput.srcAmount,
446
+ onTxSent
447
+ });
448
+ } else if (shouldPreSignBatch) {
429
449
  orderFromAPI = await preSignAndSubmitDeltaOrder({
430
450
  createDeltaOrderInput: createOrderInput,
431
451
  approval,
432
- preWrapETH,
433
452
  onTxSent
434
453
  });
454
+ } else {
455
+ orderFromAPI = await createOrderMut.mutateAsync(createOrderInput);
435
456
  }
436
457
  if (signedPermitResult) {
437
458
  markNonceAsUsed(signedPermitResult.signedPermitData);
@@ -528,6 +549,7 @@ function useDeltaFlow({
528
549
  deltaOrderMut.reset();
529
550
  cancelOrderMut.reset();
530
551
  resetPreSignAndSubmitDeltaOrder();
552
+ resetDepositAndSubmitDeltaOrder();
531
553
  };
532
554
  const retryFlow = (options) => {
533
555
  reset();
@@ -547,6 +569,7 @@ function useDeltaFlow({
547
569
  approval,
548
570
  signPermit,
549
571
  deltaOrderPreSign,
572
+ deltaOrderDeposit,
550
573
  deltaOrderSubmission,
551
574
  deltaOrderExecution,
552
575
  deltaOrderCancelation,