@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.
- package/dist/components/web3/providers.d.ts +2 -1
- package/dist/components/web3/providers.d.ts.map +1 -1
- package/dist/components/web3/providers.js +65 -10
- package/dist/components/web3/providers.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/Drawers.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/Controls.d.ts +3 -3
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/Controls.d.ts.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/Controls.js +96 -68
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/Controls.js.map +1 -1
- package/dist/components/widget/OtcOrderItem/OtcOrderDetails/Controls.d.ts.map +1 -1
- package/dist/components/widget/OtcOrderItem/OtcOrderDetails/Controls.js +94 -66
- package/dist/components/widget/OtcOrderItem/OtcOrderDetails/Controls.js.map +1 -1
- package/dist/components/widget/ReceiverAddress/state/subscriptions.d.ts.map +1 -1
- package/dist/components/widget/ReceiverAddress/state/subscriptions.js +8 -0
- package/dist/components/widget/ReceiverAddress/state/subscriptions.js.map +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcControls.d.ts +2 -2
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcControls.d.ts.map +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcControls.js +115 -46
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcControls.js.map +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcReviewAndConfirm.d.ts.map +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcReviewAndConfirm.js +41 -35
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcReviewAndConfirm.js.map +1 -1
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts +2 -2
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js +31 -25
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeError/utils.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TradeError/utils.js +5 -0
- package/dist/components/widget/TradeOverview/TradeError/utils.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverview.js +12 -11
- package/dist/components/widget/TradeOverview/TradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverviewFooter.d.ts +3 -2
- package/dist/components/widget/TradeOverview/TradeOverviewFooter.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverviewFooter.js +50 -42
- package/dist/components/widget/TradeOverview/TradeOverviewFooter.js.map +1 -1
- package/dist/configurator/Configurator.d.ts.map +1 -1
- package/dist/core/Updaters.d.ts.map +1 -1
- package/dist/core/Updaters.js +2 -0
- package/dist/core/Updaters.js.map +1 -1
- package/dist/core/button/hooks/useWidgetButtonExtraProps.d.ts.map +1 -1
- package/dist/core/button/hooks/useWidgetButtonExtraProps.js +4 -5
- package/dist/core/button/hooks/useWidgetButtonExtraProps.js.map +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +38 -11
- package/dist/core/index.js.map +1 -1
- package/dist/core/screen/hooks/useInitialValue.d.ts +2 -0
- package/dist/core/screen/hooks/useInitialValue.d.ts.map +1 -0
- package/dist/core/screen/hooks/useInitialValue.js +9 -0
- package/dist/core/screen/hooks/useInitialValue.js.map +1 -0
- package/dist/core/screen/hooks/useOnClickOutside.d.ts.map +1 -1
- package/dist/core/screen/hooks/useOnClickOutside.js +9 -4
- package/dist/core/screen/hooks/useOnClickOutside.js.map +1 -1
- package/dist/events/hooks/useOnWalletConnect.d.ts.map +1 -1
- package/dist/events/hooks/useOnWalletConnect.js +4 -0
- package/dist/events/hooks/useOnWalletConnect.js.map +1 -1
- package/dist/hooks/otc/mutations/useFillOrder.js +3 -2
- package/dist/hooks/otc/mutations/useFillOrder.js.map +1 -1
- package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.d.ts.map +1 -1
- package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.js +19 -2
- package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.js.map +1 -1
- package/dist/hooks/otc/tradeFlow/useOtcOrderStep.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.d.ts +28 -0
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/mutations/{useCancelLimitDeltaOrders.js → useCancelDeltaOrders.js} +5 -5
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js.map +1 -0
- package/dist/hooks/swap/prices/delta/orders/types.d.ts +1 -1
- package/dist/hooks/swap/prices/delta/orders/types.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/utils.d.ts +3 -0
- package/dist/hooks/swap/prices/delta/orders/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/utils.js +6 -3
- package/dist/hooks/swap/prices/delta/orders/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/errors.d.ts +10 -0
- package/dist/hooks/swap/prices/delta/queries/errors.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/errors.js +21 -0
- package/dist/hooks/swap/prices/delta/queries/errors.js.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js +7 -4
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +10 -0
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +70 -10
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.d.ts +2 -0
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js +42 -23
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js +22 -5
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js.map +1 -1
- package/dist/hooks/txs/queries/useAwaitTx.d.ts.map +1 -1
- package/dist/hooks/txs/queries/useAwaitTx.js +75 -18
- package/dist/hooks/txs/queries/useAwaitTx.js.map +1 -1
- package/dist/hooks/useChainMatches.d.ts +7 -0
- package/dist/hooks/useChainMatches.d.ts.map +1 -0
- package/dist/hooks/useChainMatches.js +31 -0
- package/dist/hooks/useChainMatches.js.map +1 -0
- package/dist/hooks/useMinViemClient.d.ts +16 -0
- package/dist/hooks/useMinViemClient.d.ts.map +1 -1
- package/dist/hooks/useMinViemClient.js +62 -7
- package/dist/hooks/useMinViemClient.js.map +1 -1
- package/dist/hooks/useSwitchChainWithGuard.d.ts +12 -0
- package/dist/hooks/useSwitchChainWithGuard.d.ts.map +1 -0
- package/dist/hooks/useSwitchChainWithGuard.js +70 -0
- package/dist/hooks/useSwitchChainWithGuard.js.map +1 -0
- package/dist/lib/web3/privy/config.js +1 -1
- package/dist/lib/web3/wagmi/config.js +1 -1
- package/dist/lib/web3/wagmi/transports.js +1 -1
- package/dist/lib/web3/wagmi/transports.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/transactions/queries/ensureTxReceipt.d.ts +2 -1
- package/dist/transactions/queries/ensureTxReceipt.d.ts.map +1 -1
- package/dist/transactions/queries/ensureTxReceipt.js +22 -26
- package/dist/transactions/queries/ensureTxReceipt.js.map +1 -1
- package/dist/transactions/state/effects/finalize.d.ts +1 -1
- package/dist/transactions/state/effects/finalize.js +2 -2
- package/dist/transactions/state/effects/finalize.js.map +1 -1
- package/dist/transactions/state/hooks/useActivateEffects.js +2 -2
- package/dist/transactions/state/hooks/useActivateEffects.js.map +1 -1
- package/dist/transactions/state/transactionsActionAtom.js.map +1 -1
- package/package.json +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelLimitDeltaOrders.d.ts +0 -28
- package/dist/hooks/swap/prices/delta/mutations/useCancelLimitDeltaOrders.d.ts.map +0 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelLimitDeltaOrders.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWatchDeltaOrder.js","sources":["../../../../../../src/hooks/swap/prices/delta/queries/useWatchDeltaOrder.ts"],"sourcesContent":["import {\n QueryObserver,\n useQueries,\n useQuery,\n useQueryClient,\n type QueryMeta,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport { useLayoutEffect, useMemo, useRef } from \"react\";\nimport { assert, type MarkOptional } from \"ts-essentials\";\nimport { useDeltaSDK } from \"@/hooks/useSDK\";\nimport type { DeltaOrderFromAPI } from \"./useDeltaOrders\";\nimport {\n isMetaWithTimeStart,\n type BridgedDepositResponseFailure,\n type BridgedDepositResponseSuccess,\n type GetBridgedDepositStatusInput,\n type RefetchMetaWithTiming,\n} from \"../bridge/utils\";\nimport type { BridgedDepositResponse } from \"../bridge/types\";\nimport { useBridgedDepositStatus } from \"../bridge/useBridgedDeposit\";\nimport type { DeltaAuction } from \"@velora-dex/sdk\";\nimport {\n DeltaOrderStatusChecker,\n isExecutedDeltaAuction,\n isFailedDeltaAuction,\n isDeltaAuctionExpired,\n} from \"../orders/utils\";\nimport type { ExecutedDeltaAuction, FailedDeltaAuction } from \"../orders/types\";\nimport { getLogger, useLogger } from \"@/core/logger\";\n\n// ------------------------------------ Single Delta Auction -----------------------------------\n\nconst SINGLE_DELTA_AUCTION_QUERY_KEY_PREFIX = \"single_delta_auction\";\ntype SingleDeltaAuctionQueryKey = [\n base: typeof SINGLE_DELTA_AUCTION_QUERY_KEY_PREFIX,\n orderId?: string,\n];\n\nexport function deltaAuctionPollingQueryKey({\n orderId,\n}: {\n orderId?: string;\n} = {}): SingleDeltaAuctionQueryKey {\n return [SINGLE_DELTA_AUCTION_QUERY_KEY_PREFIX, orderId] as const;\n}\n\nexport type MaybeVeloraDeltaAuction = DeltaOrderFromAPI | null; // null is when no such Order for orderId\n\ntype UseDeltaAuctionQueryOptions<TData = MaybeVeloraDeltaAuction> =\n UseQueryOptions<\n MaybeVeloraDeltaAuction,\n Error,\n TData,\n SingleDeltaAuctionQueryKey\n >;\n\nconst DELTA_ORDER_POLLING_INTERVAL = 3_000;\n\ntype ConstructDeltaAuctionPollingQueryOptionsInput = {\n orderId?: string;\n enabled?: boolean;\n getAuction(\n orderId: string,\n requestParams: { signal?: AbortSignal }\n ): Promise<MaybeVeloraDeltaAuction>;\n} & Pick<\n UseWatchMultiDeltaAuctions,\n | \"onAuctionSuccess\"\n | \"onAuctionFailure\"\n | \"onUpdatedAuction\"\n | \"onTimeoutGettingOrder\"\n>;\n\nconst LOOK_FOR_ORDER_TIMEOUT = 60_000;\n\nfunction constructDeltaAuctionPollingQueryOptions({\n orderId,\n enabled = true,\n getAuction,\n onUpdatedAuction,\n onAuctionSuccess,\n onAuctionFailure,\n onTimeoutGettingOrder,\n}: ConstructDeltaAuctionPollingQueryOptionsInput): Pick<\n UseDeltaAuctionQueryOptions<MaybeVeloraDeltaAuction>,\n \"queryKey\" | \"queryFn\" | \"meta\" | \"refetchInterval\" | \"enabled\"\n> {\n const doneState = false;\n\n const isMetaWithDoneState = (\n queryMeta: QueryMeta\n ): queryMeta is { doneState: boolean } => {\n return \"doneState\" in queryMeta && typeof queryMeta.doneState === \"boolean\";\n };\n\n // queryOptions has to be memoized, otherwise queryMeta is updated on each render,\n // including startedQueryAt\n const meta: RefetchMetaWithTiming & {\n doneState: boolean;\n } = {\n startedQueryAt: Date.now(),\n doneState,\n };\n\n return {\n queryKey: deltaAuctionPollingQueryKey({ orderId }),\n queryFn: ({ signal }) => {\n assert(orderId, \"orderId is required\");\n return getAuction(orderId, { signal });\n },\n meta,\n refetchInterval: (query) => {\n const maybeOrder = query.state.data;\n\n const queryMeta = query.options.meta;\n // refetchInterval is called on each render, regardless of queryOptions memoizations.\n // @TODO rework Watch Order logic to avoid callbacks inside refetchInterval,\n // or do away with these callbacks, they are unused currently.\n const isWithDoneState = !!queryMeta && isMetaWithDoneState(queryMeta);\n if (isWithDoneState && queryMeta.doneState) {\n getLogger(\"DeltaAuctionPollingQueryOptions\").log(\n \"Shortcut return for refetchInterval\"\n );\n return false;\n }\n\n // Order could have an updated status during its lifecycle\n if (maybeOrder) onUpdatedAuction?.(maybeOrder);\n\n // Order done with one way or the other\n if (\n maybeOrder &&\n DeltaOrderStatusChecker.completed.has(maybeOrder.status)\n ) {\n // Crosschain Orders are considered executed when both srcChain and destChain are executed\n if (isExecutedDeltaAuction(maybeOrder)) {\n onAuctionSuccess?.(maybeOrder);\n if (isWithDoneState) {\n queryMeta.doneState = true;\n }\n return false; // stop polling\n }\n if (\n isFailedDeltaAuction(maybeOrder) ||\n isDeltaAuctionExpired(maybeOrder)\n ) {\n onAuctionFailure?.(maybeOrder);\n if (isWithDoneState) {\n queryMeta.doneState = true;\n }\n return false; // stop polling\n }\n }\n\n if (maybeOrder === null && queryMeta && isMetaWithTimeStart(queryMeta)) {\n // no Order for this orderId for a long time\n const elapsed = Date.now() - queryMeta.startedQueryAt;\n if (elapsed > LOOK_FOR_ORDER_TIMEOUT) {\n assert(orderId, \"orderId is required\");\n onTimeoutGettingOrder?.({ id: orderId });\n if (isWithDoneState) {\n queryMeta.doneState = true;\n }\n return false; // stop polling after 1 minute\n }\n }\n\n return DELTA_ORDER_POLLING_INTERVAL; // default interval for both crosschain and singlechain Orders\n },\n enabled: !!orderId && enabled,\n };\n}\n\n// ----------------- Single Delta Query -----------------------------------\n\ntype UseWatchDeltaAuctionQueryInput = {\n orderId?: string;\n enabled?: boolean;\n onAuctionSuccess?: (auction: ExecutedDeltaAuction) => void;\n onAuctionFailure?: (auction: FailedDeltaAuction) => void;\n onUpdatedAuction?: (auction: MarkOptional<DeltaAuction, \"signature\">) => void;\n onTimeoutGettingOrder?: (auction: Pick<DeltaAuction, \"id\">) => void;\n};\n\nexport function useWatchDeltaAuction({\n orderId,\n enabled = true,\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n}: UseWatchDeltaAuctionQueryInput): UseQueryResult<MaybeVeloraDeltaAuction> {\n const { sdk } = useDeltaSDK({ chainId: 1 }); // chain doesn't matter\n\n const callbacksRef = useRef({\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n });\n\n useLayoutEffect(() => {\n callbacksRef.current = {\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n };\n }, [\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n ]);\n\n const queryOptions = useMemo(() => {\n /* eslint-disable react-hooks/refs */\n return constructDeltaAuctionPollingQueryOptions({\n orderId,\n enabled,\n getAuction: sdk.getDeltaOrderById,\n onUpdatedAuction: callbacksRef.current.onUpdatedAuction,\n onAuctionSuccess: callbacksRef.current.onAuctionSuccess,\n onAuctionFailure: callbacksRef.current.onAuctionFailure,\n onTimeoutGettingOrder: callbacksRef.current.onTimeoutGettingOrder,\n });\n /* eslint-enable react-hooks/refs */\n }, [orderId, enabled, sdk.getDeltaOrderById]);\n\n return useQuery<\n MaybeVeloraDeltaAuction,\n Error,\n MaybeVeloraDeltaAuction,\n SingleDeltaAuctionQueryKey\n >(queryOptions);\n}\n\ntype EnsureOrderExecutedFn = (options: {\n orderId: string;\n signal?: AbortSignal;\n}) => Promise<MaybeVeloraDeltaAuction>;\n\nexport function useEnsureDeltaOrderExecuted({\n onAuctionSuccess,\n onAuctionFailure,\n}: Pick<\n UseWatchDeltaAuctionQueryInput,\n \"onAuctionSuccess\" | \"onAuctionFailure\"\n> = {}): EnsureOrderExecutedFn {\n const queryClient = useQueryClient();\n const logger = useLogger(\"EnsureDeltaOrderExecuted\");\n const { sdk } = useDeltaSDK({ chainId: 1 }); // chain doesn't matter\n\n const ensureOrderSent: EnsureOrderExecutedFn = async ({\n orderId,\n signal,\n }): Promise<MaybeVeloraDeltaAuction> => {\n const queryKey: SingleDeltaAuctionQueryKey = deltaAuctionPollingQueryKey({\n orderId,\n });\n\n const queryOptions = constructDeltaAuctionPollingQueryOptions({\n orderId,\n enabled: true,\n getAuction: sdk.getDeltaOrderById,\n });\n\n const observer = new QueryObserver<\n MaybeVeloraDeltaAuction,\n Error,\n MaybeVeloraDeltaAuction,\n MaybeVeloraDeltaAuction,\n SingleDeltaAuctionQueryKey\n >(queryClient, queryOptions);\n\n const promise = new Promise<MaybeVeloraDeltaAuction>((resolve, reject) => {\n const startedQueryAt = Date.now();\n\n // don't leave the promise and therefore the observer hanging,\n // observer has its own stop-refetching logic in refetchIterval,\n // but this is an extra failsafe\n let timeout: NodeJS.Timeout | null = setTimeout(() => {\n logger.log(\"QueryObserver\", queryKey, \"timeout\");\n unsubscribe();\n reject(new Error(`Order ${orderId} not found`));\n }, LOOK_FOR_ORDER_TIMEOUT + 1000); // a bit of jitter time\n\n signal?.addEventListener(\"abort\", () => {\n if (timeout) {\n clearTimeout(timeout);\n }\n unsubscribe();\n reject(new Error(`Order execution aborted: ${signal.reason}`));\n });\n\n const unsubscribe = observer.subscribe((result) => {\n const cleanup = () => {\n logger.log(\"QueryObserver\", queryKey, \"cleanup\");\n unsubscribe();\n };\n\n logger.log(\"QueryObserver\", queryKey, result);\n\n const maybeOrder = result.data;\n\n if (maybeOrder && timeout !== null) {\n // Order fetched at least once\n clearTimeout(timeout);\n timeout = null;\n }\n\n // Order done with one way or the other\n if (\n maybeOrder &&\n DeltaOrderStatusChecker.completed.has(maybeOrder.status)\n ) {\n // Crosschain Orders are considered executed when both srcChain and destChain are executed\n if (isExecutedDeltaAuction(maybeOrder)) {\n onAuctionSuccess?.(maybeOrder);\n cleanup();\n resolve(maybeOrder);\n return;\n }\n if (\n isFailedDeltaAuction(maybeOrder) ||\n isDeltaAuctionExpired(maybeOrder)\n ) {\n onAuctionFailure?.(maybeOrder);\n cleanup();\n reject(maybeOrder);\n return;\n }\n }\n\n if (maybeOrder === null) {\n // no Order for this orderId for a long time\n const elapsed = Date.now() - startedQueryAt;\n if (elapsed > LOOK_FOR_ORDER_TIMEOUT) {\n cleanup();\n reject(new Error(`Order ${orderId} not found`));\n return;\n }\n }\n if (result.error) {\n cleanup();\n reject(result.error);\n return;\n }\n });\n });\n\n return promise;\n };\n\n return ensureOrderSent;\n}\n\n// ----------------- Multi Delta Queries -----------------------------------\n\ntype UseWatchMultiDeltaAuctions = {\n orderIds: string[];\n enabled?: boolean;\n onAuctionSuccess?: (auction: ExecutedDeltaAuction) => void;\n onAuctionFailure?: (auction: FailedDeltaAuction) => void;\n onUpdatedAuction?: (auction: MarkOptional<DeltaAuction, \"signature\">) => void;\n onTimeoutGettingOrder?: (auction: Pick<DeltaAuction, \"id\">) => void;\n};\n\nexport function useWatchMultiDeltaAuctions({\n orderIds,\n enabled = true,\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n}: UseWatchMultiDeltaAuctions): UseQueryResult<MaybeVeloraDeltaAuction>[] {\n const { sdk } = useDeltaSDK({ chainId: 1 }); // chain doesn't matter\n\n const callbacksRef = useRef({\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n });\n\n useLayoutEffect(() => {\n callbacksRef.current = {\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n };\n }, [\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n ]);\n\n const queries = useMemo<\n UseDeltaAuctionQueryOptions<MaybeVeloraDeltaAuction>[]\n >(\n () =>\n orderIds.map(\n /* eslint-disable react-hooks/refs */\n (orderId) =>\n constructDeltaAuctionPollingQueryOptions({\n orderId,\n enabled,\n getAuction: sdk.getDeltaOrderById,\n onUpdatedAuction: callbacksRef.current.onUpdatedAuction,\n onAuctionSuccess: callbacksRef.current.onAuctionSuccess,\n onAuctionFailure: callbacksRef.current.onAuctionFailure,\n onTimeoutGettingOrder: callbacksRef.current.onTimeoutGettingOrder,\n })\n /* eslint-enable react-hooks/refs */\n ),\n [enabled, orderIds, sdk.getDeltaOrderById]\n );\n\n const auctionsResults = useQueries({ queries });\n\n return auctionsResults;\n}\n\ntype MultiOrdersStatusCrossChainInput = {\n orders: DeltaOrderFromAPI[];\n onAuctionSuccess?: (order: DeltaOrderFromAPI) => void;\n onAuctionFailure?: (order: DeltaOrderFromAPI) => void;\n onUpdatedAuction?: (\n auction: MarkOptional<DeltaAuction, \"signature\">,\n bridgeResponse: BridgedDepositResponse\n ) => void;\n};\n\n// can be used for checking Crosschain Order status checking\n// if status check from API is slow to update\nexport function useWatchMultiOrdersStatusCrossChain({\n orders,\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n}: MultiOrdersStatusCrossChainInput): UseQueryResult<BridgedDepositResponse>[] {\n const { deposits, onNewResponse, onDepositSuccess, onDepositFailure } =\n useMemo(() => {\n const { deposits, depositId2Order } = orders.reduce<{\n deposits: GetBridgedDepositStatusInput[];\n depositId2Order: Record<string, DeltaOrderFromAPI>;\n }>(\n (acc, order) => {\n if (order.bridgeMetadata?.depositId) {\n acc.deposits.push({\n depositId: String(order.bridgeMetadata.depositId),\n originChainId: order.chainId,\n });\n acc.depositId2Order[order.bridgeMetadata.depositId] = order;\n }\n return acc;\n },\n { deposits: [], depositId2Order: {} }\n );\n const onNewResponse = (response: BridgedDepositResponse) => {\n const order = depositId2Order[response.depositId];\n if (order) {\n onUpdatedAuction?.(order, response);\n }\n };\n\n const onDepositSuccess = onAuctionSuccess\n ? (deposit: BridgedDepositResponseSuccess) => {\n const order = depositId2Order[deposit.depositId];\n if (order) {\n const successfulOrder = {\n ...order,\n bridgeStatus: deposit.status,\n bridgeMetadata: {\n ...order.bridgeMetadata,\n fillTx: deposit.fillTx,\n },\n } as DeltaOrderFromAPI; // order.bridgeMetadata should be filled but not according to types\n onAuctionSuccess(successfulOrder);\n }\n }\n : undefined;\n\n const onDepositFailure = onAuctionFailure\n ? (deposit: BridgedDepositResponseFailure) => {\n const order = depositId2Order[deposit.depositId];\n if (order) {\n const failedOrder = {\n ...order,\n bridgeStatus: deposit.status,\n bridgeMetadata: {\n ...order.bridgeMetadata,\n fillTx: deposit.fillTx || undefined,\n },\n } as DeltaOrderFromAPI; // order.bridgeMetadata should be filled but not according to types\n onAuctionFailure(failedOrder);\n }\n }\n : undefined;\n\n return { deposits, onNewResponse, onDepositSuccess, onDepositFailure };\n }, [orders, onAuctionSuccess, onAuctionFailure, onUpdatedAuction]);\n\n const depositStatuses = useBridgedDepositStatus({\n deposits,\n onNewResponse,\n onDepositSuccess,\n onDepositFailure,\n });\n\n return depositStatuses;\n}\n"],"names":["SINGLE_DELTA_AUCTION_QUERY_KEY_PREFIX","deltaAuctionPollingQueryKey","orderId","DELTA_ORDER_POLLING_INTERVAL","LOOK_FOR_ORDER_TIMEOUT","constructDeltaAuctionPollingQueryOptions","enabled","getAuction","onUpdatedAuction","onAuctionSuccess","onAuctionFailure","onTimeoutGettingOrder","doneState","isMetaWithDoneState","queryMeta","meta","startedQueryAt","Date","now","queryKey","queryFn","signal","assert","refetchInterval","query","maybeOrder","state","data","options","isWithDoneState","getLogger","log","DeltaOrderStatusChecker","completed","has","status","isExecutedDeltaAuction","isFailedDeltaAuction","isDeltaAuctionExpired","isMetaWithTimeStart","elapsed","id","useWatchDeltaAuction","sdk","useDeltaSDK","chainId","callbacksRef","useRef","useLayoutEffect","current","queryOptions","useMemo","getDeltaOrderById","useQuery","useEnsureDeltaOrderExecuted","t0","$","_c","t1","undefined","queryClient","useQueryClient","logger","useLogger","t2","Symbol","for","t3","t4","observer","QueryObserver","promise","Promise","resolve","reject","timeout","setTimeout","unsubscribe","Error","addEventListener","clearTimeout","reason","subscribe","result","cleanup","error","ensureOrderSent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useWatchDeltaOrder.js","sources":["../../../../../../src/hooks/swap/prices/delta/queries/useWatchDeltaOrder.ts"],"sourcesContent":["import {\n QueryObserver,\n useQueries,\n useQuery,\n useQueryClient,\n type QueryMeta,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport { useLayoutEffect, useMemo, useRef } from \"react\";\nimport { assert, type MarkOptional } from \"ts-essentials\";\nimport { useDeltaSDK } from \"@/hooks/useSDK\";\nimport type { DeltaOrderFromAPI } from \"./useDeltaOrders\";\nimport {\n isMetaWithTimeStart,\n type BridgedDepositResponseFailure,\n type BridgedDepositResponseSuccess,\n type GetBridgedDepositStatusInput,\n type RefetchMetaWithTiming,\n} from \"../bridge/utils\";\nimport type { BridgedDepositResponse } from \"../bridge/types\";\nimport { useBridgedDepositStatus } from \"../bridge/useBridgedDeposit\";\nimport type { DeltaAuction } from \"@velora-dex/sdk\";\nimport {\n DeltaOrderStatusChecker,\n isExecutedDeltaAuction,\n isFailedDeltaAuction,\n isDeltaAuctionExpired,\n isCanceledDeltaAuction,\n} from \"../orders/utils\";\nimport type { ExecutedDeltaAuction, FailedDeltaAuction } from \"../orders/types\";\nimport { getLogger, useLogger } from \"@/core/logger\";\nimport { DeltaOrderFailedError } from \"./errors\";\n\n// ------------------------------------ Single Delta Auction -----------------------------------\n\nconst SINGLE_DELTA_AUCTION_QUERY_KEY_PREFIX = \"single_delta_auction\";\ntype SingleDeltaAuctionQueryKey = [\n base: typeof SINGLE_DELTA_AUCTION_QUERY_KEY_PREFIX,\n orderId?: string,\n];\n\nexport function deltaAuctionPollingQueryKey({\n orderId,\n}: {\n orderId?: string;\n} = {}): SingleDeltaAuctionQueryKey {\n return [SINGLE_DELTA_AUCTION_QUERY_KEY_PREFIX, orderId] as const;\n}\n\nexport type MaybeVeloraDeltaAuction = DeltaOrderFromAPI | null; // null is when no such Order for orderId\n\ntype UseDeltaAuctionQueryOptions<TData = MaybeVeloraDeltaAuction> =\n UseQueryOptions<\n MaybeVeloraDeltaAuction,\n Error,\n TData,\n SingleDeltaAuctionQueryKey\n >;\n\nconst DELTA_ORDER_POLLING_INTERVAL = 3_000;\n\ntype ConstructDeltaAuctionPollingQueryOptionsInput = {\n orderId?: string;\n enabled?: boolean;\n getAuction(\n orderId: string,\n requestParams: { signal?: AbortSignal }\n ): Promise<MaybeVeloraDeltaAuction>;\n} & Pick<\n UseWatchMultiDeltaAuctions,\n | \"onAuctionSuccess\"\n | \"onAuctionFailure\"\n | \"onUpdatedAuction\"\n | \"onTimeoutGettingOrder\"\n>;\n\nconst LOOK_FOR_ORDER_TIMEOUT = 60_000;\n\nfunction constructDeltaAuctionPollingQueryOptions({\n orderId,\n enabled = true,\n getAuction,\n onUpdatedAuction,\n onAuctionSuccess,\n onAuctionFailure,\n onTimeoutGettingOrder,\n}: ConstructDeltaAuctionPollingQueryOptionsInput): Pick<\n UseDeltaAuctionQueryOptions<MaybeVeloraDeltaAuction>,\n \"queryKey\" | \"queryFn\" | \"meta\" | \"refetchInterval\" | \"enabled\"\n> {\n const doneState = false;\n\n const isMetaWithDoneState = (\n queryMeta: QueryMeta\n ): queryMeta is { doneState: boolean } => {\n return \"doneState\" in queryMeta && typeof queryMeta.doneState === \"boolean\";\n };\n\n // queryOptions has to be memoized, otherwise queryMeta is updated on each render,\n // including startedQueryAt\n const meta: RefetchMetaWithTiming & {\n doneState: boolean;\n } = {\n startedQueryAt: Date.now(),\n doneState,\n };\n\n return {\n queryKey: deltaAuctionPollingQueryKey({ orderId }),\n queryFn: ({ signal }) => {\n assert(orderId, \"orderId is required\");\n return getAuction(orderId, { signal });\n },\n meta,\n refetchInterval: (query) => {\n const maybeOrder = query.state.data;\n\n const queryMeta = query.options.meta;\n // refetchInterval is called on each render, regardless of queryOptions memoizations.\n // @TODO rework Watch Order logic to avoid callbacks inside refetchInterval,\n // or do away with these callbacks, they are unused currently.\n const isWithDoneState = !!queryMeta && isMetaWithDoneState(queryMeta);\n if (isWithDoneState && queryMeta.doneState) {\n getLogger(\"DeltaAuctionPollingQueryOptions\").log(\n \"Shortcut return for refetchInterval\"\n );\n return false;\n }\n\n // Order could have an updated status during its lifecycle\n if (maybeOrder) onUpdatedAuction?.(maybeOrder);\n\n // Order done with one way or the other\n if (\n maybeOrder &&\n DeltaOrderStatusChecker.completed.has(maybeOrder.status)\n ) {\n // Crosschain Orders are considered executed when both srcChain and destChain are executed\n if (isExecutedDeltaAuction(maybeOrder)) {\n onAuctionSuccess?.(maybeOrder);\n if (isWithDoneState) {\n queryMeta.doneState = true;\n }\n return false; // stop polling\n }\n if (\n isFailedDeltaAuction(maybeOrder) ||\n isDeltaAuctionExpired(maybeOrder) ||\n isCanceledDeltaAuction(maybeOrder)\n ) {\n onAuctionFailure?.(maybeOrder);\n if (isWithDoneState) {\n queryMeta.doneState = true;\n }\n return false; // stop polling\n }\n }\n\n if (maybeOrder === null && queryMeta && isMetaWithTimeStart(queryMeta)) {\n // no Order for this orderId for a long time\n const elapsed = Date.now() - queryMeta.startedQueryAt;\n if (elapsed > LOOK_FOR_ORDER_TIMEOUT) {\n assert(orderId, \"orderId is required\");\n onTimeoutGettingOrder?.({ id: orderId });\n if (isWithDoneState) {\n queryMeta.doneState = true;\n }\n return false; // stop polling after 1 minute\n }\n }\n\n return DELTA_ORDER_POLLING_INTERVAL; // default interval for both crosschain and singlechain Orders\n },\n enabled: !!orderId && enabled,\n };\n}\n\n// ----------------- Single Delta Query -----------------------------------\n\ntype UseWatchDeltaAuctionQueryInput = {\n orderId?: string;\n enabled?: boolean;\n onAuctionSuccess?: (auction: ExecutedDeltaAuction) => void;\n onAuctionFailure?: (auction: FailedDeltaAuction) => void;\n onUpdatedAuction?: (auction: MarkOptional<DeltaAuction, \"signature\">) => void;\n onTimeoutGettingOrder?: (auction: Pick<DeltaAuction, \"id\">) => void;\n};\n\nexport function useWatchDeltaAuction({\n orderId,\n enabled = true,\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n}: UseWatchDeltaAuctionQueryInput): UseQueryResult<MaybeVeloraDeltaAuction> {\n const { sdk } = useDeltaSDK({ chainId: 1 }); // chain doesn't matter\n\n const callbacksRef = useRef({\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n });\n\n useLayoutEffect(() => {\n callbacksRef.current = {\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n };\n }, [\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n ]);\n\n const queryOptions = useMemo(() => {\n /* eslint-disable react-hooks/refs */\n return constructDeltaAuctionPollingQueryOptions({\n orderId,\n enabled,\n getAuction: sdk.getDeltaOrderById,\n onUpdatedAuction: callbacksRef.current.onUpdatedAuction,\n onAuctionSuccess: callbacksRef.current.onAuctionSuccess,\n onAuctionFailure: callbacksRef.current.onAuctionFailure,\n onTimeoutGettingOrder: callbacksRef.current.onTimeoutGettingOrder,\n });\n /* eslint-enable react-hooks/refs */\n }, [orderId, enabled, sdk.getDeltaOrderById]);\n\n return useQuery<\n MaybeVeloraDeltaAuction,\n Error,\n MaybeVeloraDeltaAuction,\n SingleDeltaAuctionQueryKey\n >(queryOptions);\n}\n\ntype EnsureOrderExecutedFn = (options: {\n orderId: string;\n signal?: AbortSignal;\n}) => Promise<MaybeVeloraDeltaAuction>;\n\nexport function useEnsureDeltaOrderExecuted({\n onAuctionSuccess,\n onAuctionFailure,\n}: Pick<\n UseWatchDeltaAuctionQueryInput,\n \"onAuctionSuccess\" | \"onAuctionFailure\"\n> = {}): EnsureOrderExecutedFn {\n const queryClient = useQueryClient();\n const logger = useLogger(\"EnsureDeltaOrderExecuted\");\n const { sdk } = useDeltaSDK({ chainId: 1 }); // chain doesn't matter\n\n const ensureOrderSent: EnsureOrderExecutedFn = async ({\n orderId,\n signal,\n }): Promise<MaybeVeloraDeltaAuction> => {\n const queryKey: SingleDeltaAuctionQueryKey = deltaAuctionPollingQueryKey({\n orderId,\n });\n\n const queryOptions = constructDeltaAuctionPollingQueryOptions({\n orderId,\n enabled: true,\n getAuction: sdk.getDeltaOrderById,\n });\n\n const observer = new QueryObserver<\n MaybeVeloraDeltaAuction,\n Error,\n MaybeVeloraDeltaAuction,\n MaybeVeloraDeltaAuction,\n SingleDeltaAuctionQueryKey\n >(queryClient, queryOptions);\n\n const promise = new Promise<MaybeVeloraDeltaAuction>((resolve, reject) => {\n const startedQueryAt = Date.now();\n\n // don't leave the promise and therefore the observer hanging,\n // observer has its own stop-refetching logic in refetchIterval,\n // but this is an extra failsafe\n let timeout: NodeJS.Timeout | null = setTimeout(() => {\n logger.log(\"QueryObserver\", queryKey, \"timeout\");\n unsubscribe();\n reject(new Error(`Order ${orderId} not found`));\n }, LOOK_FOR_ORDER_TIMEOUT + 1000); // a bit of jitter time\n\n signal?.addEventListener(\"abort\", () => {\n if (timeout) {\n clearTimeout(timeout);\n }\n unsubscribe();\n reject(new Error(`Order execution aborted: ${signal.reason}`));\n });\n\n const unsubscribe = observer.subscribe((result) => {\n const cleanup = () => {\n logger.log(\"QueryObserver\", queryKey, \"cleanup\");\n unsubscribe();\n };\n\n logger.log(\"QueryObserver\", queryKey, result);\n\n const maybeOrder = result.data;\n\n if (maybeOrder && timeout !== null) {\n // Order fetched at least once\n clearTimeout(timeout);\n timeout = null;\n }\n\n // Order done with one way or the other\n if (\n maybeOrder &&\n DeltaOrderStatusChecker.completed.has(maybeOrder.status)\n ) {\n // Crosschain Orders are considered executed when both srcChain and destChain are executed\n if (isExecutedDeltaAuction(maybeOrder)) {\n onAuctionSuccess?.(maybeOrder);\n cleanup();\n resolve(maybeOrder);\n return;\n }\n if (\n isFailedDeltaAuction(maybeOrder) ||\n isDeltaAuctionExpired(maybeOrder) ||\n isCanceledDeltaAuction(maybeOrder)\n ) {\n onAuctionFailure?.(maybeOrder);\n cleanup();\n reject(\n new DeltaOrderFailedError({\n order: maybeOrder,\n })\n );\n return;\n }\n }\n\n if (maybeOrder === null) {\n // no Order for this orderId for a long time\n const elapsed = Date.now() - startedQueryAt;\n if (elapsed > LOOK_FOR_ORDER_TIMEOUT) {\n cleanup();\n reject(new Error(`Order ${orderId} not found`));\n return;\n }\n }\n if (result.error) {\n cleanup();\n reject(result.error);\n return;\n }\n });\n });\n\n return promise;\n };\n\n return ensureOrderSent;\n}\n\n// ----------------- Multi Delta Queries -----------------------------------\n\ntype UseWatchMultiDeltaAuctions = {\n orderIds: string[];\n enabled?: boolean;\n onAuctionSuccess?: (auction: ExecutedDeltaAuction) => void;\n onAuctionFailure?: (auction: FailedDeltaAuction) => void;\n onUpdatedAuction?: (auction: MarkOptional<DeltaAuction, \"signature\">) => void;\n onTimeoutGettingOrder?: (auction: Pick<DeltaAuction, \"id\">) => void;\n};\n\nexport function useWatchMultiDeltaAuctions({\n orderIds,\n enabled = true,\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n}: UseWatchMultiDeltaAuctions): UseQueryResult<MaybeVeloraDeltaAuction>[] {\n const { sdk } = useDeltaSDK({ chainId: 1 }); // chain doesn't matter\n\n const callbacksRef = useRef({\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n });\n\n useLayoutEffect(() => {\n callbacksRef.current = {\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n };\n }, [\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n ]);\n\n const queries = useMemo<\n UseDeltaAuctionQueryOptions<MaybeVeloraDeltaAuction>[]\n >(\n () =>\n orderIds.map(\n /* eslint-disable react-hooks/refs */\n (orderId) =>\n constructDeltaAuctionPollingQueryOptions({\n orderId,\n enabled,\n getAuction: sdk.getDeltaOrderById,\n onUpdatedAuction: callbacksRef.current.onUpdatedAuction,\n onAuctionSuccess: callbacksRef.current.onAuctionSuccess,\n onAuctionFailure: callbacksRef.current.onAuctionFailure,\n onTimeoutGettingOrder: callbacksRef.current.onTimeoutGettingOrder,\n })\n /* eslint-enable react-hooks/refs */\n ),\n [enabled, orderIds, sdk.getDeltaOrderById]\n );\n\n const auctionsResults = useQueries({ queries });\n\n return auctionsResults;\n}\n\ntype MultiOrdersStatusCrossChainInput = {\n orders: DeltaOrderFromAPI[];\n onAuctionSuccess?: (order: DeltaOrderFromAPI) => void;\n onAuctionFailure?: (order: DeltaOrderFromAPI) => void;\n onUpdatedAuction?: (\n auction: MarkOptional<DeltaAuction, \"signature\">,\n bridgeResponse: BridgedDepositResponse\n ) => void;\n};\n\n// can be used for checking Crosschain Order status checking\n// if status check from API is slow to update\nexport function useWatchMultiOrdersStatusCrossChain({\n orders,\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n}: MultiOrdersStatusCrossChainInput): UseQueryResult<BridgedDepositResponse>[] {\n const { deposits, onNewResponse, onDepositSuccess, onDepositFailure } =\n useMemo(() => {\n const { deposits, depositId2Order } = orders.reduce<{\n deposits: GetBridgedDepositStatusInput[];\n depositId2Order: Record<string, DeltaOrderFromAPI>;\n }>(\n (acc, order) => {\n if (order.bridgeMetadata?.depositId) {\n acc.deposits.push({\n depositId: String(order.bridgeMetadata.depositId),\n originChainId: order.chainId,\n });\n acc.depositId2Order[order.bridgeMetadata.depositId] = order;\n }\n return acc;\n },\n { deposits: [], depositId2Order: {} }\n );\n const onNewResponse = (response: BridgedDepositResponse) => {\n const order = depositId2Order[response.depositId];\n if (order) {\n onUpdatedAuction?.(order, response);\n }\n };\n\n const onDepositSuccess = onAuctionSuccess\n ? (deposit: BridgedDepositResponseSuccess) => {\n const order = depositId2Order[deposit.depositId];\n if (order) {\n const successfulOrder = {\n ...order,\n bridgeStatus: deposit.status,\n bridgeMetadata: {\n ...order.bridgeMetadata,\n fillTx: deposit.fillTx,\n },\n } as DeltaOrderFromAPI; // order.bridgeMetadata should be filled but not according to types\n onAuctionSuccess(successfulOrder);\n }\n }\n : undefined;\n\n const onDepositFailure = onAuctionFailure\n ? (deposit: BridgedDepositResponseFailure) => {\n const order = depositId2Order[deposit.depositId];\n if (order) {\n const failedOrder = {\n ...order,\n bridgeStatus: deposit.status,\n bridgeMetadata: {\n ...order.bridgeMetadata,\n fillTx: deposit.fillTx || undefined,\n },\n } as DeltaOrderFromAPI; // order.bridgeMetadata should be filled but not according to types\n onAuctionFailure(failedOrder);\n }\n }\n : undefined;\n\n return { deposits, onNewResponse, onDepositSuccess, onDepositFailure };\n }, [orders, onAuctionSuccess, onAuctionFailure, onUpdatedAuction]);\n\n const depositStatuses = useBridgedDepositStatus({\n deposits,\n onNewResponse,\n onDepositSuccess,\n onDepositFailure,\n });\n\n return depositStatuses;\n}\n"],"names":["SINGLE_DELTA_AUCTION_QUERY_KEY_PREFIX","deltaAuctionPollingQueryKey","orderId","DELTA_ORDER_POLLING_INTERVAL","LOOK_FOR_ORDER_TIMEOUT","constructDeltaAuctionPollingQueryOptions","enabled","getAuction","onUpdatedAuction","onAuctionSuccess","onAuctionFailure","onTimeoutGettingOrder","doneState","isMetaWithDoneState","queryMeta","meta","startedQueryAt","Date","now","queryKey","queryFn","signal","assert","refetchInterval","query","maybeOrder","state","data","options","isWithDoneState","getLogger","log","DeltaOrderStatusChecker","completed","has","status","isExecutedDeltaAuction","isFailedDeltaAuction","isDeltaAuctionExpired","isCanceledDeltaAuction","isMetaWithTimeStart","elapsed","id","useWatchDeltaAuction","sdk","useDeltaSDK","chainId","callbacksRef","useRef","useLayoutEffect","current","queryOptions","useMemo","getDeltaOrderById","useQuery","useEnsureDeltaOrderExecuted","t0","$","_c","t1","undefined","queryClient","useQueryClient","logger","useLogger","t2","Symbol","for","t3","t4","observer","QueryObserver","promise","Promise","resolve","reject","timeout","setTimeout","unsubscribe","Error","addEventListener","clearTimeout","reason","subscribe","result","cleanup","DeltaOrderFailedError","order","error","ensureOrderSent"],"mappings":"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"}
|
|
@@ -49,6 +49,14 @@ type DeltaOrderExecutionResult = {
|
|
|
49
49
|
isSuccess: boolean;
|
|
50
50
|
error: Error | null;
|
|
51
51
|
};
|
|
52
|
+
type DeltaOrderCancelationResult = {
|
|
53
|
+
isCancelingOrder: boolean;
|
|
54
|
+
isOrderCanceled: boolean;
|
|
55
|
+
isPending: boolean;
|
|
56
|
+
isError: boolean;
|
|
57
|
+
isSuccess: boolean;
|
|
58
|
+
error: Error | null;
|
|
59
|
+
};
|
|
52
60
|
export type UseDeltaFlowResult = {
|
|
53
61
|
tradeFlowType: typeof deltaOrderFlowType;
|
|
54
62
|
chainId: SupportedChainId;
|
|
@@ -56,11 +64,13 @@ export type UseDeltaFlowResult = {
|
|
|
56
64
|
reset: () => void;
|
|
57
65
|
cancelFlow: () => void;
|
|
58
66
|
retryFlow: (options?: RunDeltaOrderOptions) => Promise<SubmitDeltaOrderResult>;
|
|
67
|
+
cancelDeltaOrder: () => void;
|
|
59
68
|
approval: ApprovalFlowResult;
|
|
60
69
|
signPermit: SignPermitFlowResult;
|
|
61
70
|
deltaOrderPreSign: DeltaOrderPreSignResult;
|
|
62
71
|
deltaOrderSubmission: DeltaOrderSubmissionResult;
|
|
63
72
|
deltaOrderExecution: DeltaOrderExecutionResult;
|
|
73
|
+
deltaOrderCancelation: DeltaOrderCancelationResult;
|
|
64
74
|
isPending: boolean;
|
|
65
75
|
isSuccess: boolean;
|
|
66
76
|
isError: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDeltaFlow.d.ts","sourceRoot":"","sources":["../../../../src/hooks/swap/tradeFlow/useDeltaFlow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EAEZ,UAAU,EACX,MAAM,iBAAiB,CAAC;AAIzB,OAAO,KAAK,EAAE,OAAO,EAA4B,MAAM,MAAM,CAAC;AAC9D,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACf,MAAM,gBAAgB,CAAC;AAMxB,OAAO,
|
|
1
|
+
{"version":3,"file":"useDeltaFlow.d.ts","sourceRoot":"","sources":["../../../../src/hooks/swap/tradeFlow/useDeltaFlow.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { useEnsureTxReceipt } from '../../txs/queries/useAwaitTx.js';
|
|
|
4
4
|
import { deltaOrdersQueryKey } from '../prices/delta/queries/useDeltaOrders.js';
|
|
5
5
|
import { useCreateDeltaOrder } from '../prices/delta/mutations/useCreateDeltaOrder.js';
|
|
6
6
|
import { useMinViemClient } from '../../useMinViemClient.js';
|
|
7
|
-
import { useWatchDeltaAuction, useEnsureDeltaOrderExecuted } from '../prices/delta/queries/useWatchDeltaOrder.js';
|
|
7
|
+
import { useWatchDeltaAuction, deltaAuctionPollingQueryKey, useEnsureDeltaOrderExecuted } from '../prices/delta/queries/useWatchDeltaOrder.js';
|
|
8
8
|
import { getOverallOrderStatus } from '../prices/delta/orders/utils.js';
|
|
9
9
|
import { applySlippage } from '../../../lib/utils/price.js';
|
|
10
10
|
import { useSlippage } from '../../useSlippage.js';
|
|
@@ -27,6 +27,9 @@ import { extractSelectedBridgePrice } from '../prices/delta/bridge/utils.js';
|
|
|
27
27
|
import { useAtomValue } from '../../../core/store.js';
|
|
28
28
|
import { bridgePreferenceAtom } from '../../../components/widget/TradeParameters/state/bridgePreferences/bridgePreferenceAtom.js';
|
|
29
29
|
import { protocolNameAtom } from '../../../components/widget/TradeParameters/state/bridgePreferences/protocolNameAtom.js';
|
|
30
|
+
import { useCancelDeltaOrderEventCallbacks, useCancelDeltaOrders } from '../prices/delta/mutations/useCancelDeltaOrders.js';
|
|
31
|
+
import { useChainMatches } from '../../useChainMatches.js';
|
|
32
|
+
import { useSwitchChainWithGuard } from '../../useSwitchChainWithGuard.js';
|
|
30
33
|
|
|
31
34
|
const deltaOrderFlowType = "deltaOrder";
|
|
32
35
|
const DELTA_ORDER_MUTATION_KEY = "runDeltaOrderFlow";
|
|
@@ -134,6 +137,53 @@ function useDeltaFlow({
|
|
|
134
137
|
isSuccess: orderStatus === "confirmed",
|
|
135
138
|
error: watchOrderExecution.error
|
|
136
139
|
};
|
|
140
|
+
const cancelOrderEvents = useCancelDeltaOrderEventCallbacks(createOrderMut.data);
|
|
141
|
+
const orderChainId = deltaOrderSubmission.order?.chainId;
|
|
142
|
+
const {
|
|
143
|
+
forcedChainMatchesWalletChain
|
|
144
|
+
} = useChainMatches(orderChainId);
|
|
145
|
+
const {
|
|
146
|
+
mutateAsync: switchChain
|
|
147
|
+
} = useSwitchChainWithGuard();
|
|
148
|
+
const cancelOrderMut = useCancelDeltaOrders({
|
|
149
|
+
chainId,
|
|
150
|
+
account,
|
|
151
|
+
client: minClient,
|
|
152
|
+
mutationOptions: {
|
|
153
|
+
onMutate: async (variables) => {
|
|
154
|
+
assert(orderChainId, "orderChainId is undefined");
|
|
155
|
+
if (!forcedChainMatchesWalletChain) {
|
|
156
|
+
await switchChain({
|
|
157
|
+
chainId: orderChainId
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
cancelOrderEvents.onMutate?.(variables);
|
|
161
|
+
},
|
|
162
|
+
onSuccess: (successResponse, vars) => {
|
|
163
|
+
logger.log("Cancel Delta Order success", successResponse);
|
|
164
|
+
if (deltaOrderExecution.sentOrder?.id) {
|
|
165
|
+
queryClient.invalidateQueries({
|
|
166
|
+
queryKey: deltaAuctionPollingQueryKey({
|
|
167
|
+
orderId: deltaOrderExecution.sentOrder.id
|
|
168
|
+
})
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
cancelOrderEvents.onSuccess?.(successResponse, vars);
|
|
172
|
+
},
|
|
173
|
+
onError: (error_0, vars_0) => {
|
|
174
|
+
logger.error("Cancel Delta Order error", error_0);
|
|
175
|
+
cancelOrderEvents.onError?.(error_0, vars_0);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
const deltaOrderCancelation = {
|
|
180
|
+
isCancelingOrder: cancelOrderMut.isPending,
|
|
181
|
+
isOrderCanceled: cancelOrderMut.isSuccess && !!cancelOrderMut.data?.success,
|
|
182
|
+
isPending: cancelOrderMut.isPending,
|
|
183
|
+
isError: cancelOrderMut.isError,
|
|
184
|
+
isSuccess: cancelOrderMut.isSuccess,
|
|
185
|
+
error: cancelOrderMut.error
|
|
186
|
+
};
|
|
137
187
|
const ensureOrderExecuted = useEnsureDeltaOrderExecuted({
|
|
138
188
|
onAuctionSuccess: (order_4) => {
|
|
139
189
|
queryClient.invalidateQueries({
|
|
@@ -182,6 +232,7 @@ function useDeltaFlow({
|
|
|
182
232
|
approveTxMut.reset();
|
|
183
233
|
signPermitMut.reset();
|
|
184
234
|
createOrderMut.reset();
|
|
235
|
+
cancelOrderMut.reset();
|
|
185
236
|
resetPreSignAndSubmitDeltaOrder();
|
|
186
237
|
assert(deltaPrice, "Delta price is not available");
|
|
187
238
|
const swapSide = getSwapSideFromDeltaPrice(deltaPrice);
|
|
@@ -299,21 +350,21 @@ function useDeltaFlow({
|
|
|
299
350
|
permit: signedPermitResult?.permitEncodedArgs
|
|
300
351
|
});
|
|
301
352
|
}
|
|
302
|
-
} catch (
|
|
353
|
+
} catch (error_2) {
|
|
303
354
|
if (!tryPermit) {
|
|
304
355
|
approveOrPermitEvents.onApproveTx.failed({
|
|
305
356
|
allowanceToSet,
|
|
306
|
-
error:
|
|
357
|
+
error: error_2,
|
|
307
358
|
txHash: approveTxHash
|
|
308
359
|
// won't necessarily be available
|
|
309
360
|
});
|
|
310
361
|
} else {
|
|
311
362
|
approveOrPermitEvents.onSignPermit.failed({
|
|
312
363
|
allowanceToSet,
|
|
313
|
-
error:
|
|
364
|
+
error: error_2
|
|
314
365
|
});
|
|
315
366
|
}
|
|
316
|
-
throw
|
|
367
|
+
throw error_2;
|
|
317
368
|
}
|
|
318
369
|
}
|
|
319
370
|
signal.throwIfAborted();
|
|
@@ -421,7 +472,7 @@ function useDeltaFlow({
|
|
|
421
472
|
account,
|
|
422
473
|
receiverAddress
|
|
423
474
|
};
|
|
424
|
-
} catch (
|
|
475
|
+
} catch (error_1) {
|
|
425
476
|
if (signedPermitResult) {
|
|
426
477
|
clearNonce(signedPermitResult.signedPermitData);
|
|
427
478
|
}
|
|
@@ -430,23 +481,29 @@ function useDeltaFlow({
|
|
|
430
481
|
name: "Swap:failed",
|
|
431
482
|
params: {
|
|
432
483
|
swapMode: "delta",
|
|
433
|
-
error:
|
|
484
|
+
error: error_1
|
|
434
485
|
}
|
|
435
486
|
}
|
|
436
487
|
});
|
|
437
|
-
throw
|
|
488
|
+
throw error_1;
|
|
438
489
|
} finally {
|
|
439
490
|
unsubscribeFromPrice?.();
|
|
440
491
|
}
|
|
441
492
|
};
|
|
493
|
+
const cancelDeltaOrder = () => {
|
|
494
|
+
assert(deltaOrderSubmission.order, "No order to cancel");
|
|
495
|
+
cancelOrderMut.mutate({
|
|
496
|
+
orderIds: [deltaOrderSubmission.order.id]
|
|
497
|
+
});
|
|
498
|
+
};
|
|
442
499
|
const deltaOrderMut = useMutation({
|
|
443
500
|
mutationFn: submitDeltaOrder,
|
|
444
501
|
mutationKey: [DELTA_ORDER_MUTATION_KEY],
|
|
445
502
|
onSuccess: (data_0) => {
|
|
446
503
|
logger.log("Delta Order success", data_0);
|
|
447
504
|
},
|
|
448
|
-
onError: (
|
|
449
|
-
logger.error("Delta Order error",
|
|
505
|
+
onError: (error_3) => {
|
|
506
|
+
logger.error("Delta Order error", error_3);
|
|
450
507
|
},
|
|
451
508
|
onSettled: () => {
|
|
452
509
|
logger.log("Delta Order settled");
|
|
@@ -459,6 +516,7 @@ function useDeltaFlow({
|
|
|
459
516
|
signPermitMut.reset();
|
|
460
517
|
createOrderMut.reset();
|
|
461
518
|
deltaOrderMut.reset();
|
|
519
|
+
cancelOrderMut.reset();
|
|
462
520
|
resetPreSignAndSubmitDeltaOrder();
|
|
463
521
|
};
|
|
464
522
|
const retryFlow = (options) => {
|
|
@@ -475,11 +533,13 @@ function useDeltaFlow({
|
|
|
475
533
|
reset,
|
|
476
534
|
cancelFlow,
|
|
477
535
|
retryFlow,
|
|
536
|
+
cancelDeltaOrder,
|
|
478
537
|
approval,
|
|
479
538
|
signPermit,
|
|
480
539
|
deltaOrderPreSign,
|
|
481
540
|
deltaOrderSubmission,
|
|
482
541
|
deltaOrderExecution,
|
|
542
|
+
deltaOrderCancelation,
|
|
483
543
|
// deltaOrderMut includes all steps' queries and mutations and returns more precise errors (including cancellation)
|
|
484
544
|
isPending: deltaOrderMut.isPending,
|
|
485
545
|
isSuccess: deltaOrderSubmission.isSuccess && deltaOrderExecution.isSuccess,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDeltaFlow.js","sources":["../../../../src/hooks/swap/tradeFlow/useDeltaFlow.ts"],"sourcesContent":["import type {\n BridgePrice,\n DeltaAuction,\n DeltaOrderApiResponse,\n DeltaPrice,\n} from \"@velora-dex/sdk\";\nimport { useAccount, useChainId } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport { useEnsureTxReceipt } from \"@/hooks/txs/queries/useAwaitTx\";\nimport type { Address, Hash, TransactionReceipt } from \"viem\";\nimport {\n deltaOrdersQueryKey,\n type SubmittedDeltaOrderFromAPI,\n} from \"../prices/delta/queries/useDeltaOrders\";\nimport type {\n ApprovalFlowResult,\n SignPermitFlowResult,\n SubmitTxResult,\n} from \"./common/types\";\nimport {\n useCreateDeltaOrder,\n type CreateDeltaOrderInput,\n} from \"../prices/delta/mutations/useCreateDeltaOrder\";\nimport { useMinViemClient } from \"@/hooks/useMinViemClient\";\nimport {\n useEnsureDeltaOrderExecuted,\n useWatchDeltaAuction,\n type MaybeVeloraDeltaAuction,\n} from \"../prices/delta/queries/useWatchDeltaOrder\";\nimport { getOverallOrderStatus } from \"../prices/delta/orders/utils\";\nimport { applySlippage } from \"@/lib/utils/price\";\nimport { useSlippage } from \"@/hooks/useSlippage\";\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 { useSwapReceiverAddressValue } from \"@/components/widget/ReceiverAddress/state/receiverAddressAtom\";\nimport type {\n CallsSentObject,\n TxSentObject,\n} from \"@/lib/utils/transactionHandlers\";\nimport type { OrderSentObject } from \"@/lib/utils/toasts\";\nimport { useApproveOrPermit } from \"./common/useApproveOrPermit\";\nimport {\n useMarkPermit1Or2NonceAsUsed,\n type SignedPermitResult,\n} from \"./common/useSignPermit1Or2\";\nimport { produceDeltaOrderDeadline } from \"@/hooks/permit/utils/deadlines\";\nimport { encodePermit2TransferFromSigDataForDelta } from \"@/hooks/permit/utils/encodeArgs\";\nimport { useLogger } from \"@/core/logger\";\nimport {\n isBridgePrice,\n useDeltaPriceQueryForPrice,\n useSubscribeToDeltaPrice,\n} from \"../prices/delta/queries/useDeltaPriceQuery\";\nimport { usePartner } from \"@/hooks/usePartner\";\nimport { useWidgetEvents } from \"@/core/state/widgetEventsAtom\";\nimport {\n shouldApproveOrBatch,\n usePreSignAndSubmitDeltaOrder,\n type DeltaOrderPreSignResult,\n} from \"./common/usePreSignAndSubmitDeltaOrder\";\nimport { useSwapSide } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\nimport { getSwapSideFromDeltaPrice } from \"../prices/delta/queries/utils\";\nimport { extractSelectedBridgePrice } from \"../prices/delta/bridge/utils\";\nimport type { DeltaOrBridgePrice } from \"../prices/types\";\nimport { useAtomValue } from \"@/core/store\";\nimport { bridgePreferenceAtom } from \"@/components/widget/TradeParameters/state/bridgePreferences/bridgePreferenceAtom\";\nimport { protocolNameAtom } from \"@/components/widget/TradeParameters/state/bridgePreferences/protocolNameAtom\";\n\nconst deltaOrderFlowType = \"deltaOrder\";\n\nexport type UseDeltaFlowInput = {\n deltaPrice?: DeltaPrice | BridgePrice;\n preWrapETH?: boolean;\n};\n\nexport type SubmitDeltaOrderResult = {\n tradeFlowType: typeof deltaOrderFlowType;\n approve: SubmitTxResult;\n deltaOrder: {\n sentOrder: SubmittedDeltaOrderFromAPI;\n lastOrderState: MaybeVeloraDeltaAuction;\n };\n deltaPrice: DeltaPrice | BridgePrice;\n account: Address;\n receiverAddress?: Address;\n};\n\ntype OnTxSent = (txSent: TxSentObject | CallsSentObject) => void;\n\ntype OnOrderSent = (orderSent: OrderSentObject) => void;\n\n// @TODO instead add global onTxSent subscription to\n// MutationCache({onSuccess: txHash}) when sent\n// and QueryCache({onSuccess: txReceipt|Order executed}) when mined,\n// maybe??\ntype RunDeltaOrderOptions = {\n onTxSent?: OnTxSent;\n onOrderSent?: OnOrderSent;\n};\n\ntype DeltaOrderSubmissionResult = {\n order?: SubmittedDeltaOrderFromAPI;\n isCreatingOrder: boolean;\n isOrderSent: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n};\n\ntype DeltaOrderExecutionResult = {\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\nexport type UseDeltaFlowResult = {\n tradeFlowType: typeof deltaOrderFlowType;\n chainId: SupportedChainId;\n runDeltaOrderFlow: (\n options?: RunDeltaOrderOptions\n ) => Promise<SubmitDeltaOrderResult>;\n reset: () => void; // reset on Error to retry\n cancelFlow: () => void; // cancel flow\n retryFlow: (\n options?: RunDeltaOrderOptions\n ) => Promise<SubmitDeltaOrderResult>; // reset and retry flow\n approval: ApprovalFlowResult;\n signPermit: SignPermitFlowResult;\n deltaOrderPreSign: DeltaOrderPreSignResult;\n // submission represents either normal signing and POSTing of Order or pre-signing (in a tx) and POSTing\n deltaOrderSubmission: DeltaOrderSubmissionResult;\n deltaOrderExecution: DeltaOrderExecutionResult;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n result?: SubmitDeltaOrderResult;\n usedPrice?: DeltaPrice | BridgePrice;\n submittedDeltaOrder?: Omit<DeltaAuction, \"signature\" | \"transactions\">;\n};\n\nconst DELTA_ORDER_MUTATION_KEY = \"runDeltaOrderFlow\";\n\nexport function useDeltaFlow({\n deltaPrice,\n preWrapETH,\n}: UseDeltaFlowInput): UseDeltaFlowResult {\n const logger = useLogger(\"DeltaFlow\");\n const chainId = useChainId();\n const { resolvedSlippage } = useSlippage(\"swap\");\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\n const swapSideFromInput = useSwapSide();\n\n const {\n approval,\n signPermit,\n approveTxMut,\n signPermitMut,\n events: approveOrPermitEvents,\n } = useApproveOrPermit({\n srcToken: deltaPrice?.srcToken,\n srcAmount: deltaPrice?.srcAmount,\n spenderContractType: \"ParaswapDelta\",\n swapSide:\n (deltaPrice && getSwapSideFromDeltaPrice(deltaPrice)) ||\n swapSideFromInput,\n tradeMode: \"swap\",\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 const queryClient = useQueryClient();\n\n const createOrderMut = useCreateDeltaOrder({\n chainId,\n account,\n client: minClient,\n mutationOptions: {\n onSuccess: (order) => {\n logger.log(\"Create Delta Order success\", order);\n },\n onError: (error) => {\n logger.error(\"Create Delta Order error\", error);\n },\n },\n });\n\n const deltaOrderCreateAndSubmit: UseDeltaFlowResult[\"deltaOrderSubmission\"] =\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 deltaOrderSubmission: UseDeltaFlowResult[\"deltaOrderSubmission\"] = {\n order: deltaOrderCreateAndSubmit.order || deltaOrderPreSign.order,\n isCreatingOrder:\n deltaOrderCreateAndSubmit.isPending || deltaOrderPreSign.isCreatingOrder,\n isOrderSent:\n deltaOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isOrderSent,\n isPending:\n deltaOrderCreateAndSubmit.isPending || deltaOrderPreSign.isPending,\n isError: deltaOrderCreateAndSubmit.isError || deltaOrderPreSign.isError,\n isSuccess:\n deltaOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isSuccess,\n error: deltaOrderCreateAndSubmit.error || deltaOrderPreSign.error,\n };\n\n /* 5. await Order execution */\n\n const watchOrderExecution = useWatchDeltaAuction({\n orderId: deltaOrderSubmission.order?.id,\n onAuctionSuccess: (order) => {\n logger.log(\"Delta Order success\", order);\n },\n onAuctionFailure: (order) => {\n logger.log(\"Delta Order failure\", order);\n },\n onUpdatedAuction: (order) => {\n logger.log(\"Delta Order updated\", order);\n },\n onTimeoutGettingOrder: (order) => {\n logger.log(\"Delta 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 deltaOrderExecution: UseDeltaFlowResult[\"deltaOrderExecution\"] = {\n sentOrder: deltaOrderSubmission.order,\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 ensureOrderExecuted = useEnsureDeltaOrderExecuted({\n onAuctionSuccess: (order) => {\n queryClient.invalidateQueries({\n queryKey: deltaOrdersQueryKey({\n userAddress: order.user,\n }),\n exact: false,\n });\n },\n onAuctionFailure: (order) => {\n queryClient.invalidateQueries({\n queryKey: deltaOrdersQueryKey({\n userAddress: order.user,\n }),\n exact: false,\n });\n },\n });\n const ensureTxReceipt = useEnsureTxReceipt();\n\n const currentAbortControllerRef = useRef<AbortController | null>(null);\n const usingPriceRef = useRef<DeltaPrice | BridgePrice | 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 partner = usePartner();\n const protocolName = useAtomValue(protocolNameAtom);\n const bridgePreference = useAtomValue(bridgePreferenceAtom);\n\n const getQueryForPrice = useDeltaPriceQueryForPrice();\n const subscribeToPrice = useSubscribeToDeltaPrice();\n\n const { onSwap } = useWidgetEvents();\n\n const submitDeltaOrder = async ({\n onTxSent,\n onOrderSent,\n }: RunDeltaOrderOptions = {}): Promise<SubmitDeltaOrderResult> => {\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 createOrderMut.reset();\n resetPreSignAndSubmitDeltaOrder();\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(deltaPrice, \"Delta price is not available\");\n const swapSide = getSwapSideFromDeltaPrice(deltaPrice);\n\n const abortController = new AbortController();\n currentAbortControllerRef.current = abortController;\n\n const signal = abortController.signal;\n\n // on Delta the order.deadline must exactly match permit2.deadline\n const orderDeadline = produceDeltaOrderDeadline();\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 // deltaPrice here is the starting price, available before async code and waiting\n let freshPrice = deltaPrice;\n let unsubscribeFromPrice: (() => void) | undefined;\n // this also resets previous usingPriceRef\n usingPriceRef.current = freshPrice;\n\n /*\n if connected to Safe, or needs to approve a token with a tx, or needs to pre-wrap ETH\n and can batch txs, then pre-sign the batch;\n that way Safe does only one action (wrapETH?+Approve+setPreSignature batch tx)\n and a wallet that would otherwise potentially wrap ETH and then Approve Token (tx, not Permit),\n and then sign Order, basically has to make at least one tx, does only one action as well.\n */\n const { shouldDoApprovalTxOrPermit, tryPermit, shouldPreSignBatch } =\n shouldApproveOrBatch({\n approval,\n preWrapETH,\n signPermit,\n canBatchTxs,\n isConnectedToSafe,\n });\n\n try {\n if (shouldDoApprovalTxOrPermit && 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: (price) => {\n let newPrice: DeltaOrBridgePrice = price;\n if (isBridgePrice(price)) {\n newPrice = extractSelectedBridgePrice({\n price,\n protocolName,\n bridgePreference,\n });\n }\n\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 srcAmount if BUY with slippage,\n // slightly lower destAmount if SELL with slippage\n const amountsAfterSlippage = applySlippage(\n {\n srcAmount: newPrice.srcAmount,\n destAmount: newPrice.receivedDestAmount,\n },\n resolvedSlippage,\n swapSide\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 try {\n if (!tryPermit) {\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 } else {\n approveOrPermitEvents.onSignPermit.request({ allowanceToSet });\n\n // sign Permit\n signedPermitResult = await signPermitMut.signPermitAsync({\n deadline: orderDeadline,\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\n // as long as we had set approvedAmount, we will only get new prices that satisfy the allowance\n const deltaPriceToUse = freshPrice;\n usingPriceRef.current = deltaPriceToUse;\n // no longer need updates, unsubscribe\n unsubscribeFromPrice?.();\n unsubscribeFromPrice = undefined;\n\n assert(deltaPriceToUse, \"Delta price is not available\");\n\n const amountsAfterSlippage = applySlippage(\n {\n srcAmount: deltaPriceToUse.srcAmount,\n destAmount: deltaPriceToUse.receivedDestAmount,\n },\n resolvedSlippage,\n swapSide\n );\n\n let permit = signedPermitResult?.permitEncodedArgs;\n if (\n signedPermitResult?.signedPermitData.type === \"permit2\" &&\n signedPermitResult.signedPermitData.variant === \"transferFrom\"\n ) {\n // In the Delta Contract, specifically for Permit2 transferFrom, we have signature consisting of\n // bytes32(permit2nonce) + bytes64(signature) = bytes96 Permit2 Transfer format\n permit = encodePermit2TransferFromSigDataForDelta({\n nonce: signedPermitResult.signedPermitData.nonce,\n signature: signedPermitResult.signature,\n });\n }\n\n const destChainId = isBridgePrice(deltaPriceToUse)\n ? deltaPriceToUse.bridge.destinationChainId\n : chainId;\n\n onSwap?.({\n event: {\n name: \"Swap:request\",\n params: {\n swapMode: \"delta\",\n price: deltaPriceToUse,\n },\n },\n });\n\n let orderFromAPI: DeltaOrderApiResponse;\n\n const createOrderInput: CreateDeltaOrderInput = {\n signal,\n type: \"MARKET\",\n orderInput: {\n owner: account,\n beneficiary: receiverAddress,\n srcToken: deltaPriceToUse.srcToken,\n destToken: deltaPriceToUse.destToken,\n permit,\n destChainId,\n deltaPrice: deltaPriceToUse,\n partner,\n ...amountsAfterSlippage,\n deadline: Number(orderDeadline),\n side: swapSide,\n },\n };\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 // Order is sent, consider Token nonce as used\n if (signedPermitResult) {\n markNonceAsUsed(signedPermitResult.signedPermitData);\n }\n\n onSwap?.({\n event: {\n name: \"Swap:sent\",\n params: {\n swapMode: \"delta\",\n price: deltaPriceToUse,\n order: orderFromAPI,\n },\n },\n });\n\n // will refetch Order on interval until completed.\n // in parallel with useWatchDeltaAuction but independently if useWatchDeltaAuction is unmounted\n const lastOrderStatePromise = ensureOrderExecuted({\n orderId: orderFromAPI.id,\n // signal, // fails the toast if aborted, don't use\n });\n\n if (onOrderSent) {\n onOrderSent({\n order: orderFromAPI,\n lastOrderState: lastOrderStatePromise,\n });\n }\n\n const lastOrderState = await lastOrderStatePromise;\n\n onSwap?.({\n event: {\n name: \"Swap:confirmed\",\n params: {\n swapMode: \"delta\",\n price: deltaPriceToUse,\n order: orderFromAPI,\n },\n },\n });\n\n // no use aborting past this point, Order is already being processed\n\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 // @TODO try catch, handle errors, refetch allowance and balance in finally\n\n return {\n tradeFlowType: deltaOrderFlowType,\n approve: {\n txHash: approveTxHash,\n receipt: approveTxReceipt,\n },\n deltaOrder: {\n sentOrder: orderFromAPI,\n lastOrderState,\n },\n deltaPrice: deltaPriceToUse,\n // @TODO add whatever else may be relevant\n account,\n receiverAddress,\n };\n } catch (error) {\n // Order failed, we can't be sure if nonce can be reused or it was incremented in a different Order\n // or even a Market swap tx in the meantime\n if (signedPermitResult) {\n clearNonce(signedPermitResult.signedPermitData);\n }\n onSwap?.({\n event: {\n name: \"Swap:failed\",\n params: {\n swapMode: \"delta\",\n error: error as Error,\n },\n },\n });\n\n throw error;\n } finally {\n // always unsubscribe if subscribed previously\n unsubscribeFromPrice?.();\n }\n };\n\n const deltaOrderMut = useMutation({\n mutationFn: submitDeltaOrder,\n mutationKey: [DELTA_ORDER_MUTATION_KEY],\n onSuccess: (data) => {\n logger.log(\"Delta Order success\", data);\n },\n onError: (error) => {\n logger.error(\"Delta Order error\", error);\n },\n onSettled: () => {\n logger.log(\"Delta Order settled\");\n },\n });\n\n const runDeltaOrderFlow = deltaOrderMut.mutateAsync;\n\n const reset = () => {\n usingPriceRef.current = null;\n\n approveTxMut.reset();\n signPermitMut.reset();\n createOrderMut.reset();\n deltaOrderMut.reset();\n resetPreSignAndSubmitDeltaOrder();\n };\n\n const retryFlow = (\n options?: RunDeltaOrderOptions\n ): Promise<SubmitDeltaOrderResult> => {\n reset();\n return runDeltaOrderFlow(options);\n };\n\n // finalPrice if we reached that point, or usable price (based on allowance given)\n const usedPrice: typeof deltaPrice = usingPriceRef.current || deltaPrice;\n\n const result = deltaOrderMut.data;\n\n /**\n * priority:\n * 1. lastOrderState = updated sent Order from final result\n * 2. sentOrder = just sent Order from final result\n * 3. deltaOrderExecution.lastOrderState = updated sent Order from watchOrderExecution (intermediate result)\n * 4. deltaOrderExecution.sentOrder = just sent Order from watchOrderExecution (intermediate result)\n */\n const submittedDeltaOrder:\n | Omit<DeltaAuction, \"signature\" | \"transactions\">\n | undefined =\n result?.deltaOrder.lastOrderState ||\n result?.deltaOrder.sentOrder ||\n deltaOrderExecution.lastOrderState ||\n deltaOrderExecution.sentOrder;\n\n /* 6. return result */\n return {\n tradeFlowType: deltaOrderFlowType,\n chainId,\n runDeltaOrderFlow,\n reset,\n cancelFlow,\n retryFlow,\n approval,\n signPermit,\n deltaOrderPreSign,\n deltaOrderSubmission,\n deltaOrderExecution,\n // deltaOrderMut includes all steps' queries and mutations and returns more precise errors (including cancellation)\n isPending: deltaOrderMut.isPending,\n isSuccess: deltaOrderSubmission.isSuccess && deltaOrderExecution.isSuccess, // approval is an optional step\n isError: deltaOrderMut.isError,\n error: deltaOrderMut.error,\n result,\n usedPrice,\n submittedDeltaOrder,\n };\n}\n"],"names":["deltaOrderFlowType","DELTA_ORDER_MUTATION_KEY","useDeltaFlow","deltaPrice","preWrapETH","logger","useLogger","chainId","useChainId","resolvedSlippage","useSlippage","swapSideFromInput","useSwapSide","approval","signPermit","approveTxMut","signPermitMut","events","approveOrPermitEvents","useApproveOrPermit","srcToken","srcAmount","spenderContractType","swapSide","getSwapSideFromDeltaPrice","tradeMode","address","account","useAccount","minClient","useMinViemClient","queryClient","useQueryClient","createOrderMut","useCreateDeltaOrder","client","mutationOptions","onSuccess","order","log","onError","error","deltaOrderCreateAndSubmit","data","isCreatingOrder","isPending","isOrderSent","isSuccess","isError","deltaOrderPreSign","canBatchTxs","isConnectedToSafe","preSignAndSubmitDeltaOrder","reset","resetPreSignAndSubmitDeltaOrder","usePreSignAndSubmitDeltaOrder","viemClient","deltaOrderSubmission","watchOrderExecution","useWatchDeltaAuction","orderId","id","onAuctionSuccess","onAuctionFailure","onUpdatedAuction","onTimeoutGettingOrder","orderStatus","getOverallOrderStatus","neverFetchedFinishedOrder","deltaOrderExecution","sentOrder","lastOrderState","isOrderPending","isOrderExecuting","isOrderExecuted","isLoading","isRefetching","ensureOrderExecuted","useEnsureDeltaOrderExecuted","invalidateQueries","queryKey","deltaOrdersQueryKey","userAddress","user","exact","ensureTxReceipt","useEnsureTxReceipt","currentAbortControllerRef","useRef","usingPriceRef","cancelFlow","current","abort","UserCancelledError","receiverAddress","useSwapReceiverAddressValue","markNonceAsUsed","clearNonce","useMarkPermit1Or2NonceAsUsed","partner","usePartner","protocolName","useAtomValue","protocolNameAtom","bridgePreference","bridgePreferenceAtom","getQueryForPrice","useDeltaPriceQueryForPrice","subscribeToPrice","useSubscribeToDeltaPrice","onSwap","useWidgetEvents","submitDeltaOrder","onTxSent","onOrderSent","assert","abortController","AbortController","signal","orderDeadline","produceDeltaOrderDeadline","signedPermitResult","approveTxHash","approveTxReceipt","allowanceToSet","freshPrice","unsubscribeFromPrice","shouldDoApprovalTxOrPermit","tryPermit","shouldPreSignBatch","shouldApproveOrBatch","price","approvedAmount","onData","newPrice","isBridgePrice","extractSelectedBridgePrice","aborted","undefined","amountsAfterSlippage","applySlippage","destAmount","receivedDestAmount","BigInt","onApproveTx","request","approveAsync","allowanceData","sent","txHash","throwIfAborted","approveTxReceiptPromise","hash","onReplaced","action","transactionHash","receiptPromise","transactionSpecificData","tokenAddress","token","spenderAddress","spender","confirmed","txReceipt","onSignPermit","signPermitAsync","deadline","value","permit","permitEncodedArgs","failed","deltaPriceToUse","signedPermitData","type","variant","encodePermit2TransferFromSigDataForDelta","nonce","signature","destChainId","bridge","destinationChainId","event","name","params","swapMode","orderFromAPI","createOrderInput","orderInput","owner","beneficiary","destToken","Number","side","mutateAsync","createDeltaOrderInput","lastOrderStatePromise","tradeFlowType","approve","receipt","deltaOrder","deltaOrderMut","useMutation","mutationFn","mutationKey","onSettled","runDeltaOrderFlow","retryFlow","options","usedPrice","result","submittedDeltaOrder"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useDeltaFlow.js","sources":["../../../../src/hooks/swap/tradeFlow/useDeltaFlow.ts"],"sourcesContent":["import type {\n BridgePrice,\n DeltaAuction,\n DeltaOrderApiResponse,\n DeltaPrice,\n} from \"@velora-dex/sdk\";\nimport { useAccount, useChainId } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport { useEnsureTxReceipt } from \"@/hooks/txs/queries/useAwaitTx\";\nimport type { Address, Hash, TransactionReceipt } from \"viem\";\nimport {\n deltaOrdersQueryKey,\n type SubmittedDeltaOrderFromAPI,\n} from \"../prices/delta/queries/useDeltaOrders\";\nimport type {\n ApprovalFlowResult,\n SignPermitFlowResult,\n SubmitTxResult,\n} from \"./common/types\";\nimport {\n useCreateDeltaOrder,\n type CreateDeltaOrderInput,\n} from \"../prices/delta/mutations/useCreateDeltaOrder\";\nimport { useMinViemClient } from \"@/hooks/useMinViemClient\";\nimport {\n deltaAuctionPollingQueryKey,\n useEnsureDeltaOrderExecuted,\n useWatchDeltaAuction,\n type MaybeVeloraDeltaAuction,\n} from \"../prices/delta/queries/useWatchDeltaOrder\";\nimport { getOverallOrderStatus } from \"../prices/delta/orders/utils\";\nimport { applySlippage } from \"@/lib/utils/price\";\nimport { useSlippage } from \"@/hooks/useSlippage\";\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 { useSwapReceiverAddressValue } from \"@/components/widget/ReceiverAddress/state/receiverAddressAtom\";\nimport type {\n CallsSentObject,\n TxSentObject,\n} from \"@/lib/utils/transactionHandlers\";\nimport type { OrderSentObject } from \"@/lib/utils/toasts\";\nimport { useApproveOrPermit } from \"./common/useApproveOrPermit\";\nimport {\n useMarkPermit1Or2NonceAsUsed,\n type SignedPermitResult,\n} from \"./common/useSignPermit1Or2\";\nimport { produceDeltaOrderDeadline } from \"@/hooks/permit/utils/deadlines\";\nimport { encodePermit2TransferFromSigDataForDelta } from \"@/hooks/permit/utils/encodeArgs\";\nimport { useLogger } from \"@/core/logger\";\nimport {\n isBridgePrice,\n useDeltaPriceQueryForPrice,\n useSubscribeToDeltaPrice,\n} from \"../prices/delta/queries/useDeltaPriceQuery\";\nimport { usePartner } from \"@/hooks/usePartner\";\nimport { useWidgetEvents } from \"@/core/state/widgetEventsAtom\";\nimport {\n shouldApproveOrBatch,\n usePreSignAndSubmitDeltaOrder,\n type DeltaOrderPreSignResult,\n} from \"./common/usePreSignAndSubmitDeltaOrder\";\nimport { useSwapSide } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\nimport { getSwapSideFromDeltaPrice } from \"../prices/delta/queries/utils\";\nimport { extractSelectedBridgePrice } from \"../prices/delta/bridge/utils\";\nimport type { DeltaOrBridgePrice } from \"../prices/types\";\nimport { useAtomValue } from \"@/core/store\";\nimport { bridgePreferenceAtom } from \"@/components/widget/TradeParameters/state/bridgePreferences/bridgePreferenceAtom\";\nimport { protocolNameAtom } from \"@/components/widget/TradeParameters/state/bridgePreferences/protocolNameAtom\";\nimport {\n useCancelDeltaOrderEventCallbacks,\n useCancelDeltaOrders,\n} from \"../prices/delta/mutations/useCancelDeltaOrders\";\nimport { useChainMatches } from \"@/hooks/useChainMatches\";\nimport { useSwitchChainWithGuard } from \"@/hooks/useSwitchChainWithGuard\";\n\nconst deltaOrderFlowType = \"deltaOrder\";\n\nexport type UseDeltaFlowInput = {\n deltaPrice?: DeltaPrice | BridgePrice;\n preWrapETH?: boolean;\n};\n\nexport type SubmitDeltaOrderResult = {\n tradeFlowType: typeof deltaOrderFlowType;\n approve: SubmitTxResult;\n deltaOrder: {\n sentOrder: SubmittedDeltaOrderFromAPI;\n lastOrderState: MaybeVeloraDeltaAuction;\n };\n deltaPrice: DeltaPrice | BridgePrice;\n account: Address;\n receiverAddress?: Address;\n};\n\ntype OnTxSent = (txSent: TxSentObject | CallsSentObject) => void;\n\ntype OnOrderSent = (orderSent: OrderSentObject) => void;\n\n// @TODO instead add global onTxSent subscription to\n// MutationCache({onSuccess: txHash}) when sent\n// and QueryCache({onSuccess: txReceipt|Order executed}) when mined,\n// maybe??\ntype RunDeltaOrderOptions = {\n onTxSent?: OnTxSent;\n onOrderSent?: OnOrderSent;\n};\n\ntype DeltaOrderSubmissionResult = {\n order?: SubmittedDeltaOrderFromAPI;\n isCreatingOrder: boolean;\n isOrderSent: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n};\n\ntype DeltaOrderExecutionResult = {\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\ntype DeltaOrderCancelationResult = {\n isCancelingOrder: boolean;\n isOrderCanceled: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n};\n\nexport type UseDeltaFlowResult = {\n tradeFlowType: typeof deltaOrderFlowType;\n chainId: SupportedChainId;\n runDeltaOrderFlow: (\n options?: RunDeltaOrderOptions\n ) => Promise<SubmitDeltaOrderResult>;\n reset: () => void; // reset on Error to retry\n cancelFlow: () => void; // cancel flow\n retryFlow: (\n options?: RunDeltaOrderOptions\n ) => Promise<SubmitDeltaOrderResult>; // reset and retry flow\n cancelDeltaOrder: () => void;\n approval: ApprovalFlowResult;\n signPermit: SignPermitFlowResult;\n deltaOrderPreSign: DeltaOrderPreSignResult;\n // submission represents either normal signing and POSTing of Order or pre-signing (in a tx) and POSTing\n deltaOrderSubmission: DeltaOrderSubmissionResult;\n deltaOrderExecution: DeltaOrderExecutionResult;\n deltaOrderCancelation: DeltaOrderCancelationResult;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n result?: SubmitDeltaOrderResult;\n usedPrice?: DeltaPrice | BridgePrice;\n submittedDeltaOrder?: Omit<DeltaAuction, \"signature\" | \"transactions\">;\n};\n\nconst DELTA_ORDER_MUTATION_KEY = \"runDeltaOrderFlow\";\n\nexport function useDeltaFlow({\n deltaPrice,\n preWrapETH,\n}: UseDeltaFlowInput): UseDeltaFlowResult {\n const logger = useLogger(\"DeltaFlow\");\n const chainId = useChainId();\n const { resolvedSlippage } = useSlippage(\"swap\");\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\n const swapSideFromInput = useSwapSide();\n\n const {\n approval,\n signPermit,\n approveTxMut,\n signPermitMut,\n events: approveOrPermitEvents,\n } = useApproveOrPermit({\n srcToken: deltaPrice?.srcToken,\n srcAmount: deltaPrice?.srcAmount,\n spenderContractType: \"ParaswapDelta\",\n swapSide:\n (deltaPrice && getSwapSideFromDeltaPrice(deltaPrice)) ||\n swapSideFromInput,\n tradeMode: \"swap\",\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 const queryClient = useQueryClient();\n\n const createOrderMut = useCreateDeltaOrder({\n chainId,\n account,\n client: minClient,\n mutationOptions: {\n onSuccess: (order) => {\n logger.log(\"Create Delta Order success\", order);\n },\n onError: (error) => {\n logger.error(\"Create Delta Order error\", error);\n },\n },\n });\n\n const deltaOrderCreateAndSubmit: UseDeltaFlowResult[\"deltaOrderSubmission\"] =\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 deltaOrderSubmission: UseDeltaFlowResult[\"deltaOrderSubmission\"] = {\n order: deltaOrderCreateAndSubmit.order || deltaOrderPreSign.order,\n isCreatingOrder:\n deltaOrderCreateAndSubmit.isPending || deltaOrderPreSign.isCreatingOrder,\n isOrderSent:\n deltaOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isOrderSent,\n isPending:\n deltaOrderCreateAndSubmit.isPending || deltaOrderPreSign.isPending,\n isError: deltaOrderCreateAndSubmit.isError || deltaOrderPreSign.isError,\n isSuccess:\n deltaOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isSuccess,\n error: deltaOrderCreateAndSubmit.error || deltaOrderPreSign.error,\n };\n\n /* 5. await Order execution */\n\n const watchOrderExecution = useWatchDeltaAuction({\n orderId: deltaOrderSubmission.order?.id,\n onAuctionSuccess: (order) => {\n logger.log(\"Delta Order success\", order);\n },\n onAuctionFailure: (order) => {\n logger.log(\"Delta Order failure\", order);\n },\n onUpdatedAuction: (order) => {\n logger.log(\"Delta Order updated\", order);\n },\n onTimeoutGettingOrder: (order) => {\n logger.log(\"Delta 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 deltaOrderExecution: UseDeltaFlowResult[\"deltaOrderExecution\"] = {\n sentOrder: deltaOrderSubmission.order,\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 = deltaOrderSubmission.order?.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 Delta Order success\", successResponse);\n if (deltaOrderExecution.sentOrder?.id) {\n // refetch the order to get updated status\n queryClient.invalidateQueries({\n queryKey: deltaAuctionPollingQueryKey({\n orderId: deltaOrderExecution.sentOrder.id,\n }),\n });\n }\n cancelOrderEvents.onSuccess?.(successResponse, vars);\n },\n onError: (error, vars) => {\n logger.error(\"Cancel Delta Order error\", error);\n cancelOrderEvents.onError?.(error, vars);\n },\n },\n });\n\n const deltaOrderCancelation: UseDeltaFlowResult[\"deltaOrderCancelation\"] = {\n isCancelingOrder: cancelOrderMut.isPending,\n isOrderCanceled: 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 ensureOrderExecuted = useEnsureDeltaOrderExecuted({\n onAuctionSuccess: (order) => {\n queryClient.invalidateQueries({\n queryKey: deltaOrdersQueryKey({\n userAddress: order.user,\n }),\n exact: false,\n });\n },\n onAuctionFailure: (order) => {\n queryClient.invalidateQueries({\n queryKey: deltaOrdersQueryKey({\n userAddress: order.user,\n }),\n exact: false,\n });\n },\n });\n const ensureTxReceipt = useEnsureTxReceipt();\n\n const currentAbortControllerRef = useRef<AbortController | null>(null);\n const usingPriceRef = useRef<DeltaPrice | BridgePrice | 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 partner = usePartner();\n const protocolName = useAtomValue(protocolNameAtom);\n const bridgePreference = useAtomValue(bridgePreferenceAtom);\n\n const getQueryForPrice = useDeltaPriceQueryForPrice();\n const subscribeToPrice = useSubscribeToDeltaPrice();\n\n const { onSwap } = useWidgetEvents();\n\n const submitDeltaOrder = async ({\n onTxSent,\n onOrderSent,\n }: RunDeltaOrderOptions = {}): Promise<SubmitDeltaOrderResult> => {\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 createOrderMut.reset();\n cancelOrderMut.reset();\n resetPreSignAndSubmitDeltaOrder();\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(deltaPrice, \"Delta price is not available\");\n const swapSide = getSwapSideFromDeltaPrice(deltaPrice);\n\n const abortController = new AbortController();\n currentAbortControllerRef.current = abortController;\n\n const signal = abortController.signal;\n\n // on Delta the order.deadline must exactly match permit2.deadline\n const orderDeadline = produceDeltaOrderDeadline();\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 // deltaPrice here is the starting price, available before async code and waiting\n let freshPrice = deltaPrice;\n let unsubscribeFromPrice: (() => void) | undefined;\n // this also resets previous usingPriceRef\n usingPriceRef.current = freshPrice;\n\n /*\n if connected to Safe, or needs to approve a token with a tx, or needs to pre-wrap ETH\n and can batch txs, then pre-sign the batch;\n that way Safe does only one action (wrapETH?+Approve+setPreSignature batch tx)\n and a wallet that would otherwise potentially wrap ETH and then Approve Token (tx, not Permit),\n and then sign Order, basically has to make at least one tx, does only one action as well.\n */\n const { shouldDoApprovalTxOrPermit, tryPermit, shouldPreSignBatch } =\n shouldApproveOrBatch({\n approval,\n preWrapETH,\n signPermit,\n canBatchTxs,\n isConnectedToSafe,\n });\n\n try {\n if (shouldDoApprovalTxOrPermit && 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: (price) => {\n let newPrice: DeltaOrBridgePrice = price;\n if (isBridgePrice(price)) {\n newPrice = extractSelectedBridgePrice({\n price,\n protocolName,\n bridgePreference,\n });\n }\n\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 srcAmount if BUY with slippage,\n // slightly lower destAmount if SELL with slippage\n const amountsAfterSlippage = applySlippage(\n {\n srcAmount: newPrice.srcAmount,\n destAmount: newPrice.receivedDestAmount,\n },\n resolvedSlippage,\n swapSide\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 try {\n if (!tryPermit) {\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 } else {\n approveOrPermitEvents.onSignPermit.request({ allowanceToSet });\n\n // sign Permit\n signedPermitResult = await signPermitMut.signPermitAsync({\n deadline: orderDeadline,\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\n // as long as we had set approvedAmount, we will only get new prices that satisfy the allowance\n const deltaPriceToUse = freshPrice;\n usingPriceRef.current = deltaPriceToUse;\n // no longer need updates, unsubscribe\n unsubscribeFromPrice?.();\n unsubscribeFromPrice = undefined;\n\n assert(deltaPriceToUse, \"Delta price is not available\");\n\n const amountsAfterSlippage = applySlippage(\n {\n srcAmount: deltaPriceToUse.srcAmount,\n destAmount: deltaPriceToUse.receivedDestAmount,\n },\n resolvedSlippage,\n swapSide\n );\n\n let permit = signedPermitResult?.permitEncodedArgs;\n if (\n signedPermitResult?.signedPermitData.type === \"permit2\" &&\n signedPermitResult.signedPermitData.variant === \"transferFrom\"\n ) {\n // In the Delta Contract, specifically for Permit2 transferFrom, we have signature consisting of\n // bytes32(permit2nonce) + bytes64(signature) = bytes96 Permit2 Transfer format\n permit = encodePermit2TransferFromSigDataForDelta({\n nonce: signedPermitResult.signedPermitData.nonce,\n signature: signedPermitResult.signature,\n });\n }\n\n const destChainId = isBridgePrice(deltaPriceToUse)\n ? deltaPriceToUse.bridge.destinationChainId\n : chainId;\n\n onSwap?.({\n event: {\n name: \"Swap:request\",\n params: {\n swapMode: \"delta\",\n price: deltaPriceToUse,\n },\n },\n });\n\n let orderFromAPI: DeltaOrderApiResponse;\n\n const createOrderInput: CreateDeltaOrderInput = {\n signal,\n type: \"MARKET\",\n orderInput: {\n owner: account,\n beneficiary: receiverAddress,\n srcToken: deltaPriceToUse.srcToken,\n destToken: deltaPriceToUse.destToken,\n permit,\n destChainId,\n deltaPrice: deltaPriceToUse,\n partner,\n ...amountsAfterSlippage,\n deadline: Number(orderDeadline),\n side: swapSide,\n },\n };\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 // Order is sent, consider Token nonce as used\n if (signedPermitResult) {\n markNonceAsUsed(signedPermitResult.signedPermitData);\n }\n\n onSwap?.({\n event: {\n name: \"Swap:sent\",\n params: {\n swapMode: \"delta\",\n price: deltaPriceToUse,\n order: orderFromAPI,\n },\n },\n });\n\n // will refetch Order on interval until completed.\n // in parallel with useWatchDeltaAuction but independently if useWatchDeltaAuction is unmounted\n const lastOrderStatePromise = ensureOrderExecuted({\n orderId: orderFromAPI.id,\n // signal, // fails the toast if aborted, don't use\n });\n\n if (onOrderSent) {\n onOrderSent({\n order: orderFromAPI,\n lastOrderState: lastOrderStatePromise,\n });\n }\n\n const lastOrderState = await lastOrderStatePromise;\n\n onSwap?.({\n event: {\n name: \"Swap:confirmed\",\n params: {\n swapMode: \"delta\",\n price: deltaPriceToUse,\n order: orderFromAPI,\n },\n },\n });\n\n // no use aborting past this point, Order is already being processed\n\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 // @TODO try catch, handle errors, refetch allowance and balance in finally\n\n return {\n tradeFlowType: deltaOrderFlowType,\n approve: {\n txHash: approveTxHash,\n receipt: approveTxReceipt,\n },\n deltaOrder: {\n sentOrder: orderFromAPI,\n lastOrderState,\n },\n deltaPrice: deltaPriceToUse,\n // @TODO add whatever else may be relevant\n account,\n receiverAddress,\n };\n } catch (error) {\n // Order failed, we can't be sure if nonce can be reused or it was incremented in a different Order\n // or even a Market swap tx in the meantime\n if (signedPermitResult) {\n clearNonce(signedPermitResult.signedPermitData);\n }\n onSwap?.({\n event: {\n name: \"Swap:failed\",\n params: {\n swapMode: \"delta\",\n error: error as Error,\n },\n },\n });\n\n throw error;\n } finally {\n // always unsubscribe if subscribed previously\n unsubscribeFromPrice?.();\n }\n };\n\n const cancelDeltaOrder = () => {\n assert(deltaOrderSubmission.order, \"No order to cancel\");\n cancelOrderMut.mutate({\n orderIds: [deltaOrderSubmission.order.id],\n });\n };\n\n const deltaOrderMut = useMutation({\n mutationFn: submitDeltaOrder,\n mutationKey: [DELTA_ORDER_MUTATION_KEY],\n onSuccess: (data) => {\n logger.log(\"Delta Order success\", data);\n },\n onError: (error) => {\n logger.error(\"Delta Order error\", error);\n },\n onSettled: () => {\n logger.log(\"Delta Order settled\");\n },\n });\n\n const runDeltaOrderFlow = deltaOrderMut.mutateAsync;\n\n const reset = () => {\n usingPriceRef.current = null;\n\n approveTxMut.reset();\n signPermitMut.reset();\n createOrderMut.reset();\n deltaOrderMut.reset();\n cancelOrderMut.reset();\n resetPreSignAndSubmitDeltaOrder();\n };\n\n const retryFlow = (\n options?: RunDeltaOrderOptions\n ): Promise<SubmitDeltaOrderResult> => {\n reset();\n return runDeltaOrderFlow(options);\n };\n\n // finalPrice if we reached that point, or usable price (based on allowance given)\n const usedPrice: typeof deltaPrice = usingPriceRef.current || deltaPrice;\n\n const result = deltaOrderMut.data;\n\n /**\n * priority:\n * 1. lastOrderState = updated sent Order from final result\n * 2. sentOrder = just sent Order from final result\n * 3. deltaOrderExecution.lastOrderState = updated sent Order from watchOrderExecution (intermediate result)\n * 4. deltaOrderExecution.sentOrder = just sent Order from watchOrderExecution (intermediate result)\n */\n const submittedDeltaOrder:\n | Omit<DeltaAuction, \"signature\" | \"transactions\">\n | undefined =\n result?.deltaOrder.lastOrderState ||\n result?.deltaOrder.sentOrder ||\n deltaOrderExecution.lastOrderState ||\n deltaOrderExecution.sentOrder;\n\n /* 6. return result */\n return {\n tradeFlowType: deltaOrderFlowType,\n chainId,\n runDeltaOrderFlow,\n reset,\n cancelFlow,\n retryFlow,\n cancelDeltaOrder,\n approval,\n signPermit,\n deltaOrderPreSign,\n deltaOrderSubmission,\n deltaOrderExecution,\n deltaOrderCancelation,\n // deltaOrderMut includes all steps' queries and mutations and returns more precise errors (including cancellation)\n isPending: deltaOrderMut.isPending,\n isSuccess: deltaOrderSubmission.isSuccess && deltaOrderExecution.isSuccess, // approval is an optional step\n isError: deltaOrderMut.isError,\n error: deltaOrderMut.error,\n result,\n usedPrice,\n submittedDeltaOrder,\n };\n}\n"],"names":["deltaOrderFlowType","DELTA_ORDER_MUTATION_KEY","useDeltaFlow","deltaPrice","preWrapETH","logger","useLogger","chainId","useChainId","resolvedSlippage","useSlippage","swapSideFromInput","useSwapSide","approval","signPermit","approveTxMut","signPermitMut","events","approveOrPermitEvents","useApproveOrPermit","srcToken","srcAmount","spenderContractType","swapSide","getSwapSideFromDeltaPrice","tradeMode","address","account","useAccount","minClient","useMinViemClient","queryClient","useQueryClient","createOrderMut","useCreateDeltaOrder","client","mutationOptions","onSuccess","order","log","onError","error","deltaOrderCreateAndSubmit","data","isCreatingOrder","isPending","isOrderSent","isSuccess","isError","deltaOrderPreSign","canBatchTxs","isConnectedToSafe","preSignAndSubmitDeltaOrder","reset","resetPreSignAndSubmitDeltaOrder","usePreSignAndSubmitDeltaOrder","viemClient","deltaOrderSubmission","watchOrderExecution","useWatchDeltaAuction","orderId","id","onAuctionSuccess","onAuctionFailure","onUpdatedAuction","onTimeoutGettingOrder","orderStatus","getOverallOrderStatus","neverFetchedFinishedOrder","deltaOrderExecution","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","deltaOrderCancelation","isCancelingOrder","isOrderCanceled","success","ensureOrderExecuted","useEnsureDeltaOrderExecuted","deltaOrdersQueryKey","userAddress","user","exact","ensureTxReceipt","useEnsureTxReceipt","currentAbortControllerRef","useRef","usingPriceRef","cancelFlow","current","abort","UserCancelledError","receiverAddress","useSwapReceiverAddressValue","markNonceAsUsed","clearNonce","useMarkPermit1Or2NonceAsUsed","partner","usePartner","protocolName","useAtomValue","protocolNameAtom","bridgePreference","bridgePreferenceAtom","getQueryForPrice","useDeltaPriceQueryForPrice","subscribeToPrice","useSubscribeToDeltaPrice","onSwap","useWidgetEvents","submitDeltaOrder","onTxSent","onOrderSent","abortController","AbortController","signal","orderDeadline","produceDeltaOrderDeadline","signedPermitResult","approveTxHash","approveTxReceipt","allowanceToSet","freshPrice","unsubscribeFromPrice","shouldDoApprovalTxOrPermit","tryPermit","shouldPreSignBatch","shouldApproveOrBatch","price","approvedAmount","onData","newPrice","isBridgePrice","extractSelectedBridgePrice","aborted","undefined","amountsAfterSlippage","applySlippage","destAmount","receivedDestAmount","BigInt","onApproveTx","request","approveAsync","allowanceData","sent","txHash","throwIfAborted","approveTxReceiptPromise","hash","onReplaced","action","transactionHash","receiptPromise","transactionSpecificData","tokenAddress","token","spenderAddress","spender","confirmed","txReceipt","onSignPermit","signPermitAsync","deadline","value","permit","permitEncodedArgs","failed","deltaPriceToUse","signedPermitData","type","variant","encodePermit2TransferFromSigDataForDelta","nonce","signature","destChainId","bridge","destinationChainId","event","name","params","swapMode","orderFromAPI","createOrderInput","orderInput","owner","beneficiary","destToken","Number","side","createDeltaOrderInput","lastOrderStatePromise","tradeFlowType","approve","receipt","deltaOrder","cancelDeltaOrder","mutate","orderIds","deltaOrderMut","useMutation","mutationFn","mutationKey","onSettled","runDeltaOrderFlow","retryFlow","options","usedPrice","result","submittedDeltaOrder"],"mappings":"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"}
|
|
@@ -2,10 +2,12 @@ import { DeltaOrderStep, DeltaOrderStepKey } from '../../../components/widget/Tr
|
|
|
2
2
|
import { SubmitDeltaOrderResult, UseDeltaFlowInput, UseDeltaFlowResult } from './useDeltaFlow';
|
|
3
3
|
type UseDeltaSwapStepResult = {
|
|
4
4
|
startDeltaSwap: UseDeltaFlowResult["runDeltaOrderFlow"];
|
|
5
|
+
cancelDeltaOrder: UseDeltaFlowResult["cancelDeltaOrder"];
|
|
5
6
|
reset: UseDeltaFlowResult["reset"];
|
|
6
7
|
cancelFlow: UseDeltaFlowResult["cancelFlow"];
|
|
7
8
|
retryFlow: UseDeltaFlowResult["retryFlow"];
|
|
8
9
|
isFlowCancellable: boolean;
|
|
10
|
+
isOrderCancellable: boolean;
|
|
9
11
|
step?: DeltaOrderStep;
|
|
10
12
|
explorerLink?: string;
|
|
11
13
|
error: Error | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDeltaSwapStep.d.ts","sourceRoot":"","sources":["../../../../src/hooks/swap/tradeFlow/useDeltaSwapStep.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EAClB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"useDeltaSwapStep.d.ts","sourceRoot":"","sources":["../../../../src/hooks/swap/tradeFlow/useDeltaSwapStep.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EAClB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAC;AAMxB,KAAK,sBAAsB,GAAG;IAC5B,cAAc,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;IACxD,gBAAgB,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;IAEzD,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACnC,UAAU,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAC7C,SAAS,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC3C,iBAAiB,EAAE,OAAO,CAAC;IAC3B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,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,sBAAsB,CAAC;IAChC,SAAS,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC3C,mBAAmB,EAAE,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;IAC/D,aAAa,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAC;CACpD,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,iBAAiB,GACzB,sBAAsB,CAgIxB"}
|