@velora-dex/widget 0.2.5-dev.13 → 0.2.5-dev.14

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 (114) hide show
  1. package/dist/components/ui/badge.d.ts +1 -1
  2. package/dist/components/ui/button.d.ts +1 -1
  3. package/dist/components/widget/DexesList/DexItem.js.map +1 -1
  4. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts.map +1 -1
  5. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js +124 -69
  6. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
  7. package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.d.ts.map +1 -1
  8. package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.js +76 -54
  9. package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.js.map +1 -1
  10. package/dist/components/widget/TradeOverview/Step/Step.d.ts.map +1 -1
  11. package/dist/components/widget/TradeOverview/Step/Step.js +122 -68
  12. package/dist/components/widget/TradeOverview/Step/Step.js.map +1 -1
  13. package/dist/components/widget/TradeOverview/Stepper.d.ts.map +1 -1
  14. package/dist/components/widget/TradeOverview/Stepper.js +46 -26
  15. package/dist/components/widget/TradeOverview/Stepper.js.map +1 -1
  16. package/dist/components/widget/TradeOverview/TradeComplete/index.d.ts.map +1 -1
  17. package/dist/components/widget/TradeOverview/TradeComplete/index.js +15 -24
  18. package/dist/components/widget/TradeOverview/TradeComplete/index.js.map +1 -1
  19. package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.d.ts.map +1 -1
  20. package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.js +56 -47
  21. package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.js.map +1 -1
  22. package/dist/components/widget/TradeOverview/TradeComplete/utils.d.ts.map +1 -1
  23. package/dist/components/widget/TradeOverview/TradeComplete/utils.js +2 -2
  24. package/dist/components/widget/TradeOverview/TradeComplete/utils.js.map +1 -1
  25. package/dist/components/widget/TradeOverview/TradeDetails.d.ts.map +1 -1
  26. package/dist/components/widget/TradeOverview/TradeDetails.js +143 -98
  27. package/dist/components/widget/TradeOverview/TradeDetails.js.map +1 -1
  28. package/dist/components/widget/TradeOverview/TradeDetailsDisplay.d.ts.map +1 -1
  29. package/dist/components/widget/TradeOverview/TradeDetailsDisplay.js +15 -11
  30. package/dist/components/widget/TradeOverview/TradeDetailsDisplay.js.map +1 -1
  31. package/dist/components/widget/TradeOverview/TradeError/index.d.ts.map +1 -1
  32. package/dist/components/widget/TradeOverview/TradeError/index.js +9 -20
  33. package/dist/components/widget/TradeOverview/TradeError/index.js.map +1 -1
  34. package/dist/components/widget/TradeOverview/TradeOverview.d.ts.map +1 -1
  35. package/dist/components/widget/TradeOverview/TradeOverview.js +112 -57
  36. package/dist/components/widget/TradeOverview/TradeOverview.js.map +1 -1
  37. package/dist/components/widget/TradeOverview/motionProps.d.ts +20 -0
  38. package/dist/components/widget/TradeOverview/motionProps.d.ts.map +1 -0
  39. package/dist/components/widget/TradeOverview/motionProps.js +121 -0
  40. package/dist/components/widget/TradeOverview/motionProps.js.map +1 -0
  41. package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.d.ts +18 -0
  42. package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.d.ts.map +1 -0
  43. package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.js +74 -0
  44. package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.js.map +1 -0
  45. package/dist/core/across/{isCrosshcainPossible.d.ts → isCrosschainPossible.d.ts} +1 -1
  46. package/dist/core/across/{isCrosshcainPossible.d.ts.map → isCrosschainPossible.d.ts.map} +1 -1
  47. package/dist/core/across/{isCrosshcainPossible.js → isCrosschainPossible.js} +1 -1
  48. package/dist/core/across/{isCrosshcainPossible.js.map → isCrosschainPossible.js.map} +1 -1
  49. package/dist/core/button/hooks/useWidgetButtonExtraProps.d.ts +1 -2
  50. package/dist/core/button/hooks/useWidgetButtonExtraProps.d.ts.map +1 -1
  51. package/dist/core/button/hooks/useWidgetButtonExtraProps.js +90 -61
  52. package/dist/core/button/hooks/useWidgetButtonExtraProps.js.map +1 -1
  53. package/dist/core/constants.d.ts +1 -0
  54. package/dist/core/constants.d.ts.map +1 -1
  55. package/dist/core/constants.js +2 -1
  56. package/dist/core/constants.js.map +1 -1
  57. package/dist/core/index.js.map +1 -1
  58. package/dist/core/inputs/state/common.d.ts.map +1 -1
  59. package/dist/core/inputs/state/common.js +4 -6
  60. package/dist/core/inputs/state/common.js.map +1 -1
  61. package/dist/core/inputs/state/selectedTokenActionsAtom.d.ts.map +1 -1
  62. package/dist/core/inputs/state/selectedTokenActionsAtom.js +18 -3
  63. package/dist/core/inputs/state/selectedTokenActionsAtom.js.map +1 -1
  64. package/dist/core/limit/state/selectedTokenActionsAtom.d.ts.map +1 -1
  65. package/dist/core/limit/state/selectedTokenActionsAtom.js +23 -6
  66. package/dist/core/limit/state/selectedTokenActionsAtom.js.map +1 -1
  67. package/dist/core/limit/state/selectedTokenAtom.js +4 -4
  68. package/dist/core/limit/state/selectedTokenAtom.js.map +1 -1
  69. package/dist/core/limit/useLimitRate.d.ts.map +1 -1
  70. package/dist/core/limit/useLimitRate.js +25 -10
  71. package/dist/core/limit/useLimitRate.js.map +1 -1
  72. package/dist/core/limit/useLimitTokenSwitcherProps.d.ts.map +1 -1
  73. package/dist/core/limit/useLimitTokenSwitcherProps.js +26 -16
  74. package/dist/core/limit/useLimitTokenSwitcherProps.js.map +1 -1
  75. package/dist/core/screen/state/screenAtom.d.ts.map +1 -1
  76. package/dist/core/screen/state/screenAtom.js +5 -0
  77. package/dist/core/screen/state/screenAtom.js.map +1 -1
  78. package/dist/hooks/otc/mutations/useFillOrder.js +2 -1
  79. package/dist/hooks/otc/mutations/useFillOrder.js.map +1 -1
  80. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom.js.map +1 -1
  81. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.d.ts +2 -2
  82. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.d.ts.map +1 -1
  83. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.js.map +1 -1
  84. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/types.d.ts +3 -3
  85. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/types.d.ts.map +1 -1
  86. package/dist/hooks/swap/prices/delta/queries/utils.d.ts +2 -1
  87. package/dist/hooks/swap/prices/delta/queries/utils.d.ts.map +1 -1
  88. package/dist/hooks/swap/prices/delta/queries/utils.js +8 -1
  89. package/dist/hooks/swap/prices/delta/queries/utils.js.map +1 -1
  90. package/dist/hooks/swap/prices/market/mutations/useBuildTx.d.ts +3 -3
  91. package/dist/hooks/swap/prices/market/mutations/useBuildTx.d.ts.map +1 -1
  92. package/dist/hooks/swap/prices/market/mutations/useBuildTx.js.map +1 -1
  93. package/dist/hooks/swap/tradeFlow/common/utils.js +4 -1
  94. package/dist/hooks/swap/tradeFlow/common/utils.js.map +1 -1
  95. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +2 -1
  96. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
  97. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +8 -3
  98. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
  99. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.d.ts +1 -0
  100. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.d.ts.map +1 -1
  101. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js +16 -14
  102. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js.map +1 -1
  103. package/dist/hooks/swap/tradeFlow/useMarketFlow.d.ts +11 -1
  104. package/dist/hooks/swap/tradeFlow/useMarketFlow.d.ts.map +1 -1
  105. package/dist/hooks/swap/tradeFlow/useMarketFlow.js +10 -5
  106. package/dist/hooks/swap/tradeFlow/useMarketFlow.js.map +1 -1
  107. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.d.ts +1 -0
  108. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.d.ts.map +1 -1
  109. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js +12 -10
  110. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js.map +1 -1
  111. package/dist/lib/web3/privy/config.js +1 -1
  112. package/dist/lib/web3/wagmi/config.js +1 -1
  113. package/dist/styles.css +29 -4
  114. package/package.json +3 -2
@@ -1 +1 @@
1
- {"version":3,"file":"useMarketFlow.d.ts","sourceRoot":"","sources":["../../../../src/hooks/swap/tradeFlow/useMarketFlow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAMnD,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAO,kBAAkB,EAAE,MAAM,MAAM,CAAC;AACnE,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACf,MAAM,gBAAgB,CAAC;AAKxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG/D,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACb,MAAM,iCAAiC,CAAC;AAezC,QAAA,MAAM,kBAAkB,eAAe,CAAC;AAUxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,aAAa,EAAE,OAAO,kBAAkB,CAAC;IACzC,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,eAAe,KAAK,IAAI,CAAC;AAKjE,KAAK,gBAAgB,GAAG;IACtB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,aAAa,EAAE,OAAO,kBAAkB,CAAC;IACzC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,iBAAiB,EAAE,CAAC,OAAO,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7E,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACrE,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,UAAU,EAAE,oBAAoB,CAAC;IACjC,aAAa,EAAE;QACb,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC;QACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;KACrB,CAAC;IACF,IAAI,EAAE;QACJ,MAAM,CAAC,EAAE,IAAI,CAAC;QACd,OAAO,CAAC,EAAE,kBAAkB,CAAC;QAC7B,cAAc,EAAE,OAAO,CAAC;QACxB,mBAAmB,EAAE,OAAO,CAAC;QAC7B,QAAQ,EAAE,OAAO,CAAC;QAClB,WAAW,EAAE,OAAO,CAAC;QACrB,SAAS,EAAE,OAAO,CAAC;QACnB,iBAAiB,EAAE,OAAO,CAAC;QAC3B,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC;QACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;KACrB,CAAC;IACF,SAAS,EAAE,iBAAiB,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,WAAW,CAAC;CACzB,CAAC;AAIF,wBAAgB,aAAa,CAAC,EAC5B,WAAW,GACZ,EAAE,kBAAkB,GAAG,mBAAmB,CAmpB1C"}
1
+ {"version":3,"file":"useMarketFlow.d.ts","sourceRoot":"","sources":["../../../../src/hooks/swap/tradeFlow/useMarketFlow.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,7 @@ function useMarketFlow({
32
32
  const {
33
33
  resolvedSlippage
34
34
  } = useSlippage("swap");
35
- const swapSide = useSwapSide();
35
+ const swapSideFromInput = useSwapSide();
36
36
  const {
37
37
  approval,
38
38
  signPermit,
@@ -45,7 +45,7 @@ function useMarketFlow({
45
45
  srcAmount: marketPrice?.srcAmount,
46
46
  spenderContractType: "AugustusSwapper",
47
47
  // marketPrice is the preferred source of truth
48
- swapSide: marketPrice?.side ?? swapSide,
48
+ swapSide: marketPrice?.side ?? swapSideFromInput,
49
49
  tradeMode: "swap"
50
50
  });
51
51
  const buildTxMut = useBuildTx({
@@ -293,7 +293,7 @@ function useMarketFlow({
293
293
  destAmount: marketPriceToUse.destAmount
294
294
  }, resolvedSlippage, marketPriceToUse.side);
295
295
  const gasParams = constructGasParams();
296
- const txParams = await buildTxMut.mutateAsync({
296
+ const swapRequest = {
297
297
  swapTxInput: {
298
298
  userAddress: account,
299
299
  receiver: receiverAddress,
@@ -321,7 +321,8 @@ function useMarketFlow({
321
321
  // onlyParams: true,
322
322
  ...gasParams
323
323
  }
324
- });
324
+ };
325
+ const txParams = await buildTxMut.mutateAsync(swapRequest);
325
326
  signal.throwIfAborted();
326
327
  let swapTxHash;
327
328
  let swapCallsId;
@@ -474,6 +475,7 @@ function useMarketFlow({
474
475
  receipt: approveTxReceipt
475
476
  },
476
477
  swap: {
478
+ swapRequest,
477
479
  callsId: swapCallsId,
478
480
  txHash: swapTxHash,
479
481
  receipt: swapTxReceipt,
@@ -530,6 +532,8 @@ function useMarketFlow({
530
532
  return runMarketSwapFlow(options);
531
533
  };
532
534
  const usedPrice = usingPriceRef.current || marketPrice;
535
+ const result = marketSwapMut.data;
536
+ const submittedSwapRequest = result?.swap.swapRequest;
533
537
  return {
534
538
  tradeFlowType: marketSwapFlowType,
535
539
  chainId,
@@ -548,7 +552,8 @@ function useMarketFlow({
548
552
  isError: marketSwapMut.isError,
549
553
  error: marketSwapMut.error,
550
554
  result: marketSwapMut.data,
551
- usedPrice
555
+ usedPrice,
556
+ submittedSwapRequest
552
557
  };
553
558
  }
554
559
 
@@ -1 +1 @@
1
- {"version":3,"file":"useMarketFlow.js","sources":["../../../../src/hooks/swap/tradeFlow/useMarketFlow.ts"],"sourcesContent":["import { useAwaitTx } from \"@/hooks/txs\";\nimport type { OptimalRate } from \"@velora-dex/sdk\";\nimport { useAccount, useChainId } from \"wagmi\";\nimport { useSendMarketSwapTx } from \"../prices/market/mutations/useSendMarketSwapTx\";\nimport { useBuildTx } from \"../prices/market/mutations/useBuildTx\";\nimport { assert } from \"ts-essentials\";\nimport { useEnsureTxReceipt } from \"@/hooks/txs/queries/useAwaitTx\";\nimport type { Address, Hash, Hex, TransactionReceipt } from \"viem\";\nimport type {\n ApprovalFlowResult,\n SignPermitFlowResult,\n SubmitTxResult,\n} from \"./common/types\";\nimport { applySlippage } from \"@/lib/utils/price\";\nimport { useSlippage } from \"@/hooks/useSlippage\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { useRef } from \"react\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { UserCancelledError } from \"./common/errors\";\nimport { useSwapReceiverAddressValue } from \"@/components/widget/ReceiverAddress/state/receiverAddressAtom\";\nimport type {\n CallsSentObject,\n TxSentObject,\n} from \"@/lib/utils/transactionHandlers\";\nimport { useSwapSide } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\nimport { useApproveOrPermit } from \"./common/useApproveOrPermit\";\nimport {\n useMarkPermit1Or2NonceAsUsed,\n type SignedPermitResult,\n} from \"./common/useSignPermit1Or2\";\nimport { useLogger } from \"@/core/logger\";\nimport { useConstructGasParams } from \"./common/useConstructGasParams\";\nimport {\n useMarketPriceQueryForPrice,\n useSubscribeToMarketPrice,\n} from \"../prices/market/queries/useMarketPriceQuery\";\nimport { usePartner } from \"@/hooks/usePartner\";\n\nconst marketSwapFlowType = \"marketSwap\";\nimport { useSendBatchTx } from \"@/hooks/batch/useSendBatchTx\";\nimport { useCanBatchTxs } from \"@/hooks/batch/useCanBatchTxs\";\nimport {\n useAwaitCalls,\n useEnsureCallsStatus,\n} from \"@/hooks/batch/useAwaitCalls\";\nimport { type CallsReceipt } from \"@/hooks/batch/useAwaitCalls\";\nimport { useBatchWithApproveTxs } from \"@/hooks/batch/useBatchWithApproveTxs\";\nimport { useWidgetEvents } from \"@/core/state/widgetEventsAtom\";\nimport type { BatchTxStepResult } from \"./common/types\";\n\nexport type UseMarketFlowInput = {\n marketPrice?: OptimalRate;\n};\n\nexport type SubmitSwapResult = {\n tradeFlowType: typeof marketSwapFlowType;\n approve: SubmitTxResult;\n swap: SubmitTxResult;\n marketPrice: OptimalRate;\n account: Address;\n receiverAddress?: Address;\n};\n\ntype OnTxSent = (txSent: TxSentObject | CallsSentObject) => void;\n// @TODO instead add global onTxSent subscription to\n// MutationCache({onSuccess: txHash}) when sent\n// and QueryCache({onSuccess: txReceipt}) when mined,\n// maybe??\ntype RunMarketOptions = {\n onTxSent?: OnTxSent;\n};\n\nexport type UseMarketFlowResult = {\n tradeFlowType: typeof marketSwapFlowType;\n chainId: SupportedChainId;\n runMarketSwapFlow: (options?: RunMarketOptions) => Promise<SubmitSwapResult>;\n reset: () => void; // reset on Error to retry\n cancelFlow: () => void; // cancel flow\n retryFlow: (options?: RunMarketOptions) => Promise<SubmitSwapResult>; // reset and retry flow\n approval: ApprovalFlowResult;\n signPermit: SignPermitFlowResult;\n buildTxParams: {\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n swap: {\n txHash?: Hash;\n receipt?: TransactionReceipt;\n isConfirmingTX: boolean;\n isConfirmingTxError: boolean;\n isTxSent: boolean;\n isTxPending: boolean;\n isTxMined: boolean;\n isTxAwaitingError: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n swapBatch: BatchTxStepResult;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n result?: SubmitSwapResult;\n usedPrice?: OptimalRate;\n};\n\nconst MARKET_SWAP_MUTATION_KEY = \"runMarketSwapFlow\";\n\nexport function useMarketFlow({\n marketPrice,\n}: UseMarketFlowInput): UseMarketFlowResult {\n const logger = useLogger(\"MarketFlow\");\n const chainId = useChainId();\n const { resolvedSlippage } = useSlippage(\"swap\");\n const swapSide = useSwapSide();\n\n /* Inside useApproveOrPermit:\n 1. Get allowance for tokenFrom \n 2.1. submit Approve tx if necessary \n\n 2.2. sign Permit1 \n\n 3. await Approve tx (if not using Permit) \n */\n const {\n approval,\n signPermit,\n approveTxMut,\n signPermitMut,\n events: approveOrPermitEvents,\n } = useApproveOrPermit({\n srcToken: marketPrice?.srcToken,\n // if we already approved some amount, save it in approval and signPermit objects\n srcAmount: marketPrice?.srcAmount,\n spenderContractType: \"AugustusSwapper\",\n // marketPrice is the preferred source of truth\n swapSide: marketPrice?.side ?? swapSide,\n tradeMode: \"swap\",\n });\n\n /* 4. Build Swap tx */\n const buildTxMut = useBuildTx({\n chainId,\n mutationOptions: {\n onSuccess: () => {\n logger.log(\"Build tx success\");\n },\n onError: (error) => {\n logger.error(\"Build tx error\", error);\n },\n },\n });\n\n const buildTxParams: UseMarketFlowResult[\"buildTxParams\"] = {\n isPending: buildTxMut.isPending,\n isError: buildTxMut.isError,\n isSuccess: buildTxMut.isSuccess,\n error: buildTxMut.error,\n };\n\n /* 5. submit Swap tx */\n\n /* 5.1. submit standalone Swap tx */\n\n const sendSwapTxMut = useSendMarketSwapTx({\n onSuccess: () => {\n logger.log(\"Swap tx success\");\n },\n onError: (error) => {\n logger.error(\"Swap tx error\", error);\n },\n });\n\n /* 5.2. submit Batch tx */\n const { forCurrentChain: canBatchTxs } = useCanBatchTxs();\n const { addTxWithApprovals } = useBatchWithApproveTxs();\n\n const batchTxMut = useSendBatchTx({\n onSuccess: () => {\n logger.log(\"Batch tx success\");\n },\n onError: (error) => {\n logger.error(\"Batch tx error\", error);\n },\n });\n\n /* 6. await Swap tx */\n\n /* 6.1. await standalone Swap tx */\n const swapTxMined = useAwaitTx({\n hash: sendSwapTxMut.txHash,\n chainId,\n });\n\n /* 6.2. await Batch tx */\n const batchTxMined = useAwaitCalls({\n id: batchTxMut.data?.id,\n });\n\n const swap: UseMarketFlowResult[\"swap\"] = {\n txHash: sendSwapTxMut.txHash,\n receipt: swapTxMined.data,\n /* tx sending */\n isConfirmingTX: sendSwapTxMut.isPending,\n isConfirmingTxError: sendSwapTxMut.isError,\n isTxSent: sendSwapTxMut.isSuccess,\n /* tx awaiting */\n isTxPending: swapTxMined.isLoading,\n isTxMined: swapTxMined.isSuccess,\n isTxAwaitingError: swapTxMined.isError,\n /* combined */\n isPending: sendSwapTxMut.isPending || swapTxMined.isLoading,\n isSuccess: swapTxMined.isSuccess, // final success\n isError: sendSwapTxMut.isError || swapTxMined.isError,\n error: sendSwapTxMut.error || swapTxMined.error,\n };\n\n // for a successful SendCalls execution there will either be one receipt only,\n // or several receipts with the last one for the last tx from the batch\n const lastCallsReceipt =\n batchTxMined.data?.receipts?.[batchTxMined.data.receipts.length - 1];\n\n const swapBatch: UseMarketFlowResult[\"swapBatch\"] = {\n canBatchTxs,\n callsId: batchTxMut.data?.id,\n txHash: lastCallsReceipt?.transactionHash,\n receipt: lastCallsReceipt,\n /* calls sending */\n isConfirmingCalls: batchTxMut.isPending,\n isConfirmingCallsError: batchTxMut.isError,\n isCallsSent: batchTxMut.isSuccess,\n /* calls awaiting */\n isCallsPending: batchTxMined.isLoading,\n isCallsMined: batchTxMined.isSuccess,\n isCallsAwaitingError: batchTxMined.isError,\n /* combined */\n isPending: batchTxMut.isPending || batchTxMined.isLoading,\n isSuccess: batchTxMined.isSuccess,\n isError: batchTxMut.isError || batchTxMined.isError,\n error: batchTxMut.error || batchTxMined.error,\n };\n\n const { address: account } = useAccount();\n\n const ensureTxReceipt = useEnsureTxReceipt();\n const ensureCallsStatus = useEnsureCallsStatus();\n\n // allows to abort (cancel) currently running flow,\n const currentAbortControllerRef = useRef<AbortController | null>(null);\n const usingPriceRef = useRef<OptimalRate | null>(null);\n\n const cancelFlow = () => {\n currentAbortControllerRef.current?.abort(new UserCancelledError());\n currentAbortControllerRef.current = null;\n\n usingPriceRef.current = null;\n };\n\n const receiverAddress = useSwapReceiverAddressValue();\n\n const { markNonceAsUsed, clearNonce } = useMarkPermit1Or2NonceAsUsed({\n chainId,\n });\n\n const { constructGasParams } = useConstructGasParams();\n\n const partner = usePartner();\n\n const getQueryForPrice = useMarketPriceQueryForPrice();\n const subscribeToPrice = useSubscribeToMarketPrice();\n\n const { onSwap } = useWidgetEvents();\n\n const submitSwapTx: UseMarketFlowResult[\"runMarketSwapFlow\"] = async ({\n onTxSent,\n } = {}) => {\n // reset all mutations except the current one,\n // otherwise we'll have previous data (txs) as mutation results\n approveTxMut.reset();\n signPermitMut.reset();\n buildTxMut.reset();\n sendSwapTxMut.reset();\n batchTxMut.reset();\n\n // no sense in starting flow without a price,\n // which may be unavailable only if we are retrying and deltaPrice response now returns an error.\n // Otherwise this flow will be stopped by disabling Swap button in the first place\n assert(marketPrice, \"Market price is not available\");\n\n const abortController = new AbortController();\n currentAbortControllerRef.current = abortController;\n\n const signal = abortController.signal;\n\n let signedPermitResult: SignedPermitResult | undefined;\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 // we use this allowance as a max allowance we will accept new prices for\n\n // marketPrice here is the starting price, available before async code and waiting\n let freshPrice = marketPrice;\n let unsubscribeFromPrice: (() => void) | undefined;\n // this also resets previous usingPriceRef\n usingPriceRef.current = freshPrice;\n\n const shouldBatchTxs =\n canBatchTxs && approval.needsApproval && !!allowanceToSet;\n\n try {\n // need allowance\n if (!shouldBatchTxs && approval.needsApproval && allowanceToSet) {\n // queryKey used to fetch the current price,\n // it will be used for the subsequent price refetches as long as price params not changed\n const queryKey = getQueryForPrice({\n chainId,\n price: freshPrice,\n })?.queryKey;\n\n // should always be available\n if (queryKey) {\n // freeze allowanceToSet\n const approvedAmount = allowanceToSet;\n\n // subscribe to price updates to keep track of new prices for the same price params,\n // independently of the hook itself\n unsubscribeFromPrice = subscribeToPrice({\n queryKey,\n onData: (newPrice) => {\n if (signal.aborted) {\n // just in case unsubscribe in finally is not yet called\n // for the queued update with the price from an already cancelled flow\n unsubscribeFromPrice?.();\n unsubscribeFromPrice = undefined;\n return;\n }\n\n // slightly higher amount if BUY with slippage\n const amountsAfterSlippage = applySlippage(\n {\n srcAmount: newPrice.srcAmount,\n destAmount: newPrice.destAmount,\n },\n resolvedSlippage,\n newPrice.side\n );\n\n // if new price fits into allowance, update it\n if (approvedAmount >= BigInt(amountsAfterSlippage.srcAmount)) {\n logger.log(\"~ fresh price ~\", newPrice);\n freshPrice = newPrice;\n usingPriceRef.current = freshPrice;\n }\n },\n });\n }\n\n const tryPermit =\n signPermit.isPermitSupported && signPermit.isPermitReadyToSign;\n try {\n if (!tryPermit) {\n approveOrPermitEvents.onApproveTx.request({ allowanceToSet });\n\n // Token doesn't support Permit\n // make an Approval tx\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 } else {\n approveOrPermitEvents.onSignPermit.request({ allowanceToSet });\n\n // sign Permit\n signedPermitResult = await signPermitMut.signPermitAsync({\n value: allowanceToSet,\n });\n\n approveOrPermitEvents.onSignPermit.confirmed({\n allowanceToSet,\n permit: signedPermitResult?.permitEncodedArgs,\n });\n }\n } catch (error) {\n if (!tryPermit) {\n approveOrPermitEvents.onApproveTx.failed({\n allowanceToSet,\n error: error as Error,\n txHash: approveTxHash, // won't necessarily be available\n });\n } else {\n approveOrPermitEvents.onSignPermit.failed({\n allowanceToSet,\n error: error as Error,\n });\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 // as long as we had set approvedAmount, we will only get new prices that satisfy the allowance\n const marketPriceToUse = freshPrice;\n usingPriceRef.current = marketPriceToUse;\n // no longer need updates, unsubscribe\n unsubscribeFromPrice?.();\n unsubscribeFromPrice = undefined;\n\n assert(marketPriceToUse, \"Market price is not available\");\n\n const amountsAfterSlippage = applySlippage(\n {\n srcAmount: marketPriceToUse.srcAmount,\n destAmount: marketPriceToUse.destAmount,\n },\n resolvedSlippage,\n marketPriceToUse.side\n );\n\n // fresh gas params\n const gasParams = constructGasParams();\n\n const txParams = await buildTxMut.mutateAsync({\n swapTxInput: {\n userAddress: account,\n receiver: receiverAddress,\n srcToken: marketPriceToUse.srcToken,\n destToken: marketPriceToUse.destToken,\n srcDecimals: marketPriceToUse.srcDecimals,\n destDecimals: marketPriceToUse.destDecimals,\n\n partner,\n /* @TODO fill in when and if available\n referrer: \"\",\n partnerAddress: \"\",\n partnerFeeBps: 0, \n takeSurplus: false,*/\n permit: signedPermitResult?.permitEncodedArgs, // just signed Permit signature\n\n priceRoute: marketPriceToUse,\n ...amountsAfterSlippage,\n },\n\n swapTxOptions: {\n // ignoreChecks: true,\n // gas estimate will break if only swap tx is estimated, but approve tx is not considered in a batch\n ignoreGasEstimate: shouldBatchTxs,\n // for Batch-capable wallets batch Approve+Swap tx have to ignore all checks\n ignoreAllowance: shouldBatchTxs,\n // onlyParams: true,\n ...gasParams,\n },\n });\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n let swapTxHash: Hash | undefined;\n let swapCallsId: string | undefined;\n\n onSwap?.({\n event: {\n name: \"Swap:request\",\n params: {\n swapMode: \"market\",\n price: marketPriceToUse,\n },\n },\n });\n\n if (shouldBatchTxs) {\n const { calls } = await addTxWithApprovals({\n txsParams: [\n {\n to: txParams.to as Address,\n account: txParams.from as Address,\n data: txParams.data as Hex,\n value: BigInt(txParams.value),\n chainId: txParams.chainId,\n },\n ],\n approveProps: [\n {\n spender: approval.spender,\n allowanceToSet: approval.allowanceToSet,\n token: approval.token,\n chainId: approval.chainId,\n },\n ],\n });\n\n const sendCallsResult = await batchTxMut.sendCalls({\n txsParams: calls,\n });\n swapCallsId = sendCallsResult.id;\n onSwap?.({\n event: {\n name: \"Swap:sent\",\n params: {\n swapMode: \"market\",\n price: marketPriceToUse,\n callsId: swapCallsId,\n },\n },\n });\n } else {\n swapTxHash = await sendSwapTxMut.sendTransactionAsync(txParams);\n onSwap?.({\n event: {\n name: \"Swap:sent\",\n params: {\n swapMode: \"market\",\n price: marketPriceToUse,\n txHash: swapTxHash,\n },\n },\n });\n }\n\n // no use aborting past this point, tx is already sent,\n // but we may want to connect this late abortion to tx cancellation, in the future\n\n // tx is sent, consider Token nonce as used\n if (signedPermitResult) {\n markNonceAsUsed(signedPermitResult.signedPermitData);\n }\n\n let swapCallsReceipt: CallsReceipt | undefined;\n let swapTxReceipt: TransactionReceipt | undefined;\n\n if (swapCallsId) {\n const sendCallsReceiptPromise = ensureCallsStatus({\n id: swapCallsId,\n }).then((status) => status.receipts?.[status.receipts.length - 1]);\n\n logger.log(\"~ swapTx ~ awaiting calls id :\", swapCallsId);\n\n if (onTxSent) {\n onTxSent({\n chainId,\n action: \"swap\",\n callsId: swapCallsId,\n receiptPromise: sendCallsReceiptPromise,\n transactionSpecificData: {\n action: \"swap\",\n source: \"local\",\n srcTokenAddress: marketPriceToUse.srcToken as Address,\n destTokenAddress: marketPriceToUse.destToken as Address,\n srcAmount: amountsAfterSlippage.srcAmount,\n destAmount: amountsAfterSlippage.destAmount,\n srcAmountUSD: marketPriceToUse.srcUSD,\n destAmountUSD: marketPriceToUse.destUSD,\n gasCost: marketPriceToUse.gasCost,\n },\n });\n }\n\n swapCallsReceipt = await sendCallsReceiptPromise;\n\n if (swapCallsReceipt) {\n onSwap?.({\n event: {\n name: \"Swap:confirmed\",\n params: {\n swapMode: \"market\",\n price: marketPriceToUse,\n callsReceipt: swapCallsReceipt,\n callsId: swapCallsId,\n },\n },\n });\n }\n } else if (swapTxHash) {\n const swapTxReceiptPromise = ensureTxReceipt({\n hash: swapTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\"onReplaced:swapTx\", swapTxHash, data);\n },\n });\n\n logger.log(\"~ swapTx ~ awaiting tx hash :\", swapTxHash);\n\n if (onTxSent) {\n onTxSent({\n chainId,\n action: \"swap\",\n transactionHash: swapTxHash,\n receiptPromise: swapTxReceiptPromise,\n transactionSpecificData: {\n action: \"swap\",\n source: \"local\",\n srcTokenAddress: marketPriceToUse.srcToken as Address,\n destTokenAddress: marketPriceToUse.destToken as Address,\n srcAmount: amountsAfterSlippage.srcAmount,\n destAmount: amountsAfterSlippage.destAmount,\n srcAmountUSD: marketPriceToUse.srcUSD,\n destAmountUSD: marketPriceToUse.destUSD,\n gasCost: marketPriceToUse.gasCost,\n gasCostUSD: marketPriceToUse.gasCostUSD,\n },\n });\n }\n\n swapTxReceipt = await swapTxReceiptPromise;\n\n if (swapTxReceipt) {\n onSwap?.({\n event: {\n name: \"Swap:confirmed\",\n params: {\n swapMode: \"market\",\n price: marketPriceToUse,\n txReceipt: swapTxReceipt,\n txHash: swapTxHash,\n },\n },\n });\n }\n }\n\n logger.log(\"~ swapTx ~ receipt:\", swapCallsReceipt || swapTxReceipt);\n // @TODO check if we need to see if receipt.status === \"reverted\" and trhow,\n // or if waitForTransactionReceipt already throws on such receipts\n\n return {\n tradeFlowType: marketSwapFlowType,\n approve: {\n txHash: approveTxHash,\n receipt: approveTxReceipt,\n },\n swap: {\n callsId: swapCallsId,\n txHash: swapTxHash,\n receipt: swapTxReceipt,\n callsReceipt: swapCallsReceipt,\n },\n marketPrice: marketPriceToUse,\n // @TODO add whatever else may be relevant\n account,\n receiverAddress,\n };\n } catch (error) {\n // Market swap failed, we can't be sure if nonce can be reused or it was incremented in a different tx\n // or even Order in the meantime\n if (signedPermitResult) {\n clearNonce(signedPermitResult.signedPermitData);\n }\n onSwap?.({\n event: {\n name: \"Swap:failed\",\n params: {\n swapMode: \"market\",\n error: error as Error,\n },\n },\n });\n throw error;\n } finally {\n // always unsubscribe if subscribed previously\n unsubscribeFromPrice?.();\n }\n };\n\n const marketSwapMut = useMutation({\n mutationFn: submitSwapTx,\n mutationKey: [MARKET_SWAP_MUTATION_KEY],\n onSuccess: (data) => {\n logger.log(\"Swap tx success\", data);\n },\n onError: (error) => {\n logger.error(\"Swap tx error\", error);\n },\n onSettled: () => {\n logger.log(\"Swap tx settled\");\n },\n });\n\n const runMarketSwapFlow = marketSwapMut.mutateAsync;\n\n const reset = () => {\n usingPriceRef.current = null;\n\n approveTxMut.reset();\n signPermitMut.reset();\n buildTxMut.reset();\n sendSwapTxMut.reset();\n batchTxMut.reset();\n marketSwapMut.reset();\n };\n\n const retryFlow = (options?: RunMarketOptions): Promise<SubmitSwapResult> => {\n reset();\n return runMarketSwapFlow(options);\n };\n\n // finalPrice if we reached that point, or usable price (based on allowance given)\n const usedPrice = usingPriceRef.current || marketPrice;\n\n /* 7. return result */\n return {\n tradeFlowType: marketSwapFlowType,\n chainId,\n runMarketSwapFlow,\n reset,\n cancelFlow,\n retryFlow,\n approval,\n signPermit,\n buildTxParams,\n swap,\n swapBatch,\n // marketSwapMut includes all steps' queries and mutations and returns more precise errors (including cancellation)\n isPending: marketSwapMut.isPending,\n isSuccess: marketSwapMut.isSuccess,\n isError: marketSwapMut.isError,\n error: marketSwapMut.error,\n result: marketSwapMut.data,\n usedPrice,\n };\n}\n"],"names":["marketSwapFlowType","MARKET_SWAP_MUTATION_KEY","useMarketFlow","marketPrice","logger","useLogger","chainId","useChainId","resolvedSlippage","useSlippage","swapSide","useSwapSide","approval","signPermit","approveTxMut","signPermitMut","events","approveOrPermitEvents","useApproveOrPermit","srcToken","srcAmount","spenderContractType","side","tradeMode","buildTxMut","useBuildTx","mutationOptions","onSuccess","log","onError","error","buildTxParams","isPending","isError","isSuccess","sendSwapTxMut","useSendMarketSwapTx","forCurrentChain","canBatchTxs","useCanBatchTxs","addTxWithApprovals","useBatchWithApproveTxs","batchTxMut","useSendBatchTx","swapTxMined","useAwaitTx","hash","txHash","batchTxMined","useAwaitCalls","id","data","swap","receipt","isConfirmingTX","isConfirmingTxError","isTxSent","isTxPending","isLoading","isTxMined","isTxAwaitingError","lastCallsReceipt","receipts","length","swapBatch","callsId","transactionHash","isConfirmingCalls","isConfirmingCallsError","isCallsSent","isCallsPending","isCallsMined","isCallsAwaitingError","address","account","useAccount","ensureTxReceipt","useEnsureTxReceipt","ensureCallsStatus","useEnsureCallsStatus","currentAbortControllerRef","useRef","usingPriceRef","cancelFlow","current","abort","UserCancelledError","receiverAddress","useSwapReceiverAddressValue","markNonceAsUsed","clearNonce","useMarkPermit1Or2NonceAsUsed","constructGasParams","useConstructGasParams","partner","usePartner","getQueryForPrice","useMarketPriceQueryForPrice","subscribeToPrice","useSubscribeToMarketPrice","onSwap","useWidgetEvents","submitSwapTx","onTxSent","reset","assert","abortController","AbortController","signal","signedPermitResult","approveTxHash","approveTxReceipt","allowanceToSet","freshPrice","unsubscribeFromPrice","shouldBatchTxs","needsApproval","queryKey","price","approvedAmount","onData","newPrice","aborted","undefined","amountsAfterSlippage","applySlippage","destAmount","BigInt","tryPermit","isPermitSupported","isPermitReadyToSign","onApproveTx","request","approveAsync","allowanceData","sent","throwIfAborted","approveTxReceiptPromise","onReplaced","action","receiptPromise","transactionSpecificData","tokenAddress","token","spenderAddress","spender","confirmed","txReceipt","onSignPermit","signPermitAsync","value","permit","permitEncodedArgs","failed","marketPriceToUse","gasParams","txParams","mutateAsync","swapTxInput","userAddress","receiver","destToken","srcDecimals","destDecimals","priceRoute","swapTxOptions","ignoreGasEstimate","ignoreAllowance","swapTxHash","swapCallsId","event","name","params","swapMode","calls","txsParams","to","from","approveProps","sendCallsResult","sendCalls","sendTransactionAsync","signedPermitData","swapCallsReceipt","swapTxReceipt","sendCallsReceiptPromise","then","status","source","srcTokenAddress","destTokenAddress","srcAmountUSD","srcUSD","destAmountUSD","destUSD","gasCost","callsReceipt","swapTxReceiptPromise","gasCostUSD","tradeFlowType","approve","marketSwapMut","useMutation","mutationFn","mutationKey","onSettled","runMarketSwapFlow","retryFlow","options","usedPrice","result"],"mappings":"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"}
1
+ {"version":3,"file":"useMarketFlow.js","sources":["../../../../src/hooks/swap/tradeFlow/useMarketFlow.ts"],"sourcesContent":["import { useAwaitTx } from \"@/hooks/txs\";\nimport type { OptimalRate } from \"@velora-dex/sdk\";\nimport { useAccount, useChainId } from \"wagmi\";\nimport { useSendMarketSwapTx } from \"../prices/market/mutations/useSendMarketSwapTx\";\nimport {\n useBuildTx,\n type BuildMarketSwapTxInput,\n} from \"../prices/market/mutations/useBuildTx\";\nimport { assert } from \"ts-essentials\";\nimport { useEnsureTxReceipt } from \"@/hooks/txs/queries/useAwaitTx\";\nimport type { Address, Hash, Hex, TransactionReceipt } from \"viem\";\nimport type {\n ApprovalFlowResult,\n SignPermitFlowResult,\n SubmitTxResult,\n} from \"./common/types\";\nimport { applySlippage } from \"@/lib/utils/price\";\nimport { useSlippage } from \"@/hooks/useSlippage\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { useRef } from \"react\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { UserCancelledError } from \"./common/errors\";\nimport { useSwapReceiverAddressValue } from \"@/components/widget/ReceiverAddress/state/receiverAddressAtom\";\nimport type {\n CallsSentObject,\n TxSentObject,\n} from \"@/lib/utils/transactionHandlers\";\nimport { useSwapSide } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\nimport { useApproveOrPermit } from \"./common/useApproveOrPermit\";\nimport {\n useMarkPermit1Or2NonceAsUsed,\n type SignedPermitResult,\n} from \"./common/useSignPermit1Or2\";\nimport { useLogger } from \"@/core/logger\";\nimport { useConstructGasParams } from \"./common/useConstructGasParams\";\nimport {\n useMarketPriceQueryForPrice,\n useSubscribeToMarketPrice,\n} from \"../prices/market/queries/useMarketPriceQuery\";\nimport { usePartner } from \"@/hooks/usePartner\";\n\nconst marketSwapFlowType = \"marketSwap\";\nimport { useSendBatchTx } from \"@/hooks/batch/useSendBatchTx\";\nimport { useCanBatchTxs } from \"@/hooks/batch/useCanBatchTxs\";\nimport {\n useAwaitCalls,\n useEnsureCallsStatus,\n} from \"@/hooks/batch/useAwaitCalls\";\nimport { type CallsReceipt } from \"@/hooks/batch/useAwaitCalls\";\nimport { useBatchWithApproveTxs } from \"@/hooks/batch/useBatchWithApproveTxs\";\nimport { useWidgetEvents } from \"@/core/state/widgetEventsAtom\";\nimport type { BatchTxStepResult } from \"./common/types\";\n\nexport type UseMarketFlowInput = {\n marketPrice?: OptimalRate;\n};\n\nexport type MarketSwapRequest = BuildMarketSwapTxInput & {\n // narrow down BuildMarketSwapTxInput from \"any two present\" {srcAmount?, destAmount?, slippage?}\n // to \"amounts always present\" variant\n swapTxInput: { srcAmount: string; destAmount: string };\n};\n\nexport type SubmitSwapResult = {\n tradeFlowType: typeof marketSwapFlowType;\n approve: SubmitTxResult;\n swap: SubmitTxResult & { swapRequest?: MarketSwapRequest };\n marketPrice: OptimalRate;\n account: Address;\n receiverAddress?: Address;\n};\n\ntype OnTxSent = (txSent: TxSentObject | CallsSentObject) => void;\n// @TODO instead add global onTxSent subscription to\n// MutationCache({onSuccess: txHash}) when sent\n// and QueryCache({onSuccess: txReceipt}) when mined,\n// maybe??\ntype RunMarketOptions = {\n onTxSent?: OnTxSent;\n};\n\nexport type UseMarketFlowResult = {\n tradeFlowType: typeof marketSwapFlowType;\n chainId: SupportedChainId;\n runMarketSwapFlow: (options?: RunMarketOptions) => Promise<SubmitSwapResult>;\n reset: () => void; // reset on Error to retry\n cancelFlow: () => void; // cancel flow\n retryFlow: (options?: RunMarketOptions) => Promise<SubmitSwapResult>; // reset and retry flow\n approval: ApprovalFlowResult;\n signPermit: SignPermitFlowResult;\n buildTxParams: {\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n swap: {\n txHash?: Hash;\n receipt?: TransactionReceipt;\n isConfirmingTX: boolean;\n isConfirmingTxError: boolean;\n isTxSent: boolean;\n isTxPending: boolean;\n isTxMined: boolean;\n isTxAwaitingError: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n swapBatch: BatchTxStepResult;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n result?: SubmitSwapResult;\n usedPrice?: OptimalRate;\n submittedSwapRequest?: MarketSwapRequest;\n};\n\nconst MARKET_SWAP_MUTATION_KEY = \"runMarketSwapFlow\";\n\nexport function useMarketFlow({\n marketPrice,\n}: UseMarketFlowInput): UseMarketFlowResult {\n const logger = useLogger(\"MarketFlow\");\n const chainId = useChainId();\n const { resolvedSlippage } = useSlippage(\"swap\");\n const swapSideFromInput = useSwapSide();\n\n /* Inside useApproveOrPermit:\n 1. Get allowance for tokenFrom \n 2.1. submit Approve tx if necessary \n\n 2.2. sign Permit1 \n\n 3. await Approve tx (if not using Permit) \n */\n const {\n approval,\n signPermit,\n approveTxMut,\n signPermitMut,\n events: approveOrPermitEvents,\n } = useApproveOrPermit({\n srcToken: marketPrice?.srcToken,\n // if we already approved some amount, save it in approval and signPermit objects\n srcAmount: marketPrice?.srcAmount,\n spenderContractType: \"AugustusSwapper\",\n // marketPrice is the preferred source of truth\n swapSide: marketPrice?.side ?? swapSideFromInput,\n tradeMode: \"swap\",\n });\n\n /* 4. Build Swap tx */\n const buildTxMut = useBuildTx({\n chainId,\n mutationOptions: {\n onSuccess: () => {\n logger.log(\"Build tx success\");\n },\n onError: (error) => {\n logger.error(\"Build tx error\", error);\n },\n },\n });\n\n const buildTxParams: UseMarketFlowResult[\"buildTxParams\"] = {\n isPending: buildTxMut.isPending,\n isError: buildTxMut.isError,\n isSuccess: buildTxMut.isSuccess,\n error: buildTxMut.error,\n };\n\n /* 5. submit Swap tx */\n\n /* 5.1. submit standalone Swap tx */\n\n const sendSwapTxMut = useSendMarketSwapTx({\n onSuccess: () => {\n logger.log(\"Swap tx success\");\n },\n onError: (error) => {\n logger.error(\"Swap tx error\", error);\n },\n });\n\n /* 5.2. submit Batch tx */\n const { forCurrentChain: canBatchTxs } = useCanBatchTxs();\n const { addTxWithApprovals } = useBatchWithApproveTxs();\n\n const batchTxMut = useSendBatchTx({\n onSuccess: () => {\n logger.log(\"Batch tx success\");\n },\n onError: (error) => {\n logger.error(\"Batch tx error\", error);\n },\n });\n\n /* 6. await Swap tx */\n\n /* 6.1. await standalone Swap tx */\n const swapTxMined = useAwaitTx({\n hash: sendSwapTxMut.txHash,\n chainId,\n });\n\n /* 6.2. await Batch tx */\n const batchTxMined = useAwaitCalls({\n id: batchTxMut.data?.id,\n });\n\n const swap: UseMarketFlowResult[\"swap\"] = {\n txHash: sendSwapTxMut.txHash,\n receipt: swapTxMined.data,\n /* tx sending */\n isConfirmingTX: sendSwapTxMut.isPending,\n isConfirmingTxError: sendSwapTxMut.isError,\n isTxSent: sendSwapTxMut.isSuccess,\n /* tx awaiting */\n isTxPending: swapTxMined.isLoading,\n isTxMined: swapTxMined.isSuccess,\n isTxAwaitingError: swapTxMined.isError,\n /* combined */\n isPending: sendSwapTxMut.isPending || swapTxMined.isLoading,\n isSuccess: swapTxMined.isSuccess, // final success\n isError: sendSwapTxMut.isError || swapTxMined.isError,\n error: sendSwapTxMut.error || swapTxMined.error,\n };\n\n // for a successful SendCalls execution there will either be one receipt only,\n // or several receipts with the last one for the last tx from the batch\n const lastCallsReceipt =\n batchTxMined.data?.receipts?.[batchTxMined.data.receipts.length - 1];\n\n const swapBatch: UseMarketFlowResult[\"swapBatch\"] = {\n canBatchTxs,\n callsId: batchTxMut.data?.id,\n txHash: lastCallsReceipt?.transactionHash,\n receipt: lastCallsReceipt,\n /* calls sending */\n isConfirmingCalls: batchTxMut.isPending,\n isConfirmingCallsError: batchTxMut.isError,\n isCallsSent: batchTxMut.isSuccess,\n /* calls awaiting */\n isCallsPending: batchTxMined.isLoading,\n isCallsMined: batchTxMined.isSuccess,\n isCallsAwaitingError: batchTxMined.isError,\n /* combined */\n isPending: batchTxMut.isPending || batchTxMined.isLoading,\n isSuccess: batchTxMined.isSuccess,\n isError: batchTxMut.isError || batchTxMined.isError,\n error: batchTxMut.error || batchTxMined.error,\n };\n\n const { address: account } = useAccount();\n\n const ensureTxReceipt = useEnsureTxReceipt();\n const ensureCallsStatus = useEnsureCallsStatus();\n\n // allows to abort (cancel) currently running flow,\n const currentAbortControllerRef = useRef<AbortController | null>(null);\n const usingPriceRef = useRef<OptimalRate | null>(null);\n\n const cancelFlow = () => {\n currentAbortControllerRef.current?.abort(new UserCancelledError());\n currentAbortControllerRef.current = null;\n\n usingPriceRef.current = null;\n };\n\n const receiverAddress = useSwapReceiverAddressValue();\n\n const { markNonceAsUsed, clearNonce } = useMarkPermit1Or2NonceAsUsed({\n chainId,\n });\n\n const { constructGasParams } = useConstructGasParams();\n\n const partner = usePartner();\n\n const getQueryForPrice = useMarketPriceQueryForPrice();\n const subscribeToPrice = useSubscribeToMarketPrice();\n\n const { onSwap } = useWidgetEvents();\n\n const submitSwapTx: UseMarketFlowResult[\"runMarketSwapFlow\"] = async ({\n onTxSent,\n } = {}) => {\n // reset all mutations except the current one,\n // otherwise we'll have previous data (txs) as mutation results\n approveTxMut.reset();\n signPermitMut.reset();\n buildTxMut.reset();\n sendSwapTxMut.reset();\n batchTxMut.reset();\n\n // no sense in starting flow without a price,\n // which may be unavailable only if we are retrying and deltaPrice response now returns an error.\n // Otherwise this flow will be stopped by disabling Swap button in the first place\n assert(marketPrice, \"Market price is not available\");\n\n const abortController = new AbortController();\n currentAbortControllerRef.current = abortController;\n\n const signal = abortController.signal;\n\n let signedPermitResult: SignedPermitResult | undefined;\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 // we use this allowance as a max allowance we will accept new prices for\n\n // marketPrice here is the starting price, available before async code and waiting\n let freshPrice = marketPrice;\n let unsubscribeFromPrice: (() => void) | undefined;\n // this also resets previous usingPriceRef\n usingPriceRef.current = freshPrice;\n\n const shouldBatchTxs =\n canBatchTxs && approval.needsApproval && !!allowanceToSet;\n\n try {\n // need allowance\n if (!shouldBatchTxs && approval.needsApproval && allowanceToSet) {\n // queryKey used to fetch the current price,\n // it will be used for the subsequent price refetches as long as price params not changed\n const queryKey = getQueryForPrice({\n chainId,\n price: freshPrice,\n })?.queryKey;\n\n // should always be available\n if (queryKey) {\n // freeze allowanceToSet\n const approvedAmount = allowanceToSet;\n\n // subscribe to price updates to keep track of new prices for the same price params,\n // independently of the hook itself\n unsubscribeFromPrice = subscribeToPrice({\n queryKey,\n onData: (newPrice) => {\n if (signal.aborted) {\n // just in case unsubscribe in finally is not yet called\n // for the queued update with the price from an already cancelled flow\n unsubscribeFromPrice?.();\n unsubscribeFromPrice = undefined;\n return;\n }\n\n // slightly higher amount if BUY with slippage\n const amountsAfterSlippage = applySlippage(\n {\n srcAmount: newPrice.srcAmount,\n destAmount: newPrice.destAmount,\n },\n resolvedSlippage,\n newPrice.side,\n );\n\n // if new price fits into allowance, update it\n if (approvedAmount >= BigInt(amountsAfterSlippage.srcAmount)) {\n logger.log(\"~ fresh price ~\", newPrice);\n freshPrice = newPrice;\n usingPriceRef.current = freshPrice;\n }\n },\n });\n }\n\n const tryPermit =\n signPermit.isPermitSupported && signPermit.isPermitReadyToSign;\n try {\n if (!tryPermit) {\n approveOrPermitEvents.onApproveTx.request({ allowanceToSet });\n\n // Token doesn't support Permit\n // make an Approval tx\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 } else {\n approveOrPermitEvents.onSignPermit.request({ allowanceToSet });\n\n // sign Permit\n signedPermitResult = await signPermitMut.signPermitAsync({\n value: allowanceToSet,\n });\n\n approveOrPermitEvents.onSignPermit.confirmed({\n allowanceToSet,\n permit: signedPermitResult?.permitEncodedArgs,\n });\n }\n } catch (error) {\n if (!tryPermit) {\n approveOrPermitEvents.onApproveTx.failed({\n allowanceToSet,\n error: error as Error,\n txHash: approveTxHash, // won't necessarily be available\n });\n } else {\n approveOrPermitEvents.onSignPermit.failed({\n allowanceToSet,\n error: error as Error,\n });\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 // as long as we had set approvedAmount, we will only get new prices that satisfy the allowance\n const marketPriceToUse = freshPrice;\n usingPriceRef.current = marketPriceToUse;\n // no longer need updates, unsubscribe\n unsubscribeFromPrice?.();\n unsubscribeFromPrice = undefined;\n\n assert(marketPriceToUse, \"Market price is not available\");\n\n const amountsAfterSlippage = applySlippage(\n {\n srcAmount: marketPriceToUse.srcAmount,\n destAmount: marketPriceToUse.destAmount,\n },\n resolvedSlippage,\n marketPriceToUse.side,\n );\n\n // fresh gas params\n const gasParams = constructGasParams();\n\n const swapRequest: MarketSwapRequest = {\n swapTxInput: {\n userAddress: account,\n receiver: receiverAddress,\n srcToken: marketPriceToUse.srcToken,\n destToken: marketPriceToUse.destToken,\n srcDecimals: marketPriceToUse.srcDecimals,\n destDecimals: marketPriceToUse.destDecimals,\n\n partner,\n /* @TODO fill in when and if available\n referrer: \"\",\n partnerAddress: \"\",\n partnerFeeBps: 0, \n takeSurplus: false,*/\n permit: signedPermitResult?.permitEncodedArgs, // just signed Permit signature\n\n priceRoute: marketPriceToUse,\n ...amountsAfterSlippage,\n },\n\n swapTxOptions: {\n // ignoreChecks: true,\n // gas estimate will break if only swap tx is estimated, but approve tx is not considered in a batch\n ignoreGasEstimate: shouldBatchTxs,\n // for Batch-capable wallets batch Approve+Swap tx have to ignore all checks\n ignoreAllowance: shouldBatchTxs,\n // onlyParams: true,\n ...gasParams,\n },\n };\n\n const txParams = await buildTxMut.mutateAsync(swapRequest);\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n let swapTxHash: Hash | undefined;\n let swapCallsId: string | undefined;\n\n onSwap?.({\n event: {\n name: \"Swap:request\",\n params: {\n swapMode: \"market\",\n price: marketPriceToUse,\n },\n },\n });\n\n if (shouldBatchTxs) {\n const { calls } = await addTxWithApprovals({\n txsParams: [\n {\n to: txParams.to as Address,\n account: txParams.from as Address,\n data: txParams.data as Hex,\n value: BigInt(txParams.value),\n chainId: txParams.chainId,\n },\n ],\n approveProps: [\n {\n spender: approval.spender,\n allowanceToSet: approval.allowanceToSet,\n token: approval.token,\n chainId: approval.chainId,\n },\n ],\n });\n\n const sendCallsResult = await batchTxMut.sendCalls({\n txsParams: calls,\n });\n swapCallsId = sendCallsResult.id;\n onSwap?.({\n event: {\n name: \"Swap:sent\",\n params: {\n swapMode: \"market\",\n price: marketPriceToUse,\n callsId: swapCallsId,\n },\n },\n });\n } else {\n swapTxHash = await sendSwapTxMut.sendTransactionAsync(txParams);\n onSwap?.({\n event: {\n name: \"Swap:sent\",\n params: {\n swapMode: \"market\",\n price: marketPriceToUse,\n txHash: swapTxHash,\n },\n },\n });\n }\n\n // no use aborting past this point, tx is already sent,\n // but we may want to connect this late abortion to tx cancellation, in the future\n\n // tx is sent, consider Token nonce as used\n if (signedPermitResult) {\n markNonceAsUsed(signedPermitResult.signedPermitData);\n }\n\n let swapCallsReceipt: CallsReceipt | undefined;\n let swapTxReceipt: TransactionReceipt | undefined;\n\n if (swapCallsId) {\n const sendCallsReceiptPromise = ensureCallsStatus({\n id: swapCallsId,\n }).then((status) => status.receipts?.[status.receipts.length - 1]);\n\n logger.log(\"~ swapTx ~ awaiting calls id :\", swapCallsId);\n\n if (onTxSent) {\n onTxSent({\n chainId,\n action: \"swap\",\n callsId: swapCallsId,\n receiptPromise: sendCallsReceiptPromise,\n transactionSpecificData: {\n action: \"swap\",\n source: \"local\",\n srcTokenAddress: marketPriceToUse.srcToken as Address,\n destTokenAddress: marketPriceToUse.destToken as Address,\n srcAmount: amountsAfterSlippage.srcAmount,\n destAmount: amountsAfterSlippage.destAmount,\n srcAmountUSD: marketPriceToUse.srcUSD,\n destAmountUSD: marketPriceToUse.destUSD,\n gasCost: marketPriceToUse.gasCost,\n },\n });\n }\n\n swapCallsReceipt = await sendCallsReceiptPromise;\n\n if (swapCallsReceipt) {\n onSwap?.({\n event: {\n name: \"Swap:confirmed\",\n params: {\n swapMode: \"market\",\n price: marketPriceToUse,\n callsReceipt: swapCallsReceipt,\n callsId: swapCallsId,\n },\n },\n });\n }\n } else if (swapTxHash) {\n const swapTxReceiptPromise = ensureTxReceipt({\n hash: swapTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\"onReplaced:swapTx\", swapTxHash, data);\n },\n });\n\n logger.log(\"~ swapTx ~ awaiting tx hash :\", swapTxHash);\n\n if (onTxSent) {\n onTxSent({\n chainId,\n action: \"swap\",\n transactionHash: swapTxHash,\n receiptPromise: swapTxReceiptPromise,\n transactionSpecificData: {\n action: \"swap\",\n source: \"local\",\n srcTokenAddress: marketPriceToUse.srcToken as Address,\n destTokenAddress: marketPriceToUse.destToken as Address,\n srcAmount: amountsAfterSlippage.srcAmount,\n destAmount: amountsAfterSlippage.destAmount,\n srcAmountUSD: marketPriceToUse.srcUSD,\n destAmountUSD: marketPriceToUse.destUSD,\n gasCost: marketPriceToUse.gasCost,\n gasCostUSD: marketPriceToUse.gasCostUSD,\n },\n });\n }\n\n swapTxReceipt = await swapTxReceiptPromise;\n\n if (swapTxReceipt) {\n onSwap?.({\n event: {\n name: \"Swap:confirmed\",\n params: {\n swapMode: \"market\",\n price: marketPriceToUse,\n txReceipt: swapTxReceipt,\n txHash: swapTxHash,\n },\n },\n });\n }\n }\n\n logger.log(\"~ swapTx ~ receipt:\", swapCallsReceipt || swapTxReceipt);\n // @TODO check if we need to see if receipt.status === \"reverted\" and trhow,\n // or if waitForTransactionReceipt already throws on such receipts\n\n return {\n tradeFlowType: marketSwapFlowType,\n approve: {\n txHash: approveTxHash,\n receipt: approveTxReceipt,\n },\n swap: {\n swapRequest,\n callsId: swapCallsId,\n txHash: swapTxHash,\n receipt: swapTxReceipt,\n callsReceipt: swapCallsReceipt,\n },\n marketPrice: marketPriceToUse,\n // @TODO add whatever else may be relevant\n account,\n receiverAddress,\n };\n } catch (error) {\n // Market swap failed, we can't be sure if nonce can be reused or it was incremented in a different tx\n // or even Order in the meantime\n if (signedPermitResult) {\n clearNonce(signedPermitResult.signedPermitData);\n }\n onSwap?.({\n event: {\n name: \"Swap:failed\",\n params: {\n swapMode: \"market\",\n error: error as Error,\n },\n },\n });\n throw error;\n } finally {\n // always unsubscribe if subscribed previously\n unsubscribeFromPrice?.();\n }\n };\n\n const marketSwapMut = useMutation({\n mutationFn: submitSwapTx,\n mutationKey: [MARKET_SWAP_MUTATION_KEY],\n onSuccess: (data) => {\n logger.log(\"Swap tx success\", data);\n },\n onError: (error) => {\n logger.error(\"Swap tx error\", error);\n },\n onSettled: () => {\n logger.log(\"Swap tx settled\");\n },\n });\n\n const runMarketSwapFlow = marketSwapMut.mutateAsync;\n\n const reset = () => {\n usingPriceRef.current = null;\n\n approveTxMut.reset();\n signPermitMut.reset();\n buildTxMut.reset();\n sendSwapTxMut.reset();\n batchTxMut.reset();\n marketSwapMut.reset();\n };\n\n const retryFlow = (options?: RunMarketOptions): Promise<SubmitSwapResult> => {\n reset();\n return runMarketSwapFlow(options);\n };\n\n // finalPrice if we reached that point, or usable price (based on allowance given)\n const usedPrice = usingPriceRef.current || marketPrice;\n\n const result = marketSwapMut.data;\n const submittedSwapRequest = result?.swap.swapRequest;\n\n /* 7. return result */\n return {\n tradeFlowType: marketSwapFlowType,\n chainId,\n runMarketSwapFlow,\n reset,\n cancelFlow,\n retryFlow,\n approval,\n signPermit,\n buildTxParams,\n swap,\n swapBatch,\n // marketSwapMut includes all steps' queries and mutations and returns more precise errors (including cancellation)\n isPending: marketSwapMut.isPending,\n isSuccess: marketSwapMut.isSuccess,\n isError: marketSwapMut.isError,\n error: marketSwapMut.error,\n result: marketSwapMut.data,\n usedPrice,\n submittedSwapRequest,\n };\n}\n"],"names":["marketSwapFlowType","MARKET_SWAP_MUTATION_KEY","useMarketFlow","marketPrice","logger","useLogger","chainId","useChainId","resolvedSlippage","useSlippage","swapSideFromInput","useSwapSide","approval","signPermit","approveTxMut","signPermitMut","events","approveOrPermitEvents","useApproveOrPermit","srcToken","srcAmount","spenderContractType","swapSide","side","tradeMode","buildTxMut","useBuildTx","mutationOptions","onSuccess","log","onError","error","buildTxParams","isPending","isError","isSuccess","sendSwapTxMut","useSendMarketSwapTx","forCurrentChain","canBatchTxs","useCanBatchTxs","addTxWithApprovals","useBatchWithApproveTxs","batchTxMut","useSendBatchTx","swapTxMined","useAwaitTx","hash","txHash","batchTxMined","useAwaitCalls","id","data","swap","receipt","isConfirmingTX","isConfirmingTxError","isTxSent","isTxPending","isLoading","isTxMined","isTxAwaitingError","lastCallsReceipt","receipts","length","swapBatch","callsId","transactionHash","isConfirmingCalls","isConfirmingCallsError","isCallsSent","isCallsPending","isCallsMined","isCallsAwaitingError","address","account","useAccount","ensureTxReceipt","useEnsureTxReceipt","ensureCallsStatus","useEnsureCallsStatus","currentAbortControllerRef","useRef","usingPriceRef","cancelFlow","current","abort","UserCancelledError","receiverAddress","useSwapReceiverAddressValue","markNonceAsUsed","clearNonce","useMarkPermit1Or2NonceAsUsed","constructGasParams","useConstructGasParams","partner","usePartner","getQueryForPrice","useMarketPriceQueryForPrice","subscribeToPrice","useSubscribeToMarketPrice","onSwap","useWidgetEvents","submitSwapTx","onTxSent","reset","assert","abortController","AbortController","signal","signedPermitResult","approveTxHash","approveTxReceipt","allowanceToSet","freshPrice","unsubscribeFromPrice","shouldBatchTxs","needsApproval","queryKey","price","approvedAmount","onData","newPrice","aborted","undefined","amountsAfterSlippage","applySlippage","destAmount","BigInt","tryPermit","isPermitSupported","isPermitReadyToSign","onApproveTx","request","approveAsync","allowanceData","sent","throwIfAborted","approveTxReceiptPromise","onReplaced","action","receiptPromise","transactionSpecificData","tokenAddress","token","spenderAddress","spender","confirmed","txReceipt","onSignPermit","signPermitAsync","value","permit","permitEncodedArgs","failed","marketPriceToUse","gasParams","swapRequest","swapTxInput","userAddress","receiver","destToken","srcDecimals","destDecimals","priceRoute","swapTxOptions","ignoreGasEstimate","ignoreAllowance","txParams","mutateAsync","swapTxHash","swapCallsId","event","name","params","swapMode","calls","txsParams","to","from","approveProps","sendCallsResult","sendCalls","sendTransactionAsync","signedPermitData","swapCallsReceipt","swapTxReceipt","sendCallsReceiptPromise","then","status","source","srcTokenAddress","destTokenAddress","srcAmountUSD","srcUSD","destAmountUSD","destUSD","gasCost","callsReceipt","swapTxReceiptPromise","gasCostUSD","tradeFlowType","approve","marketSwapMut","useMutation","mutationFn","mutationKey","onSettled","runMarketSwapFlow","retryFlow","options","usedPrice","result","submittedSwapRequest"],"mappings":"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"}
@@ -12,6 +12,7 @@ type UseMarketSwapStepResult = {
12
12
  erroredStep?: MarketSwapStepKey;
13
13
  result?: SubmitSwapResult;
14
14
  usedPrice: UseMarketFlowResult["usedPrice"];
15
+ submittedSwapRequest?: UseMarketFlowResult["submittedSwapRequest"];
15
16
  tradeFlowType: UseMarketFlowResult["tradeFlowType"];
16
17
  };
17
18
  export declare function useMarketSwapStep(options: UseMarketFlowInput): UseMarketSwapStepResult;
@@ -1 +1 @@
1
- {"version":3,"file":"useMarketSwapStep.d.ts","sourceRoot":"","sources":["../../../../src/hooks/swap/tradeFlow/useMarketSwapStep.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EAClB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAC;AAKzB,KAAK,uBAAuB,GAAG;IAC7B,eAAe,EAAE,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;IAE1D,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACpC,UAAU,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAC9C,SAAS,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC5C,iBAAiB,EAAE,OAAO,CAAC;IAC3B,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC5C,aAAa,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACrD,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,kBAAkB,GAC1B,uBAAuB,CAoIzB"}
1
+ {"version":3,"file":"useMarketSwapStep.d.ts","sourceRoot":"","sources":["../../../../src/hooks/swap/tradeFlow/useMarketSwapStep.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EAClB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAC;AAKzB,KAAK,uBAAuB,GAAG;IAC7B,eAAe,EAAE,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;IAE1D,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACpC,UAAU,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAC9C,SAAS,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC5C,iBAAiB,EAAE,OAAO,CAAC;IAC3B,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC5C,oBAAoB,CAAC,EAAE,mBAAmB,CAAC,sBAAsB,CAAC,CAAC;IACnE,aAAa,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACrD,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,kBAAkB,GAC1B,uBAAuB,CAqIzB"}
@@ -5,7 +5,7 @@ import { useLogger } from '../../../core/logger.js';
5
5
  import { isUserCancelledError } from './common/errors.js';
6
6
 
7
7
  function useMarketSwapStep(options) {
8
- const $ = distExports.c(20);
8
+ const $ = distExports.c(21);
9
9
  const logger = useLogger("MarketSwapStep");
10
10
  const marketFlow = useMarketFlow(options);
11
11
  const startMarketSwap = marketFlow.runMarketSwapFlow;
@@ -91,7 +91,7 @@ function useMarketSwapStep(options) {
91
91
  }
92
92
  }
93
93
  let t1;
94
- if ($[7] !== cancelFlow || $[8] !== error || $[9] !== erroredStep || $[10] !== explorerLink || $[11] !== isFlowCancellable || $[12] !== marketFlow.result || $[13] !== marketFlow.tradeFlowType || $[14] !== marketFlow.usedPrice || $[15] !== reset || $[16] !== retryFlow || $[17] !== startMarketSwap || $[18] !== step) {
94
+ if ($[7] !== cancelFlow || $[8] !== error || $[9] !== erroredStep || $[10] !== explorerLink || $[11] !== isFlowCancellable || $[12] !== marketFlow.result || $[13] !== marketFlow.submittedSwapRequest || $[14] !== marketFlow.tradeFlowType || $[15] !== marketFlow.usedPrice || $[16] !== reset || $[17] !== retryFlow || $[18] !== startMarketSwap || $[19] !== step) {
95
95
  t1 = {
96
96
  startMarketSwap,
97
97
  reset,
@@ -104,6 +104,7 @@ function useMarketSwapStep(options) {
104
104
  erroredStep,
105
105
  result: marketFlow.result,
106
106
  usedPrice: marketFlow.usedPrice,
107
+ submittedSwapRequest: marketFlow.submittedSwapRequest,
107
108
  tradeFlowType: marketFlow.tradeFlowType
108
109
  };
109
110
  $[7] = cancelFlow;
@@ -112,15 +113,16 @@ function useMarketSwapStep(options) {
112
113
  $[10] = explorerLink;
113
114
  $[11] = isFlowCancellable;
114
115
  $[12] = marketFlow.result;
115
- $[13] = marketFlow.tradeFlowType;
116
- $[14] = marketFlow.usedPrice;
117
- $[15] = reset;
118
- $[16] = retryFlow;
119
- $[17] = startMarketSwap;
120
- $[18] = step;
121
- $[19] = t1;
116
+ $[13] = marketFlow.submittedSwapRequest;
117
+ $[14] = marketFlow.tradeFlowType;
118
+ $[15] = marketFlow.usedPrice;
119
+ $[16] = reset;
120
+ $[17] = retryFlow;
121
+ $[18] = startMarketSwap;
122
+ $[19] = step;
123
+ $[20] = t1;
122
124
  } else {
123
- t1 = $[19];
125
+ t1 = $[20];
124
126
  }
125
127
  return t1;
126
128
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useMarketSwapStep.js","sources":["../../../../src/hooks/swap/tradeFlow/useMarketSwapStep.ts"],"sourcesContent":["import type {\n MarketSwapStep,\n MarketSwapStepKey,\n} from \"@/components/widget/TradeOverview/steps\";\nimport {\n useMarketFlow,\n type UseMarketFlowInput,\n type UseMarketFlowResult,\n type SubmitSwapResult,\n} from \"./useMarketFlow\";\nimport { constructTxLinkForChain } from \"@/lib/utils/explorer\";\nimport { useLogger } from \"@/core/logger\";\nimport { isUserCancelledError } from \"./common/errors\";\n\ntype UseMarketSwapStepResult = {\n startMarketSwap: UseMarketFlowResult[\"runMarketSwapFlow\"];\n // @TODO check if resetting is necessary on error, maybe not if submit on click works as a reset\n reset: UseMarketFlowResult[\"reset\"];\n cancelFlow: UseMarketFlowResult[\"cancelFlow\"];\n retryFlow: UseMarketFlowResult[\"retryFlow\"];\n isFlowCancellable: boolean;\n step?: MarketSwapStep;\n explorerLink?: string;\n error: Error | null;\n erroredStep?: MarketSwapStepKey;\n result?: SubmitSwapResult;\n usedPrice: UseMarketFlowResult[\"usedPrice\"];\n tradeFlowType: UseMarketFlowResult[\"tradeFlowType\"];\n};\n\nexport function useMarketSwapStep(\n options: UseMarketFlowInput\n): UseMarketSwapStepResult {\n const logger = useLogger(\"MarketSwapStep\");\n const marketFlow = useMarketFlow(options);\n\n const startMarketSwap = marketFlow.runMarketSwapFlow;\n const reset = marketFlow.reset;\n const cancelFlow = marketFlow.cancelFlow;\n const retryFlow = marketFlow.retryFlow;\n\n let step: MarketSwapStep | undefined;\n\n const permitSigningHappeningOrNeverHappened =\n // isPending starts as false,\n // so we can use !isPermitSigned to detect if Permit signing is happening or never happened\n marketFlow.signPermit.isPending || !marketFlow.signPermit.isPermitSigned;\n\n const approvalHappeningOrNeverHappened =\n // isPending starts as false,\n // needsApproval && !isSuccess allows to detect approve step right away even then\n marketFlow.approval.isPending || !marketFlow.approval.isSuccess;\n\n const willUsePermit =\n marketFlow.approval.needsApproval &&\n marketFlow.signPermit.isPermitSupported &&\n marketFlow.signPermit.isPermitReadyToSign &&\n !marketFlow.swapBatch.canBatchTxs;\n\n const permitOrApprovalHappeningOrNeverHappened = willUsePermit\n ? permitSigningHappeningOrNeverHappened\n : approvalHappeningOrNeverHappened;\n\n if (\n marketFlow.approval.needsApproval &&\n permitOrApprovalHappeningOrNeverHappened\n ) {\n step = { key: \"signature\", subStep: \"approval-signature\" };\n } else if (\n marketFlow.buildTxParams.isPending ||\n marketFlow.swap.isConfirmingTX ||\n marketFlow.swapBatch.isConfirmingCalls\n ) {\n const permitOrApprovalHappened = !!(\n marketFlow.approval.txHash || marketFlow.signPermit.signature\n );\n\n step = {\n key: \"signature\",\n subStep: permitOrApprovalHappened\n ? \"order-signature\"\n : \"standalone-order-signature\",\n };\n } else if (\n marketFlow.swap.isTxPending ||\n marketFlow.swapBatch.isCallsPending\n ) {\n step = { key: \"swap-tx-execution\" };\n } else if (marketFlow.isPending) {\n // if something is between steps but not clear step,\n // then assume we're at the standalone signature sub-step\n step = { key: \"signature\", subStep: \"standalone-order-signature\" };\n }\n\n const approvalIsStarted =\n step?.key === \"signature\" &&\n step.subStep === \"approval-signature\" &&\n marketFlow.approval.isTxPending;\n\n const inSwapTxConfirmation =\n step?.key === \"signature\" &&\n (step.subStep === \"order-signature\" ||\n step.subStep === \"standalone-order-signature\");\n\n const notYetSwapTxSent =\n step?.key === \"swap-tx-execution\" &&\n !marketFlow.swap.isTxSent &&\n !marketFlow.swapBatch.isCallsSent;\n\n // final tx is not yet sent, there's something to cancel;\n // but some steps are already started so we can't simply dismiss\n const isFlowCancellable =\n approvalIsStarted || inSwapTxConfirmation || notYetSwapTxSent;\n\n // either of the txHashes will be available\n const txHash = marketFlow.swapBatch.txHash || marketFlow.swap.txHash;\n const explorerLink = txHash\n ? constructTxLinkForChain({ chainId: marketFlow.chainId, txHash })\n : undefined;\n\n logger.once.log(\"step\", step, marketFlow, {\n isFlowCancellable,\n explorerLink,\n txHash,\n });\n\n // intentional cancellation is handled separately\n const error = isUserCancelledError(marketFlow.error)\n ? null\n : marketFlow.error;\n\n let erroredStep: MarketSwapStepKey | undefined;\n\n if (marketFlow.isError) {\n if (\n marketFlow.approval.isError ||\n marketFlow.signPermit.isError ||\n marketFlow.buildTxParams.isError ||\n marketFlow.swap.isConfirmingTxError ||\n marketFlow.swapBatch.isConfirmingCallsError\n ) {\n erroredStep = \"signature\";\n } else if (\n marketFlow.swap.isTxAwaitingError ||\n marketFlow.swapBatch.isCallsAwaitingError\n ) {\n erroredStep = \"swap-tx-execution\";\n }\n }\n\n return {\n startMarketSwap,\n reset,\n cancelFlow,\n retryFlow,\n isFlowCancellable,\n step,\n explorerLink,\n error,\n erroredStep,\n result: marketFlow.result,\n usedPrice: marketFlow.usedPrice,\n tradeFlowType: marketFlow.tradeFlowType,\n };\n}\n"],"names":["useMarketSwapStep","options","$","_c","logger","useLogger","marketFlow","useMarketFlow","startMarketSwap","runMarketSwapFlow","reset","cancelFlow","retryFlow","explorerLink","isFlowCancellable","step","once","permitSigningHappeningOrNeverHappened","signPermit","isPending","isPermitSigned","approvalHappeningOrNeverHappened","approval","isSuccess","willUsePermit","needsApproval","isPermitSupported","isPermitReadyToSign","swapBatch","canBatchTxs","permitOrApprovalHappeningOrNeverHappened","buildTxParams","swap","isConfirmingTX","isConfirmingCalls","permitOrApprovalHappened","txHash","signature","isTxPending","isCallsPending","approvalIsStarted","key","subStep","inSwapTxConfirmation","notYetSwapTxSent","isTxSent","isCallsSent","constructTxLinkForChain","chainId","undefined","log","t0","error","isUserCancelledError","erroredStep","isError","isConfirmingTxError","isConfirmingCallsError","isTxAwaitingError","isCallsAwaitingError","t1","result","tradeFlowType","usedPrice"],"mappings":";;;;;;AA8BO,SAAAA,kBAAAC,OAAAA,EAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,EAAA,CAAA;AAGL,EAAA,MAAAC,MAAAA,GAAeC,UAAU,gBAAgB,CAAA;AACzC,EAAA,MAAAC,UAAAA,GAAmBC,cAAcN,OAAO,CAAA;AAExC,EAAA,MAAAO,kBAAwBF,UAAAA,CAAUG,iBAAAA;AAClC,EAAA,MAAAC,QAAcJ,UAAAA,CAAUI,KAAAA;AACxB,EAAA,MAAAC,aAAmBL,UAAAA,CAAUK,UAAAA;AAC7B,EAAA,MAAAC,YAAkBN,UAAAA,CAAUM,SAAAA;AAAW,EAAA,IAAAC,YAAAA;AAAA,EAAA,IAAAC,iBAAAA;AAAA,EAAA,IAAAC,IAAAA;AAAA,EAAA,IAAAb,CAAAA,QAAAE,MAAAA,CAAAY,QAAAd,CAAAA,QAAAI,UAAAA,EAAA;AAIvC,IAAA,MAAAW,wCAGEX,UAAAA,CAAUY,UAAAA,CAAWC,SAAAA,IAArB,CAAoCb,WAAUY,UAAAA,CAAWE,cAAAA;AAE3D,IAAA,MAAAC,mCAGEf,UAAAA,CAAUgB,QAAAA,CAASH,SAAAA,IAAnB,CAAkCb,WAAUgB,QAAAA,CAASC,SAAAA;AAEvD,IAAA,MAAAC,aAAAA,GACElB,UAAAA,CAAUgB,QAAAA,CAASG,aAAAA,IACnBnB,UAAAA,CAAUY,UAAAA,CAAWQ,iBAAAA,IACrBpB,UAAAA,CAAUY,UAAAA,CAAWS,mBAAAA,IAFrB,CAGCrB,UAAAA,CAAUsB,SAAAA,CAAUC,WAAAA;AAEvB,IAAA,MAAAC,wCAAAA,GAAiDN,gBAAAP,qCAAAA,GAAAI,gCAAAA;AAIjD,IAAA,IACEf,UAAAA,CAAUgB,QAAAA,CAASG,aAAAA,IAAnBK,wCAAAA,EACwC;AAExCf,MAAAA,IAAAA,GAAOA;AAAAA,QAAAA,GAAAA,EAAOA,WAAAA;AAAAA,QAAWA,OAAAA,EAAWA;AAAAA,OAAqBA;AAAAA,IAArD,CAAA,MAAA;AACC,MAAA,IACLT,UAAAA,CAAUyB,cAAcZ,SAAAA,IACxBb,UAAAA,CAAU0B,KAAKC,cAAAA,IACf3B,UAAAA,CAAUsB,UAAUM,iBAAAA,EAAkB;AAEtC,QAAA,MAAAC,2BAAiC,CAAC,EAChC7B,WAAUgB,QAAAA,CAASc,MAAAA,IAAW9B,WAAUY,UAAAA,CAAWmB,SAAAA,CAAAA;AAGrDtB,QAAAA,IAAAA,GAAOA;AAAAA,UAAAA,GAAAA,EACAA,WAAAA;AAAAA,UAAWA,OAAAA,EACPoB,2BAAA,iBAAA,GAAA;AAAA,SAGX;AAAA,MALI,CAAA,MAAA;AAMC,QAAA,IACL7B,UAAAA,CAAU0B,IAAAA,CAAKM,WAAAA,IACfhC,UAAAA,CAAUsB,UAAUW,cAAAA,EAAe;AAEnCxB,UAAAA,IAAAA,GAAOA;AAAAA,YAAAA,GAAAA,EAAOA;AAAAA,WAAoBA;AAAAA,QAA9B,CAAA,MAAA;AACC,UAAA,IAAIT,WAAUa,SAAAA,EAAU;AAG7BJ,YAAAA,IAAAA,GAAOA;AAAAA,cAAAA,GAAAA,EAAOA,WAAAA;AAAAA,cAAWA,OAAAA,EAAWA;AAAAA,aAA6BA;AAAAA,UAA7D;AAAA,QACL;AAAA,MAAA;AAAA,IAAA;AAED,IAAA,MAAAyB,iBAAAA,GACEzB,MAAI0B,GAAAA,KAAU,WAAA,IACd1B,KAAI2B,OAAAA,KAAa,oBAAA,IACjBpC,WAAUgB,QAAAA,CAASgB,WAAAA;AAErB,IAAA,MAAAK,oBAAAA,GACE5B,MAAI0B,GAAAA,KAAU,WAAA,KACb1B,KAAI2B,OAAAA,KAAa,iBAAA,IAChB3B,KAAI2B,OAAAA,KAAa,4BAAA,CAAA;AAErB,IAAA,MAAAE,gBAAAA,GACE7B,IAAAA,EAAI0B,GAAAA,KAAU,mBAAA,IAAd,CACCnC,WAAU0B,IAAAA,CAAKa,QAAAA,IADhB,CAECvC,UAAAA,CAAUsB,SAAAA,CAAUkB,WAAAA;AAIvBhC,IAAAA,iBAAAA,GACE0B,qBAAAG,oBAAAA,IAAAC,gBAAAA;AAGF,IAAA,MAAAR,MAAAA,GAAe9B,UAAAA,CAAUsB,SAAAA,CAAUQ,MAAAA,IAAW9B,WAAU0B,IAAAA,CAAKI,MAAAA;AAC7DvB,IAAAA,YAAAA,GAAqBuB,SACjBW,uBAAAA,CAAwB;AAAA,MAAAC,SAAW1C,UAAAA,CAAU0C,OAAAA;AAAAA,MAAQZ;AAAAA,KAC7C,CAAA,GAFSa,MAAAA;AAIrB7C,IAAAA,MAAAA,CAAMY,IAAAA,CAAKkC,GAAAA,CAAK,MAAA,EAAQnC,IAAAA,EAAMT,UAAAA,EAAY;AAAA,MAAAQ,iBAAAA;AAAAA,MAAAD,YAAAA;AAAAA,MAAAuB;AAAAA,KAIzC,CAAA;AAAClC,IAAAA,CAAAA,CAAA,CAAA,IAAAE,MAAAA,CAAAY,IAAAA;AAAAd,IAAAA,CAAAA,MAAAI,UAAAA;AAAAJ,IAAAA,CAAAA,MAAAW,YAAAA;AAAAX,IAAAA,CAAAA,MAAAY,iBAAAA;AAAAZ,IAAAA,CAAAA,MAAAa,IAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAF,IAAAA,YAAAA,GAAAX,EAAA,CAAA,CAAA;AAAAY,IAAAA,iBAAAA,GAAAZ,EAAA,CAAA,CAAA;AAAAa,IAAAA,IAAAA,GAAAb,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,IAAAiD,EAAAA;AAAA,EAAA,IAAAjD,CAAAA,CAAA,CAAA,CAAA,KAAAI,UAAAA,CAAA8C,KAAAA,EAAA;AAGYD,IAAAA,EAAAA,GAAAE,oBAAAA,CAAqB/C,UAAAA,CAAU8C,KAE1B,CAAA,GAFL,OAEV9C,UAAAA,CAAU8C,KAAAA;AAAMlD,IAAAA,CAAAA,CAAA,CAAA,IAAAI,UAAAA,CAAA8C,KAAAA;AAAAlD,IAAAA,CAAAA,MAAAiD,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAjD,EAAA,CAAA,CAAA;AAAA,EAAA;AAFpB,EAAA,MAAAkD,KAAAA,GAAcD,EAAAA;AAIVG,EAAAA,IAAAA,WAAAA;AAEJ,EAAA,IAAIhD,WAAUiD,OAAAA,EAAQ;AACpB,IAAA,IACEjD,UAAAA,CAAUgB,QAAAA,CAASiC,OAAAA,IACnBjD,UAAAA,CAAUY,WAAWqC,OAAAA,IACrBjD,UAAAA,CAAUyB,aAAAA,CAAcwB,OAAAA,IACxBjD,UAAAA,CAAU0B,IAAAA,CAAKwB,mBAAAA,IACflD,UAAAA,CAAUsB,UAAU6B,sBAAAA,EAAuB;AAE3CH,MAAAA,WAAAA,GAAcA,WAAAA;AAAAA,IAAH,CAAA,MAAA;AACN,MAAA,IACLhD,UAAAA,CAAU0B,IAAAA,CAAK0B,iBAAAA,IACfpD,UAAAA,CAAUsB,UAAU+B,oBAAAA,EAAqB;AAEzCL,QAAAA,WAAAA,GAAcA,mBAAAA;AAAAA,MAAH;AAAA,IACZ;AAAA,EAAA;AACF,EAAA,IAAAM,EAAAA;AAAA,EAAA,IAAA1D,CAAAA,CAAA,CAAA,CAAA,KAAAS,UAAAA,IAAAT,SAAAkD,KAAAA,IAAAlD,CAAAA,CAAA,CAAA,CAAA,KAAAoD,eAAApD,CAAAA,CAAA,EAAA,CAAA,KAAAW,YAAAA,IAAAX,CAAAA,CAAA,EAAA,MAAAY,iBAAAA,IAAAZ,CAAAA,CAAA,EAAA,CAAA,KAAAI,UAAAA,CAAAuD,MAAAA,IAAA3D,EAAA,EAAA,CAAA,KAAAI,WAAAwD,aAAAA,IAAA5D,CAAAA,SAAAI,UAAAA,CAAAyD,SAAAA,IAAA7D,CAAAA,CAAA,EAAA,CAAA,KAAAQ,SAAAR,CAAAA,CAAA,EAAA,CAAA,KAAAU,SAAAA,IAAAV,CAAAA,SAAAM,eAAAA,IAAAN,CAAAA,CAAA,EAAA,CAAA,KAAAa,IAAAA,EAAA;AAEM6C,IAAAA,EAAAA,GAAA;AAAA,MAAApD,eAAAA;AAAAA,MAAAE,KAAAA;AAAAA,MAAAC,UAAAA;AAAAA,MAAAC,SAAAA;AAAAA,MAAAE,iBAAAA;AAAAA,MAAAC,IAAAA;AAAAA,MAAAF,YAAAA;AAAAA,MAAAuC,KAAAA;AAAAA,MAAAE,WAAAA;AAAAA,MAAAO,QAUGvD,UAAAA,CAAUuD,MAAAA;AAAAA,MAAOE,WACdzD,UAAAA,CAAUyD,SAAAA;AAAAA,MAAUD,eAChBxD,UAAAA,CAAUwD;AAAAA,KAC3B;AAAC5D,IAAAA,CAAAA,MAAAS,UAAAA;AAAAT,IAAAA,CAAAA,MAAAkD,KAAAA;AAAAlD,IAAAA,CAAAA,MAAAoD,WAAAA;AAAApD,IAAAA,CAAAA,OAAAW,YAAAA;AAAAX,IAAAA,CAAAA,OAAAY,iBAAAA;AAAAZ,IAAAA,CAAAA,CAAA,EAAA,IAAAI,UAAAA,CAAAuD,MAAAA;AAAA3D,IAAAA,CAAAA,CAAA,EAAA,IAAAI,UAAAA,CAAAwD,aAAAA;AAAA5D,IAAAA,CAAAA,CAAA,EAAA,IAAAI,UAAAA,CAAAyD,SAAAA;AAAA7D,IAAAA,CAAAA,OAAAQ,KAAAA;AAAAR,IAAAA,CAAAA,OAAAU,SAAAA;AAAAV,IAAAA,CAAAA,OAAAM,eAAAA;AAAAN,IAAAA,CAAAA,OAAAa,IAAAA;AAAAb,IAAAA,CAAAA,OAAA0D,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAA1D,EAAA,EAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAbM0D,EAAAA;AAaN;;;;"}
1
+ {"version":3,"file":"useMarketSwapStep.js","sources":["../../../../src/hooks/swap/tradeFlow/useMarketSwapStep.ts"],"sourcesContent":["import type {\n MarketSwapStep,\n MarketSwapStepKey,\n} from \"@/components/widget/TradeOverview/steps\";\nimport {\n useMarketFlow,\n type UseMarketFlowInput,\n type UseMarketFlowResult,\n type SubmitSwapResult,\n} from \"./useMarketFlow\";\nimport { constructTxLinkForChain } from \"@/lib/utils/explorer\";\nimport { useLogger } from \"@/core/logger\";\nimport { isUserCancelledError } from \"./common/errors\";\n\ntype UseMarketSwapStepResult = {\n startMarketSwap: UseMarketFlowResult[\"runMarketSwapFlow\"];\n // @TODO check if resetting is necessary on error, maybe not if submit on click works as a reset\n reset: UseMarketFlowResult[\"reset\"];\n cancelFlow: UseMarketFlowResult[\"cancelFlow\"];\n retryFlow: UseMarketFlowResult[\"retryFlow\"];\n isFlowCancellable: boolean;\n step?: MarketSwapStep;\n explorerLink?: string;\n error: Error | null;\n erroredStep?: MarketSwapStepKey;\n result?: SubmitSwapResult;\n usedPrice: UseMarketFlowResult[\"usedPrice\"];\n submittedSwapRequest?: UseMarketFlowResult[\"submittedSwapRequest\"];\n tradeFlowType: UseMarketFlowResult[\"tradeFlowType\"];\n};\n\nexport function useMarketSwapStep(\n options: UseMarketFlowInput,\n): UseMarketSwapStepResult {\n const logger = useLogger(\"MarketSwapStep\");\n const marketFlow = useMarketFlow(options);\n\n const startMarketSwap = marketFlow.runMarketSwapFlow;\n const reset = marketFlow.reset;\n const cancelFlow = marketFlow.cancelFlow;\n const retryFlow = marketFlow.retryFlow;\n\n let step: MarketSwapStep | undefined;\n\n const permitSigningHappeningOrNeverHappened =\n // isPending starts as false,\n // so we can use !isPermitSigned to detect if Permit signing is happening or never happened\n marketFlow.signPermit.isPending || !marketFlow.signPermit.isPermitSigned;\n\n const approvalHappeningOrNeverHappened =\n // isPending starts as false,\n // needsApproval && !isSuccess allows to detect approve step right away even then\n marketFlow.approval.isPending || !marketFlow.approval.isSuccess;\n\n const willUsePermit =\n marketFlow.approval.needsApproval &&\n marketFlow.signPermit.isPermitSupported &&\n marketFlow.signPermit.isPermitReadyToSign &&\n !marketFlow.swapBatch.canBatchTxs;\n\n const permitOrApprovalHappeningOrNeverHappened = willUsePermit\n ? permitSigningHappeningOrNeverHappened\n : approvalHappeningOrNeverHappened;\n\n if (\n marketFlow.approval.needsApproval &&\n permitOrApprovalHappeningOrNeverHappened\n ) {\n step = { key: \"signature\", subStep: \"approval-signature\" };\n } else if (\n marketFlow.buildTxParams.isPending ||\n marketFlow.swap.isConfirmingTX ||\n marketFlow.swapBatch.isConfirmingCalls\n ) {\n const permitOrApprovalHappened = !!(\n marketFlow.approval.txHash || marketFlow.signPermit.signature\n );\n\n step = {\n key: \"signature\",\n subStep: permitOrApprovalHappened\n ? \"order-signature\"\n : \"standalone-order-signature\",\n };\n } else if (\n marketFlow.swap.isTxPending ||\n marketFlow.swapBatch.isCallsPending\n ) {\n step = { key: \"swap-tx-execution\" };\n } else if (marketFlow.isPending) {\n // if something is between steps but not clear step,\n // then assume we're at the standalone signature sub-step\n step = { key: \"signature\", subStep: \"standalone-order-signature\" };\n }\n\n const approvalIsStarted =\n step?.key === \"signature\" &&\n step.subStep === \"approval-signature\" &&\n marketFlow.approval.isTxPending;\n\n const inSwapTxConfirmation =\n step?.key === \"signature\" &&\n (step.subStep === \"order-signature\" ||\n step.subStep === \"standalone-order-signature\");\n\n const notYetSwapTxSent =\n step?.key === \"swap-tx-execution\" &&\n !marketFlow.swap.isTxSent &&\n !marketFlow.swapBatch.isCallsSent;\n\n // final tx is not yet sent, there's something to cancel;\n // but some steps are already started so we can't simply dismiss\n const isFlowCancellable =\n approvalIsStarted || inSwapTxConfirmation || notYetSwapTxSent;\n\n // either of the txHashes will be available\n const txHash = marketFlow.swapBatch.txHash || marketFlow.swap.txHash;\n const explorerLink = txHash\n ? constructTxLinkForChain({ chainId: marketFlow.chainId, txHash })\n : undefined;\n\n logger.once.log(\"step\", step, marketFlow, {\n isFlowCancellable,\n explorerLink,\n txHash,\n });\n\n // intentional cancellation is handled separately\n const error = isUserCancelledError(marketFlow.error)\n ? null\n : marketFlow.error;\n\n let erroredStep: MarketSwapStepKey | undefined;\n\n if (marketFlow.isError) {\n if (\n marketFlow.approval.isError ||\n marketFlow.signPermit.isError ||\n marketFlow.buildTxParams.isError ||\n marketFlow.swap.isConfirmingTxError ||\n marketFlow.swapBatch.isConfirmingCallsError\n ) {\n erroredStep = \"signature\";\n } else if (\n marketFlow.swap.isTxAwaitingError ||\n marketFlow.swapBatch.isCallsAwaitingError\n ) {\n erroredStep = \"swap-tx-execution\";\n }\n }\n\n return {\n startMarketSwap,\n reset,\n cancelFlow,\n retryFlow,\n isFlowCancellable,\n step,\n explorerLink,\n error,\n erroredStep,\n result: marketFlow.result,\n usedPrice: marketFlow.usedPrice,\n submittedSwapRequest: marketFlow.submittedSwapRequest,\n tradeFlowType: marketFlow.tradeFlowType,\n };\n}\n"],"names":["useMarketSwapStep","options","$","_c","logger","useLogger","marketFlow","useMarketFlow","startMarketSwap","runMarketSwapFlow","reset","cancelFlow","retryFlow","explorerLink","isFlowCancellable","step","once","permitSigningHappeningOrNeverHappened","signPermit","isPending","isPermitSigned","approvalHappeningOrNeverHappened","approval","isSuccess","willUsePermit","needsApproval","isPermitSupported","isPermitReadyToSign","swapBatch","canBatchTxs","permitOrApprovalHappeningOrNeverHappened","buildTxParams","swap","isConfirmingTX","isConfirmingCalls","permitOrApprovalHappened","txHash","signature","isTxPending","isCallsPending","approvalIsStarted","key","subStep","inSwapTxConfirmation","notYetSwapTxSent","isTxSent","isCallsSent","constructTxLinkForChain","chainId","undefined","log","t0","error","isUserCancelledError","erroredStep","isError","isConfirmingTxError","isConfirmingCallsError","isTxAwaitingError","isCallsAwaitingError","t1","result","submittedSwapRequest","tradeFlowType","usedPrice"],"mappings":"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"}
@@ -28,7 +28,7 @@ const privyConfig = {
28
28
  },
29
29
  // another option is to give an invalid ID,
30
30
  // but then it retries indefinitely
31
- walletConnectCloudProjectId: "9796e40630a6bea7605ac281b0deb939",
31
+ walletConnectCloudProjectId: "7535ce67d223b89670980f2442899904",
32
32
  // Privy doesn't accept const Chain[]
33
33
  supportedChains: chains
34
34
  // defaultChain: chains[0], @TODO set to App's selected chain
@@ -6,7 +6,7 @@ import { isInIframe } from './isInsideSafeIframe.js';
6
6
 
7
7
  const connectors = [
8
8
  walletConnect({
9
- projectId: "9796e40630a6bea7605ac281b0deb939"
9
+ projectId: "7535ce67d223b89670980f2442899904"
10
10
  }),
11
11
  injected(),
12
12
  // metaMask() as CreateConnectorFn, // injected() detects metamask already
package/dist/styles.css CHANGED
@@ -7,6 +7,9 @@
7
7
  --tw-translate-x: 0;
8
8
  --tw-translate-y: 0;
9
9
  --tw-translate-z: 0;
10
+ --tw-scale-x: 1;
11
+ --tw-scale-y: 1;
12
+ --tw-scale-z: 1;
10
13
  --tw-rotate-x: initial;
11
14
  --tw-rotate-y: initial;
12
15
  --tw-rotate-z: initial;
@@ -67,7 +70,7 @@
67
70
  }
68
71
  }
69
72
  }
70
- :root, :host {
73
+ .velora-widget {
71
74
  --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
72
75
  --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
73
76
  --color-red-800: oklch(44.4% .177 26.899);
@@ -326,6 +329,9 @@
326
329
  .velora-widget.velora-widget .collapse {
327
330
  visibility: collapse;
328
331
  }
332
+ .velora-widget.velora-widget .invisible {
333
+ visibility: hidden;
334
+ }
329
335
  .velora-widget.velora-widget .visible {
330
336
  visibility: visible;
331
337
  }
@@ -786,6 +792,9 @@
786
792
  .velora-widget.velora-widget .min-h-\[400px\] {
787
793
  min-height: 400px;
788
794
  }
795
+ .velora-widget.velora-widget .min-h-\[620px\] {
796
+ min-height: 620px;
797
+ }
789
798
  .velora-widget.velora-widget .w-3\.5 {
790
799
  width: calc(var(--spacing) * 3.5);
791
800
  }
@@ -944,6 +953,10 @@
944
953
  --tw-translate-y: calc(-50% - 2px);
945
954
  translate: var(--tw-translate-x) var(--tw-translate-y);
946
955
  }
956
+ .velora-widget.velora-widget .-scale-x-100 {
957
+ --tw-scale-x: calc(100% * -1);
958
+ scale: var(--tw-scale-x) var(--tw-scale-y);
959
+ }
947
960
  .velora-widget.velora-widget .rotate-45 {
948
961
  rotate: 45deg;
949
962
  }
@@ -1082,9 +1095,6 @@
1082
1095
  .velora-widget.velora-widget .gap-\[16px\] {
1083
1096
  gap: 16px;
1084
1097
  }
1085
- .velora-widget.velora-widget .gap-\[22px\] {
1086
- gap: 22px;
1087
- }
1088
1098
  .velora-widget.velora-widget .gap-\[28px\] {
1089
1099
  gap: 28px;
1090
1100
  }
@@ -3063,6 +3073,21 @@
3063
3073
  inherits: false;
3064
3074
  initial-value: 0;
3065
3075
  }
3076
+ @property --tw-scale-x {
3077
+ syntax: "*";
3078
+ inherits: false;
3079
+ initial-value: 1;
3080
+ }
3081
+ @property --tw-scale-y {
3082
+ syntax: "*";
3083
+ inherits: false;
3084
+ initial-value: 1;
3085
+ }
3086
+ @property --tw-scale-z {
3087
+ syntax: "*";
3088
+ inherits: false;
3089
+ initial-value: 1;
3090
+ }
3066
3091
  @property --tw-rotate-x {
3067
3092
  syntax: "*";
3068
3093
  inherits: false
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@velora-dex/widget",
3
- "version": "0.2.5-dev.13",
3
+ "version": "0.2.5-dev.14",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "files": [
@@ -74,7 +74,7 @@
74
74
  "@tanstack/react-pacer": "^0.14.0",
75
75
  "@tanstack/react-virtual": "^3.13.12",
76
76
  "@uniswap/token-lists": "1.0.0-beta.34",
77
- "@velora-dex/sdk": "9.3.0-dev.1",
77
+ "@velora-dex/sdk": "9.3.0",
78
78
  "@wagmi/core": "^2.18.1",
79
79
  "axios": "^1.11.0",
80
80
  "big.js": "^7.0.1",
@@ -90,6 +90,7 @@
90
90
  "jotai-scope": "^0.10.0",
91
91
  "jotai-tanstack-query": "^0.11.0",
92
92
  "lucide-react": "^0.536.0",
93
+ "motion": "^12.24.11",
93
94
  "react-compiler-runtime": "1.0.0",
94
95
  "react-error-boundary": "^6.0.0",
95
96
  "react-number-format": "^5.4.4",