@velora-dex/widget 0.3.3-dev.1 → 0.3.4-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 (124) hide show
  1. package/dist/components/web3/providers.d.ts +2 -1
  2. package/dist/components/web3/providers.d.ts.map +1 -1
  3. package/dist/components/web3/providers.js +65 -10
  4. package/dist/components/web3/providers.js.map +1 -1
  5. package/dist/components/widget/AppHeader/Activities/Drawers.js.map +1 -1
  6. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/Controls.d.ts +3 -3
  7. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/Controls.d.ts.map +1 -1
  8. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/Controls.js +96 -68
  9. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/Controls.js.map +1 -1
  10. package/dist/components/widget/OtcOrderItem/OtcOrderDetails/Controls.d.ts.map +1 -1
  11. package/dist/components/widget/OtcOrderItem/OtcOrderDetails/Controls.js +94 -66
  12. package/dist/components/widget/OtcOrderItem/OtcOrderDetails/Controls.js.map +1 -1
  13. package/dist/components/widget/ReceiverAddress/state/subscriptions.d.ts.map +1 -1
  14. package/dist/components/widget/ReceiverAddress/state/subscriptions.js +8 -0
  15. package/dist/components/widget/ReceiverAddress/state/subscriptions.js.map +1 -1
  16. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcControls.d.ts +2 -2
  17. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcControls.d.ts.map +1 -1
  18. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcControls.js +115 -46
  19. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcControls.js.map +1 -1
  20. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcReviewAndConfirm.d.ts.map +1 -1
  21. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcReviewAndConfirm.js +41 -35
  22. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcReviewAndConfirm.js.map +1 -1
  23. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts +2 -2
  24. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts.map +1 -1
  25. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js +31 -25
  26. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
  27. package/dist/components/widget/TradeOverview/TradeError/utils.d.ts.map +1 -1
  28. package/dist/components/widget/TradeOverview/TradeError/utils.js +5 -0
  29. package/dist/components/widget/TradeOverview/TradeError/utils.js.map +1 -1
  30. package/dist/components/widget/TradeOverview/TradeOverview.d.ts.map +1 -1
  31. package/dist/components/widget/TradeOverview/TradeOverview.js +12 -11
  32. package/dist/components/widget/TradeOverview/TradeOverview.js.map +1 -1
  33. package/dist/components/widget/TradeOverview/TradeOverviewFooter.d.ts +3 -2
  34. package/dist/components/widget/TradeOverview/TradeOverviewFooter.d.ts.map +1 -1
  35. package/dist/components/widget/TradeOverview/TradeOverviewFooter.js +50 -42
  36. package/dist/components/widget/TradeOverview/TradeOverviewFooter.js.map +1 -1
  37. package/dist/configurator/Configurator.d.ts.map +1 -1
  38. package/dist/core/Updaters.d.ts.map +1 -1
  39. package/dist/core/Updaters.js +2 -0
  40. package/dist/core/Updaters.js.map +1 -1
  41. package/dist/core/button/hooks/useWidgetButtonExtraProps.d.ts.map +1 -1
  42. package/dist/core/button/hooks/useWidgetButtonExtraProps.js +4 -5
  43. package/dist/core/button/hooks/useWidgetButtonExtraProps.js.map +1 -1
  44. package/dist/core/index.d.ts.map +1 -1
  45. package/dist/core/index.js +38 -11
  46. package/dist/core/index.js.map +1 -1
  47. package/dist/core/screen/hooks/useInitialValue.d.ts +2 -0
  48. package/dist/core/screen/hooks/useInitialValue.d.ts.map +1 -0
  49. package/dist/core/screen/hooks/useInitialValue.js +9 -0
  50. package/dist/core/screen/hooks/useInitialValue.js.map +1 -0
  51. package/dist/core/screen/hooks/useOnClickOutside.d.ts.map +1 -1
  52. package/dist/core/screen/hooks/useOnClickOutside.js +9 -4
  53. package/dist/core/screen/hooks/useOnClickOutside.js.map +1 -1
  54. package/dist/events/hooks/useOnWalletConnect.d.ts.map +1 -1
  55. package/dist/events/hooks/useOnWalletConnect.js +4 -0
  56. package/dist/events/hooks/useOnWalletConnect.js.map +1 -1
  57. package/dist/hooks/otc/mutations/useFillOrder.js +3 -2
  58. package/dist/hooks/otc/mutations/useFillOrder.js.map +1 -1
  59. package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.d.ts.map +1 -1
  60. package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.js +19 -2
  61. package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.js.map +1 -1
  62. package/dist/hooks/otc/tradeFlow/useOtcOrderStep.js.map +1 -1
  63. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.d.ts +28 -0
  64. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.d.ts.map +1 -0
  65. package/dist/hooks/swap/prices/delta/mutations/{useCancelLimitDeltaOrders.js → useCancelDeltaOrders.js} +5 -5
  66. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js.map +1 -0
  67. package/dist/hooks/swap/prices/delta/orders/types.d.ts +1 -1
  68. package/dist/hooks/swap/prices/delta/orders/types.d.ts.map +1 -1
  69. package/dist/hooks/swap/prices/delta/orders/utils.d.ts +3 -0
  70. package/dist/hooks/swap/prices/delta/orders/utils.d.ts.map +1 -1
  71. package/dist/hooks/swap/prices/delta/orders/utils.js +6 -3
  72. package/dist/hooks/swap/prices/delta/orders/utils.js.map +1 -1
  73. package/dist/hooks/swap/prices/delta/queries/errors.d.ts +10 -0
  74. package/dist/hooks/swap/prices/delta/queries/errors.d.ts.map +1 -0
  75. package/dist/hooks/swap/prices/delta/queries/errors.js +21 -0
  76. package/dist/hooks/swap/prices/delta/queries/errors.js.map +1 -0
  77. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts.map +1 -1
  78. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js +7 -4
  79. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js.map +1 -1
  80. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +10 -0
  81. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
  82. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +70 -10
  83. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
  84. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.d.ts +2 -0
  85. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.d.ts.map +1 -1
  86. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js +42 -23
  87. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js.map +1 -1
  88. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts.map +1 -1
  89. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js +22 -5
  90. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js.map +1 -1
  91. package/dist/hooks/txs/queries/useAwaitTx.d.ts.map +1 -1
  92. package/dist/hooks/txs/queries/useAwaitTx.js +75 -18
  93. package/dist/hooks/txs/queries/useAwaitTx.js.map +1 -1
  94. package/dist/hooks/useChainMatches.d.ts +7 -0
  95. package/dist/hooks/useChainMatches.d.ts.map +1 -0
  96. package/dist/hooks/useChainMatches.js +31 -0
  97. package/dist/hooks/useChainMatches.js.map +1 -0
  98. package/dist/hooks/useMinViemClient.d.ts +16 -0
  99. package/dist/hooks/useMinViemClient.d.ts.map +1 -1
  100. package/dist/hooks/useMinViemClient.js +62 -7
  101. package/dist/hooks/useMinViemClient.js.map +1 -1
  102. package/dist/hooks/useSwitchChainWithGuard.d.ts +12 -0
  103. package/dist/hooks/useSwitchChainWithGuard.d.ts.map +1 -0
  104. package/dist/hooks/useSwitchChainWithGuard.js +70 -0
  105. package/dist/hooks/useSwitchChainWithGuard.js.map +1 -0
  106. package/dist/lib/web3/privy/config.js +1 -1
  107. package/dist/lib/web3/wagmi/config.js +1 -1
  108. package/dist/lib/web3/wagmi/transports.js +1 -1
  109. package/dist/lib/web3/wagmi/transports.js.map +1 -1
  110. package/dist/styles.css +1 -1
  111. package/dist/transactions/queries/ensureTxReceipt.d.ts +2 -1
  112. package/dist/transactions/queries/ensureTxReceipt.d.ts.map +1 -1
  113. package/dist/transactions/queries/ensureTxReceipt.js +22 -26
  114. package/dist/transactions/queries/ensureTxReceipt.js.map +1 -1
  115. package/dist/transactions/state/effects/finalize.d.ts +1 -1
  116. package/dist/transactions/state/effects/finalize.js +2 -2
  117. package/dist/transactions/state/effects/finalize.js.map +1 -1
  118. package/dist/transactions/state/hooks/useActivateEffects.js +2 -2
  119. package/dist/transactions/state/hooks/useActivateEffects.js.map +1 -1
  120. package/dist/transactions/state/transactionsActionAtom.js.map +1 -1
  121. package/package.json +1 -1
  122. package/dist/hooks/swap/prices/delta/mutations/useCancelLimitDeltaOrders.d.ts +0 -28
  123. package/dist/hooks/swap/prices/delta/mutations/useCancelLimitDeltaOrders.d.ts.map +0 -1
  124. package/dist/hooks/swap/prices/delta/mutations/useCancelLimitDeltaOrders.js.map +0 -1
@@ -3,17 +3,20 @@ import { useDeltaFlow } from './useDeltaFlow.js';
3
3
  import { useLogger } from '../../../core/logger.js';
4
4
  import { constructExplorerOrderDetailsLink } from '../../../lib/utils/explorer.js';
5
5
  import { isUserCancelledError } from './common/errors.js';
6
+ import { DeltaOrderStatusChecker } from '../prices/delta/orders/utils.js';
6
7
 
7
8
  function useDeltaSwapStep(options) {
8
- const $ = distExports.c(21);
9
+ const $ = distExports.c(26);
9
10
  const logger = useLogger("DeltaSwapStep");
10
11
  const deltaFlow = useDeltaFlow(options);
11
12
  const startDeltaSwap = deltaFlow.runDeltaOrderFlow;
13
+ const cancelDeltaOrder = deltaFlow.cancelDeltaOrder;
12
14
  const reset = deltaFlow.reset;
13
15
  const cancelFlow = deltaFlow.cancelFlow;
14
16
  const retryFlow = deltaFlow.retryFlow;
15
17
  let explorerLink;
16
18
  let isFlowCancellable;
19
+ let isOrderCancellable;
17
20
  let step;
18
21
  if ($[0] !== deltaFlow || $[1] !== logger.once) {
19
22
  const permitSigningHappeningOrNeverHappened = deltaFlow.signPermit.isPending || !deltaFlow.signPermit.isPermitSigned;
@@ -52,6 +55,16 @@ function useDeltaSwapStep(options) {
52
55
  const approvalIsStarted = step?.key === "signature" && step.subStep === "approval-signature" && deltaFlow.approval.isTxPending;
53
56
  const isOrderBeingSigned = step?.key === "signature" && (step.subStep === "order-signature" || step.subStep === "standalone-order-signature");
54
57
  isFlowCancellable = approvalIsStarted || isOrderBeingSigned;
58
+ const lastOrderStatus = deltaFlow.deltaOrderExecution.lastOrderState?.status || deltaFlow.deltaOrderExecution.sentOrder?.status;
59
+ let t02;
60
+ if ($[6] !== lastOrderStatus) {
61
+ t02 = !!lastOrderStatus && DeltaOrderStatusChecker.cancellable.has(lastOrderStatus);
62
+ $[6] = lastOrderStatus;
63
+ $[7] = t02;
64
+ } else {
65
+ t02 = $[7];
66
+ }
67
+ isOrderCancellable = t02;
55
68
  const orderId = deltaFlow.deltaOrderSubmission.order?.id;
56
69
  explorerLink = orderId ? constructExplorerOrderDetailsLink(orderId) : void 0;
57
70
  logger.once.log("step", step, deltaFlow, {
@@ -63,19 +76,21 @@ function useDeltaSwapStep(options) {
63
76
  $[1] = logger.once;
64
77
  $[2] = explorerLink;
65
78
  $[3] = isFlowCancellable;
66
- $[4] = step;
79
+ $[4] = isOrderCancellable;
80
+ $[5] = step;
67
81
  } else {
68
82
  explorerLink = $[2];
69
83
  isFlowCancellable = $[3];
70
- step = $[4];
84
+ isOrderCancellable = $[4];
85
+ step = $[5];
71
86
  }
72
87
  let t0;
73
- if ($[5] !== deltaFlow.error) {
88
+ if ($[8] !== deltaFlow.error) {
74
89
  t0 = isUserCancelledError(deltaFlow.error) ? null : deltaFlow.error;
75
- $[5] = deltaFlow.error;
76
- $[6] = t0;
90
+ $[8] = deltaFlow.error;
91
+ $[9] = t0;
77
92
  } else {
78
- t0 = $[6];
93
+ t0 = $[9];
79
94
  }
80
95
  const error = t0;
81
96
  let erroredStep;
@@ -93,15 +108,17 @@ function useDeltaSwapStep(options) {
93
108
  }
94
109
  }
95
110
  let t1;
96
- if ($[7] !== cancelFlow || $[8] !== deltaFlow.result || $[9] !== deltaFlow.submittedDeltaOrder || $[10] !== deltaFlow.tradeFlowType || $[11] !== deltaFlow.usedPrice || $[12] !== error || $[13] !== erroredStep || $[14] !== explorerLink || $[15] !== isFlowCancellable || $[16] !== reset || $[17] !== retryFlow || $[18] !== startDeltaSwap || $[19] !== step) {
111
+ if ($[10] !== cancelDeltaOrder || $[11] !== cancelFlow || $[12] !== deltaFlow.result || $[13] !== deltaFlow.submittedDeltaOrder || $[14] !== deltaFlow.tradeFlowType || $[15] !== deltaFlow.usedPrice || $[16] !== error || $[17] !== erroredStep || $[18] !== explorerLink || $[19] !== isFlowCancellable || $[20] !== isOrderCancellable || $[21] !== reset || $[22] !== retryFlow || $[23] !== startDeltaSwap || $[24] !== step) {
97
112
  t1 = {
98
113
  usedPrice: deltaFlow.usedPrice,
99
114
  submittedDeltaOrder: deltaFlow.submittedDeltaOrder,
100
115
  startDeltaSwap,
116
+ cancelDeltaOrder,
101
117
  reset,
102
118
  cancelFlow,
103
119
  retryFlow,
104
120
  isFlowCancellable,
121
+ isOrderCancellable,
105
122
  step,
106
123
  explorerLink,
107
124
  error,
@@ -109,22 +126,24 @@ function useDeltaSwapStep(options) {
109
126
  result: deltaFlow.result,
110
127
  tradeFlowType: deltaFlow.tradeFlowType
111
128
  };
112
- $[7] = cancelFlow;
113
- $[8] = deltaFlow.result;
114
- $[9] = deltaFlow.submittedDeltaOrder;
115
- $[10] = deltaFlow.tradeFlowType;
116
- $[11] = deltaFlow.usedPrice;
117
- $[12] = error;
118
- $[13] = erroredStep;
119
- $[14] = explorerLink;
120
- $[15] = isFlowCancellable;
121
- $[16] = reset;
122
- $[17] = retryFlow;
123
- $[18] = startDeltaSwap;
124
- $[19] = step;
125
- $[20] = t1;
129
+ $[10] = cancelDeltaOrder;
130
+ $[11] = cancelFlow;
131
+ $[12] = deltaFlow.result;
132
+ $[13] = deltaFlow.submittedDeltaOrder;
133
+ $[14] = deltaFlow.tradeFlowType;
134
+ $[15] = deltaFlow.usedPrice;
135
+ $[16] = error;
136
+ $[17] = erroredStep;
137
+ $[18] = explorerLink;
138
+ $[19] = isFlowCancellable;
139
+ $[20] = isOrderCancellable;
140
+ $[21] = reset;
141
+ $[22] = retryFlow;
142
+ $[23] = startDeltaSwap;
143
+ $[24] = step;
144
+ $[25] = t1;
126
145
  } else {
127
- t1 = $[20];
146
+ t1 = $[25];
128
147
  }
129
148
  return t1;
130
149
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useDeltaSwapStep.js","sources":["../../../../src/hooks/swap/tradeFlow/useDeltaSwapStep.ts"],"sourcesContent":["import type {\n DeltaOrderStep,\n DeltaOrderStepKey,\n} from \"@/components/widget/TradeOverview/steps\";\nimport {\n useDeltaFlow,\n type SubmitDeltaOrderResult,\n type UseDeltaFlowInput,\n type UseDeltaFlowResult,\n} from \"./useDeltaFlow\";\nimport { useLogger } from \"@/core/logger\";\nimport { constructExplorerOrderDetailsLink } from \"@/lib/utils/explorer\";\nimport { isUserCancelledError } from \"./common/errors\";\n\ntype UseDeltaSwapStepResult = {\n startDeltaSwap: UseDeltaFlowResult[\"runDeltaOrderFlow\"];\n // @TODO check if resetting is necessary on error, maybe not if submit on click works as a reset\n reset: UseDeltaFlowResult[\"reset\"];\n cancelFlow: UseDeltaFlowResult[\"cancelFlow\"];\n retryFlow: UseDeltaFlowResult[\"retryFlow\"];\n isFlowCancellable: boolean;\n step?: DeltaOrderStep;\n explorerLink?: string;\n error: Error | null;\n erroredStep?: DeltaOrderStepKey;\n result?: SubmitDeltaOrderResult;\n usedPrice: UseDeltaFlowResult[\"usedPrice\"];\n submittedDeltaOrder: UseDeltaFlowResult[\"submittedDeltaOrder\"];\n tradeFlowType: UseDeltaFlowResult[\"tradeFlowType\"];\n};\n\nexport function useDeltaSwapStep(\n options: UseDeltaFlowInput\n): UseDeltaSwapStepResult {\n const logger = useLogger(\"DeltaSwapStep\");\n const deltaFlow = useDeltaFlow(options);\n\n const startDeltaSwap = deltaFlow.runDeltaOrderFlow;\n const reset = deltaFlow.reset;\n const cancelFlow = deltaFlow.cancelFlow;\n const retryFlow = deltaFlow.retryFlow;\n\n let step: DeltaOrderStep | undefined;\n\n const permitSigningHappeningOrNeverHappened =\n // isPending starts as false,\n // so we can use !isPermitSigned to detect if Permit signing is happening or never happened\n deltaFlow.signPermit.isPending || !deltaFlow.signPermit.isPermitSigned;\n\n const approvalHappeningOrNeverHappened =\n // isPending starts as false,\n // needsApproval && !isSuccess allows to detect approve step right away even then\n deltaFlow.approval.isPending || !deltaFlow.approval.isSuccess;\n\n const willUsePermit =\n deltaFlow.approval.needsApproval &&\n deltaFlow.signPermit.isPermitSupported &&\n deltaFlow.signPermit.isPermitReadyToSign;\n\n const permitOrApprovalHappeningOrNeverHappened = willUsePermit\n ? permitSigningHappeningOrNeverHappened\n : approvalHappeningOrNeverHappened;\n\n if (\n deltaFlow.approval.needsApproval &&\n permitOrApprovalHappeningOrNeverHappened\n ) {\n step = { key: \"signature\", subStep: \"approval-signature\" };\n } else if (deltaFlow.deltaOrderSubmission.isPending) {\n const permitOrApprovalHappened = !!(\n deltaFlow.approval.txHash || deltaFlow.signPermit.signature\n );\n\n step = {\n key: \"signature\",\n subStep: permitOrApprovalHappened\n ? \"order-signature\"\n : \"standalone-order-signature\",\n };\n } else if (deltaFlow.deltaOrderExecution.isPending) {\n const orderStatus = deltaFlow.deltaOrderExecution.lastOrderState?.status;\n const notYetRunning = !orderStatus || orderStatus === \"NOT_STARTED\";\n step = {\n key: notYetRunning ? \"auction\" : \"order-execution\",\n };\n } else if (deltaFlow.isPending) {\n // if something is between steps but not clear step,\n // then assume we're at the standalone signature sub-step\n step = { key: \"signature\", subStep: \"standalone-order-signature\" };\n }\n\n const approvalIsStarted =\n step?.key === \"signature\" &&\n step.subStep === \"approval-signature\" &&\n deltaFlow.approval.isTxPending;\n\n const isOrderBeingSigned =\n step?.key === \"signature\" &&\n (step.subStep === \"order-signature\" ||\n step.subStep === \"standalone-order-signature\");\n\n const isFlowCancellable =\n // final Order is not yet submitted, there's something to cancel;\n // but some steps are already started so we can't simply dismiss\n approvalIsStarted || isOrderBeingSigned;\n\n const orderId = deltaFlow.deltaOrderSubmission.order?.id;\n const explorerLink = orderId\n ? constructExplorerOrderDetailsLink(orderId)\n : undefined;\n\n logger.once.log(\"step\", step, deltaFlow, {\n isFlowCancellable,\n explorerLink,\n orderId,\n });\n\n // intentional cancellation is handled separately\n const error = isUserCancelledError(deltaFlow.error) ? null : deltaFlow.error;\n\n let erroredStep: DeltaOrderStepKey | undefined;\n\n if (deltaFlow.isError) {\n if (deltaFlow.approval.isError || deltaFlow.signPermit.isError) {\n erroredStep = \"signature\";\n } else if (deltaFlow.deltaOrderSubmission.isError) {\n erroredStep = \"auction\";\n } else if (deltaFlow.deltaOrderExecution.isError) {\n erroredStep = \"order-execution\";\n }\n }\n\n return {\n usedPrice: deltaFlow.usedPrice,\n submittedDeltaOrder: deltaFlow.submittedDeltaOrder, // submitted or updated Delta Order\n startDeltaSwap,\n reset, // @TODO it maybe makes sense to reset mutation data when TradeOverflow drawer is closed\n // if we ever depend on mutation.result when Drawer is not closed,\n // otherwise the result sticks around until remount or next mutation start\n cancelFlow,\n retryFlow,\n isFlowCancellable,\n step,\n explorerLink,\n error,\n erroredStep,\n result: deltaFlow.result,\n tradeFlowType: deltaFlow.tradeFlowType,\n };\n}\n"],"names":["useDeltaSwapStep","options","$","_c","logger","useLogger","deltaFlow","useDeltaFlow","startDeltaSwap","runDeltaOrderFlow","reset","cancelFlow","retryFlow","explorerLink","isFlowCancellable","step","once","permitSigningHappeningOrNeverHappened","signPermit","isPending","isPermitSigned","approvalHappeningOrNeverHappened","approval","isSuccess","willUsePermit","needsApproval","isPermitSupported","isPermitReadyToSign","permitOrApprovalHappeningOrNeverHappened","deltaOrderSubmission","permitOrApprovalHappened","txHash","signature","deltaOrderExecution","orderStatus","lastOrderState","status","notYetRunning","approvalIsStarted","key","subStep","isTxPending","isOrderBeingSigned","orderId","order","id","constructExplorerOrderDetailsLink","undefined","log","t0","error","isUserCancelledError","erroredStep","isError","t1","result","submittedDeltaOrder","tradeFlowType","usedPrice"],"mappings":"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"}
1
+ {"version":3,"file":"useDeltaSwapStep.js","sources":["../../../../src/hooks/swap/tradeFlow/useDeltaSwapStep.ts"],"sourcesContent":["import type {\n DeltaOrderStep,\n DeltaOrderStepKey,\n} from \"@/components/widget/TradeOverview/steps\";\nimport {\n useDeltaFlow,\n type SubmitDeltaOrderResult,\n type UseDeltaFlowInput,\n type UseDeltaFlowResult,\n} from \"./useDeltaFlow\";\nimport { useLogger } from \"@/core/logger\";\nimport { constructExplorerOrderDetailsLink } from \"@/lib/utils/explorer\";\nimport { isUserCancelledError } from \"./common/errors\";\nimport { DeltaOrderStatusChecker } from \"../prices/delta/orders/utils\";\n\ntype UseDeltaSwapStepResult = {\n startDeltaSwap: UseDeltaFlowResult[\"runDeltaOrderFlow\"];\n cancelDeltaOrder: UseDeltaFlowResult[\"cancelDeltaOrder\"];\n // @TODO check if resetting is necessary on error, maybe not if submit on click works as a reset\n reset: UseDeltaFlowResult[\"reset\"];\n cancelFlow: UseDeltaFlowResult[\"cancelFlow\"];\n retryFlow: UseDeltaFlowResult[\"retryFlow\"];\n isFlowCancellable: boolean;\n isOrderCancellable: boolean;\n step?: DeltaOrderStep;\n explorerLink?: string;\n error: Error | null;\n erroredStep?: DeltaOrderStepKey;\n result?: SubmitDeltaOrderResult;\n usedPrice: UseDeltaFlowResult[\"usedPrice\"];\n submittedDeltaOrder: UseDeltaFlowResult[\"submittedDeltaOrder\"];\n tradeFlowType: UseDeltaFlowResult[\"tradeFlowType\"];\n};\n\nexport function useDeltaSwapStep(\n options: UseDeltaFlowInput\n): UseDeltaSwapStepResult {\n const logger = useLogger(\"DeltaSwapStep\");\n const deltaFlow = useDeltaFlow(options);\n\n const startDeltaSwap = deltaFlow.runDeltaOrderFlow;\n const cancelDeltaOrder = deltaFlow.cancelDeltaOrder;\n const reset = deltaFlow.reset;\n const cancelFlow = deltaFlow.cancelFlow;\n const retryFlow = deltaFlow.retryFlow;\n\n let step: DeltaOrderStep | undefined;\n\n const permitSigningHappeningOrNeverHappened =\n // isPending starts as false,\n // so we can use !isPermitSigned to detect if Permit signing is happening or never happened\n deltaFlow.signPermit.isPending || !deltaFlow.signPermit.isPermitSigned;\n\n const approvalHappeningOrNeverHappened =\n // isPending starts as false,\n // needsApproval && !isSuccess allows to detect approve step right away even then\n deltaFlow.approval.isPending || !deltaFlow.approval.isSuccess;\n\n const willUsePermit =\n deltaFlow.approval.needsApproval &&\n deltaFlow.signPermit.isPermitSupported &&\n deltaFlow.signPermit.isPermitReadyToSign;\n\n const permitOrApprovalHappeningOrNeverHappened = willUsePermit\n ? permitSigningHappeningOrNeverHappened\n : approvalHappeningOrNeverHappened;\n\n if (\n deltaFlow.approval.needsApproval &&\n permitOrApprovalHappeningOrNeverHappened\n ) {\n step = { key: \"signature\", subStep: \"approval-signature\" };\n } else if (deltaFlow.deltaOrderSubmission.isPending) {\n const permitOrApprovalHappened = !!(\n deltaFlow.approval.txHash || deltaFlow.signPermit.signature\n );\n\n step = {\n key: \"signature\",\n subStep: permitOrApprovalHappened\n ? \"order-signature\"\n : \"standalone-order-signature\",\n };\n } else if (deltaFlow.deltaOrderExecution.isPending) {\n const orderStatus = deltaFlow.deltaOrderExecution.lastOrderState?.status;\n const notYetRunning = !orderStatus || orderStatus === \"NOT_STARTED\";\n step = {\n key: notYetRunning ? \"auction\" : \"order-execution\",\n };\n } else if (deltaFlow.isPending) {\n // if something is between steps but not clear step,\n // then assume we're at the standalone signature sub-step\n step = { key: \"signature\", subStep: \"standalone-order-signature\" };\n }\n\n const approvalIsStarted =\n step?.key === \"signature\" &&\n step.subStep === \"approval-signature\" &&\n deltaFlow.approval.isTxPending;\n\n const isOrderBeingSigned =\n step?.key === \"signature\" &&\n (step.subStep === \"order-signature\" ||\n step.subStep === \"standalone-order-signature\");\n\n const isFlowCancellable =\n // final Order is not yet submitted, there's something to cancel;\n // but some steps are already started so we can't simply dismiss\n approvalIsStarted || isOrderBeingSigned;\n\n const lastOrderStatus =\n // either from last known status (polling) or from the just submitted Order\n deltaFlow.deltaOrderExecution.lastOrderState?.status ||\n deltaFlow.deltaOrderExecution.sentOrder?.status;\n\n const isOrderCancellable =\n !!lastOrderStatus &&\n DeltaOrderStatusChecker.cancellable.has(lastOrderStatus);\n\n const orderId = deltaFlow.deltaOrderSubmission.order?.id;\n const explorerLink = orderId\n ? constructExplorerOrderDetailsLink(orderId)\n : undefined;\n\n logger.once.log(\"step\", step, deltaFlow, {\n isFlowCancellable,\n explorerLink,\n orderId,\n });\n\n // intentional cancellation is handled separately\n const error = isUserCancelledError(deltaFlow.error) ? null : deltaFlow.error;\n\n let erroredStep: DeltaOrderStepKey | undefined;\n\n if (deltaFlow.isError) {\n if (deltaFlow.approval.isError || deltaFlow.signPermit.isError) {\n erroredStep = \"signature\";\n } else if (deltaFlow.deltaOrderSubmission.isError) {\n erroredStep = \"auction\";\n } else if (deltaFlow.deltaOrderExecution.isError) {\n erroredStep = \"order-execution\";\n }\n }\n\n return {\n usedPrice: deltaFlow.usedPrice,\n submittedDeltaOrder: deltaFlow.submittedDeltaOrder, // submitted or updated Delta Order\n startDeltaSwap,\n cancelDeltaOrder,\n reset, // @TODO it maybe makes sense to reset mutation data when TradeOverflow drawer is closed\n // if we ever depend on mutation.result when Drawer is not closed,\n // otherwise the result sticks around until remount or next mutation start\n cancelFlow,\n retryFlow,\n isFlowCancellable,\n isOrderCancellable,\n step,\n explorerLink,\n error,\n erroredStep,\n result: deltaFlow.result,\n tradeFlowType: deltaFlow.tradeFlowType,\n };\n}\n"],"names":["useDeltaSwapStep","options","$","_c","logger","useLogger","deltaFlow","useDeltaFlow","startDeltaSwap","runDeltaOrderFlow","cancelDeltaOrder","reset","cancelFlow","retryFlow","explorerLink","isFlowCancellable","isOrderCancellable","step","once","permitSigningHappeningOrNeverHappened","signPermit","isPending","isPermitSigned","approvalHappeningOrNeverHappened","approval","isSuccess","willUsePermit","needsApproval","isPermitSupported","isPermitReadyToSign","permitOrApprovalHappeningOrNeverHappened","deltaOrderSubmission","permitOrApprovalHappened","txHash","signature","deltaOrderExecution","orderStatus","lastOrderState","status","notYetRunning","approvalIsStarted","key","subStep","isTxPending","isOrderBeingSigned","lastOrderStatus","sentOrder","t0","DeltaOrderStatusChecker","cancellable","has","orderId","order","id","constructExplorerOrderDetailsLink","undefined","log","error","isUserCancelledError","erroredStep","isError","t1","result","submittedDeltaOrder","tradeFlowType","usedPrice"],"mappings":";;;;;;;AAkCO,SAAAA,iBAAAC,OAAAA,EAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,EAAA,CAAA;AAGL,EAAA,MAAAC,MAAAA,GAAeC,UAAU,eAAe,CAAA;AACxC,EAAA,MAAAC,SAAAA,GAAkBC,aAAaN,OAAO,CAAA;AAEtC,EAAA,MAAAO,iBAAuBF,SAAAA,CAASG,iBAAAA;AAChC,EAAA,MAAAC,mBAAyBJ,SAAAA,CAASI,gBAAAA;AAClC,EAAA,MAAAC,QAAcL,SAAAA,CAASK,KAAAA;AACvB,EAAA,MAAAC,aAAmBN,SAAAA,CAASM,UAAAA;AAC5B,EAAA,MAAAC,YAAkBP,SAAAA,CAASO,SAAAA;AAAW,EAAA,IAAAC,YAAAA;AAAA,EAAA,IAAAC,iBAAAA;AAAA,EAAA,IAAAC,kBAAAA;AAAA,EAAA,IAAAC,IAAAA;AAAA,EAAA,IAAAf,CAAAA,QAAAI,SAAAA,IAAAJ,EAAA,CAAA,CAAA,KAAAE,OAAAc,IAAAA,EAAA;AAItC,IAAA,MAAAC,wCAGEb,SAAAA,CAASc,UAAAA,CAAWC,SAAAA,IAApB,CAAmCf,UAASc,UAAAA,CAAWE,cAAAA;AAEzD,IAAA,MAAAC,mCAGEjB,SAAAA,CAASkB,QAAAA,CAASH,SAAAA,IAAlB,CAAiCf,UAASkB,QAAAA,CAASC,SAAAA;AAErD,IAAA,MAAAC,aAAAA,GACEpB,UAASkB,QAAAA,CAASG,aAAAA,IAClBrB,UAASc,UAAAA,CAAWQ,iBAAAA,IACpBtB,UAASc,UAAAA,CAAWS,mBAAAA;AAEtB,IAAA,MAAAC,wCAAAA,GAAiDJ,gBAAAP,qCAAAA,GAAAI,gCAAAA;AAIjD,IAAA,IACEjB,SAAAA,CAASkB,QAAAA,CAASG,aAAAA,IAAlBG,wCAAAA,EACwC;AAExCb,MAAAA,IAAAA,GAAOA;AAAAA,QAAAA,GAAAA,EAAOA,WAAAA;AAAAA,QAAWA,OAAAA,EAAWA;AAAAA,OAAqBA;AAAAA,IAArD,CAAA,MAAA;AACC,MAAA,IAAIX,SAAAA,CAASyB,qBAAqBV,SAAAA,EAAU;AACjD,QAAA,MAAAW,2BAAiC,CAAC,EAChC1B,UAASkB,QAAAA,CAASS,MAAAA,IAAW3B,UAASc,UAAAA,CAAWc,SAAAA,CAAAA;AAGnDjB,QAAAA,IAAAA,GAAOA;AAAAA,UAAAA,GAAAA,EACAA,WAAAA;AAAAA,UAAWA,OAAAA,EACPe,2BAAA,iBAAA,GAAA;AAAA,SAGX;AAAA,MALI,CAAA,MAAA;AAMC,QAAA,IAAI1B,SAAAA,CAAS6B,oBAAoBd,SAAAA,EAAU;AAChD,UAAA,MAAAe,WAAAA,GAAoB9B,SAAAA,CAAS6B,mBAAAA,CAAoBE,cAAAA,EAAuBC,MAAAA;AACxE,UAAA,MAAAC,aAAAA,GAAsB,CAACH,WAAAA,IAAeA,WAAAA,KAAgB,aAAA;AACtDnB,UAAAA,IAAAA,GAAOA;AAAAA,YAAAA,GAAAA,EACAsB,gBAAA,SAAA,GAAA;AAAA,WACP;AAAA,QAFI,CAAA,MAAA;AAGC,UAAA,IAAIjC,UAASe,SAAAA,EAAU;AAG5BJ,YAAAA,IAAAA,GAAOA;AAAAA,cAAAA,GAAAA,EAAOA,WAAAA;AAAAA,cAAWA,OAAAA,EAAWA;AAAAA,aAA6BA;AAAAA,UAA7D;AAAA,QACL;AAAA,MAAA;AAAA,IAAA;AAED,IAAA,MAAAuB,iBAAAA,GACEvB,MAAIwB,GAAAA,KAAU,WAAA,IACdxB,KAAIyB,OAAAA,KAAa,oBAAA,IACjBpC,UAASkB,QAAAA,CAASmB,WAAAA;AAEpB,IAAA,MAAAC,kBAAAA,GACE3B,MAAIwB,GAAAA,KAAU,WAAA,KACbxB,KAAIyB,OAAAA,KAAa,iBAAA,IAChBzB,KAAIyB,OAAAA,KAAa,4BAAA,CAAA;AAErB3B,IAAAA,iBAAAA,GAGEyB,iBAAAA,IAAAI,kBAAAA;AAEF,IAAA,MAAAC,kBAEEvC,SAAAA,CAAS6B,mBAAAA,CAAoBE,gBAAuBC,MAAAA,IACpDhC,SAAAA,CAAS6B,oBAAoBW,SAAAA,EAAkBR,MAAAA;AAAC,IAAA,IAAAS,GAAAA;AAAA,IAAA,IAAA7C,CAAAA,QAAA2C,eAAAA,EAAA;AAGhDE,MAAAA,MAAA,CAAC,CAACF,mBACFG,uBAAAA,CAAuBC,WAAAA,CAAYC,IAAKL,eAAe,CAAA;AAAC3C,MAAAA,CAAAA,MAAA2C,eAAAA;AAAA3C,MAAAA,CAAAA,MAAA6C,GAAAA;AAAAA,IAAA,CAAA,MAAA;AAAAA,MAAAA,GAAAA,GAAA7C,EAAA,CAAA,CAAA;AAAA,IAAA;AAF1Dc,IAAAA,kBAAAA,GACE+B,GAAAA;AAGF,IAAA,MAAAI,OAAAA,GAAgB7C,SAAAA,CAASyB,oBAAAA,CAAqBqB,KAAAA,EAAUC,EAAAA;AACxDvC,IAAAA,YAAAA,GAAqBqC,OAAAA,GACjBG,iCAAAA,CAAkCH,OAC1B,CAAA,GAFSI,MAAAA;AAIrBnD,IAAAA,MAAAA,CAAMc,IAAAA,CAAKsC,GAAAA,CAAK,MAAA,EAAQvC,IAAAA,EAAMX,SAAAA,EAAW;AAAA,MAAAS,iBAAAA;AAAAA,MAAAD,YAAAA;AAAAA,MAAAqC;AAAAA,KAIxC,CAAA;AAACjD,IAAAA,CAAAA,MAAAI,SAAAA;AAAAJ,IAAAA,CAAAA,CAAA,CAAA,IAAAE,MAAAA,CAAAc,IAAAA;AAAAhB,IAAAA,CAAAA,MAAAY,YAAAA;AAAAZ,IAAAA,CAAAA,MAAAa,iBAAAA;AAAAb,IAAAA,CAAAA,MAAAc,kBAAAA;AAAAd,IAAAA,CAAAA,MAAAe,IAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAH,IAAAA,YAAAA,GAAAZ,EAAA,CAAA,CAAA;AAAAa,IAAAA,iBAAAA,GAAAb,EAAA,CAAA,CAAA;AAAAc,IAAAA,kBAAAA,GAAAd,EAAA,CAAA,CAAA;AAAAe,IAAAA,IAAAA,GAAAf,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,IAAA6C,EAAAA;AAAA,EAAA,IAAA7C,CAAAA,CAAA,CAAA,CAAA,KAAAI,SAAAA,CAAAmD,KAAAA,EAAA;AAGYV,IAAAA,EAAAA,GAAAW,oBAAAA,CAAqBpD,SAAAA,CAASmD,KAA+B,CAAA,GAA7D,OAA+CnD,SAAAA,CAASmD,KAAAA;AAAMvD,IAAAA,CAAAA,CAAA,CAAA,IAAAI,SAAAA,CAAAmD,KAAAA;AAAAvD,IAAAA,CAAAA,MAAA6C,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAA7C,EAAA,CAAA,CAAA;AAAA,EAAA;AAA5E,EAAA,MAAAuD,KAAAA,GAAcV,EAAAA;AAEVY,EAAAA,IAAAA,WAAAA;AAEJ,EAAA,IAAIrD,UAASsD,OAAAA,EAAQ;AACnB,IAAA,IAAItD,SAAAA,CAASkB,QAAAA,CAASoC,OAAAA,IAAYtD,SAAAA,CAASc,WAAWwC,OAAAA,EAAQ;AAC5DD,MAAAA,WAAAA,GAAcA,WAAAA;AAAAA,IAAH,CAAA,MAAA;AACN,MAAA,IAAIrD,SAAAA,CAASyB,qBAAqB6B,OAAAA,EAAQ;AAC/CD,QAAAA,WAAAA,GAAcA,SAAAA;AAAAA,MAAH,CAAA,MAAA;AACN,QAAA,IAAIrD,SAAAA,CAAS6B,oBAAoByB,OAAAA,EAAQ;AAC9CD,UAAAA,WAAAA,GAAcA,iBAAAA;AAAAA,QAAH;AAAA,MACZ;AAAA,IAAA;AAAA,EAAA;AACF,EAAA,IAAAE,EAAAA;AAAA,EAAA,IAAA3D,CAAAA,CAAA,EAAA,CAAA,KAAAQ,gBAAAA,IAAAR,CAAAA,CAAA,EAAA,CAAA,KAAAU,UAAAA,IAAAV,CAAAA,CAAA,EAAA,CAAA,KAAAI,SAAAA,CAAAwD,MAAAA,IAAA5D,CAAAA,CAAA,EAAA,CAAA,KAAAI,SAAAA,CAAAyD,mBAAAA,IAAA7D,CAAAA,SAAAI,SAAAA,CAAA0D,aAAAA,IAAA9D,CAAAA,CAAA,EAAA,CAAA,KAAAI,SAAAA,CAAA2D,SAAAA,IAAA/D,EAAA,EAAA,CAAA,KAAAuD,KAAAA,IAAAvD,CAAAA,CAAA,EAAA,CAAA,KAAAyD,WAAAA,IAAAzD,CAAAA,CAAA,EAAA,CAAA,KAAAY,YAAAA,IAAAZ,CAAAA,CAAA,EAAA,CAAA,KAAAa,iBAAAA,IAAAb,CAAAA,CAAA,EAAA,CAAA,KAAAc,kBAAAA,IAAAd,CAAAA,CAAA,EAAA,CAAA,KAAAS,KAAAA,IAAAT,CAAAA,CAAA,EAAA,CAAA,KAAAW,SAAAA,IAAAX,CAAAA,CAAA,EAAA,CAAA,KAAAM,cAAAA,IAAAN,CAAAA,SAAAe,IAAAA,EAAA;AAEM4C,IAAAA,EAAAA,GAAA;AAAA,MAAAI,WACM3D,SAAAA,CAAS2D,SAAAA;AAAAA,MAAUF,qBACTzD,SAAAA,CAASyD,mBAAAA;AAAAA,MAAoBvD,cAAAA;AAAAA,MAAAE,gBAAAA;AAAAA,MAAAC,KAAAA;AAAAA,MAAAC,UAAAA;AAAAA,MAAAC,SAAAA;AAAAA,MAAAE,iBAAAA;AAAAA,MAAAC,kBAAAA;AAAAA,MAAAC,IAAAA;AAAAA,MAAAH,YAAAA;AAAAA,MAAA2C,KAAAA;AAAAA,MAAAE,WAAAA;AAAAA,MAAAG,QAc1CxD,SAAAA,CAASwD,MAAAA;AAAAA,MAAOE,eACT1D,SAAAA,CAAS0D;AAAAA,KAC1B;AAAC9D,IAAAA,CAAAA,OAAAQ,gBAAAA;AAAAR,IAAAA,CAAAA,OAAAU,UAAAA;AAAAV,IAAAA,CAAAA,CAAA,EAAA,IAAAI,SAAAA,CAAAwD,MAAAA;AAAA5D,IAAAA,CAAAA,CAAA,EAAA,IAAAI,SAAAA,CAAAyD,mBAAAA;AAAA7D,IAAAA,CAAAA,CAAA,EAAA,IAAAI,SAAAA,CAAA0D,aAAAA;AAAA9D,IAAAA,CAAAA,CAAA,EAAA,IAAAI,SAAAA,CAAA2D,SAAAA;AAAA/D,IAAAA,CAAAA,OAAAuD,KAAAA;AAAAvD,IAAAA,CAAAA,OAAAyD,WAAAA;AAAAzD,IAAAA,CAAAA,OAAAY,YAAAA;AAAAZ,IAAAA,CAAAA,OAAAa,iBAAAA;AAAAb,IAAAA,CAAAA,OAAAc,kBAAAA;AAAAd,IAAAA,CAAAA,OAAAS,KAAAA;AAAAT,IAAAA,CAAAA,OAAAW,SAAAA;AAAAX,IAAAA,CAAAA,OAAAM,cAAAA;AAAAN,IAAAA,CAAAA,OAAAe,IAAAA;AAAAf,IAAAA,CAAAA,OAAA2D,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAA3D,EAAA,EAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAlBM2D,EAAAA;AAkBN;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useLimitOrderFlow.d.ts","sourceRoot":"","sources":["../../../../src/hooks/swap/tradeFlow/useLimitOrderFlow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useLimitOrderFlow.d.ts","sourceRoot":"","sources":["../../../../src/hooks/swap/tradeFlow/useLimitOrderFlow.ts"],"names":[],"mappings":"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"}
@@ -14,13 +14,15 @@ import { useApproveOrPermit } from './common/useApproveOrPermit.js';
14
14
  import { useLogger } from '../../../core/logger.js';
15
15
  import { usePartner } from '../../usePartner.js';
16
16
  import { useLimitDeadline } from '../../../core/limit/state/deadlineAtom.js';
17
- import { useCancelDeltaOrderEventCallbacks, useCancelLimitDeltaOrders } from '../prices/delta/mutations/useCancelLimitDeltaOrders.js';
17
+ import { useCancelDeltaOrderEventCallbacks, useCancelDeltaOrders } from '../prices/delta/mutations/useCancelDeltaOrders.js';
18
18
  import { getOverallOrderStatus } from '../prices/delta/orders/utils.js';
19
19
  import { useWatchDeltaAuction, deltaAuctionPollingQueryKey } from '../prices/delta/queries/useWatchDeltaOrder.js';
20
20
  import { useWidgetEvents } from '../../../core/state/widgetEventsAtom.js';
21
21
  import { usePreSignAndSubmitDeltaOrder, shouldApproveOrBatch } from './common/usePreSignAndSubmitDeltaOrder.js';
22
22
  import { DEFAULT_DELTA_BRIDGE } from '../prices/delta/bridge/const.js';
23
23
  import { useLimitReceiverAddressValue } from '../../../core/limit/state/receiverAddressAtom.js';
24
+ import { useChainMatches } from '../../useChainMatches.js';
25
+ import { useSwitchChainWithGuard } from '../../useSwitchChainWithGuard.js';
24
26
 
25
27
  const limitOrderFlowType = "limitOrder";
26
28
  const LIMIT_ORDER_MUTATION_KEY = "runLimitOrderFlow";
@@ -123,12 +125,27 @@ function useLimitOrderFlow({
123
125
  error: watchOrderExecution.error
124
126
  };
125
127
  const cancelOrderEvents = useCancelDeltaOrderEventCallbacks(createOrderMut.data);
126
- const cancelOrderMut = useCancelLimitDeltaOrders({
128
+ const orderChainId = createOrderMut.data?.chainId;
129
+ const {
130
+ forcedChainMatchesWalletChain
131
+ } = useChainMatches(orderChainId);
132
+ const {
133
+ mutateAsync: switchChain
134
+ } = useSwitchChainWithGuard();
135
+ const cancelOrderMut = useCancelDeltaOrders({
127
136
  chainId,
128
137
  account,
129
138
  client: minClient,
130
139
  mutationOptions: {
131
- onMutate: cancelOrderEvents.onMutate,
140
+ onMutate: async (variables) => {
141
+ assert(orderChainId, "orderChainId is undefined");
142
+ if (!forcedChainMatchesWalletChain) {
143
+ await switchChain({
144
+ chainId: orderChainId
145
+ });
146
+ }
147
+ cancelOrderEvents.onMutate?.(variables);
148
+ },
132
149
  onSuccess: (successResponse, vars) => {
133
150
  logger.log("Cancel Limit Order success", successResponse);
134
151
  if (limitOrderExecution.sentOrder?.id) {
@@ -270,8 +287,8 @@ function useLimitOrderFlow({
270
287
  beneficiary: receiverAddress,
271
288
  srcToken: limitPrice.srcTokenAddress,
272
289
  destToken: limitPrice.destTokenAddress,
273
- srcAmount: bridgePrice.srcAmount,
274
- destAmount: bridgePrice.receivedDestAmount,
290
+ srcAmount: limitPrice.srcAmount,
291
+ destAmount: limitPrice.destAmount,
275
292
  destChainId,
276
293
  deltaPrice: {
277
294
  ...bridgePrice,
@@ -1 +1 @@
1
- {"version":3,"file":"useLimitOrderFlow.js","sources":["../../../../src/hooks/swap/tradeFlow/useLimitOrderFlow.ts"],"sourcesContent":["import { useAccount, useChainId } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport { useEnsureTxReceipt } from \"@/hooks/txs/queries/useAwaitTx\";\nimport type { Address, Hash, TransactionReceipt } from \"viem\";\nimport { type SubmittedDeltaOrderFromAPI } from \"../prices/delta/queries/useDeltaOrders\";\nimport type { ApprovalFlowResult, SubmitTxResult } from \"./common/types\";\nimport {\n useCreateDeltaOrder,\n type CreateDeltaOrderInput,\n} from \"../prices/delta/mutations/useCreateDeltaOrder\";\nimport { useMinViemClient } from \"@/hooks/useMinViemClient\";\nimport { useMutation, useQueryClient } from \"@tanstack/react-query\";\nimport { useRef } from \"react\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { UserCancelledError } from \"./common/errors\";\nimport type {\n CallsSentObject,\n TxSentObject,\n} from \"@/lib/utils/transactionHandlers\";\nimport { useApproveOrPermit } from \"./common/useApproveOrPermit\";\n\nimport { useLogger } from \"@/core/logger\";\n\nimport { usePartner } from \"@/hooks/usePartner\";\nimport { useLimitDeadline } from \"@/core/limit/state/deadlineAtom\";\nimport {\n useCancelDeltaOrderEventCallbacks,\n useCancelLimitDeltaOrders,\n} from \"../prices/delta/mutations/useCancelLimitDeltaOrders\";\nimport { getOverallOrderStatus } from \"../prices/delta/orders/utils\";\nimport {\n deltaAuctionPollingQueryKey,\n useWatchDeltaAuction,\n type MaybeVeloraDeltaAuction,\n} from \"../prices/delta/queries/useWatchDeltaOrder\";\nimport { useWidgetEvents } from \"@/core/state/widgetEventsAtom\";\nimport {\n shouldApproveOrBatch,\n usePreSignAndSubmitDeltaOrder,\n} from \"./common/usePreSignAndSubmitDeltaOrder\";\nimport type { BridgePrice, DeltaOrderApiResponse } from \"@velora-dex/sdk\";\nimport { DEFAULT_DELTA_BRIDGE } from \"../prices/delta/bridge/const\";\nimport { useLimitReceiverAddressValue } from \"@/core/limit/state/receiverAddressAtom\";\n\nconst limitOrderFlowType = \"limitOrder\";\n\nexport type UserDefinedLimitPrice = {\n srcTokenAddress: string;\n destTokenAddress: string;\n srcAmount: string;\n destAmount: string;\n bridgePrice?: BridgePrice;\n};\n\nexport type UseLimitOrderFlowInput = {\n limitPrice?: UserDefinedLimitPrice;\n preWrapETH?: boolean;\n};\n\nexport type SubmitLimitOrderResult = {\n tradeFlowType: typeof limitOrderFlowType;\n approve: SubmitTxResult;\n limitOrder: {\n sentOrder: SubmittedDeltaOrderFromAPI;\n };\n limitPrice: UserDefinedLimitPrice;\n account: Address;\n receiverAddress?: Address;\n};\n\ntype OnTxSent = (txSent: TxSentObject | CallsSentObject) => void;\n\ntype RunLimitOrderOptions = {\n onTxSent?: OnTxSent;\n};\n\nexport type UseLimitOrderFlowResult = {\n tradeFlowType: typeof limitOrderFlowType;\n chainId: SupportedChainId;\n runLimitOrderFlow: (\n options?: RunLimitOrderOptions\n ) => Promise<SubmitLimitOrderResult>;\n reset: () => void; // reset on Error to retry\n cancelFlow: () => void; // cancel flow\n retryFlow: (\n options?: RunLimitOrderOptions\n ) => Promise<SubmitLimitOrderResult>; // reset and retry flow\n cancelLimitOrder: () => void;\n approval: ApprovalFlowResult;\n limitOrderSubmission: {\n order?: SubmittedDeltaOrderFromAPI;\n isCreatingOrder: boolean;\n isOrderSent: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n limitOrderExecution: {\n sentOrder?: SubmittedDeltaOrderFromAPI;\n lastOrderState?: MaybeVeloraDeltaAuction;\n isOrderPending: boolean;\n isOrderExecuting: boolean;\n isOrderExecuted: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n limitOrderCancelation: {\n isCancelingOrder: boolean;\n isOrderCanceled: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n result?: SubmitLimitOrderResult;\n limitPrice?: UserDefinedLimitPrice;\n};\n\nconst LIMIT_ORDER_MUTATION_KEY = \"runLimitOrderFlow\";\n\nexport function useLimitOrderFlow({\n limitPrice,\n preWrapETH,\n}: UseLimitOrderFlowInput): UseLimitOrderFlowResult {\n const logger = useLogger(\"LimitOrderFlow\");\n const chainId = useChainId();\n const queryClient = useQueryClient();\n\n /* Inside useApproveOrPermit:\n 1. Get allowance for tokenFrom \n 2.1. submit Approve tx if necessary \n\n 3. await Approve tx\n */\n\n const {\n approval,\n approveTxMut,\n events: approveOrPermitEvents,\n } = useApproveOrPermit({\n srcToken: limitPrice?.srcTokenAddress,\n srcAmount: limitPrice?.srcAmount,\n spenderContractType: \"ParaswapDelta\",\n swapSide: \"SELL\",\n tradeMode: \"limit\",\n });\n\n /* 4.1. Build and Submit Delta Order */\n\n const { address: account } = useAccount();\n\n const { minClient } = useMinViemClient({\n chainId,\n account,\n });\n\n const createOrderMut = useCreateDeltaOrder({\n chainId,\n account,\n client: minClient,\n mutationOptions: {\n onSuccess: (order) => {\n logger.log(\"Create Limit Order success\", order);\n },\n onError: (error) => {\n logger.error(\"Create Limit Order error\", error);\n },\n },\n });\n\n const limitOrderCreateAndSubmit: UseLimitOrderFlowResult[\"limitOrderSubmission\"] =\n {\n order: createOrderMut.data,\n isCreatingOrder: createOrderMut.isPending,\n isOrderSent: createOrderMut.isSuccess,\n isPending: createOrderMut.isPending,\n isError: createOrderMut.isError,\n isSuccess: createOrderMut.isSuccess,\n error: createOrderMut.error,\n };\n\n /* 4.2.\n 1. submit Batch tx (Approve + Delta pre-sign)\n 2. await Batch tx\n 3. post Pre-signed Order\n */\n\n const {\n deltaOrderPreSign,\n canBatchTxs,\n isConnectedToSafe,\n preSignAndSubmitDeltaOrder,\n reset: resetPreSignAndSubmitDeltaOrder,\n } = usePreSignAndSubmitDeltaOrder({\n chainId,\n account,\n logger,\n viemClient: minClient,\n });\n\n /* final Delta Order submission for step 4 */\n const limitOrderSubmission: UseLimitOrderFlowResult[\"limitOrderSubmission\"] =\n {\n order: limitOrderCreateAndSubmit.order || deltaOrderPreSign.order,\n isCreatingOrder:\n limitOrderCreateAndSubmit.isPending ||\n deltaOrderPreSign.isCreatingOrder,\n isOrderSent:\n limitOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isOrderSent,\n isPending:\n limitOrderCreateAndSubmit.isPending || deltaOrderPreSign.isPending,\n isError: limitOrderCreateAndSubmit.isError || deltaOrderPreSign.isError,\n isSuccess:\n limitOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isSuccess,\n error: limitOrderCreateAndSubmit.error || deltaOrderPreSign.error,\n };\n\n const watchOrderExecution = useWatchDeltaAuction({\n orderId: limitOrderSubmission.order?.id,\n onAuctionSuccess: (order) => {\n logger.log(\"Limit Order success\", order);\n },\n onAuctionFailure: (order) => {\n logger.log(\"Limit Order failure\", order);\n },\n onUpdatedAuction: (order) => {\n logger.log(\"Limit Order updated\", order);\n },\n onTimeoutGettingOrder: (order) => {\n logger.log(\"Limit Order timeout\", order);\n },\n });\n\n const orderStatus = watchOrderExecution.data\n ? getOverallOrderStatus(watchOrderExecution.data)\n : null;\n\n // refetching stops after one minute of not finding an order (order==null)\n const neverFetchedFinishedOrder =\n watchOrderExecution.data === null && watchOrderExecution.isSuccess;\n\n const limitOrderExecution: UseLimitOrderFlowResult[\"limitOrderExecution\"] = {\n sentOrder: createOrderMut.data,\n lastOrderState: watchOrderExecution.data,\n isOrderPending: orderStatus === \"pending\",\n isOrderExecuting: orderStatus === \"executing\",\n isOrderExecuted: orderStatus === \"confirmed\",\n isPending:\n watchOrderExecution.isLoading ||\n watchOrderExecution.isRefetching ||\n orderStatus === \"pending\" ||\n orderStatus === \"executing\",\n isError:\n watchOrderExecution.isError ||\n orderStatus === \"failed\" ||\n neverFetchedFinishedOrder,\n isSuccess: orderStatus === \"confirmed\",\n error: watchOrderExecution.error,\n };\n\n const cancelOrderEvents = useCancelDeltaOrderEventCallbacks(\n createOrderMut.data\n );\n\n const cancelOrderMut = useCancelLimitDeltaOrders({\n chainId,\n account,\n client: minClient,\n mutationOptions: {\n onMutate: cancelOrderEvents.onMutate,\n onSuccess: (successResponse, vars) => {\n logger.log(\"Cancel Limit Order success\", successResponse);\n if (limitOrderExecution.sentOrder?.id) {\n // refetch the order to get updated status\n queryClient.invalidateQueries({\n queryKey: deltaAuctionPollingQueryKey({\n orderId: limitOrderExecution.sentOrder.id,\n }),\n });\n }\n cancelOrderEvents.onSuccess?.(successResponse, vars);\n },\n onError: (error, vars) => {\n logger.error(\"Cancel Limit Order error\", error);\n cancelOrderEvents.onError?.(error, vars);\n },\n },\n });\n\n const limitOrderCancelation: UseLimitOrderFlowResult[\"limitOrderCancelation\"] =\n {\n isCancelingOrder: cancelOrderMut.isPending,\n isOrderCanceled:\n cancelOrderMut.isSuccess && !!cancelOrderMut.data?.success,\n isPending: cancelOrderMut.isPending,\n isError: cancelOrderMut.isError,\n isSuccess: cancelOrderMut.isSuccess,\n error: cancelOrderMut.error,\n };\n\n const ensureTxReceipt = useEnsureTxReceipt();\n\n const currentAbortControllerRef = useRef<AbortController | null>(null);\n\n const cancelFlow = () => {\n currentAbortControllerRef.current?.abort(new UserCancelledError());\n currentAbortControllerRef.current = null;\n };\n\n const partner = usePartner();\n const receiverAddress = useLimitReceiverAddressValue();\n const deadline = useLimitDeadline();\n\n const { onLimitOrder } = useWidgetEvents();\n\n const submitLimitOrder = async ({\n onTxSent,\n }: RunLimitOrderOptions = {}): Promise<SubmitLimitOrderResult> => {\n // reset all mutations except the current one,\n // otherwise we'll have previous data (txs) as mutation results\n approveTxMut.reset();\n createOrderMut.reset();\n cancelOrderMut.reset();\n resetPreSignAndSubmitDeltaOrder();\n\n // no sense in starting flow without a price data,\n // Otherwise this flow will be stopped by disabling ReviewOrder button in the first place\n assert(limitPrice, \"Limit price data is not available\");\n\n const abortController = new AbortController();\n currentAbortControllerRef.current = abortController;\n\n const signal = abortController.signal;\n\n let approveTxHash: Hash | undefined;\n let approveTxReceipt: TransactionReceipt | undefined;\n\n // at this point this is the syncronously available price\n const allowanceToSet = approval.allowanceToSet;\n\n /* \n if connected to Safe, or needs to approve a token with a tx, or needs to pre-wrap ETH\n and can batch txs, then pre-sign the batch;\n that way Safe does only one action (wrapETH?+Approve+setPreSignature batch tx)\n and a wallet that would otherwise potentially wrap ETH and then Approve Token (tx, no Permit for Limit Orders)\n and then sign Order, basically has to make at least one tx, does only one action as well.\n */\n const {\n shouldDoApprovalTxOrPermit: shouldDoApprovalTx,\n shouldPreSignBatch,\n } = shouldApproveOrBatch({\n approval,\n preWrapETH,\n signPermit: {\n isPermitSupported: false,\n isPermitReadyToSign: false,\n },\n canBatchTxs,\n isConnectedToSafe,\n });\n\n try {\n if (shouldDoApprovalTx && allowanceToSet) {\n try {\n approveOrPermitEvents.onApproveTx.request({ allowanceToSet });\n\n approveTxHash = await approveTxMut.approveAsync({\n allowanceData: {\n allowanceToSet,\n },\n });\n\n approveOrPermitEvents.onApproveTx.sent({\n allowanceToSet,\n txHash: approveTxHash,\n });\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n const approveTxReceiptPromise = ensureTxReceipt({\n hash: approveTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\"onReplaced:approveTx\", approveTxHash, data);\n },\n });\n\n if (onTxSent) {\n onTxSent({\n chainId,\n action: \"approve\",\n transactionHash: approveTxHash,\n receiptPromise: approveTxReceiptPromise,\n transactionSpecificData: {\n action: \"approve\",\n approvedAmount: allowanceToSet,\n tokenAddress: approval.token as Address,\n spenderAddress: approval.spender as Address,\n },\n });\n }\n\n approveTxReceipt = await approveTxReceiptPromise;\n\n approveOrPermitEvents.onApproveTx.confirmed({\n allowanceToSet,\n txHash: approveTxHash,\n txReceipt: approveTxReceipt,\n });\n\n logger.log(\"~ approveTx ~ receipt:\", approveTxReceipt);\n // @TODO check if we need to see if receipt.status === \"reverted\" and throw,\n // or if waitForTransactionReceipt already throws on such receipts\n } catch (error) {\n approveOrPermitEvents.onApproveTx.failed({\n allowanceToSet,\n error: error as Error,\n txHash: approveTxHash, // won't necessarily be available\n });\n throw error;\n }\n }\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n assert(account, \"Account is not connected\");\n\n assert(limitPrice, \"limitPrice is not available\");\n\n onLimitOrder?.({\n event: {\n name: \"LimitOrder:request\",\n params: {\n price: limitPrice,\n },\n },\n });\n const bridgePrice = limitPrice.bridgePrice;\n const destChainId = bridgePrice?.bridge.destinationChainId;\n\n let createOrderInput: CreateDeltaOrderInput;\n if (bridgePrice) {\n // crosschain order\n createOrderInput = {\n signal,\n type: \"LIMIT\",\n orderInput: {\n owner: account,\n beneficiary: receiverAddress,\n srcToken: limitPrice.srcTokenAddress,\n destToken: limitPrice.destTokenAddress,\n srcAmount: bridgePrice.srcAmount,\n destAmount: bridgePrice.receivedDestAmount,\n destChainId,\n deltaPrice: {\n ...bridgePrice,\n bridge: {\n ...bridgePrice.bridge,\n protocolSelector: DEFAULT_DELTA_BRIDGE.protocolSelector,\n protocolData: DEFAULT_DELTA_BRIDGE.protocolData,\n },\n partner,\n partnerFee: 0,\n },\n partner,\n deadline,\n },\n };\n } else {\n // singlechain order\n createOrderInput = {\n signal,\n type: \"LIMIT\",\n orderInput: {\n owner: account,\n beneficiary: receiverAddress,\n srcToken: limitPrice.srcTokenAddress,\n srcAmount: limitPrice.srcAmount,\n destToken: limitPrice.destTokenAddress,\n destAmount: limitPrice.destAmount,\n destChainId,\n deltaPrice: {\n destToken: limitPrice.destTokenAddress,\n destAmount: limitPrice.destAmount,\n srcAmount: limitPrice.srcAmount,\n bridge: DEFAULT_DELTA_BRIDGE,\n partner,\n partnerFee: 0,\n },\n partner,\n deadline,\n },\n };\n }\n\n let orderFromAPI: DeltaOrderApiResponse;\n\n if (!shouldPreSignBatch) {\n // creating signing and POSTing the Order all together in one mutation\n orderFromAPI = await createOrderMut.mutateAsync(createOrderInput);\n } else {\n // prepare Order for pre-signing and POSTing:\n // 1. builds the order\n // 2. hashes the built order\n // 3. construct DeltaContract.setPreSignature(orderHash, true) tx calldata\n\n orderFromAPI = await preSignAndSubmitDeltaOrder({\n createDeltaOrderInput: createOrderInput,\n approval,\n preWrapETH,\n onTxSent,\n });\n }\n\n onLimitOrder?.({\n event: {\n name: \"LimitOrder:sent\",\n params: {\n price: limitPrice,\n order: orderFromAPI,\n },\n },\n });\n\n return {\n tradeFlowType: limitOrderFlowType,\n approve: {\n txHash: approveTxHash,\n receipt: approveTxReceipt,\n },\n limitOrder: {\n sentOrder: orderFromAPI,\n },\n limitPrice: limitPrice,\n account,\n receiverAddress,\n };\n } catch (error) {\n logger.error(\"Order submission error\", error);\n onLimitOrder?.({\n event: {\n name: \"LimitOrder:failed\",\n params: {\n price: limitPrice,\n error: error as Error,\n },\n },\n });\n throw error;\n }\n };\n\n const cancelLimitOrder = () => {\n assert(createOrderMut.data, \"No order to cancel\");\n cancelOrderMut.mutate({\n orderIds: [createOrderMut.data.id],\n });\n };\n\n const limitOrderMut = useMutation({\n mutationFn: submitLimitOrder,\n mutationKey: [LIMIT_ORDER_MUTATION_KEY],\n onSuccess: (data) => {\n logger.log(\"Order submission success\", data);\n },\n onError: (error) => {\n logger.error(\"Order submission error\", error);\n },\n onSettled: () => {\n logger.log(\"Order submission settled\");\n },\n });\n\n const runLimitOrderFlow = limitOrderMut.mutateAsync;\n\n const reset = () => {\n approveTxMut.reset();\n createOrderMut.reset();\n limitOrderMut.reset();\n cancelOrderMut.reset();\n resetPreSignAndSubmitDeltaOrder();\n };\n\n const retryFlow = (\n options?: RunLimitOrderOptions\n ): Promise<SubmitLimitOrderResult> => {\n reset();\n return runLimitOrderFlow(options);\n };\n\n /* 5. return result */\n return {\n tradeFlowType: limitOrderFlowType,\n chainId,\n runLimitOrderFlow,\n reset,\n cancelFlow,\n retryFlow,\n cancelLimitOrder,\n approval,\n limitOrderSubmission,\n limitOrderExecution,\n limitOrderCancelation,\n // deltaOrderMut includes all steps' queries and mutations and returns more precise errors (including cancellation)\n isPending: limitOrderMut.isPending,\n isSuccess: limitOrderSubmission.isSuccess, // approval is an optional step\n isError: limitOrderMut.isError,\n error: limitOrderMut.error,\n result: limitOrderMut.data,\n limitPrice,\n };\n}\n"],"names":["limitOrderFlowType","LIMIT_ORDER_MUTATION_KEY","useLimitOrderFlow","limitPrice","preWrapETH","logger","useLogger","chainId","useChainId","queryClient","useQueryClient","approval","approveTxMut","events","approveOrPermitEvents","useApproveOrPermit","srcToken","srcTokenAddress","srcAmount","spenderContractType","swapSide","tradeMode","address","account","useAccount","minClient","useMinViemClient","createOrderMut","useCreateDeltaOrder","client","mutationOptions","onSuccess","order","log","onError","error","limitOrderCreateAndSubmit","data","isCreatingOrder","isPending","isOrderSent","isSuccess","isError","deltaOrderPreSign","canBatchTxs","isConnectedToSafe","preSignAndSubmitDeltaOrder","reset","resetPreSignAndSubmitDeltaOrder","usePreSignAndSubmitDeltaOrder","viemClient","limitOrderSubmission","watchOrderExecution","useWatchDeltaAuction","orderId","id","onAuctionSuccess","onAuctionFailure","onUpdatedAuction","onTimeoutGettingOrder","orderStatus","getOverallOrderStatus","neverFetchedFinishedOrder","limitOrderExecution","sentOrder","lastOrderState","isOrderPending","isOrderExecuting","isOrderExecuted","isLoading","isRefetching","cancelOrderEvents","useCancelDeltaOrderEventCallbacks","cancelOrderMut","useCancelLimitDeltaOrders","onMutate","successResponse","vars","invalidateQueries","queryKey","deltaAuctionPollingQueryKey","limitOrderCancelation","isCancelingOrder","isOrderCanceled","success","ensureTxReceipt","useEnsureTxReceipt","currentAbortControllerRef","useRef","cancelFlow","current","abort","UserCancelledError","partner","usePartner","receiverAddress","useLimitReceiverAddressValue","deadline","useLimitDeadline","onLimitOrder","useWidgetEvents","submitLimitOrder","onTxSent","assert","abortController","AbortController","signal","approveTxHash","approveTxReceipt","allowanceToSet","shouldDoApprovalTxOrPermit","shouldDoApprovalTx","shouldPreSignBatch","shouldApproveOrBatch","signPermit","isPermitSupported","isPermitReadyToSign","onApproveTx","request","approveAsync","allowanceData","sent","txHash","throwIfAborted","approveTxReceiptPromise","hash","onReplaced","action","transactionHash","receiptPromise","transactionSpecificData","approvedAmount","tokenAddress","token","spenderAddress","spender","confirmed","txReceipt","failed","event","name","params","price","bridgePrice","destChainId","bridge","destinationChainId","createOrderInput","type","orderInput","owner","beneficiary","destToken","destTokenAddress","destAmount","receivedDestAmount","deltaPrice","protocolSelector","DEFAULT_DELTA_BRIDGE","protocolData","partnerFee","orderFromAPI","mutateAsync","createDeltaOrderInput","tradeFlowType","approve","receipt","limitOrder","cancelLimitOrder","mutate","orderIds","limitOrderMut","useMutation","mutationFn","mutationKey","onSettled","runLimitOrderFlow","retryFlow","options","result"],"mappings":"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"}
1
+ {"version":3,"file":"useLimitOrderFlow.js","sources":["../../../../src/hooks/swap/tradeFlow/useLimitOrderFlow.ts"],"sourcesContent":["import { useAccount, useChainId } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport { useEnsureTxReceipt } from \"@/hooks/txs/queries/useAwaitTx\";\nimport type { Address, Hash, TransactionReceipt } from \"viem\";\nimport { type SubmittedDeltaOrderFromAPI } from \"../prices/delta/queries/useDeltaOrders\";\nimport type { ApprovalFlowResult, SubmitTxResult } from \"./common/types\";\nimport {\n useCreateDeltaOrder,\n type CreateDeltaOrderInput,\n} from \"../prices/delta/mutations/useCreateDeltaOrder\";\nimport { useMinViemClient } from \"@/hooks/useMinViemClient\";\nimport { useMutation, useQueryClient } from \"@tanstack/react-query\";\nimport { useRef } from \"react\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { UserCancelledError } from \"./common/errors\";\nimport type {\n CallsSentObject,\n TxSentObject,\n} from \"@/lib/utils/transactionHandlers\";\nimport { useApproveOrPermit } from \"./common/useApproveOrPermit\";\n\nimport { useLogger } from \"@/core/logger\";\n\nimport { usePartner } from \"@/hooks/usePartner\";\nimport { useLimitDeadline } from \"@/core/limit/state/deadlineAtom\";\nimport {\n useCancelDeltaOrderEventCallbacks,\n useCancelDeltaOrders,\n} from \"../prices/delta/mutations/useCancelDeltaOrders\";\nimport { getOverallOrderStatus } from \"../prices/delta/orders/utils\";\nimport {\n deltaAuctionPollingQueryKey,\n useWatchDeltaAuction,\n type MaybeVeloraDeltaAuction,\n} from \"../prices/delta/queries/useWatchDeltaOrder\";\nimport { useWidgetEvents } from \"@/core/state/widgetEventsAtom\";\nimport {\n shouldApproveOrBatch,\n usePreSignAndSubmitDeltaOrder,\n} from \"./common/usePreSignAndSubmitDeltaOrder\";\nimport type { BridgePrice, DeltaOrderApiResponse } from \"@velora-dex/sdk\";\nimport { DEFAULT_DELTA_BRIDGE } from \"../prices/delta/bridge/const\";\nimport { useLimitReceiverAddressValue } from \"@/core/limit/state/receiverAddressAtom\";\nimport { useChainMatches } from \"@/hooks/useChainMatches\";\nimport { useSwitchChainWithGuard } from \"@/hooks/useSwitchChainWithGuard\";\n\nconst limitOrderFlowType = \"limitOrder\";\n\nexport type UserDefinedLimitPrice = {\n srcTokenAddress: string;\n destTokenAddress: string;\n srcAmount: string;\n destAmount: string;\n bridgePrice?: BridgePrice;\n};\n\nexport type UseLimitOrderFlowInput = {\n limitPrice?: UserDefinedLimitPrice;\n preWrapETH?: boolean;\n};\n\nexport type SubmitLimitOrderResult = {\n tradeFlowType: typeof limitOrderFlowType;\n approve: SubmitTxResult;\n limitOrder: {\n sentOrder: SubmittedDeltaOrderFromAPI;\n };\n limitPrice: UserDefinedLimitPrice;\n account: Address;\n receiverAddress?: Address;\n};\n\ntype OnTxSent = (txSent: TxSentObject | CallsSentObject) => void;\n\ntype RunLimitOrderOptions = {\n onTxSent?: OnTxSent;\n};\n\nexport type UseLimitOrderFlowResult = {\n tradeFlowType: typeof limitOrderFlowType;\n chainId: SupportedChainId;\n runLimitOrderFlow: (\n options?: RunLimitOrderOptions\n ) => Promise<SubmitLimitOrderResult>;\n reset: () => void; // reset on Error to retry\n cancelFlow: () => void; // cancel flow\n retryFlow: (\n options?: RunLimitOrderOptions\n ) => Promise<SubmitLimitOrderResult>; // reset and retry flow\n cancelLimitOrder: () => void;\n approval: ApprovalFlowResult;\n limitOrderSubmission: {\n order?: SubmittedDeltaOrderFromAPI;\n isCreatingOrder: boolean;\n isOrderSent: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n limitOrderExecution: {\n sentOrder?: SubmittedDeltaOrderFromAPI;\n lastOrderState?: MaybeVeloraDeltaAuction;\n isOrderPending: boolean;\n isOrderExecuting: boolean;\n isOrderExecuted: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n limitOrderCancelation: {\n isCancelingOrder: boolean;\n isOrderCanceled: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n result?: SubmitLimitOrderResult;\n limitPrice?: UserDefinedLimitPrice;\n};\n\nconst LIMIT_ORDER_MUTATION_KEY = \"runLimitOrderFlow\";\n\nexport function useLimitOrderFlow({\n limitPrice,\n preWrapETH,\n}: UseLimitOrderFlowInput): UseLimitOrderFlowResult {\n const logger = useLogger(\"LimitOrderFlow\");\n const chainId = useChainId();\n const queryClient = useQueryClient();\n\n /* Inside useApproveOrPermit:\n 1. Get allowance for tokenFrom \n 2.1. submit Approve tx if necessary \n\n 3. await Approve tx\n */\n\n const {\n approval,\n approveTxMut,\n events: approveOrPermitEvents,\n } = useApproveOrPermit({\n srcToken: limitPrice?.srcTokenAddress,\n srcAmount: limitPrice?.srcAmount,\n spenderContractType: \"ParaswapDelta\",\n swapSide: \"SELL\",\n tradeMode: \"limit\",\n });\n\n /* 4.1. Build and Submit Delta Order */\n\n const { address: account } = useAccount();\n\n const { minClient } = useMinViemClient({\n chainId,\n account,\n });\n\n const createOrderMut = useCreateDeltaOrder({\n chainId,\n account,\n client: minClient,\n mutationOptions: {\n onSuccess: (order) => {\n logger.log(\"Create Limit Order success\", order);\n },\n onError: (error) => {\n logger.error(\"Create Limit Order error\", error);\n },\n },\n });\n\n const limitOrderCreateAndSubmit: UseLimitOrderFlowResult[\"limitOrderSubmission\"] =\n {\n order: createOrderMut.data,\n isCreatingOrder: createOrderMut.isPending,\n isOrderSent: createOrderMut.isSuccess,\n isPending: createOrderMut.isPending,\n isError: createOrderMut.isError,\n isSuccess: createOrderMut.isSuccess,\n error: createOrderMut.error,\n };\n\n /* 4.2.\n 1. submit Batch tx (Approve + Delta pre-sign)\n 2. await Batch tx\n 3. post Pre-signed Order\n */\n\n const {\n deltaOrderPreSign,\n canBatchTxs,\n isConnectedToSafe,\n preSignAndSubmitDeltaOrder,\n reset: resetPreSignAndSubmitDeltaOrder,\n } = usePreSignAndSubmitDeltaOrder({\n chainId,\n account,\n logger,\n viemClient: minClient,\n });\n\n /* final Delta Order submission for step 4 */\n const limitOrderSubmission: UseLimitOrderFlowResult[\"limitOrderSubmission\"] =\n {\n order: limitOrderCreateAndSubmit.order || deltaOrderPreSign.order,\n isCreatingOrder:\n limitOrderCreateAndSubmit.isPending ||\n deltaOrderPreSign.isCreatingOrder,\n isOrderSent:\n limitOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isOrderSent,\n isPending:\n limitOrderCreateAndSubmit.isPending || deltaOrderPreSign.isPending,\n isError: limitOrderCreateAndSubmit.isError || deltaOrderPreSign.isError,\n isSuccess:\n limitOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isSuccess,\n error: limitOrderCreateAndSubmit.error || deltaOrderPreSign.error,\n };\n\n const watchOrderExecution = useWatchDeltaAuction({\n orderId: limitOrderSubmission.order?.id,\n onAuctionSuccess: (order) => {\n logger.log(\"Limit Order success\", order);\n },\n onAuctionFailure: (order) => {\n logger.log(\"Limit Order failure\", order);\n },\n onUpdatedAuction: (order) => {\n logger.log(\"Limit Order updated\", order);\n },\n onTimeoutGettingOrder: (order) => {\n logger.log(\"Limit Order timeout\", order);\n },\n });\n\n const orderStatus = watchOrderExecution.data\n ? getOverallOrderStatus(watchOrderExecution.data)\n : null;\n\n // refetching stops after one minute of not finding an order (order==null)\n const neverFetchedFinishedOrder =\n watchOrderExecution.data === null && watchOrderExecution.isSuccess;\n\n const limitOrderExecution: UseLimitOrderFlowResult[\"limitOrderExecution\"] = {\n sentOrder: createOrderMut.data,\n lastOrderState: watchOrderExecution.data,\n isOrderPending: orderStatus === \"pending\",\n isOrderExecuting: orderStatus === \"executing\",\n isOrderExecuted: orderStatus === \"confirmed\",\n isPending:\n watchOrderExecution.isLoading ||\n watchOrderExecution.isRefetching ||\n orderStatus === \"pending\" ||\n orderStatus === \"executing\",\n isError:\n watchOrderExecution.isError ||\n orderStatus === \"failed\" ||\n neverFetchedFinishedOrder,\n isSuccess: orderStatus === \"confirmed\",\n error: watchOrderExecution.error,\n };\n\n const cancelOrderEvents = useCancelDeltaOrderEventCallbacks(\n createOrderMut.data\n );\n\n const orderChainId = createOrderMut.data?.chainId as\n | SupportedChainId\n | undefined;\n const { forcedChainMatchesWalletChain } = useChainMatches(orderChainId);\n const { mutateAsync: switchChain } = useSwitchChainWithGuard();\n\n const cancelOrderMut = useCancelDeltaOrders({\n chainId,\n account,\n client: minClient,\n mutationOptions: {\n onMutate: async (variables) => {\n assert(orderChainId, \"orderChainId is undefined\");\n if (!forcedChainMatchesWalletChain) {\n await switchChain({\n chainId: orderChainId,\n });\n }\n cancelOrderEvents.onMutate?.(variables);\n },\n onSuccess: (successResponse, vars) => {\n logger.log(\"Cancel Limit Order success\", successResponse);\n if (limitOrderExecution.sentOrder?.id) {\n // refetch the order to get updated status\n queryClient.invalidateQueries({\n queryKey: deltaAuctionPollingQueryKey({\n orderId: limitOrderExecution.sentOrder.id,\n }),\n });\n }\n cancelOrderEvents.onSuccess?.(successResponse, vars);\n },\n onError: (error, vars) => {\n logger.error(\"Cancel Limit Order error\", error);\n cancelOrderEvents.onError?.(error, vars);\n },\n },\n });\n\n const limitOrderCancelation: UseLimitOrderFlowResult[\"limitOrderCancelation\"] =\n {\n isCancelingOrder: cancelOrderMut.isPending,\n isOrderCanceled:\n cancelOrderMut.isSuccess && !!cancelOrderMut.data?.success,\n isPending: cancelOrderMut.isPending,\n isError: cancelOrderMut.isError,\n isSuccess: cancelOrderMut.isSuccess,\n error: cancelOrderMut.error,\n };\n\n const ensureTxReceipt = useEnsureTxReceipt();\n\n const currentAbortControllerRef = useRef<AbortController | null>(null);\n\n const cancelFlow = () => {\n currentAbortControllerRef.current?.abort(new UserCancelledError());\n currentAbortControllerRef.current = null;\n };\n\n const partner = usePartner();\n const receiverAddress = useLimitReceiverAddressValue();\n const deadline = useLimitDeadline();\n\n const { onLimitOrder } = useWidgetEvents();\n\n const submitLimitOrder = async ({\n onTxSent,\n }: RunLimitOrderOptions = {}): Promise<SubmitLimitOrderResult> => {\n // reset all mutations except the current one,\n // otherwise we'll have previous data (txs) as mutation results\n approveTxMut.reset();\n createOrderMut.reset();\n cancelOrderMut.reset();\n resetPreSignAndSubmitDeltaOrder();\n\n // no sense in starting flow without a price data,\n // Otherwise this flow will be stopped by disabling ReviewOrder button in the first place\n assert(limitPrice, \"Limit price data is not available\");\n\n const abortController = new AbortController();\n currentAbortControllerRef.current = abortController;\n\n const signal = abortController.signal;\n\n let approveTxHash: Hash | undefined;\n let approveTxReceipt: TransactionReceipt | undefined;\n\n // at this point this is the syncronously available price\n const allowanceToSet = approval.allowanceToSet;\n\n /* \n if connected to Safe, or needs to approve a token with a tx, or needs to pre-wrap ETH\n and can batch txs, then pre-sign the batch;\n that way Safe does only one action (wrapETH?+Approve+setPreSignature batch tx)\n and a wallet that would otherwise potentially wrap ETH and then Approve Token (tx, no Permit for Limit Orders)\n and then sign Order, basically has to make at least one tx, does only one action as well.\n */\n const {\n shouldDoApprovalTxOrPermit: shouldDoApprovalTx,\n shouldPreSignBatch,\n } = shouldApproveOrBatch({\n approval,\n preWrapETH,\n signPermit: {\n isPermitSupported: false,\n isPermitReadyToSign: false,\n },\n canBatchTxs,\n isConnectedToSafe,\n });\n\n try {\n if (shouldDoApprovalTx && allowanceToSet) {\n try {\n approveOrPermitEvents.onApproveTx.request({ allowanceToSet });\n\n approveTxHash = await approveTxMut.approveAsync({\n allowanceData: {\n allowanceToSet,\n },\n });\n\n approveOrPermitEvents.onApproveTx.sent({\n allowanceToSet,\n txHash: approveTxHash,\n });\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n const approveTxReceiptPromise = ensureTxReceipt({\n hash: approveTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\"onReplaced:approveTx\", approveTxHash, data);\n },\n });\n\n if (onTxSent) {\n onTxSent({\n chainId,\n action: \"approve\",\n transactionHash: approveTxHash,\n receiptPromise: approveTxReceiptPromise,\n transactionSpecificData: {\n action: \"approve\",\n approvedAmount: allowanceToSet,\n tokenAddress: approval.token as Address,\n spenderAddress: approval.spender as Address,\n },\n });\n }\n\n approveTxReceipt = await approveTxReceiptPromise;\n\n approveOrPermitEvents.onApproveTx.confirmed({\n allowanceToSet,\n txHash: approveTxHash,\n txReceipt: approveTxReceipt,\n });\n\n logger.log(\"~ approveTx ~ receipt:\", approveTxReceipt);\n // @TODO check if we need to see if receipt.status === \"reverted\" and throw,\n // or if waitForTransactionReceipt already throws on such receipts\n } catch (error) {\n approveOrPermitEvents.onApproveTx.failed({\n allowanceToSet,\n error: error as Error,\n txHash: approveTxHash, // won't necessarily be available\n });\n throw error;\n }\n }\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n assert(account, \"Account is not connected\");\n\n assert(limitPrice, \"limitPrice is not available\");\n\n onLimitOrder?.({\n event: {\n name: \"LimitOrder:request\",\n params: {\n price: limitPrice,\n },\n },\n });\n const bridgePrice = limitPrice.bridgePrice;\n const destChainId = bridgePrice?.bridge.destinationChainId;\n\n let createOrderInput: CreateDeltaOrderInput;\n if (bridgePrice) {\n // crosschain order\n createOrderInput = {\n signal,\n type: \"LIMIT\",\n orderInput: {\n owner: account,\n beneficiary: receiverAddress,\n srcToken: limitPrice.srcTokenAddress,\n destToken: limitPrice.destTokenAddress,\n srcAmount: limitPrice.srcAmount,\n destAmount: limitPrice.destAmount,\n destChainId,\n deltaPrice: {\n ...bridgePrice,\n bridge: {\n ...bridgePrice.bridge,\n protocolSelector: DEFAULT_DELTA_BRIDGE.protocolSelector,\n protocolData: DEFAULT_DELTA_BRIDGE.protocolData,\n },\n partner,\n partnerFee: 0,\n },\n partner,\n deadline,\n },\n };\n } else {\n // singlechain order\n createOrderInput = {\n signal,\n type: \"LIMIT\",\n orderInput: {\n owner: account,\n beneficiary: receiverAddress,\n srcToken: limitPrice.srcTokenAddress,\n srcAmount: limitPrice.srcAmount,\n destToken: limitPrice.destTokenAddress,\n destAmount: limitPrice.destAmount,\n destChainId,\n deltaPrice: {\n destToken: limitPrice.destTokenAddress,\n destAmount: limitPrice.destAmount,\n srcAmount: limitPrice.srcAmount,\n bridge: DEFAULT_DELTA_BRIDGE,\n partner,\n partnerFee: 0,\n },\n partner,\n deadline,\n },\n };\n }\n\n let orderFromAPI: DeltaOrderApiResponse;\n\n if (!shouldPreSignBatch) {\n // creating signing and POSTing the Order all together in one mutation\n orderFromAPI = await createOrderMut.mutateAsync(createOrderInput);\n } else {\n // prepare Order for pre-signing and POSTing:\n // 1. builds the order\n // 2. hashes the built order\n // 3. construct DeltaContract.setPreSignature(orderHash, true) tx calldata\n\n orderFromAPI = await preSignAndSubmitDeltaOrder({\n createDeltaOrderInput: createOrderInput,\n approval,\n preWrapETH,\n onTxSent,\n });\n }\n\n onLimitOrder?.({\n event: {\n name: \"LimitOrder:sent\",\n params: {\n price: limitPrice,\n order: orderFromAPI,\n },\n },\n });\n\n return {\n tradeFlowType: limitOrderFlowType,\n approve: {\n txHash: approveTxHash,\n receipt: approveTxReceipt,\n },\n limitOrder: {\n sentOrder: orderFromAPI,\n },\n limitPrice: limitPrice,\n account,\n receiverAddress,\n };\n } catch (error) {\n logger.error(\"Order submission error\", error);\n onLimitOrder?.({\n event: {\n name: \"LimitOrder:failed\",\n params: {\n price: limitPrice,\n error: error as Error,\n },\n },\n });\n throw error;\n }\n };\n\n const cancelLimitOrder = () => {\n assert(createOrderMut.data, \"No order to cancel\");\n cancelOrderMut.mutate({\n orderIds: [createOrderMut.data.id],\n });\n };\n\n const limitOrderMut = useMutation({\n mutationFn: submitLimitOrder,\n mutationKey: [LIMIT_ORDER_MUTATION_KEY],\n onSuccess: (data) => {\n logger.log(\"Order submission success\", data);\n },\n onError: (error) => {\n logger.error(\"Order submission error\", error);\n },\n onSettled: () => {\n logger.log(\"Order submission settled\");\n },\n });\n\n const runLimitOrderFlow = limitOrderMut.mutateAsync;\n\n const reset = () => {\n approveTxMut.reset();\n createOrderMut.reset();\n limitOrderMut.reset();\n cancelOrderMut.reset();\n resetPreSignAndSubmitDeltaOrder();\n };\n\n const retryFlow = (\n options?: RunLimitOrderOptions\n ): Promise<SubmitLimitOrderResult> => {\n reset();\n return runLimitOrderFlow(options);\n };\n\n /* 5. return result */\n return {\n tradeFlowType: limitOrderFlowType,\n chainId,\n runLimitOrderFlow,\n reset,\n cancelFlow,\n retryFlow,\n cancelLimitOrder,\n approval,\n limitOrderSubmission,\n limitOrderExecution,\n limitOrderCancelation,\n // deltaOrderMut includes all steps' queries and mutations and returns more precise errors (including cancellation)\n isPending: limitOrderMut.isPending,\n isSuccess: limitOrderSubmission.isSuccess, // approval is an optional step\n isError: limitOrderMut.isError,\n error: limitOrderMut.error,\n result: limitOrderMut.data,\n limitPrice,\n };\n}\n"],"names":["limitOrderFlowType","LIMIT_ORDER_MUTATION_KEY","useLimitOrderFlow","limitPrice","preWrapETH","logger","useLogger","chainId","useChainId","queryClient","useQueryClient","approval","approveTxMut","events","approveOrPermitEvents","useApproveOrPermit","srcToken","srcTokenAddress","srcAmount","spenderContractType","swapSide","tradeMode","address","account","useAccount","minClient","useMinViemClient","createOrderMut","useCreateDeltaOrder","client","mutationOptions","onSuccess","order","log","onError","error","limitOrderCreateAndSubmit","data","isCreatingOrder","isPending","isOrderSent","isSuccess","isError","deltaOrderPreSign","canBatchTxs","isConnectedToSafe","preSignAndSubmitDeltaOrder","reset","resetPreSignAndSubmitDeltaOrder","usePreSignAndSubmitDeltaOrder","viemClient","limitOrderSubmission","watchOrderExecution","useWatchDeltaAuction","orderId","id","onAuctionSuccess","onAuctionFailure","onUpdatedAuction","onTimeoutGettingOrder","orderStatus","getOverallOrderStatus","neverFetchedFinishedOrder","limitOrderExecution","sentOrder","lastOrderState","isOrderPending","isOrderExecuting","isOrderExecuted","isLoading","isRefetching","cancelOrderEvents","useCancelDeltaOrderEventCallbacks","orderChainId","forcedChainMatchesWalletChain","useChainMatches","mutateAsync","switchChain","useSwitchChainWithGuard","cancelOrderMut","useCancelDeltaOrders","onMutate","variables","assert","successResponse","vars","invalidateQueries","queryKey","deltaAuctionPollingQueryKey","limitOrderCancelation","isCancelingOrder","isOrderCanceled","success","ensureTxReceipt","useEnsureTxReceipt","currentAbortControllerRef","useRef","cancelFlow","current","abort","UserCancelledError","partner","usePartner","receiverAddress","useLimitReceiverAddressValue","deadline","useLimitDeadline","onLimitOrder","useWidgetEvents","submitLimitOrder","onTxSent","abortController","AbortController","signal","approveTxHash","approveTxReceipt","allowanceToSet","shouldDoApprovalTxOrPermit","shouldDoApprovalTx","shouldPreSignBatch","shouldApproveOrBatch","signPermit","isPermitSupported","isPermitReadyToSign","onApproveTx","request","approveAsync","allowanceData","sent","txHash","throwIfAborted","approveTxReceiptPromise","hash","onReplaced","action","transactionHash","receiptPromise","transactionSpecificData","approvedAmount","tokenAddress","token","spenderAddress","spender","confirmed","txReceipt","failed","event","name","params","price","bridgePrice","destChainId","bridge","destinationChainId","createOrderInput","type","orderInput","owner","beneficiary","destToken","destTokenAddress","destAmount","deltaPrice","protocolSelector","DEFAULT_DELTA_BRIDGE","protocolData","partnerFee","orderFromAPI","createDeltaOrderInput","tradeFlowType","approve","receipt","limitOrder","cancelLimitOrder","mutate","orderIds","limitOrderMut","useMutation","mutationFn","mutationKey","onSettled","runLimitOrderFlow","retryFlow","options","result"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useAwaitTx.d.ts","sourceRoot":"","sources":["../../../../src/hooks/txs/queries/useAwaitTx.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EAGL,KAAK,sCAAsC,EAC3C,KAAK,sCAAsC,EAC5C,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,wCAAwC,CAAC;AAGhD,MAAM,MAAM,oBAAoB,CAAC,UAAU,GAAG,sBAAsB,IAAI;IACtE,OAAO,EAAE,gBAAgB,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,sCAAsC,CAC5C,OAAO,WAAW,EAClB,gBAAgB,EAChB,UAAU,CACX,CAAC,OAAO,CAAC,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,6BAA6B,CAChE,OAAO,WAAW,EAClB,gBAAgB,CACjB,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,UAAU,GAAG,sBAAsB,IAClE,sCAAsC,CACpC,OAAO,WAAW,EAClB,gBAAgB,EAChB,UAAU,CACX,CAAC;AAEJ,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AAExD,wBAAgB,UAAU,CAAC,UAAU,GAAG,sBAAsB,EAAE,EAC9D,OAAO,EACP,aAAa,EACb,IAAI,EACJ,KAAK,GACN,EAAE,oBAAoB,CAAC,UAAU,CAAC,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAqBrE;AAED,wBAAgB,kBAAkB,IAAI,iBAAiB,CAMtD"}
1
+ {"version":3,"file":"useAwaitTx.d.ts","sourceRoot":"","sources":["../../../../src/hooks/txs/queries/useAwaitTx.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EAKL,KAAK,sCAAsC,EAC3C,KAAK,sCAAsC,EAC5C,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,wCAAwC,CAAC;AAMhD,MAAM,MAAM,oBAAoB,CAAC,UAAU,GAAG,sBAAsB,IAAI;IACtE,OAAO,EAAE,gBAAgB,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,sCAAsC,CAC5C,OAAO,WAAW,EAClB,gBAAgB,EAChB,UAAU,CACX,CAAC,OAAO,CAAC,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,6BAA6B,CAChE,OAAO,WAAW,EAClB,gBAAgB,CACjB,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,UAAU,GAAG,sBAAsB,IAClE,sCAAsC,CACpC,OAAO,WAAW,EAClB,gBAAgB,EAChB,UAAU,CACX,CAAC;AAEJ,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AAExD,wBAAgB,UAAU,CAAC,UAAU,GAAG,sBAAsB,EAAE,EAC9D,OAAO,EACP,aAAa,EACb,IAAI,EACJ,KAAK,GACN,EAAE,oBAAoB,CAAC,UAAU,CAAC,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAsDrE;AAED,wBAAgB,kBAAkB,IAAI,iBAAiB,CAMtD"}
@@ -1,13 +1,16 @@
1
1
  import { d as distExports } from '../../../_virtual/index.js';
2
2
  import { useQueryClient } from '@tanstack/react-query';
3
- import { useWaitForTransactionReceipt, useConfig } from 'wagmi';
3
+ import { useAccount, useConnectorClient, useConfig, useWaitForTransactionReceipt } from 'wagmi';
4
4
  import 'wagmi/query';
5
5
  import { useLogger } from '../../../core/logger.js';
6
6
  import { ensureTxReceiptFactory } from '../../../transactions/queries/ensureTxReceipt.js';
7
7
  import { useConnectedSafe } from '../../connectors/useIsConnectedSafe.js';
8
+ import { SAFE_CALLS_WAIT_TIMEOUT } from '../../../lib/constants/index.js';
9
+ import { useIsSafeConnector } from '../../connectors/useIsGnosisSafeConnector.js';
10
+ import { assert } from 'ts-essentials';
8
11
 
9
12
  function useAwaitTx(t0) {
10
- const $ = distExports.c(9);
13
+ const $ = distExports.c(20);
11
14
  const {
12
15
  chainId,
13
16
  confirmations,
@@ -15,36 +18,90 @@ function useAwaitTx(t0) {
15
18
  query
16
19
  } = t0;
17
20
  const logger = useLogger("AwaitTx");
21
+ const isSafe = useConnectedSafe();
22
+ const isSafeConnector = useIsSafeConnector();
23
+ const timeout = isSafe ? SAFE_CALLS_WAIT_TIMEOUT : void 0;
24
+ const {
25
+ address: account
26
+ } = useAccount();
18
27
  let t1;
19
- if ($[0] !== hash || $[1] !== logger) {
20
- t1 = (data) => {
21
- logger.log("onReplaced:tx", hash, data);
28
+ if ($[0] !== account || $[1] !== chainId) {
29
+ t1 = {
30
+ chainId,
31
+ account
22
32
  };
23
- $[0] = hash;
24
- $[1] = logger;
33
+ $[0] = account;
34
+ $[1] = chainId;
25
35
  $[2] = t1;
26
36
  } else {
27
37
  t1 = $[2];
28
38
  }
39
+ const {
40
+ data: connectorClient
41
+ } = useConnectorClient(t1);
42
+ const wagmiConfig = useConfig();
43
+ let config = wagmiConfig;
44
+ if (isSafeConnector && connectorClient) {
45
+ let t22;
46
+ if ($[3] !== chainId || $[4] !== connectorClient) {
47
+ t22 = (options) => {
48
+ assert(!options || options.chainId === chainId, "chainId mismatch");
49
+ return connectorClient;
50
+ };
51
+ $[3] = chainId;
52
+ $[4] = connectorClient;
53
+ $[5] = t22;
54
+ } else {
55
+ t22 = $[5];
56
+ }
57
+ let t32;
58
+ if ($[6] !== t22 || $[7] !== wagmiConfig) {
59
+ t32 = {
60
+ ...wagmiConfig,
61
+ getClient: t22
62
+ };
63
+ $[6] = t22;
64
+ $[7] = wagmiConfig;
65
+ $[8] = t32;
66
+ } else {
67
+ t32 = $[8];
68
+ }
69
+ config = t32;
70
+ }
29
71
  let t2;
30
- if ($[3] !== chainId || $[4] !== confirmations || $[5] !== hash || $[6] !== query || $[7] !== t1) {
31
- t2 = {
72
+ if ($[9] !== hash || $[10] !== logger) {
73
+ t2 = (data) => {
74
+ logger.log("onReplaced:tx", hash, data);
75
+ };
76
+ $[9] = hash;
77
+ $[10] = logger;
78
+ $[11] = t2;
79
+ } else {
80
+ t2 = $[11];
81
+ }
82
+ let t3;
83
+ if ($[12] !== chainId || $[13] !== config || $[14] !== confirmations || $[15] !== hash || $[16] !== query || $[17] !== t2 || $[18] !== timeout) {
84
+ t3 = {
85
+ config,
32
86
  chainId,
33
87
  confirmations,
88
+ timeout,
34
89
  hash,
35
90
  query,
36
- onReplaced: t1
91
+ onReplaced: t2
37
92
  };
38
- $[3] = chainId;
39
- $[4] = confirmations;
40
- $[5] = hash;
41
- $[6] = query;
42
- $[7] = t1;
43
- $[8] = t2;
93
+ $[12] = chainId;
94
+ $[13] = config;
95
+ $[14] = confirmations;
96
+ $[15] = hash;
97
+ $[16] = query;
98
+ $[17] = t2;
99
+ $[18] = timeout;
100
+ $[19] = t3;
44
101
  } else {
45
- t2 = $[8];
102
+ t3 = $[19];
46
103
  }
47
- const queryResult = useWaitForTransactionReceipt(t2);
104
+ const queryResult = useWaitForTransactionReceipt(t3);
48
105
  return queryResult;
49
106
  }
50
107
  function useEnsureTxReceipt() {
@@ -1 +1 @@
1
- {"version":3,"file":"useAwaitTx.js","sources":["../../../../src/hooks/txs/queries/useAwaitTx.ts"],"sourcesContent":["import type { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport {\n useConfig,\n useWaitForTransactionReceipt,\n type UseWaitForTransactionReceiptParameters,\n type UseWaitForTransactionReceiptReturnType,\n} from \"wagmi\";\nimport { type WaitForTransactionReceiptData } from \"wagmi/query\";\nimport { useLogger } from \"@/core/logger\";\nimport {\n ensureTxReceiptFactory,\n type EnsureTxReceiptFn,\n} from \"@/transactions/queries/ensureTxReceipt\";\nimport { useConnectedSafe } from \"@/hooks/connectors/useIsConnectedSafe\";\n\nexport type UseAwaitTxParameters<SelectData = DefaultTxReceiptSelect> = {\n chainId: SupportedChainId;\n confirmations?: number;\n hash?: `0x${string}`;\n query?: UseWaitForTransactionReceiptParameters<\n typeof wagmiConfig,\n SupportedChainId,\n SelectData\n >[\"query\"];\n};\n\nexport type DefaultTxReceiptSelect = WaitForTransactionReceiptData<\n typeof wagmiConfig,\n SupportedChainId\n>;\n\nexport type UseAwaitTxReturnType<SelectData = DefaultTxReceiptSelect> =\n UseWaitForTransactionReceiptReturnType<\n typeof wagmiConfig,\n SupportedChainId,\n SelectData\n >;\n\nexport type TxReceiptFromWagmi = DefaultTxReceiptSelect;\n\nexport function useAwaitTx<SelectData = DefaultTxReceiptSelect>({\n chainId,\n confirmations,\n hash,\n query,\n}: UseAwaitTxParameters<SelectData>): UseAwaitTxReturnType<SelectData> {\n const logger = useLogger(\"AwaitTx\");\n const queryResult = useWaitForTransactionReceipt<\n typeof wagmiConfig,\n SupportedChainId,\n SelectData\n >({\n chainId,\n confirmations,\n hash,\n query,\n onReplaced: (data) => {\n // @TODO connect to some atom if needed to detect cancelled/sped-up txs,\n // but sped-up txs may be detected correct internally and re-awaited with a new hash,\n // need to test\n // https://viem.sh/docs/actions/public/waitForTransactionReceipt.html#json-rpc-methods\n logger.log(\"onReplaced:tx\", hash, data);\n },\n });\n\n return queryResult;\n}\n\nexport function useEnsureTxReceipt(): EnsureTxReceiptFn {\n const queryClient = useQueryClient();\n const wagmiConfig = useConfig();\n const isSafe = useConnectedSafe();\n\n return ensureTxReceiptFactory({ queryClient, wagmiConfig, isSafe });\n}\n"],"names":["useAwaitTx","t0","$","_c","chainId","confirmations","hash","query","logger","useLogger","t1","data","log","t2","onReplaced","queryResult","useWaitForTransactionReceipt","useEnsureTxReceipt","queryClient","useQueryClient","wagmiConfig","useConfig","isSafe","useConnectedSafe","ensureTxReceiptFactory"],"mappings":";;;;;;;;AA0CO,SAAAA,WAAAC,EAAAA,EAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AAAyD,EAAA,MAAA;AAAA,IAAAC,OAAAA;AAAAA,IAAAC,aAAAA;AAAAA,IAAAC,IAAAA;AAAAA,IAAAC;AAAAA,GAAA,GAAAN,EAAAA;AAM9D,EAAA,MAAAO,MAAAA,GAAeC,UAAU,SAAS,CAAA;AAAE,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAR,EAAA,CAAA,CAAA,KAAAI,QAAAJ,CAAAA,QAAAM,MAAAA,EAAA;AAUtBE,IAAAA,EAAAA,GAAAC,CAAAA,IAAAA,KAAA;AAKVH,MAAAA,MAAAA,CAAMI,GAAAA,CAAK,eAAA,EAAiBN,IAAAA,EAAMK,IAAI,CAAA;AAAA,IAAC,CAAA;AACxCT,IAAAA,CAAAA,MAAAI,IAAAA;AAAAJ,IAAAA,CAAAA,MAAAM,MAAAA;AAAAN,IAAAA,CAAAA,MAAAQ,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAR,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,IAAAW,EAAAA;AAAA,EAAA,IAAAX,EAAA,CAAA,CAAA,KAAAE,WAAAF,CAAAA,CAAA,CAAA,MAAAG,aAAAA,IAAAH,CAAAA,CAAA,CAAA,CAAA,KAAAI,IAAAA,IAAAJ,EAAA,CAAA,CAAA,KAAAK,SAAAL,CAAAA,QAAAQ,EAAAA,EAAA;AAXDG,IAAAA,EAAAA,GAAA;AAAA,MAAAT,OAAAA;AAAAA,MAAAC,aAAAA;AAAAA,MAAAC,IAAAA;AAAAA,MAAAC,KAAAA;AAAAA,MAAAO,UAAAA,EAKYJ;AAAAA,KAOd;AAACR,IAAAA,CAAAA,MAAAE,OAAAA;AAAAF,IAAAA,CAAAA,MAAAG,aAAAA;AAAAH,IAAAA,CAAAA,MAAAI,IAAAA;AAAAJ,IAAAA,CAAAA,MAAAK,KAAAA;AAAAL,IAAAA,CAAAA,MAAAQ,EAAAA;AAAAR,IAAAA,CAAAA,MAAAW,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAX,EAAA,CAAA,CAAA;AAAA,EAAA;AAhBD,EAAA,MAAAa,WAAAA,GAAoBC,6BAIlBH,EAYD,CAAA;AAAE,EAAA,OAEIE,WAAAA;AAAW;AAGb,SAAAE,kBAAAA,GAAA;AAAA,EAAA,MAAAf,CAAAA,GAAAC,cAAA,CAAA,CAAA;AACL,EAAA,MAAAe,cAAoBC,cAAAA,EAAe;AACnC,EAAA,MAAAC,cAAoBC,SAAAA,EAAU;AAC9B,EAAA,MAAAC,SAAeC,gBAAAA,EAAiB;AAAE,EAAA,IAAAtB,EAAAA;AAAA,EAAA,IAAAC,CAAAA,CAAA,CAAA,CAAA,KAAAoB,MAAAA,IAAApB,CAAAA,QAAAgB,WAAAA,IAAAhB,CAAAA,CAAA,CAAA,CAAA,KAAAkB,WAAAA,EAAA;AAE3BnB,IAAAA,EAAAA,GAAAuB,sBAAAA,CAAuB;AAAA,MAAAN,WAAAA;AAAAA,MAAAE,WAAAA;AAAAA,MAAAE;AAAAA,KAAoC,CAAA;AAACpB,IAAAA,CAAAA,MAAAoB,MAAAA;AAAApB,IAAAA,CAAAA,MAAAgB,WAAAA;AAAAhB,IAAAA,CAAAA,MAAAkB,WAAAA;AAAAlB,IAAAA,CAAAA,MAAAD,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAC,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAA5DD,EAAAA;AAA4D;;;;"}
1
+ {"version":3,"file":"useAwaitTx.js","sources":["../../../../src/hooks/txs/queries/useAwaitTx.ts"],"sourcesContent":["import type { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport {\n useAccount,\n useConfig,\n useConnectorClient,\n useWaitForTransactionReceipt,\n type UseWaitForTransactionReceiptParameters,\n type UseWaitForTransactionReceiptReturnType,\n} from \"wagmi\";\nimport { type WaitForTransactionReceiptData } from \"wagmi/query\";\nimport { useLogger } from \"@/core/logger\";\nimport {\n ensureTxReceiptFactory,\n type EnsureTxReceiptFn,\n} from \"@/transactions/queries/ensureTxReceipt\";\nimport { useConnectedSafe } from \"@/hooks/connectors/useIsConnectedSafe\";\nimport { SAFE_CALLS_WAIT_TIMEOUT } from \"@/lib/constants\";\nimport { useIsSafeConnector } from \"@/hooks/connectors/useIsGnosisSafeConnector\";\nimport { assert } from \"ts-essentials\";\n\nexport type UseAwaitTxParameters<SelectData = DefaultTxReceiptSelect> = {\n chainId: SupportedChainId;\n confirmations?: number;\n hash?: `0x${string}`;\n query?: UseWaitForTransactionReceiptParameters<\n typeof wagmiConfig,\n SupportedChainId,\n SelectData\n >[\"query\"];\n};\n\nexport type DefaultTxReceiptSelect = WaitForTransactionReceiptData<\n typeof wagmiConfig,\n SupportedChainId\n>;\n\nexport type UseAwaitTxReturnType<SelectData = DefaultTxReceiptSelect> =\n UseWaitForTransactionReceiptReturnType<\n typeof wagmiConfig,\n SupportedChainId,\n SelectData\n >;\n\nexport type TxReceiptFromWagmi = DefaultTxReceiptSelect;\n\nexport function useAwaitTx<SelectData = DefaultTxReceiptSelect>({\n chainId,\n confirmations,\n hash,\n query,\n}: UseAwaitTxParameters<SelectData>): UseAwaitTxReturnType<SelectData> {\n const logger = useLogger(\"AwaitTx\");\n\n // connected to Safe through WalletConnect or in Safe App\n const isSafe = useConnectedSafe();\n // connected to Safe in Safe App\n const isSafeConnector = useIsSafeConnector();\n\n const timeout = isSafe ? SAFE_CALLS_WAIT_TIMEOUT : undefined;\n\n const { address: account } = useAccount();\n\n const { data: connectorClient } = useConnectorClient({\n chainId,\n account,\n });\n\n const wagmiConfig = useConfig();\n\n let config = wagmiConfig;\n if (isSafeConnector && connectorClient) {\n // always use connector client if connected through native safe connector.\n // safe provider returns a safeTxHash that is different from a real tx hash.\n // if connected to safe through WalletConnect - publicClient returns a real tx hash.\n config = {\n ...wagmiConfig,\n getClient: (options) => {\n assert(!options || options.chainId === chainId, \"chainId mismatch\");\n return connectorClient;\n },\n } as typeof wagmiConfig;\n }\n\n const queryResult = useWaitForTransactionReceipt<\n typeof wagmiConfig,\n SupportedChainId,\n SelectData\n >({\n config,\n chainId,\n confirmations,\n timeout,\n hash,\n query,\n onReplaced: (data) => {\n // @TODO connect to some atom if needed to detect cancelled/sped-up txs,\n // but sped-up txs may be detected correct internally and re-awaited with a new hash,\n // need to test\n // https://viem.sh/docs/actions/public/waitForTransactionReceipt.html#json-rpc-methods\n logger.log(\"onReplaced:tx\", hash, data);\n },\n });\n\n return queryResult;\n}\n\nexport function useEnsureTxReceipt(): EnsureTxReceiptFn {\n const queryClient = useQueryClient();\n const wagmiConfig = useConfig();\n const isSafe = useConnectedSafe();\n\n return ensureTxReceiptFactory({ queryClient, wagmiConfig, isSafe });\n}\n"],"names":["useAwaitTx","t0","$","_c","chainId","confirmations","hash","query","logger","useLogger","isSafe","useConnectedSafe","isSafeConnector","useIsSafeConnector","timeout","SAFE_CALLS_WAIT_TIMEOUT","undefined","address","account","useAccount","t1","data","connectorClient","useConnectorClient","wagmiConfig","useConfig","config","t2","options","assert","t3","getClient","log","onReplaced","queryResult","useWaitForTransactionReceipt","useEnsureTxReceipt","queryClient","useQueryClient","ensureTxReceiptFactory"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { SupportedChainId } from '../lib/web3/wagmi/types';
2
+ export declare function useChainMatches(forcedChainId?: SupportedChainId): {
3
+ isConnected: boolean;
4
+ walletChainMatchesAppChain: boolean;
5
+ forcedChainMatchesWalletChain: boolean;
6
+ };
7
+ //# sourceMappingURL=useChainMatches.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useChainMatches.d.ts","sourceRoot":"","sources":["../../src/hooks/useChainMatches.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG/D,wBAAgB,eAAe,CAAC,aAAa,CAAC,EAAE,gBAAgB;;;;EAkB/D"}