@velora-dex/widget 0.1.3 → 0.2.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/_virtual/index.js +1 -1
- package/dist/components/ui/accordion.d.ts +3 -1
- package/dist/components/ui/accordion.d.ts.map +1 -1
- package/dist/components/ui/accordion.js +42 -27
- package/dist/components/ui/accordion.js.map +1 -1
- package/dist/components/ui/button.js.map +1 -1
- package/dist/components/ui/dialog.js.map +1 -1
- package/dist/components/ui/dropdown-menu.js.map +1 -1
- package/dist/components/ui/progress.js.map +1 -1
- package/dist/components/ui/sonner.js.map +1 -1
- package/dist/components/ui/tooltip.js.map +1 -1
- package/dist/components/web3/AccountButton.d.ts.map +1 -1
- package/dist/components/web3/AccountButton.js +24 -27
- package/dist/components/web3/AccountButton.js.map +1 -1
- package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.js.map +1 -1
- package/dist/components/web3/ConnectWallets/WalletConnectButtons.js.map +1 -1
- package/dist/components/web3/ConnectWallets/index.js +43 -35
- package/dist/components/web3/ConnectWallets/index.js.map +1 -1
- package/dist/components/web3/ConnectWallets/privy/button.js.map +1 -1
- package/dist/components/web3/ConnectWallets/privy/iframe.js.map +1 -1
- package/dist/components/web3/ConnectWallets/walletIcons.js.map +1 -1
- package/dist/components/web3/ConnectedWallet/ConnectedWallet.d.ts.map +1 -1
- package/dist/components/web3/ConnectedWallet/ConnectedWallet.js +103 -133
- package/dist/components/web3/ConnectedWallet/ConnectedWallet.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/Activities.js +4 -12
- package/dist/components/widget/AppHeader/Activities/Activities.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/ActivityItems.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/Drawers.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/hooks.js.map +1 -1
- package/dist/components/widget/AppHeader/ActivityButton.js.map +1 -1
- package/dist/components/widget/AppHeader/AppHeader.d.ts.map +1 -1
- package/dist/components/widget/AppHeader/AppHeader.js +39 -33
- package/dist/components/widget/AppHeader/AppHeader.js.map +1 -1
- package/dist/components/widget/AppHeader/TradeModeSwitcher.js.map +1 -1
- package/dist/components/widget/Details/DetailWithValueList.js.map +1 -1
- package/dist/components/widget/Details/DetailWithValueListExpandable.js.map +1 -1
- package/dist/components/widget/DexesList/DexItem.js.map +1 -1
- package/dist/components/widget/DexesList/DexesList.js +3 -14
- package/dist/components/widget/DexesList/DexesList.js.map +1 -1
- package/dist/components/widget/Dialog/DialogRoot.js.map +1 -1
- package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressDialog.js +131 -115
- package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressDialog.js.map +1 -1
- package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressInput.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js +4 -12
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/RegularTokenList.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/index.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListRow.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenSearch.js.map +1 -1
- package/dist/components/widget/Dialog/state/dialogAtom.js +24 -26
- package/dist/components/widget/Dialog/state/dialogAtom.js.map +1 -1
- package/dist/components/widget/Drawer/Overlay.js.map +1 -1
- package/dist/components/widget/Drawer/index.d.ts.map +1 -1
- package/dist/components/widget/Drawer/index.js +119 -54
- package/dist/components/widget/Drawer/index.js.map +1 -1
- package/dist/components/widget/Drawer/state/useDrawerControls.js.map +1 -1
- package/dist/components/widget/ImportToken/ImportToken.js.map +1 -1
- package/dist/components/widget/ImportToken/useImportTokenDrawer.js.map +1 -1
- package/dist/components/widget/LimitOrdersDrawer/LimitOrderDetails/Controls.js.map +1 -1
- package/dist/components/widget/LimitOrdersDrawer/LimitOrderDetails/LimitOrderDetails.js.map +1 -1
- package/dist/components/widget/LimitOrdersDrawer/LimitOrderListItem.js +84 -66
- package/dist/components/widget/LimitOrdersDrawer/LimitOrderListItem.js.map +1 -1
- package/dist/components/widget/LimitPriceInput/index.js.map +1 -1
- package/dist/components/widget/Line/Line.js.map +1 -1
- package/dist/components/widget/NetworkIcon/NetworkIconSquare.js.map +1 -1
- package/dist/components/widget/NetworkSwitcher/CompactNetworkSwitcher.js.map +1 -1
- package/dist/components/widget/NetworkSwitcher/NetworkSwitcherDropdown.js +28 -30
- package/dist/components/widget/NetworkSwitcher/NetworkSwitcherDropdown.js.map +1 -1
- package/dist/components/widget/NetworkWithIcon/NetworkIconWithChevron.js.map +1 -1
- package/dist/components/widget/NetworkWithIcon/NetworkWithIcon.js.map +1 -1
- package/dist/components/widget/OrderExpiryInput/index.js.map +1 -1
- package/dist/components/widget/OtcOrdersDrawer/OtcOrderDetails/Controls.js.map +1 -1
- package/dist/components/widget/OtcOrdersDrawer/OtcOrderDetails/OtcOrderDetails.js.map +1 -1
- package/dist/components/widget/OtcOrdersDrawer/OtcOrderListItem.js.map +1 -1
- package/dist/components/widget/PayReceiveInfo/PayReceiveInfo.js.map +1 -1
- package/dist/components/widget/ReceiverAddress/ReceiverAddress.js.map +1 -1
- package/dist/components/widget/ReceiverAddress/state/receiverAddressAtom.js.map +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcControls.js.map +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcReviewAndConfirm.js.map +1 -1
- package/dist/components/widget/SelectToken/SelectTokenButton.d.ts.map +1 -1
- package/dist/components/widget/SelectToken/SelectTokenButton.js +51 -51
- package/dist/components/widget/SelectToken/SelectTokenButton.js.map +1 -1
- package/dist/components/widget/SelectToken/types.d.ts +1 -1
- package/dist/components/widget/SelectToken/types.d.ts.map +1 -1
- package/dist/components/widget/SwapModeSwitcher/SwapModeSwitcherExpandable.js.map +1 -1
- package/dist/components/widget/SwapModeSwitcher/state/swapSideAtom.js.map +1 -1
- package/dist/components/widget/SwapRate/SwapRate.js +75 -43
- package/dist/components/widget/SwapRate/SwapRate.js.map +1 -1
- package/dist/components/widget/Tabs/Tabs.js.map +1 -1
- package/dist/components/widget/Toasts/CustomToast.js.map +1 -1
- package/dist/components/widget/TokenBadge/TokenBadge.js.map +1 -1
- package/dist/components/widget/TokenInput/index.d.ts.map +1 -1
- package/dist/components/widget/TokenInput/index.js +107 -148
- package/dist/components/widget/TokenInput/index.js.map +1 -1
- package/dist/components/widget/TokenSwitcher/TokenSwitcher.js.map +1 -1
- package/dist/components/widget/TradeOverview/Step/Step.js.map +1 -1
- package/dist/components/widget/TradeOverview/Stepper.js +23 -38
- package/dist/components/widget/TradeOverview/Stepper.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteFooter.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteHeader.js +36 -27
- package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteHeader.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.js +79 -36
- package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeDetailsDisplay.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverview.d.ts +3 -0
- package/dist/components/widget/TradeOverview/TradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverviewFooter.js.map +1 -1
- package/dist/components/widget/TradeOverview/tradeFlowContext.js.map +1 -1
- package/dist/components/widget/TradeParameters/SlippageParameter/SlippageParameter.js.map +1 -1
- package/dist/components/widget/TradeParameters/SlippageParameter/hooks/useCustomSlippageProps.js.map +1 -1
- package/dist/components/widget/TradeParameters/TradeParameters.js.map +1 -1
- package/dist/components/widget/TradeParameters/TransactionSpeedParameter.js.map +1 -1
- package/dist/components/widget/TradeParameters/hooks/useIsNotDefaultAnyParameter.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/gasPresetParamAtom.js.map +1 -1
- package/dist/components/widget/TradeParameters/useTempTradeParameters.js.map +1 -1
- package/dist/components/widget/TransactionDetails/LimitOrderDetails/Controls.js.map +1 -1
- package/dist/components/widget/TransactionDetails/LimitOrderDetails/TransactionDetails.js.map +1 -1
- package/dist/components/widget/TransactionDetails/TransactionListItem.js +57 -38
- package/dist/components/widget/TransactionDetails/TransactionListItem.js.map +1 -1
- package/dist/components/widget/Warning/InsufficientBalanceMessage.js.map +1 -1
- package/dist/components/widget/Warning/Warning.js.map +1 -1
- package/dist/components/widget/Warning/WarningMessage.js.map +1 -1
- package/dist/components/widget/WrapEth/WrapEthContent.js.map +1 -1
- package/dist/components/widget/WrapEth/WrapEthDrawerButton.d.ts.map +1 -1
- package/dist/components/widget/WrapEth/WrapEthDrawerButton.js +72 -90
- package/dist/components/widget/WrapEth/WrapEthDrawerButton.js.map +1 -1
- package/dist/components/widget/WrapEth/hooks/useWrapEthProps.d.ts.map +1 -1
- package/dist/components/widget/WrapEth/hooks/useWrapEthProps.js +141 -84
- package/dist/components/widget/WrapEth/hooks/useWrapEthProps.js.map +1 -1
- package/dist/components/widget/YouGet/YouGet.js.map +1 -1
- package/dist/configurator/Configurator.d.ts.map +1 -1
- package/dist/configurator/components/AllowNoUsdPricesSwitcher.d.ts +5 -0
- package/dist/configurator/components/AllowNoUsdPricesSwitcher.d.ts.map +1 -0
- package/dist/configurator/components/CrossChainSwitcher.d.ts +5 -0
- package/dist/configurator/components/CrossChainSwitcher.d.ts.map +1 -0
- package/dist/configurator/components/DeltaSwitcher.d.ts +5 -0
- package/dist/configurator/components/DeltaSwitcher.d.ts.map +1 -0
- package/dist/configurator/components/DevTools.d.ts +7 -0
- package/dist/configurator/components/DevTools.d.ts.map +1 -0
- package/dist/configurator/components/EnabledChainsSelector.d.ts +8 -0
- package/dist/configurator/components/EnabledChainsSelector.d.ts.map +1 -0
- package/dist/configurator/components/FormPropsInputs.d.ts +6 -0
- package/dist/configurator/components/FormPropsInputs.d.ts.map +1 -0
- package/dist/configurator/components/PanelHeader.d.ts +6 -0
- package/dist/configurator/components/PanelHeader.d.ts.map +1 -0
- package/dist/configurator/components/PartnerInput.d.ts +5 -0
- package/dist/configurator/components/PartnerInput.d.ts.map +1 -0
- package/dist/configurator/components/PrivyInputs.d.ts +7 -0
- package/dist/configurator/components/PrivyInputs.d.ts.map +1 -0
- package/dist/configurator/components/ThemeSwitcher.d.ts +6 -0
- package/dist/configurator/components/ThemeSwitcher.d.ts.map +1 -0
- package/dist/configurator/components/TokenListsInput.d.ts +5 -0
- package/dist/configurator/components/TokenListsInput.d.ts.map +1 -0
- package/dist/configurator/components/TradeModesSelector.d.ts +7 -0
- package/dist/configurator/components/TradeModesSelector.d.ts.map +1 -0
- package/dist/configurator/components/WidgetModeSwitcher.d.ts +5 -0
- package/dist/configurator/components/WidgetModeSwitcher.d.ts.map +1 -0
- package/dist/configurator/components/common/DetailWithTooltip.d.ts +3 -0
- package/dist/configurator/components/common/DetailWithTooltip.d.ts.map +1 -0
- package/dist/configurator/components/common/Input.d.ts +8 -0
- package/dist/configurator/components/common/Input.d.ts.map +1 -0
- package/dist/configurator/components/common/Switch.d.ts +12 -0
- package/dist/configurator/components/common/Switch.d.ts.map +1 -0
- package/dist/configurator/state/themeAtom.d.ts +3 -0
- package/dist/configurator/state/themeAtom.d.ts.map +1 -0
- package/dist/core/ConnectWalletDrawerButton.d.ts.map +1 -1
- package/dist/core/ConnectWalletDrawerButton.js +73 -64
- package/dist/core/ConnectWalletDrawerButton.js.map +1 -1
- package/dist/core/LimitOrderButton.js.map +1 -1
- package/dist/core/LimitOrderDetails.js.map +1 -1
- package/dist/core/OtcOrderButton.d.ts.map +1 -1
- package/dist/core/OtcOrderButton.js +4 -1
- package/dist/core/OtcOrderButton.js.map +1 -1
- package/dist/core/OtcOrderDetails.js.map +1 -1
- package/dist/core/Toaster.js.map +1 -1
- package/dist/core/TradeFlowButton.d.ts.map +1 -1
- package/dist/core/TradeFlowButton.js +414 -621
- package/dist/core/TradeFlowButton.js.map +1 -1
- package/dist/core/Updaters.js.map +1 -1
- package/dist/core/Warnings.js.map +1 -1
- package/dist/core/button/hooks/useWidgetButtonExtraProps.d.ts +1 -0
- package/dist/core/button/hooks/useWidgetButtonExtraProps.d.ts.map +1 -1
- package/dist/core/button/hooks/useWidgetButtonExtraProps.js +85 -49
- package/dist/core/button/hooks/useWidgetButtonExtraProps.js.map +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +98 -90
- package/dist/core/index.js.map +1 -1
- package/dist/core/inputs/hooks/useTokenFromInputProps.d.ts.map +1 -1
- package/dist/core/inputs/hooks/useTokenFromInputProps.js +83 -54
- package/dist/core/inputs/hooks/useTokenFromInputProps.js.map +1 -1
- package/dist/core/inputs/hooks/useTokenSwitcherProps.js.map +1 -1
- package/dist/core/inputs/hooks/useTokenToInputProps.js +20 -28
- package/dist/core/inputs/hooks/useTokenToInputProps.js.map +1 -1
- package/dist/core/inputs/state/common.d.ts +2 -2
- package/dist/core/inputs/state/common.js.map +1 -1
- package/dist/core/inputs/state/selectedTokenAtom.js.map +1 -1
- package/dist/core/inputs/state/setTokenByAddressAtom.d.ts +1 -14
- package/dist/core/inputs/state/setTokenByAddressAtom.d.ts.map +1 -1
- package/dist/core/inputs/state/setTokenByAddressAtom.js.map +1 -1
- package/dist/core/inputs/state/types.d.ts +15 -0
- package/dist/core/inputs/state/types.d.ts.map +1 -0
- package/dist/core/limit/state/deadlineAtom.js.map +1 -1
- package/dist/core/limit/state/selectedTokenAtom.js.map +1 -1
- package/dist/core/limit/useLimitDetailsListProps.js.map +1 -1
- package/dist/core/limit/useLimitNotSupported.js +12 -1
- package/dist/core/limit/useLimitNotSupported.js.map +1 -1
- package/dist/core/limit/useLimitPriceDifference.js.map +1 -1
- package/dist/core/limit/useLimitPriceInputProps.js.map +1 -1
- package/dist/core/limit/useLimitRate.js.map +1 -1
- package/dist/core/limit/useLimitTokenFromInputProps.d.ts.map +1 -1
- package/dist/core/limit/useLimitTokenFromInputProps.js +69 -52
- package/dist/core/limit/useLimitTokenFromInputProps.js.map +1 -1
- package/dist/core/limit/useLimitTokenSwitcherProps.js.map +1 -1
- package/dist/core/limit/useLimitTokenToInputProps.js.map +1 -1
- package/dist/core/logger.js +12 -14
- package/dist/core/logger.js.map +1 -1
- package/dist/core/otc/state/deadlineAtom.js.map +1 -1
- package/dist/core/otc/state/receiverAddressAtom.js.map +1 -1
- package/dist/core/otc/state/selectedTokenAtom.js.map +1 -1
- package/dist/core/otc/useOtcDetailsListProps.js.map +1 -1
- package/dist/core/otc/useOtcNotSupported.js +12 -1
- package/dist/core/otc/useOtcNotSupported.js.map +1 -1
- package/dist/core/otc/useOtcPriceDifference.js.map +1 -1
- package/dist/core/otc/useOtcPriceInputProps.js.map +1 -1
- package/dist/core/otc/useOtcTokenFromInputProps.d.ts.map +1 -1
- package/dist/core/otc/useOtcTokenFromInputProps.js +69 -52
- package/dist/core/otc/useOtcTokenFromInputProps.js.map +1 -1
- package/dist/core/otc/useOtcTokenSwitcherProps.js.map +1 -1
- package/dist/core/otc/useOtcTokenToInputProps.js.map +1 -1
- package/dist/core/state/chainToAtom.js.map +1 -1
- package/dist/core/state/configActionsAtom.d.ts.map +1 -1
- package/dist/core/state/configActionsAtom.js +3 -1
- package/dist/core/state/configActionsAtom.js.map +1 -1
- package/dist/core/state/configAtom.d.ts +5 -3
- package/dist/core/state/configAtom.d.ts.map +1 -1
- package/dist/core/state/configAtom.js +5 -9
- package/dist/core/state/configAtom.js.map +1 -1
- package/dist/core/state/configEffectAtom.js.map +1 -1
- package/dist/core/state/containerAtom.js.map +1 -1
- package/dist/core/state/enabledChainsAtom.js.map +1 -1
- package/dist/core/state/externalProviderAtom.js.map +1 -1
- package/dist/core/state/isCrosschainAtom.js.map +1 -1
- package/dist/core/state/tradeModeAtom.js.map +1 -1
- package/dist/core/state/widgetEventsAtom.d.ts.map +1 -1
- package/dist/core/state/widgetEventsAtom.js +55 -41
- package/dist/core/state/widgetEventsAtom.js.map +1 -1
- package/dist/core/swapDetails/useSwapDetailsListProps.js +34 -36
- package/dist/core/swapDetails/useSwapDetailsListProps.js.map +1 -1
- package/dist/core/types.d.ts +4 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/events/getters/limit.d.ts.map +1 -1
- package/dist/events/getters/limit.js +3 -2
- package/dist/events/getters/limit.js.map +1 -1
- package/dist/events/getters/otc.d.ts.map +1 -1
- package/dist/events/getters/otc.js +3 -2
- package/dist/events/getters/otc.js.map +1 -1
- package/dist/events/getters/swap.d.ts.map +1 -1
- package/dist/events/getters/swap.js +3 -2
- package/dist/events/getters/swap.js.map +1 -1
- package/dist/events/hooks/useActivateEffects.js.map +1 -1
- package/dist/events/hooks/useOnWalletConnect.d.ts.map +1 -1
- package/dist/events/hooks/useOnWalletConnect.js +2 -0
- package/dist/events/hooks/useOnWalletConnect.js.map +1 -1
- package/dist/events/types/approve.d.ts +22 -6
- package/dist/events/types/approve.d.ts.map +1 -1
- package/dist/events/types/common.d.ts +3 -2
- package/dist/events/types/common.d.ts.map +1 -1
- package/dist/events/types/connectWallet.d.ts +2 -0
- package/dist/events/types/connectWallet.d.ts.map +1 -1
- package/dist/events/types/index.d.ts +5 -2
- package/dist/events/types/index.d.ts.map +1 -1
- package/dist/external/.pnpm/react-compiler-runtime@1.0.0_react@19.1.1/external/react-compiler-runtime/dist/index.js.map +1 -0
- package/dist/hooks/batch/useAwaitCalls.d.ts.map +1 -1
- package/dist/hooks/batch/useAwaitCalls.js +20 -16
- package/dist/hooks/batch/useAwaitCalls.js.map +1 -1
- package/dist/hooks/batch/useCanBatchTxs.js.map +1 -1
- package/dist/hooks/batch/useSendBatchTx.js.map +1 -1
- package/dist/hooks/connectors/useIsConnectedSafe.js +10 -18
- package/dist/hooks/connectors/useIsConnectedSafe.js.map +1 -1
- package/dist/hooks/connectors/useIsGnosisSafeConnector.js.map +1 -1
- package/dist/hooks/connectors/useIsSafeThroughWalletConnect.js +4 -15
- package/dist/hooks/connectors/useIsSafeThroughWalletConnect.js.map +1 -1
- package/dist/hooks/gas/useGasPrices.js.map +1 -1
- package/dist/hooks/getCode/useIsAccountContract.js.map +1 -1
- package/dist/hooks/getCode/useIsContractAtAddress.js +30 -46
- package/dist/hooks/getCode/useIsContractAtAddress.js.map +1 -1
- package/dist/hooks/otc/mutations/useCancelLimitOrder.d.ts.map +1 -1
- package/dist/hooks/otc/mutations/useCancelLimitOrder.js +21 -12
- package/dist/hooks/otc/mutations/useCancelLimitOrder.js.map +1 -1
- package/dist/hooks/otc/mutations/useCreateLimitOrder.d.ts.map +1 -1
- package/dist/hooks/otc/mutations/useCreateLimitOrder.js +22 -12
- package/dist/hooks/otc/mutations/useCreateLimitOrder.js.map +1 -1
- package/dist/hooks/otc/mutations/useFillOrder.d.ts.map +1 -1
- package/dist/hooks/otc/mutations/useFillOrder.js +10 -32
- package/dist/hooks/otc/mutations/useFillOrder.js.map +1 -1
- package/dist/hooks/otc/queries/useLimitOrderRequiredBalance.d.ts +22 -3
- package/dist/hooks/otc/queries/useLimitOrderRequiredBalance.d.ts.map +1 -1
- package/dist/hooks/otc/queries/useLimitOrderRequiredBalance.js +39 -2
- package/dist/hooks/otc/queries/useLimitOrderRequiredBalance.js.map +1 -1
- package/dist/hooks/otc/queries/useLimitOrders.js.map +1 -1
- package/dist/hooks/otc/tradeFlow/useFillOtcOrderFlow.d.ts.map +1 -1
- package/dist/hooks/otc/tradeFlow/useFillOtcOrderFlow.js +2 -3
- package/dist/hooks/otc/tradeFlow/useFillOtcOrderFlow.js.map +1 -1
- package/dist/hooks/otc/tradeFlow/useFillOtcOrderStep.js.map +1 -1
- package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.d.ts +7 -4
- package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.d.ts.map +1 -1
- package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.js +46 -4
- package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.js.map +1 -1
- package/dist/hooks/otc/tradeFlow/useOtcOrderStep.d.ts.map +1 -1
- package/dist/hooks/otc/tradeFlow/useOtcOrderStep.js +38 -36
- package/dist/hooks/otc/tradeFlow/useOtcOrderStep.js.map +1 -1
- package/dist/hooks/permit/hooks/common/useSignArbitraryTypedData.js.map +1 -1
- package/dist/hooks/permit/hooks/common/useSignPermit.js.map +1 -1
- package/dist/hooks/permit/hooks/common/useWalletSupportsPermit.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/useGetPermitInfo.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/useGetSafePermitInfo.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/useSignTokenPermit1.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/useTokenFromPermit1Nonce.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/useTokenFromPermitInfo.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/useTryToSignPermit1.js.map +1 -1
- package/dist/hooks/permit/hooks/permit2/usePermit2Allowance.js +39 -31
- package/dist/hooks/permit/hooks/permit2/usePermit2Allowance.js.map +1 -1
- package/dist/hooks/permit/hooks/permit2/useSignTokenPermit2TransferFrom.js +7 -15
- package/dist/hooks/permit/hooks/permit2/useSignTokenPermit2TransferFrom.js.map +1 -1
- package/dist/hooks/permit/hooks/permit2/useTokenFromPermit2TransferFromNonce.js.map +1 -1
- package/dist/hooks/sdk/useGetContracts.js.map +1 -1
- package/dist/hooks/sdk/useSpender.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelLimitDeltaOrders.d.ts +2 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelLimitDeltaOrders.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelLimitDeltaOrders.js +23 -13
- package/dist/hooks/swap/prices/delta/mutations/useCancelLimitDeltaOrders.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts +3 -2
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js +41 -10
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.d.ts +25 -0
- package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.js +88 -0
- package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.js.map +1 -0
- package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.d.ts +16 -0
- package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js +83 -0
- package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js.map +1 -0
- package/dist/hooks/swap/prices/delta/orders/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/utils.js +3 -2
- package/dist/hooks/swap/prices/delta/orders/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useBridgeInfo.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.d.ts +22 -3
- package/dist/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.js +39 -2
- package/dist/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useIsTokenSupportedInDelta.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/market/mutations/useBuildTx.js.map +1 -1
- package/dist/hooks/swap/prices/market/mutations/useSendMarketSwapTx.js.map +1 -1
- package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js.map +1 -1
- package/dist/hooks/swap/prices/market/queries/useSpenderAndContracts.d.ts +9 -0
- package/dist/hooks/swap/prices/market/queries/useSpenderAndContracts.d.ts.map +1 -1
- package/dist/hooks/swap/prices/market/queries/useSpenderAndContracts.js +49 -2
- package/dist/hooks/swap/prices/market/queries/useSpenderAndContracts.js.map +1 -1
- package/dist/hooks/swap/prices/usePricesParams.js.map +1 -1
- package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
- package/dist/hooks/swap/prices/useTokenInputsFromPrice.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/types.d.ts +17 -0
- package/dist/hooks/swap/tradeFlow/common/types.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.d.ts +3 -1
- package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.js +164 -140
- package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useApproveOrPermitEvents.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useBatchWrapAndApprove.d.ts +46 -0
- package/dist/hooks/swap/tradeFlow/common/useBatchWrapAndApprove.d.ts.map +1 -0
- package/dist/hooks/swap/tradeFlow/common/useBatchWrapAndApprove.js +328 -0
- package/dist/hooks/swap/tradeFlow/common/useBatchWrapAndApprove.js.map +1 -0
- package/dist/hooks/swap/tradeFlow/common/useConstructGasParams.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useConstructGasParams.js +16 -14
- package/dist/hooks/swap/tradeFlow/common/useConstructGasParams.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.d.ts +74 -0
- package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.d.ts.map +1 -0
- package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.js +274 -0
- package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.js.map +1 -0
- package/dist/hooks/swap/tradeFlow/common/useRequiredAllowanceForOrders.d.ts +15 -0
- package/dist/hooks/swap/tradeFlow/common/useRequiredAllowanceForOrders.d.ts.map +1 -0
- package/dist/hooks/swap/tradeFlow/common/useRequiredAllowanceForOrders.js +88 -0
- package/dist/hooks/swap/tradeFlow/common/useRequiredAllowanceForOrders.js.map +1 -0
- package/dist/hooks/swap/tradeFlow/common/useSignPermit1Or2.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/utils.d.ts +1 -0
- package/dist/hooks/swap/tradeFlow/common/utils.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/utils.js +16 -1
- package/dist/hooks/swap/tradeFlow/common/utils.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +28 -23
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +59 -17
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts +4 -3
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js +61 -15
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useLimitOrderStep.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketFlow.d.ts +2 -18
- package/dist/hooks/swap/tradeFlow/useMarketFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js.map +1 -1
- package/dist/hooks/tokens/allowance/useTokenAllowance.js +25 -15
- package/dist/hooks/tokens/allowance/useTokenAllowance.js.map +1 -1
- package/dist/hooks/tokens/balances/useAttachTokenBalanceMultichain.js +8 -10
- package/dist/hooks/tokens/balances/useAttachTokenBalanceMultichain.js.map +1 -1
- package/dist/hooks/tokens/balances/useIsInsufficientTokenBalance.js.map +1 -1
- package/dist/hooks/tokens/balances/useIsLimitOrderInsufficientBalance.js.map +1 -1
- package/dist/hooks/tokens/balances/useMultichainTokenBalances.js +20 -37
- package/dist/hooks/tokens/balances/useMultichainTokenBalances.js.map +1 -1
- package/dist/hooks/tokens/balances/useTokenBalance.js.map +1 -1
- package/dist/hooks/tokens/data/useCombineTokensWithFetched.js +11 -19
- package/dist/hooks/tokens/data/useCombineTokensWithFetched.js.map +1 -1
- package/dist/hooks/tokens/data/useFetchTokens.js.map +1 -1
- package/dist/hooks/tokens/data/useMultichainTokensData.js.map +1 -1
- package/dist/hooks/tokens/prices/useMultichainTokenPrices.js +21 -25
- package/dist/hooks/tokens/prices/useMultichainTokenPrices.js.map +1 -1
- package/dist/hooks/tokens/prices/useTokenPrices.js.map +1 -1
- package/dist/hooks/tokens/useAllTokensWithFilter.js +121 -49
- package/dist/hooks/tokens/useAllTokensWithFilter.js.map +1 -1
- package/dist/hooks/tokens/useNativeToken.js +1 -1
- package/dist/hooks/tokens/useNativeToken.js.map +1 -1
- package/dist/hooks/tokens/useTokenTaxFee.js.map +1 -1
- package/dist/hooks/tokens/useTokensByAddress.js.map +1 -1
- package/dist/hooks/tokens/useTokensFromAcross.js.map +1 -1
- package/dist/hooks/txs/mutations/useApprove.js.map +1 -1
- package/dist/hooks/txs/mutations/useDepositWeth.js.map +1 -1
- package/dist/hooks/txs/mutations/useSendTx.js.map +1 -1
- package/dist/hooks/txs/queries/useAwaitTx.js.map +1 -1
- package/dist/hooks/txs/queries/useTxHistory.js.map +1 -1
- package/dist/hooks/useAvailableCrosses.js.map +1 -1
- package/dist/hooks/useBridgeInfo.js.map +1 -1
- package/dist/hooks/useCurrentChain.js.map +1 -1
- package/dist/hooks/useDebouncedInputState.js.map +1 -1
- package/dist/hooks/useEIP1559Enabled.js.map +1 -1
- package/dist/hooks/useGlobalDeltaEnabled.js.map +1 -1
- package/dist/hooks/useIsCrosschainPossible.js.map +1 -1
- package/dist/hooks/useMinViemClient.js.map +1 -1
- package/dist/hooks/useSDK.d.ts +3 -2
- package/dist/hooks/useSDK.d.ts.map +1 -1
- package/dist/hooks/useSDK.js +37 -8
- package/dist/hooks/useSDK.js.map +1 -1
- package/dist/hooks/useSelectableDestChains.js.map +1 -1
- package/dist/hooks/useSlippage.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/lib/utils/approval.js.map +1 -1
- package/dist/lib/utils/theme.d.ts +2 -0
- package/dist/lib/utils/theme.d.ts.map +1 -0
- package/dist/lib/utils/theme.js +10 -0
- package/dist/lib/utils/theme.js.map +1 -0
- package/dist/lib/utils/tradeFlow.d.ts +3 -0
- package/dist/lib/utils/tradeFlow.d.ts.map +1 -0
- package/dist/lib/utils/tradeFlow.js +12 -0
- package/dist/lib/utils/tradeFlow.js.map +1 -0
- package/dist/lib/web3/wagmi/isInsideSafeIframe.js.map +1 -1
- package/dist/styles.css +89 -44
- package/dist/tokens/hooks.js.map +1 -1
- package/dist/tokens/lists/state/effects.js.map +1 -1
- package/dist/tokens/queries.js +6 -10
- package/dist/tokens/queries.js.map +1 -1
- package/dist/tokens/stabeCoins/hooks.js +3 -5
- package/dist/tokens/stabeCoins/hooks.js.map +1 -1
- package/dist/tokens/utils/transferAmountsFromReceipt.js.map +1 -1
- package/dist/transactions/queries/ensureCallsStatus.d.ts +1 -0
- package/dist/transactions/queries/ensureCallsStatus.d.ts.map +1 -1
- package/dist/transactions/queries/ensureCallsStatus.js +7 -5
- package/dist/transactions/queries/ensureCallsStatus.js.map +1 -1
- package/dist/transactions/state/hooks/useActivateEffects.js.map +1 -1
- package/dist/transactions/state/hooks/useTransactions.js.map +1 -1
- package/dist/transactions/types.d.ts +21 -1
- package/dist/transactions/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/components/widget/TokenInput/EmptyInput.js +0 -58
- package/dist/components/widget/TokenInput/EmptyInput.js.map +0 -1
- package/dist/external/.pnpm/react-compiler-runtime@19.1.0-rc.2_react@19.1.1/external/react-compiler-runtime/dist/index.js.map +0 -1
- /package/dist/external/.pnpm/{react-compiler-runtime@19.1.0-rc.2_react@19.1.1 → react-compiler-runtime@1.0.0_react@19.1.1}/external/react-compiler-runtime/dist/index.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMarketFlow.js","sources":["../../../../src/hooks/swap/tradeFlow/useMarketFlow.ts"],"sourcesContent":["import { useAwaitTx } from \"@/hooks/txs\";\nimport type { OptimalRate } from \"@velora-dex/sdk\";\nimport { useAccount, useChainId } from \"wagmi\";\nimport { useSendMarketSwapTx } from \"../prices/market/mutations/useSendMarketSwapTx\";\nimport { useBuildTx } from \"../prices/market/mutations/useBuildTx\";\nimport { assert } from \"ts-essentials\";\nimport { useEnsureTxReceipt } from \"@/hooks/txs/queries/useAwaitTx\";\nimport type { Address, Hash, Hex, TransactionReceipt } from \"viem\";\nimport type {\n ApprovalFlowResult,\n SignPermitFlowResult,\n SubmitTxResult,\n} from \"./common/types\";\nimport { applySlippage } from \"@/lib/utils/price\";\nimport { useSlippage } from \"@/hooks/useSlippage\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { useRef } from \"react\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { UserCancelledError } from \"./common/errors\";\nimport { useSwapReceiverAddressValue } from \"@/components/widget/ReceiverAddress/state/receiverAddressAtom\";\nimport type {\n CallsSentObject,\n TxSentObject,\n} from \"@/lib/utils/transactionHandlers\";\nimport { useSwapSide } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\nimport { useApproveOrPermit } from \"./common/useApproveOrPermit\";\nimport {\n useMarkPermit1Or2NonceAsUsed,\n type SignedPermitResult,\n} from \"./common/useSignPermit1Or2\";\nimport { useLogger } from \"@/core/logger\";\nimport { useConstructGasParams } from \"./common/useConstructGasParams\";\nimport {\n useMarketPriceQueryForPrice,\n useSubscribeToMarketPrice,\n} from \"../prices/market/queries/useMarketPriceQuery\";\nimport { usePartner } from \"@/hooks/usePartner\";\n\nconst marketSwapFlowType = \"marketSwap\";\nimport { useSendBatchTx } from \"@/hooks/batch/useSendBatchTx\";\nimport { useCanBatchTxs } from \"@/hooks/batch/useCanBatchTxs\";\nimport {\n useAwaitCalls,\n useEnsureCallsStatus,\n} from \"@/hooks/batch/useAwaitCalls\";\nimport { type CallsReceipt } from \"@/hooks/batch/useAwaitCalls\";\nimport { useBatchWithApproveTxs } from \"@/hooks/batch/useBatchWithApproveTxs\";\nimport { useWidgetEvents } from \"@/core/state/widgetEventsAtom\";\n\nexport type UseMarketFlowInput = {\n marketPrice?: OptimalRate;\n};\n\nexport type SubmitSwapResult = {\n tradeFlowType: typeof marketSwapFlowType;\n approve: SubmitTxResult;\n swap: SubmitTxResult;\n marketPrice: OptimalRate;\n account: Address;\n receiverAddress?: Address;\n};\n\ntype OnTxSent = (txSent: TxSentObject | CallsSentObject) => void;\n// @TODO instead add global onTxSent subscription to\n// MutationCache({onSuccess: txHash}) when sent\n// and QueryCache({onSuccess: txReceipt}) when mined,\n// maybe??\ntype RunMarketOptions = {\n onTxSent?: OnTxSent;\n};\n\nexport type UseMarketFlowResult = {\n tradeFlowType: typeof marketSwapFlowType;\n chainId: SupportedChainId;\n runMarketSwapFlow: (options?: RunMarketOptions) => Promise<SubmitSwapResult>;\n reset: () => void; // reset on Error to retry\n cancelFlow: () => void; // cancel flow\n retryFlow: (options?: RunMarketOptions) => Promise<SubmitSwapResult>; // reset and retry flow\n approval: ApprovalFlowResult;\n signPermit: SignPermitFlowResult;\n buildTxParams: {\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n swap: {\n txHash?: Hash;\n receipt?: TransactionReceipt;\n isConfirmingTX: boolean;\n isConfirmingTxError: boolean;\n isTxSent: boolean;\n isTxPending: boolean;\n isTxMined: boolean;\n isTxAwaitingError: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n swapBatch: {\n canBatchTxs?: boolean;\n callsId?: string;\n txHash?: Hash;\n receipt?: CallsReceipt;\n isConfirmingCalls: boolean;\n isConfirmingCallsError: boolean;\n isCallsSent: boolean;\n isCallsPending: boolean;\n isCallsMined: boolean;\n isCallsAwaitingError: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n result?: SubmitSwapResult;\n usedPrice?: OptimalRate;\n};\n\nconst MARKET_SWAP_MUTATION_KEY = \"runMarketSwapFlow\";\n\nexport function useMarketFlow({\n marketPrice,\n}: UseMarketFlowInput): UseMarketFlowResult {\n const logger = useLogger(\"MarketFlow\");\n const chainId = useChainId();\n const { resolvedSlippage } = useSlippage(\"swap\");\n const swapSide = useSwapSide();\n\n /* Inside useApproveOrPermit:\n 1. Get allowance for tokenFrom \n 2.1. submit Approve tx if necessary \n\n 2.2. sign Permit1 \n\n 3. await Approve tx (if not using Permit) \n */\n const {\n approval,\n signPermit,\n approveTxMut,\n signPermitMut,\n events: approveOrPermitEvents,\n } = useApproveOrPermit({\n srcToken: marketPrice?.srcToken,\n // if we already approved some amount, save it in approval and signPermit objects\n srcAmount: marketPrice?.srcAmount,\n spenderContractType: \"AugustusSwapper\",\n // marketPrice is the preferred source of truth\n swapSide: marketPrice?.side ?? swapSide,\n tradeMode: \"swap\",\n });\n\n /* 4. Build Swap tx */\n const buildTxMut = useBuildTx({\n chainId,\n mutationOptions: {\n onSuccess: () => {\n logger.log(\"Build tx success\");\n },\n onError: (error) => {\n logger.error(\"Build tx error\", error);\n },\n },\n });\n\n const buildTxParams: UseMarketFlowResult[\"buildTxParams\"] = {\n isPending: buildTxMut.isPending,\n isError: buildTxMut.isError,\n isSuccess: buildTxMut.isSuccess,\n error: buildTxMut.error,\n };\n\n /* 5. submit Swap tx */\n\n /* 5.1. submit standalone Swap tx */\n\n const sendSwapTxMut = useSendMarketSwapTx({\n onSuccess: () => {\n logger.log(\"Swap tx success\");\n },\n onError: (error) => {\n logger.error(\"Swap tx error\", error);\n },\n });\n\n /* 5.2. submit Batch tx */\n const { forCurrentChain: canBatchTxs } = useCanBatchTxs();\n const { addTxWithApprovals } = useBatchWithApproveTxs();\n\n const batchTxMut = useSendBatchTx({\n onSuccess: () => {\n logger.log(\"Batch tx success\");\n },\n onError: (error) => {\n logger.error(\"Batch tx error\", error);\n },\n });\n\n /* 6. await Swap tx */\n\n /* 6.1. await standalone Swap tx */\n const swapTxMined = useAwaitTx({\n hash: sendSwapTxMut.txHash,\n chainId,\n });\n\n /* 6.2. await Batch tx */\n const batchTxMined = useAwaitCalls({\n id: batchTxMut.data?.id,\n });\n\n const swap: UseMarketFlowResult[\"swap\"] = {\n txHash: sendSwapTxMut.txHash,\n receipt: swapTxMined.data,\n /* tx sending */\n isConfirmingTX: sendSwapTxMut.isPending,\n isConfirmingTxError: sendSwapTxMut.isError,\n isTxSent: sendSwapTxMut.isSuccess,\n /* tx awaiting */\n isTxPending: swapTxMined.isLoading,\n isTxMined: swapTxMined.isSuccess,\n isTxAwaitingError: swapTxMined.isError,\n /* combined */\n isPending: sendSwapTxMut.isPending || swapTxMined.isLoading,\n isSuccess: swapTxMined.isSuccess, // final success\n isError: sendSwapTxMut.isError || swapTxMined.isError,\n error: sendSwapTxMut.error || swapTxMined.error,\n };\n\n // for a successful SendCalls execution there will either be one receipt only,\n // or several receipts with the last one for the last tx from the batch\n const lastCallsReceipt =\n batchTxMined.data?.receipts?.[batchTxMined.data.receipts.length - 1];\n\n const swapBatch: UseMarketFlowResult[\"swapBatch\"] = {\n canBatchTxs,\n callsId: batchTxMut.data?.id,\n txHash: lastCallsReceipt?.transactionHash,\n receipt: lastCallsReceipt,\n /* calls sending */\n isConfirmingCalls: batchTxMut.isPending,\n isConfirmingCallsError: batchTxMut.isError,\n isCallsSent: batchTxMut.isSuccess,\n /* calls awaiting */\n isCallsPending: batchTxMined.isLoading,\n isCallsMined: batchTxMined.isSuccess,\n isCallsAwaitingError: batchTxMined.isError,\n /* combined */\n isPending: batchTxMut.isPending || batchTxMined.isLoading,\n isSuccess: batchTxMined.isSuccess,\n isError: batchTxMut.isError || batchTxMined.isError,\n error: batchTxMut.error || batchTxMined.error,\n };\n\n const { address: account } = useAccount();\n\n const ensureTxReceipt = useEnsureTxReceipt();\n const ensureCallsStatus = useEnsureCallsStatus();\n\n // allows to abort (cancel) currently running flow,\n const currentAbortControllerRef = useRef<AbortController | null>(null);\n const usingPriceRef = useRef<OptimalRate | null>(null);\n\n const cancelFlow = () => {\n currentAbortControllerRef.current?.abort(new UserCancelledError());\n currentAbortControllerRef.current = null;\n\n usingPriceRef.current = null;\n };\n\n const receiverAddress = useSwapReceiverAddressValue();\n\n const { markNonceAsUsed, clearNonce } = useMarkPermit1Or2NonceAsUsed({\n chainId,\n });\n\n const { constructGasParams } = useConstructGasParams();\n\n const partner = usePartner();\n\n const getQueryForPrice = useMarketPriceQueryForPrice();\n const subscribeToPrice = useSubscribeToMarketPrice();\n\n const { onSwap } = useWidgetEvents();\n\n const submitSwapTx: UseMarketFlowResult[\"runMarketSwapFlow\"] = async ({\n onTxSent,\n } = {}) => {\n // reset all mutations except the current one,\n // otherwise we'll have previous data (txs) as mutation results\n approveTxMut.reset();\n signPermitMut.reset();\n buildTxMut.reset();\n sendSwapTxMut.reset();\n batchTxMut.reset();\n\n // no sense in starting flow without a price,\n // which may be unavailable only if we are retrying and deltaPrice response now returns an error.\n // Otherwise this flow will be stopped by disabling Swap button in the first place\n assert(marketPrice, \"Market price is not available\");\n\n const abortController = new AbortController();\n currentAbortControllerRef.current = abortController;\n\n const signal = abortController.signal;\n\n let signedPermitResult: SignedPermitResult | undefined;\n\n let approveTxHash: Hash | undefined;\n let approveTxReceipt: TransactionReceipt | undefined;\n\n // at this point this is the syncronously available price\n const allowanceToSet = approval.allowanceToSet;\n // we use this allowance as a max allowance we will accept new prices for\n\n // marketPrice here is the starting price, available before async code and waiting\n let freshPrice = marketPrice;\n let unsubscribeFromPrice: (() => void) | undefined;\n // this also resets previous usingPriceRef\n usingPriceRef.current = freshPrice;\n\n const shouldBatchTxs =\n canBatchTxs && approval.needsApproval && !!allowanceToSet;\n\n try {\n // need allowance\n if (!shouldBatchTxs && approval.needsApproval && allowanceToSet) {\n // queryKey used to fetch the current price,\n // it will be used for the subsequent price refetches as long as price params not changed\n const queryKey = getQueryForPrice({\n chainId,\n price: freshPrice,\n })?.queryKey;\n\n // should always be available\n if (queryKey) {\n // freeze allowanceToSet\n const approvedAmount = allowanceToSet;\n\n // subscribe to price updates to keep track of new prices for the same price params,\n // independently of the hook itself\n unsubscribeFromPrice = subscribeToPrice({\n queryKey,\n onData: (newPrice) => {\n if (signal.aborted) {\n // just in case unsubscribe in finally is not yet called\n // for the queued update with the price from an already cancelled flow\n unsubscribeFromPrice?.();\n unsubscribeFromPrice = undefined;\n return;\n }\n\n // slightly higher amount if BUY with slippage\n const amountsAfterSlippage = applySlippage(\n {\n srcAmount: newPrice.srcAmount,\n destAmount: newPrice.destAmount,\n },\n resolvedSlippage,\n newPrice.side\n );\n\n // if new price fits into allowance, update it\n if (approvedAmount >= BigInt(amountsAfterSlippage.srcAmount)) {\n logger.log(\"~ fresh price ~\", newPrice);\n freshPrice = newPrice;\n usingPriceRef.current = freshPrice;\n }\n },\n });\n }\n\n const tryPermit =\n signPermit.isPermitSupported && signPermit.isPermitReadyToSign;\n try {\n if (!tryPermit) {\n approveOrPermitEvents.onApproveTx.request({ allowanceToSet });\n\n // Token doesn't support Permit\n // make an Approval tx\n approveTxHash = await approveTxMut.approveAsync({\n allowanceData: {\n allowanceToSet,\n },\n });\n\n approveOrPermitEvents.onApproveTx.sent({\n allowanceToSet,\n txHash: approveTxHash,\n });\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n const approveTxReceiptPromise = ensureTxReceipt({\n hash: approveTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\"onReplaced:approveTx\", approveTxHash, data);\n },\n });\n\n if (onTxSent) {\n onTxSent({\n chainId,\n action: \"approve\",\n transactionHash: approveTxHash,\n receiptPromise: approveTxReceiptPromise,\n transactionSpecificData: {\n action: \"approve\",\n approvedAmount: allowanceToSet,\n tokenAddress: approval.token as Address,\n spenderAddress: approval.spender as Address,\n },\n });\n }\n\n approveTxReceipt = await approveTxReceiptPromise;\n\n approveOrPermitEvents.onApproveTx.confirmed({\n allowanceToSet,\n txHash: approveTxHash,\n txReceipt: approveTxReceipt,\n });\n\n logger.log(\"~ approveTx ~ receipt:\", approveTxReceipt);\n // @TODO check if we need to see if receipt.status === \"reverted\" and throw,\n // or if waitForTransactionReceipt already throws on such receipts\n } else {\n approveOrPermitEvents.onSignPermit.request({ allowanceToSet });\n\n // sign Permit\n signedPermitResult = await signPermitMut.signPermitAsync({\n value: allowanceToSet,\n });\n\n approveOrPermitEvents.onSignPermit.confirmed({\n allowanceToSet,\n permit: signedPermitResult?.permitEncodedArgs,\n });\n }\n } catch (error) {\n if (!tryPermit) {\n approveOrPermitEvents.onApproveTx.failed({\n allowanceToSet,\n error: error as Error,\n txHash: approveTxHash, // won't necessarily be available\n });\n } else {\n approveOrPermitEvents.onSignPermit.failed({\n allowanceToSet,\n error: error as Error,\n });\n }\n throw error;\n }\n }\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n assert(account, \"Account is not connected\");\n // as long as we had set approvedAmount, we will only get new prices that satisfy the allowance\n const marketPriceToUse = freshPrice;\n usingPriceRef.current = marketPriceToUse;\n // no longer need updates, unsubscribe\n unsubscribeFromPrice?.();\n unsubscribeFromPrice = undefined;\n\n assert(marketPriceToUse, \"Market price is not available\");\n\n const amountsAfterSlippage = applySlippage(\n {\n srcAmount: marketPriceToUse.srcAmount,\n destAmount: marketPriceToUse.destAmount,\n },\n resolvedSlippage,\n marketPriceToUse.side\n );\n\n // fresh gas params\n const gasParams = constructGasParams();\n\n const txParams = await buildTxMut.mutateAsync({\n swapTxInput: {\n userAddress: account,\n receiver: receiverAddress,\n srcToken: marketPriceToUse.srcToken,\n destToken: marketPriceToUse.destToken,\n srcDecimals: marketPriceToUse.srcDecimals,\n destDecimals: marketPriceToUse.destDecimals,\n\n partner,\n /* @TODO fill in when and if available\n referrer: \"\",\n partnerAddress: \"\",\n partnerFeeBps: 0, \n takeSurplus: false,*/\n permit: signedPermitResult?.permitEncodedArgs, // just signed Permit signature\n\n priceRoute: marketPriceToUse,\n ...amountsAfterSlippage,\n },\n\n swapTxOptions: {\n // ignoreChecks: true,\n // gas estimate will break if only swapn tx is estimated, but approve ts is not considerewd in a batch\n ignoreGasEstimate: shouldBatchTxs,\n // for Batch-capable wallets batch Approve+Swap tx have to ignore all checks\n ignoreAllowance: shouldBatchTxs,\n // onlyParams: true,\n ...gasParams,\n },\n });\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n let swapTxHash: Hash | undefined;\n let swapCallsId: string | undefined;\n\n onSwap?.({\n event: {\n name: \"Swap:request\",\n params: {\n swapMode: \"market\",\n price: marketPriceToUse,\n },\n },\n });\n\n if (shouldBatchTxs) {\n const { calls } = await addTxWithApprovals({\n txsParams: [\n {\n to: txParams.to as Address,\n account: txParams.from as Address,\n data: txParams.data as Hex,\n value: BigInt(txParams.value),\n chainId: txParams.chainId,\n },\n ],\n approveProps: [\n {\n spender: approval.spender,\n allowanceToSet: approval.allowanceToSet,\n token: approval.token,\n chainId: approval.chainId,\n },\n ],\n });\n\n const sendCallsResult = await batchTxMut.sendCalls({\n txsParams: calls,\n });\n swapCallsId = sendCallsResult.id;\n onSwap?.({\n event: {\n name: \"Swap:sent\",\n params: {\n swapMode: \"market\",\n price: marketPriceToUse,\n callsId: swapCallsId,\n },\n },\n });\n } else {\n swapTxHash = await sendSwapTxMut.sendTransactionAsync(txParams);\n onSwap?.({\n event: {\n name: \"Swap:sent\",\n params: {\n swapMode: \"market\",\n price: marketPriceToUse,\n txHash: swapTxHash,\n },\n },\n });\n }\n\n // no use aborting past this point, tx is already sent,\n // but we may want to connect this late abortion to tx cancellation, in the future\n\n // tx is sent, consider Token nonce as used\n if (signedPermitResult) {\n markNonceAsUsed(signedPermitResult.signedPermitData);\n }\n\n let swapCallsReceipt: CallsReceipt | undefined;\n let swapTxReceipt: TransactionReceipt | undefined;\n\n if (swapCallsId) {\n const sendCallsReceiptPromise = ensureCallsStatus({\n id: swapCallsId,\n }).then((status) => status.receipts?.[status.receipts.length - 1]);\n\n logger.log(\"~ swapTx ~ awaiting calls id :\", swapCallsId);\n\n if (onTxSent) {\n onTxSent({\n chainId,\n action: \"swap\",\n callsId: swapCallsId,\n receiptPromise: sendCallsReceiptPromise,\n transactionSpecificData: {\n action: \"swap\",\n source: \"local\",\n srcTokenAddress: marketPriceToUse.srcToken as Address,\n destTokenAddress: marketPriceToUse.destToken as Address,\n srcAmount: amountsAfterSlippage.srcAmount,\n destAmount: amountsAfterSlippage.destAmount,\n srcAmountUSD: marketPriceToUse.srcUSD,\n destAmountUSD: marketPriceToUse.destUSD,\n gasCost: marketPriceToUse.gasCost,\n },\n });\n }\n\n swapCallsReceipt = await sendCallsReceiptPromise;\n\n if (swapCallsReceipt) {\n onSwap?.({\n event: {\n name: \"Swap:confirmed\",\n params: {\n swapMode: \"market\",\n price: marketPriceToUse,\n callsReceipt: swapCallsReceipt,\n callsId: swapCallsId,\n },\n },\n });\n }\n } else if (swapTxHash) {\n const swapTxReceiptPromise = ensureTxReceipt({\n hash: swapTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\"onReplaced:swapTx\", swapTxHash, data);\n },\n });\n\n logger.log(\"~ swapTx ~ awaiting tx hash :\", swapTxHash);\n\n if (onTxSent) {\n onTxSent({\n chainId,\n action: \"swap\",\n transactionHash: swapTxHash,\n receiptPromise: swapTxReceiptPromise,\n transactionSpecificData: {\n action: \"swap\",\n source: \"local\",\n srcTokenAddress: marketPriceToUse.srcToken as Address,\n destTokenAddress: marketPriceToUse.destToken as Address,\n srcAmount: amountsAfterSlippage.srcAmount,\n destAmount: amountsAfterSlippage.destAmount,\n srcAmountUSD: marketPriceToUse.srcUSD,\n destAmountUSD: marketPriceToUse.destUSD,\n gasCost: marketPriceToUse.gasCost,\n gasCostUSD: marketPriceToUse.gasCostUSD,\n },\n });\n }\n\n swapTxReceipt = await swapTxReceiptPromise;\n\n if (swapTxReceipt) {\n onSwap?.({\n event: {\n name: \"Swap:confirmed\",\n params: {\n swapMode: \"market\",\n price: marketPriceToUse,\n txReceipt: swapTxReceipt,\n txHash: swapTxHash,\n },\n },\n });\n }\n }\n\n logger.log(\"~ swapTx ~ receipt:\", swapCallsReceipt || swapTxReceipt);\n // @TODO check if we need to see if receipt.status === \"reverted\" and trhow,\n // or if waitForTransactionReceipt already throws on such receipts\n\n return {\n tradeFlowType: marketSwapFlowType,\n approve: {\n txHash: approveTxHash,\n receipt: approveTxReceipt,\n },\n swap: {\n callsId: swapCallsId,\n txHash: swapTxHash,\n receipt: swapTxReceipt,\n callsReceipt: swapCallsReceipt,\n },\n marketPrice: marketPriceToUse,\n // @TODO add whatever else may be relevant\n account,\n receiverAddress,\n };\n } catch (error) {\n // Market swap failed, we can't be sure if nonce can be reused or it was incremented in a different tx\n // or even Order in the meantime\n if (signedPermitResult) {\n clearNonce(signedPermitResult.signedPermitData);\n }\n onSwap?.({\n event: {\n name: \"Swap:failed\",\n params: {\n swapMode: \"market\",\n error: error as Error,\n },\n },\n });\n throw error;\n } finally {\n // always unsubscribe if subscribed previously\n unsubscribeFromPrice?.();\n }\n };\n\n const marketSwapMut = useMutation({\n mutationFn: submitSwapTx,\n mutationKey: [MARKET_SWAP_MUTATION_KEY],\n onSuccess: (data) => {\n logger.log(\"Swap tx success\", data);\n },\n onError: (error) => {\n logger.error(\"Swap tx error\", error);\n },\n onSettled: () => {\n logger.log(\"Swap tx settled\");\n },\n });\n\n const runMarketSwapFlow = marketSwapMut.mutateAsync;\n\n const reset = () => {\n usingPriceRef.current = null;\n\n approveTxMut.reset();\n signPermitMut.reset();\n buildTxMut.reset();\n sendSwapTxMut.reset();\n batchTxMut.reset();\n marketSwapMut.reset();\n };\n\n const retryFlow = (options?: RunMarketOptions): Promise<SubmitSwapResult> => {\n reset();\n return runMarketSwapFlow(options);\n };\n\n // finalPrice if we reached that point, or usable price (based on allowance given)\n const usedPrice = usingPriceRef.current || marketPrice;\n\n /* 7. return result */\n return {\n tradeFlowType: marketSwapFlowType,\n chainId,\n runMarketSwapFlow,\n reset,\n cancelFlow,\n retryFlow,\n approval,\n signPermit,\n buildTxParams,\n swap,\n swapBatch,\n // marketSwapMut includes all steps' queries and mutations and returns more precise errors (including cancellation)\n isPending: marketSwapMut.isPending,\n isSuccess: marketSwapMut.isSuccess,\n isError: marketSwapMut.isError,\n error: marketSwapMut.error,\n result: marketSwapMut.data,\n usedPrice,\n };\n}\n"],"names":["marketSwapFlowType","MARKET_SWAP_MUTATION_KEY","useMarketFlow","marketPrice","logger","useLogger","chainId","useChainId","resolvedSlippage","useSlippage","swapSide","useSwapSide","approval","signPermit","approveTxMut","signPermitMut","events","approveOrPermitEvents","useApproveOrPermit","srcToken","srcAmount","spenderContractType","side","tradeMode","buildTxMut","useBuildTx","mutationOptions","onSuccess","log","onError","error","buildTxParams","isPending","isError","isSuccess","sendSwapTxMut","useSendMarketSwapTx","forCurrentChain","canBatchTxs","useCanBatchTxs","addTxWithApprovals","useBatchWithApproveTxs","batchTxMut","useSendBatchTx","swapTxMined","useAwaitTx","hash","txHash","batchTxMined","useAwaitCalls","id","data","swap","receipt","isConfirmingTX","isConfirmingTxError","isTxSent","isTxPending","isLoading","isTxMined","isTxAwaitingError","lastCallsReceipt","receipts","length","swapBatch","callsId","transactionHash","isConfirmingCalls","isConfirmingCallsError","isCallsSent","isCallsPending","isCallsMined","isCallsAwaitingError","address","account","useAccount","ensureTxReceipt","useEnsureTxReceipt","ensureCallsStatus","useEnsureCallsStatus","currentAbortControllerRef","useRef","usingPriceRef","cancelFlow","current","abort","UserCancelledError","receiverAddress","useSwapReceiverAddressValue","markNonceAsUsed","clearNonce","useMarkPermit1Or2NonceAsUsed","constructGasParams","useConstructGasParams","partner","usePartner","getQueryForPrice","useMarketPriceQueryForPrice","subscribeToPrice","useSubscribeToMarketPrice","onSwap","useWidgetEvents","submitSwapTx","onTxSent","reset","assert","abortController","AbortController","signal","signedPermitResult","approveTxHash","approveTxReceipt","allowanceToSet","freshPrice","unsubscribeFromPrice","shouldBatchTxs","needsApproval","queryKey","price","approvedAmount","onData","newPrice","aborted","undefined","amountsAfterSlippage","applySlippage","destAmount","BigInt","tryPermit","isPermitSupported","isPermitReadyToSign","onApproveTx","request","approveAsync","allowanceData","sent","throwIfAborted","approveTxReceiptPromise","onReplaced","action","receiptPromise","transactionSpecificData","tokenAddress","token","spenderAddress","spender","confirmed","txReceipt","onSignPermit","signPermitAsync","value","permit","permitEncodedArgs","failed","marketPriceToUse","gasParams","txParams","mutateAsync","swapTxInput","userAddress","receiver","destToken","srcDecimals","destDecimals","priceRoute","swapTxOptions","ignoreGasEstimate","ignoreAllowance","swapTxHash","swapCallsId","event","name","params","swapMode","calls","txsParams","to","from","approveProps","sendCallsResult","sendCalls","sendTransactionAsync","signedPermitData","swapCallsReceipt","swapTxReceipt","sendCallsReceiptPromise","then","status","source","srcTokenAddress","destTokenAddress","srcAmountUSD","srcUSD","destAmountUSD","destUSD","gasCost","callsReceipt","swapTxReceiptPromise","gasCostUSD","tradeFlowType","approve","marketSwapMut","useMutation","mutationFn","mutationKey","onSettled","runMarketSwapFlow","retryFlow","options","usedPrice","result"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useMarketFlow.js","sources":["../../../../src/hooks/swap/tradeFlow/useMarketFlow.ts"],"sourcesContent":["import { useAwaitTx } from \"@/hooks/txs\";\nimport type { OptimalRate } from \"@velora-dex/sdk\";\nimport { useAccount, useChainId } from \"wagmi\";\nimport { useSendMarketSwapTx } from \"../prices/market/mutations/useSendMarketSwapTx\";\nimport { useBuildTx } from \"../prices/market/mutations/useBuildTx\";\nimport { assert } from \"ts-essentials\";\nimport { useEnsureTxReceipt } from \"@/hooks/txs/queries/useAwaitTx\";\nimport type { Address, Hash, Hex, TransactionReceipt } from \"viem\";\nimport type {\n ApprovalFlowResult,\n SignPermitFlowResult,\n SubmitTxResult,\n} from \"./common/types\";\nimport { applySlippage } from \"@/lib/utils/price\";\nimport { useSlippage } from \"@/hooks/useSlippage\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { useRef } from \"react\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { UserCancelledError } from \"./common/errors\";\nimport { useSwapReceiverAddressValue } from \"@/components/widget/ReceiverAddress/state/receiverAddressAtom\";\nimport type {\n CallsSentObject,\n TxSentObject,\n} from \"@/lib/utils/transactionHandlers\";\nimport { useSwapSide } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\nimport { useApproveOrPermit } from \"./common/useApproveOrPermit\";\nimport {\n useMarkPermit1Or2NonceAsUsed,\n type SignedPermitResult,\n} from \"./common/useSignPermit1Or2\";\nimport { useLogger } from \"@/core/logger\";\nimport { useConstructGasParams } from \"./common/useConstructGasParams\";\nimport {\n useMarketPriceQueryForPrice,\n useSubscribeToMarketPrice,\n} from \"../prices/market/queries/useMarketPriceQuery\";\nimport { usePartner } from \"@/hooks/usePartner\";\n\nconst marketSwapFlowType = \"marketSwap\";\nimport { useSendBatchTx } from \"@/hooks/batch/useSendBatchTx\";\nimport { useCanBatchTxs } from \"@/hooks/batch/useCanBatchTxs\";\nimport {\n useAwaitCalls,\n useEnsureCallsStatus,\n} from \"@/hooks/batch/useAwaitCalls\";\nimport { type CallsReceipt } from \"@/hooks/batch/useAwaitCalls\";\nimport { useBatchWithApproveTxs } from \"@/hooks/batch/useBatchWithApproveTxs\";\nimport { useWidgetEvents } from \"@/core/state/widgetEventsAtom\";\nimport type { BatchTxStepResult } from \"./common/types\";\n\nexport type UseMarketFlowInput = {\n marketPrice?: OptimalRate;\n};\n\nexport type SubmitSwapResult = {\n tradeFlowType: typeof marketSwapFlowType;\n approve: SubmitTxResult;\n swap: SubmitTxResult;\n marketPrice: OptimalRate;\n account: Address;\n receiverAddress?: Address;\n};\n\ntype OnTxSent = (txSent: TxSentObject | CallsSentObject) => void;\n// @TODO instead add global onTxSent subscription to\n// MutationCache({onSuccess: txHash}) when sent\n// and QueryCache({onSuccess: txReceipt}) when mined,\n// maybe??\ntype RunMarketOptions = {\n onTxSent?: OnTxSent;\n};\n\nexport type UseMarketFlowResult = {\n tradeFlowType: typeof marketSwapFlowType;\n chainId: SupportedChainId;\n runMarketSwapFlow: (options?: RunMarketOptions) => Promise<SubmitSwapResult>;\n reset: () => void; // reset on Error to retry\n cancelFlow: () => void; // cancel flow\n retryFlow: (options?: RunMarketOptions) => Promise<SubmitSwapResult>; // reset and retry flow\n approval: ApprovalFlowResult;\n signPermit: SignPermitFlowResult;\n buildTxParams: {\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n swap: {\n txHash?: Hash;\n receipt?: TransactionReceipt;\n isConfirmingTX: boolean;\n isConfirmingTxError: boolean;\n isTxSent: boolean;\n isTxPending: boolean;\n isTxMined: boolean;\n isTxAwaitingError: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n swapBatch: BatchTxStepResult;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n result?: SubmitSwapResult;\n usedPrice?: OptimalRate;\n};\n\nconst MARKET_SWAP_MUTATION_KEY = \"runMarketSwapFlow\";\n\nexport function useMarketFlow({\n marketPrice,\n}: UseMarketFlowInput): UseMarketFlowResult {\n const logger = useLogger(\"MarketFlow\");\n const chainId = useChainId();\n const { resolvedSlippage } = useSlippage(\"swap\");\n const swapSide = useSwapSide();\n\n /* Inside useApproveOrPermit:\n 1. Get allowance for tokenFrom \n 2.1. submit Approve tx if necessary \n\n 2.2. sign Permit1 \n\n 3. await Approve tx (if not using Permit) \n */\n const {\n approval,\n signPermit,\n approveTxMut,\n signPermitMut,\n events: approveOrPermitEvents,\n } = useApproveOrPermit({\n srcToken: marketPrice?.srcToken,\n // if we already approved some amount, save it in approval and signPermit objects\n srcAmount: marketPrice?.srcAmount,\n spenderContractType: \"AugustusSwapper\",\n // marketPrice is the preferred source of truth\n swapSide: marketPrice?.side ?? swapSide,\n tradeMode: \"swap\",\n });\n\n /* 4. Build Swap tx */\n const buildTxMut = useBuildTx({\n chainId,\n mutationOptions: {\n onSuccess: () => {\n logger.log(\"Build tx success\");\n },\n onError: (error) => {\n logger.error(\"Build tx error\", error);\n },\n },\n });\n\n const buildTxParams: UseMarketFlowResult[\"buildTxParams\"] = {\n isPending: buildTxMut.isPending,\n isError: buildTxMut.isError,\n isSuccess: buildTxMut.isSuccess,\n error: buildTxMut.error,\n };\n\n /* 5. submit Swap tx */\n\n /* 5.1. submit standalone Swap tx */\n\n const sendSwapTxMut = useSendMarketSwapTx({\n onSuccess: () => {\n logger.log(\"Swap tx success\");\n },\n onError: (error) => {\n logger.error(\"Swap tx error\", error);\n },\n });\n\n /* 5.2. submit Batch tx */\n const { forCurrentChain: canBatchTxs } = useCanBatchTxs();\n const { addTxWithApprovals } = useBatchWithApproveTxs();\n\n const batchTxMut = useSendBatchTx({\n onSuccess: () => {\n logger.log(\"Batch tx success\");\n },\n onError: (error) => {\n logger.error(\"Batch tx error\", error);\n },\n });\n\n /* 6. await Swap tx */\n\n /* 6.1. await standalone Swap tx */\n const swapTxMined = useAwaitTx({\n hash: sendSwapTxMut.txHash,\n chainId,\n });\n\n /* 6.2. await Batch tx */\n const batchTxMined = useAwaitCalls({\n id: batchTxMut.data?.id,\n });\n\n const swap: UseMarketFlowResult[\"swap\"] = {\n txHash: sendSwapTxMut.txHash,\n receipt: swapTxMined.data,\n /* tx sending */\n isConfirmingTX: sendSwapTxMut.isPending,\n isConfirmingTxError: sendSwapTxMut.isError,\n isTxSent: sendSwapTxMut.isSuccess,\n /* tx awaiting */\n isTxPending: swapTxMined.isLoading,\n isTxMined: swapTxMined.isSuccess,\n isTxAwaitingError: swapTxMined.isError,\n /* combined */\n isPending: sendSwapTxMut.isPending || swapTxMined.isLoading,\n isSuccess: swapTxMined.isSuccess, // final success\n isError: sendSwapTxMut.isError || swapTxMined.isError,\n error: sendSwapTxMut.error || swapTxMined.error,\n };\n\n // for a successful SendCalls execution there will either be one receipt only,\n // or several receipts with the last one for the last tx from the batch\n const lastCallsReceipt =\n batchTxMined.data?.receipts?.[batchTxMined.data.receipts.length - 1];\n\n const swapBatch: UseMarketFlowResult[\"swapBatch\"] = {\n canBatchTxs,\n callsId: batchTxMut.data?.id,\n txHash: lastCallsReceipt?.transactionHash,\n receipt: lastCallsReceipt,\n /* calls sending */\n isConfirmingCalls: batchTxMut.isPending,\n isConfirmingCallsError: batchTxMut.isError,\n isCallsSent: batchTxMut.isSuccess,\n /* calls awaiting */\n isCallsPending: batchTxMined.isLoading,\n isCallsMined: batchTxMined.isSuccess,\n isCallsAwaitingError: batchTxMined.isError,\n /* combined */\n isPending: batchTxMut.isPending || batchTxMined.isLoading,\n isSuccess: batchTxMined.isSuccess,\n isError: batchTxMut.isError || batchTxMined.isError,\n error: batchTxMut.error || batchTxMined.error,\n };\n\n const { address: account } = useAccount();\n\n const ensureTxReceipt = useEnsureTxReceipt();\n const ensureCallsStatus = useEnsureCallsStatus();\n\n // allows to abort (cancel) currently running flow,\n const currentAbortControllerRef = useRef<AbortController | null>(null);\n const usingPriceRef = useRef<OptimalRate | null>(null);\n\n const cancelFlow = () => {\n currentAbortControllerRef.current?.abort(new UserCancelledError());\n currentAbortControllerRef.current = null;\n\n usingPriceRef.current = null;\n };\n\n const receiverAddress = useSwapReceiverAddressValue();\n\n const { markNonceAsUsed, clearNonce } = useMarkPermit1Or2NonceAsUsed({\n chainId,\n });\n\n const { constructGasParams } = useConstructGasParams();\n\n const partner = usePartner();\n\n const getQueryForPrice = useMarketPriceQueryForPrice();\n const subscribeToPrice = useSubscribeToMarketPrice();\n\n const { onSwap } = useWidgetEvents();\n\n const submitSwapTx: UseMarketFlowResult[\"runMarketSwapFlow\"] = async ({\n onTxSent,\n } = {}) => {\n // reset all mutations except the current one,\n // otherwise we'll have previous data (txs) as mutation results\n approveTxMut.reset();\n signPermitMut.reset();\n buildTxMut.reset();\n sendSwapTxMut.reset();\n batchTxMut.reset();\n\n // no sense in starting flow without a price,\n // which may be unavailable only if we are retrying and deltaPrice response now returns an error.\n // Otherwise this flow will be stopped by disabling Swap button in the first place\n assert(marketPrice, \"Market price is not available\");\n\n const abortController = new AbortController();\n currentAbortControllerRef.current = abortController;\n\n const signal = abortController.signal;\n\n let signedPermitResult: SignedPermitResult | undefined;\n\n let approveTxHash: Hash | undefined;\n let approveTxReceipt: TransactionReceipt | undefined;\n\n // at this point this is the syncronously available price\n const allowanceToSet = approval.allowanceToSet;\n // we use this allowance as a max allowance we will accept new prices for\n\n // marketPrice here is the starting price, available before async code and waiting\n let freshPrice = marketPrice;\n let unsubscribeFromPrice: (() => void) | undefined;\n // this also resets previous usingPriceRef\n usingPriceRef.current = freshPrice;\n\n const shouldBatchTxs =\n canBatchTxs && approval.needsApproval && !!allowanceToSet;\n\n try {\n // need allowance\n if (!shouldBatchTxs && approval.needsApproval && allowanceToSet) {\n // queryKey used to fetch the current price,\n // it will be used for the subsequent price refetches as long as price params not changed\n const queryKey = getQueryForPrice({\n chainId,\n price: freshPrice,\n })?.queryKey;\n\n // should always be available\n if (queryKey) {\n // freeze allowanceToSet\n const approvedAmount = allowanceToSet;\n\n // subscribe to price updates to keep track of new prices for the same price params,\n // independently of the hook itself\n unsubscribeFromPrice = subscribeToPrice({\n queryKey,\n onData: (newPrice) => {\n if (signal.aborted) {\n // just in case unsubscribe in finally is not yet called\n // for the queued update with the price from an already cancelled flow\n unsubscribeFromPrice?.();\n unsubscribeFromPrice = undefined;\n return;\n }\n\n // slightly higher amount if BUY with slippage\n const amountsAfterSlippage = applySlippage(\n {\n srcAmount: newPrice.srcAmount,\n destAmount: newPrice.destAmount,\n },\n resolvedSlippage,\n newPrice.side\n );\n\n // if new price fits into allowance, update it\n if (approvedAmount >= BigInt(amountsAfterSlippage.srcAmount)) {\n logger.log(\"~ fresh price ~\", newPrice);\n freshPrice = newPrice;\n usingPriceRef.current = freshPrice;\n }\n },\n });\n }\n\n const tryPermit =\n signPermit.isPermitSupported && signPermit.isPermitReadyToSign;\n try {\n if (!tryPermit) {\n approveOrPermitEvents.onApproveTx.request({ allowanceToSet });\n\n // Token doesn't support Permit\n // make an Approval tx\n approveTxHash = await approveTxMut.approveAsync({\n allowanceData: {\n allowanceToSet,\n },\n });\n\n approveOrPermitEvents.onApproveTx.sent({\n allowanceToSet,\n txHash: approveTxHash,\n });\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n const approveTxReceiptPromise = ensureTxReceipt({\n hash: approveTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\"onReplaced:approveTx\", approveTxHash, data);\n },\n });\n\n if (onTxSent) {\n onTxSent({\n chainId,\n action: \"approve\",\n transactionHash: approveTxHash,\n receiptPromise: approveTxReceiptPromise,\n transactionSpecificData: {\n action: \"approve\",\n approvedAmount: allowanceToSet,\n tokenAddress: approval.token as Address,\n spenderAddress: approval.spender as Address,\n },\n });\n }\n\n approveTxReceipt = await approveTxReceiptPromise;\n\n approveOrPermitEvents.onApproveTx.confirmed({\n allowanceToSet,\n txHash: approveTxHash,\n txReceipt: approveTxReceipt,\n });\n\n logger.log(\"~ approveTx ~ receipt:\", approveTxReceipt);\n // @TODO check if we need to see if receipt.status === \"reverted\" and throw,\n // or if waitForTransactionReceipt already throws on such receipts\n } else {\n approveOrPermitEvents.onSignPermit.request({ allowanceToSet });\n\n // sign Permit\n signedPermitResult = await signPermitMut.signPermitAsync({\n value: allowanceToSet,\n });\n\n approveOrPermitEvents.onSignPermit.confirmed({\n allowanceToSet,\n permit: signedPermitResult?.permitEncodedArgs,\n });\n }\n } catch (error) {\n if (!tryPermit) {\n approveOrPermitEvents.onApproveTx.failed({\n allowanceToSet,\n error: error as Error,\n txHash: approveTxHash, // won't necessarily be available\n });\n } else {\n approveOrPermitEvents.onSignPermit.failed({\n allowanceToSet,\n error: error as Error,\n });\n }\n throw error;\n }\n }\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n assert(account, \"Account is not connected\");\n // as long as we had set approvedAmount, we will only get new prices that satisfy the allowance\n const marketPriceToUse = freshPrice;\n usingPriceRef.current = marketPriceToUse;\n // no longer need updates, unsubscribe\n unsubscribeFromPrice?.();\n unsubscribeFromPrice = undefined;\n\n assert(marketPriceToUse, \"Market price is not available\");\n\n const amountsAfterSlippage = applySlippage(\n {\n srcAmount: marketPriceToUse.srcAmount,\n destAmount: marketPriceToUse.destAmount,\n },\n resolvedSlippage,\n marketPriceToUse.side\n );\n\n // fresh gas params\n const gasParams = constructGasParams();\n\n const txParams = await buildTxMut.mutateAsync({\n swapTxInput: {\n userAddress: account,\n receiver: receiverAddress,\n srcToken: marketPriceToUse.srcToken,\n destToken: marketPriceToUse.destToken,\n srcDecimals: marketPriceToUse.srcDecimals,\n destDecimals: marketPriceToUse.destDecimals,\n\n partner,\n /* @TODO fill in when and if available\n referrer: \"\",\n partnerAddress: \"\",\n partnerFeeBps: 0, \n takeSurplus: false,*/\n permit: signedPermitResult?.permitEncodedArgs, // just signed Permit signature\n\n priceRoute: marketPriceToUse,\n ...amountsAfterSlippage,\n },\n\n swapTxOptions: {\n // ignoreChecks: true,\n // gas estimate will break if only swapn tx is estimated, but approve ts is not considerewd in a batch\n ignoreGasEstimate: shouldBatchTxs,\n // for Batch-capable wallets batch Approve+Swap tx have to ignore all checks\n ignoreAllowance: shouldBatchTxs,\n // onlyParams: true,\n ...gasParams,\n },\n });\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n let swapTxHash: Hash | undefined;\n let swapCallsId: string | undefined;\n\n onSwap?.({\n event: {\n name: \"Swap:request\",\n params: {\n swapMode: \"market\",\n price: marketPriceToUse,\n },\n },\n });\n\n if (shouldBatchTxs) {\n const { calls } = await addTxWithApprovals({\n txsParams: [\n {\n to: txParams.to as Address,\n account: txParams.from as Address,\n data: txParams.data as Hex,\n value: BigInt(txParams.value),\n chainId: txParams.chainId,\n },\n ],\n approveProps: [\n {\n spender: approval.spender,\n allowanceToSet: approval.allowanceToSet,\n token: approval.token,\n chainId: approval.chainId,\n },\n ],\n });\n\n const sendCallsResult = await batchTxMut.sendCalls({\n txsParams: calls,\n });\n swapCallsId = sendCallsResult.id;\n onSwap?.({\n event: {\n name: \"Swap:sent\",\n params: {\n swapMode: \"market\",\n price: marketPriceToUse,\n callsId: swapCallsId,\n },\n },\n });\n } else {\n swapTxHash = await sendSwapTxMut.sendTransactionAsync(txParams);\n onSwap?.({\n event: {\n name: \"Swap:sent\",\n params: {\n swapMode: \"market\",\n price: marketPriceToUse,\n txHash: swapTxHash,\n },\n },\n });\n }\n\n // no use aborting past this point, tx is already sent,\n // but we may want to connect this late abortion to tx cancellation, in the future\n\n // tx is sent, consider Token nonce as used\n if (signedPermitResult) {\n markNonceAsUsed(signedPermitResult.signedPermitData);\n }\n\n let swapCallsReceipt: CallsReceipt | undefined;\n let swapTxReceipt: TransactionReceipt | undefined;\n\n if (swapCallsId) {\n const sendCallsReceiptPromise = ensureCallsStatus({\n id: swapCallsId,\n }).then((status) => status.receipts?.[status.receipts.length - 1]);\n\n logger.log(\"~ swapTx ~ awaiting calls id :\", swapCallsId);\n\n if (onTxSent) {\n onTxSent({\n chainId,\n action: \"swap\",\n callsId: swapCallsId,\n receiptPromise: sendCallsReceiptPromise,\n transactionSpecificData: {\n action: \"swap\",\n source: \"local\",\n srcTokenAddress: marketPriceToUse.srcToken as Address,\n destTokenAddress: marketPriceToUse.destToken as Address,\n srcAmount: amountsAfterSlippage.srcAmount,\n destAmount: amountsAfterSlippage.destAmount,\n srcAmountUSD: marketPriceToUse.srcUSD,\n destAmountUSD: marketPriceToUse.destUSD,\n gasCost: marketPriceToUse.gasCost,\n },\n });\n }\n\n swapCallsReceipt = await sendCallsReceiptPromise;\n\n if (swapCallsReceipt) {\n onSwap?.({\n event: {\n name: \"Swap:confirmed\",\n params: {\n swapMode: \"market\",\n price: marketPriceToUse,\n callsReceipt: swapCallsReceipt,\n callsId: swapCallsId,\n },\n },\n });\n }\n } else if (swapTxHash) {\n const swapTxReceiptPromise = ensureTxReceipt({\n hash: swapTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\"onReplaced:swapTx\", swapTxHash, data);\n },\n });\n\n logger.log(\"~ swapTx ~ awaiting tx hash :\", swapTxHash);\n\n if (onTxSent) {\n onTxSent({\n chainId,\n action: \"swap\",\n transactionHash: swapTxHash,\n receiptPromise: swapTxReceiptPromise,\n transactionSpecificData: {\n action: \"swap\",\n source: \"local\",\n srcTokenAddress: marketPriceToUse.srcToken as Address,\n destTokenAddress: marketPriceToUse.destToken as Address,\n srcAmount: amountsAfterSlippage.srcAmount,\n destAmount: amountsAfterSlippage.destAmount,\n srcAmountUSD: marketPriceToUse.srcUSD,\n destAmountUSD: marketPriceToUse.destUSD,\n gasCost: marketPriceToUse.gasCost,\n gasCostUSD: marketPriceToUse.gasCostUSD,\n },\n });\n }\n\n swapTxReceipt = await swapTxReceiptPromise;\n\n if (swapTxReceipt) {\n onSwap?.({\n event: {\n name: \"Swap:confirmed\",\n params: {\n swapMode: \"market\",\n price: marketPriceToUse,\n txReceipt: swapTxReceipt,\n txHash: swapTxHash,\n },\n },\n });\n }\n }\n\n logger.log(\"~ swapTx ~ receipt:\", swapCallsReceipt || swapTxReceipt);\n // @TODO check if we need to see if receipt.status === \"reverted\" and trhow,\n // or if waitForTransactionReceipt already throws on such receipts\n\n return {\n tradeFlowType: marketSwapFlowType,\n approve: {\n txHash: approveTxHash,\n receipt: approveTxReceipt,\n },\n swap: {\n callsId: swapCallsId,\n txHash: swapTxHash,\n receipt: swapTxReceipt,\n callsReceipt: swapCallsReceipt,\n },\n marketPrice: marketPriceToUse,\n // @TODO add whatever else may be relevant\n account,\n receiverAddress,\n };\n } catch (error) {\n // Market swap failed, we can't be sure if nonce can be reused or it was incremented in a different tx\n // or even Order in the meantime\n if (signedPermitResult) {\n clearNonce(signedPermitResult.signedPermitData);\n }\n onSwap?.({\n event: {\n name: \"Swap:failed\",\n params: {\n swapMode: \"market\",\n error: error as Error,\n },\n },\n });\n throw error;\n } finally {\n // always unsubscribe if subscribed previously\n unsubscribeFromPrice?.();\n }\n };\n\n const marketSwapMut = useMutation({\n mutationFn: submitSwapTx,\n mutationKey: [MARKET_SWAP_MUTATION_KEY],\n onSuccess: (data) => {\n logger.log(\"Swap tx success\", data);\n },\n onError: (error) => {\n logger.error(\"Swap tx error\", error);\n },\n onSettled: () => {\n logger.log(\"Swap tx settled\");\n },\n });\n\n const runMarketSwapFlow = marketSwapMut.mutateAsync;\n\n const reset = () => {\n usingPriceRef.current = null;\n\n approveTxMut.reset();\n signPermitMut.reset();\n buildTxMut.reset();\n sendSwapTxMut.reset();\n batchTxMut.reset();\n marketSwapMut.reset();\n };\n\n const retryFlow = (options?: RunMarketOptions): Promise<SubmitSwapResult> => {\n reset();\n return runMarketSwapFlow(options);\n };\n\n // finalPrice if we reached that point, or usable price (based on allowance given)\n const usedPrice = usingPriceRef.current || marketPrice;\n\n /* 7. return result */\n return {\n tradeFlowType: marketSwapFlowType,\n chainId,\n runMarketSwapFlow,\n reset,\n cancelFlow,\n retryFlow,\n approval,\n signPermit,\n buildTxParams,\n swap,\n swapBatch,\n // marketSwapMut includes all steps' queries and mutations and returns more precise errors (including cancellation)\n isPending: marketSwapMut.isPending,\n isSuccess: marketSwapMut.isSuccess,\n isError: marketSwapMut.isError,\n error: marketSwapMut.error,\n result: marketSwapMut.data,\n usedPrice,\n };\n}\n"],"names":["marketSwapFlowType","MARKET_SWAP_MUTATION_KEY","useMarketFlow","marketPrice","logger","useLogger","chainId","useChainId","resolvedSlippage","useSlippage","swapSide","useSwapSide","approval","signPermit","approveTxMut","signPermitMut","events","approveOrPermitEvents","useApproveOrPermit","srcToken","srcAmount","spenderContractType","side","tradeMode","buildTxMut","useBuildTx","mutationOptions","onSuccess","log","onError","error","buildTxParams","isPending","isError","isSuccess","sendSwapTxMut","useSendMarketSwapTx","forCurrentChain","canBatchTxs","useCanBatchTxs","addTxWithApprovals","useBatchWithApproveTxs","batchTxMut","useSendBatchTx","swapTxMined","useAwaitTx","hash","txHash","batchTxMined","useAwaitCalls","id","data","swap","receipt","isConfirmingTX","isConfirmingTxError","isTxSent","isTxPending","isLoading","isTxMined","isTxAwaitingError","lastCallsReceipt","receipts","length","swapBatch","callsId","transactionHash","isConfirmingCalls","isConfirmingCallsError","isCallsSent","isCallsPending","isCallsMined","isCallsAwaitingError","address","account","useAccount","ensureTxReceipt","useEnsureTxReceipt","ensureCallsStatus","useEnsureCallsStatus","currentAbortControllerRef","useRef","usingPriceRef","cancelFlow","current","abort","UserCancelledError","receiverAddress","useSwapReceiverAddressValue","markNonceAsUsed","clearNonce","useMarkPermit1Or2NonceAsUsed","constructGasParams","useConstructGasParams","partner","usePartner","getQueryForPrice","useMarketPriceQueryForPrice","subscribeToPrice","useSubscribeToMarketPrice","onSwap","useWidgetEvents","submitSwapTx","onTxSent","reset","assert","abortController","AbortController","signal","signedPermitResult","approveTxHash","approveTxReceipt","allowanceToSet","freshPrice","unsubscribeFromPrice","shouldBatchTxs","needsApproval","queryKey","price","approvedAmount","onData","newPrice","aborted","undefined","amountsAfterSlippage","applySlippage","destAmount","BigInt","tryPermit","isPermitSupported","isPermitReadyToSign","onApproveTx","request","approveAsync","allowanceData","sent","throwIfAborted","approveTxReceiptPromise","onReplaced","action","receiptPromise","transactionSpecificData","tokenAddress","token","spenderAddress","spender","confirmed","txReceipt","onSignPermit","signPermitAsync","value","permit","permitEncodedArgs","failed","marketPriceToUse","gasParams","txParams","mutateAsync","swapTxInput","userAddress","receiver","destToken","srcDecimals","destDecimals","priceRoute","swapTxOptions","ignoreGasEstimate","ignoreAllowance","swapTxHash","swapCallsId","event","name","params","swapMode","calls","txsParams","to","from","approveProps","sendCallsResult","sendCalls","sendTransactionAsync","signedPermitData","swapCallsReceipt","swapTxReceipt","sendCallsReceiptPromise","then","status","source","srcTokenAddress","destTokenAddress","srcAmountUSD","srcUSD","destAmountUSD","destUSD","gasCost","callsReceipt","swapTxReceiptPromise","gasCostUSD","tradeFlowType","approve","marketSwapMut","useMutation","mutationFn","mutationKey","onSettled","runMarketSwapFlow","retryFlow","options","usedPrice","result"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMarketSwapStep.js","sources":["../../../../src/hooks/swap/tradeFlow/useMarketSwapStep.ts"],"sourcesContent":["import type {\n MarketSwapStep,\n MarketSwapStepKey,\n} from \"@/components/widget/TradeOverview/steps\";\nimport {\n useMarketFlow,\n type UseMarketFlowInput,\n type UseMarketFlowResult,\n type SubmitSwapResult,\n} from \"./useMarketFlow\";\nimport { constructTxLinkForChain } from \"@/lib/utils/explorer\";\nimport { useLogger } from \"@/core/logger\";\nimport { isUserCancelledError } from \"./common/errors\";\n\ntype UseMarketSwapStepResult = {\n startMarketSwap: UseMarketFlowResult[\"runMarketSwapFlow\"];\n // @TODO check if resetting is necessary on error, maybe not if submit on click works as a reset\n reset: UseMarketFlowResult[\"reset\"];\n cancelFlow: UseMarketFlowResult[\"cancelFlow\"];\n retryFlow: UseMarketFlowResult[\"retryFlow\"];\n isFlowCancellable: boolean;\n step?: MarketSwapStep;\n explorerLink?: string;\n error: Error | null;\n erroredStep?: MarketSwapStepKey;\n result?: SubmitSwapResult;\n usedPrice: UseMarketFlowResult[\"usedPrice\"];\n tradeFlowType: UseMarketFlowResult[\"tradeFlowType\"];\n};\n\nexport function useMarketSwapStep(\n options: UseMarketFlowInput\n): UseMarketSwapStepResult {\n const logger = useLogger(\"MarketSwapStep\");\n const marketFlow = useMarketFlow(options);\n\n const startMarketSwap = marketFlow.runMarketSwapFlow;\n const reset = marketFlow.reset;\n const cancelFlow = marketFlow.cancelFlow;\n const retryFlow = marketFlow.retryFlow;\n\n let step: MarketSwapStep | undefined;\n\n const permitSigningHappeningOrNeverHappened =\n // isPending starts as false,\n // so we can use !isPermitSigned to detect if Permit signing is happening or never happened\n marketFlow.signPermit.isPending || !marketFlow.signPermit.isPermitSigned;\n\n const approvalHappeningOrNeverHappened =\n // isPending starts as false,\n // needsApproval && !isSuccess allows to detect approve step right away even then\n marketFlow.approval.isPending || !marketFlow.approval.isSuccess;\n\n const willUsePermit =\n marketFlow.approval.needsApproval &&\n marketFlow.signPermit.isPermitSupported &&\n marketFlow.signPermit.isPermitReadyToSign &&\n !marketFlow.swapBatch.canBatchTxs;\n\n const permitOrApprovalHappeningOrNeverHappened = willUsePermit\n ? permitSigningHappeningOrNeverHappened\n : approvalHappeningOrNeverHappened;\n\n if (\n marketFlow.approval.needsApproval &&\n permitOrApprovalHappeningOrNeverHappened\n ) {\n step = { key: \"signature\", subStep: \"approval-signature\" };\n } else if (\n marketFlow.buildTxParams.isPending ||\n marketFlow.swap.isConfirmingTX ||\n marketFlow.swapBatch.isConfirmingCalls\n ) {\n const permitOrApprovalHappened = !!(\n marketFlow.approval.txHash || marketFlow.signPermit.signature\n );\n\n step = {\n key: \"signature\",\n subStep: permitOrApprovalHappened\n ? \"order-signature\"\n : \"standalone-order-signature\",\n };\n } else if (\n marketFlow.swap.isTxPending ||\n marketFlow.swapBatch.isCallsPending\n ) {\n step = { key: \"swap-tx-execution\" };\n } else if (marketFlow.isPending) {\n // if something is between steps but not clear step,\n // then assume we're at the standalone signature sub-step\n step = { key: \"signature\", subStep: \"standalone-order-signature\" };\n }\n\n const approvalIsStarted =\n step?.key === \"signature\" &&\n step.subStep === \"approval-signature\" &&\n marketFlow.approval.isTxPending;\n\n const inSwapTxConfirmation =\n step?.key === \"signature\" &&\n (step.subStep === \"order-signature\" ||\n step.subStep === \"standalone-order-signature\");\n\n const notYetSwapTxSent =\n step?.key === \"swap-tx-execution\" &&\n !marketFlow.swap.isTxSent &&\n !marketFlow.swapBatch.isCallsSent;\n\n // final tx is not yet sent, there's something to cancel;\n // but some steps are already started so we can't simply dismiss\n const isFlowCancellable =\n approvalIsStarted || inSwapTxConfirmation || notYetSwapTxSent;\n\n // either of the txHashes will be available\n const txHash = marketFlow.swapBatch.txHash || marketFlow.swap.txHash;\n const explorerLink = txHash\n ? constructTxLinkForChain({ chainId: marketFlow.chainId, txHash })\n : undefined;\n\n logger.once.log(\"step\", step, marketFlow, {\n isFlowCancellable,\n explorerLink,\n txHash,\n });\n\n // intentional cancellation is handled separately\n const error = isUserCancelledError(marketFlow.error)\n ? null\n : marketFlow.error;\n\n let erroredStep: MarketSwapStepKey | undefined;\n\n if (marketFlow.isError) {\n if (\n marketFlow.approval.isError ||\n marketFlow.signPermit.isError ||\n marketFlow.buildTxParams.isError ||\n marketFlow.swap.isConfirmingTxError ||\n marketFlow.swapBatch.isConfirmingCallsError\n ) {\n erroredStep = \"signature\";\n } else if (\n marketFlow.swap.isTxAwaitingError ||\n marketFlow.swapBatch.isCallsAwaitingError\n ) {\n erroredStep = \"swap-tx-execution\";\n }\n }\n\n return {\n startMarketSwap,\n reset,\n cancelFlow,\n retryFlow,\n isFlowCancellable,\n step,\n explorerLink,\n error,\n erroredStep,\n result: marketFlow.result,\n usedPrice: marketFlow.usedPrice,\n tradeFlowType: marketFlow.tradeFlowType,\n };\n}\n"],"names":["useMarketSwapStep","options","$","_c","logger","useLogger","marketFlow","useMarketFlow","startMarketSwap","runMarketSwapFlow","reset","cancelFlow","retryFlow","explorerLink","isFlowCancellable","step","once","permitSigningHappeningOrNeverHappened","signPermit","isPending","isPermitSigned","approvalHappeningOrNeverHappened","approval","isSuccess","willUsePermit","needsApproval","isPermitSupported","isPermitReadyToSign","swapBatch","canBatchTxs","permitOrApprovalHappeningOrNeverHappened","buildTxParams","swap","isConfirmingTX","isConfirmingCalls","permitOrApprovalHappened","txHash","signature","isTxPending","isCallsPending","approvalIsStarted","key","subStep","inSwapTxConfirmation","notYetSwapTxSent","isTxSent","isCallsSent","constructTxLinkForChain","chainId","undefined","log","t0","error","isUserCancelledError","erroredStep","isError","isConfirmingTxError","isConfirmingCallsError","isTxAwaitingError","isCallsAwaitingError","t1","result","tradeFlowType","usedPrice"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useMarketSwapStep.js","sources":["../../../../src/hooks/swap/tradeFlow/useMarketSwapStep.ts"],"sourcesContent":["import type {\n MarketSwapStep,\n MarketSwapStepKey,\n} from \"@/components/widget/TradeOverview/steps\";\nimport {\n useMarketFlow,\n type UseMarketFlowInput,\n type UseMarketFlowResult,\n type SubmitSwapResult,\n} from \"./useMarketFlow\";\nimport { constructTxLinkForChain } from \"@/lib/utils/explorer\";\nimport { useLogger } from \"@/core/logger\";\nimport { isUserCancelledError } from \"./common/errors\";\n\ntype UseMarketSwapStepResult = {\n startMarketSwap: UseMarketFlowResult[\"runMarketSwapFlow\"];\n // @TODO check if resetting is necessary on error, maybe not if submit on click works as a reset\n reset: UseMarketFlowResult[\"reset\"];\n cancelFlow: UseMarketFlowResult[\"cancelFlow\"];\n retryFlow: UseMarketFlowResult[\"retryFlow\"];\n isFlowCancellable: boolean;\n step?: MarketSwapStep;\n explorerLink?: string;\n error: Error | null;\n erroredStep?: MarketSwapStepKey;\n result?: SubmitSwapResult;\n usedPrice: UseMarketFlowResult[\"usedPrice\"];\n tradeFlowType: UseMarketFlowResult[\"tradeFlowType\"];\n};\n\nexport function useMarketSwapStep(\n options: UseMarketFlowInput\n): UseMarketSwapStepResult {\n const logger = useLogger(\"MarketSwapStep\");\n const marketFlow = useMarketFlow(options);\n\n const startMarketSwap = marketFlow.runMarketSwapFlow;\n const reset = marketFlow.reset;\n const cancelFlow = marketFlow.cancelFlow;\n const retryFlow = marketFlow.retryFlow;\n\n let step: MarketSwapStep | undefined;\n\n const permitSigningHappeningOrNeverHappened =\n // isPending starts as false,\n // so we can use !isPermitSigned to detect if Permit signing is happening or never happened\n marketFlow.signPermit.isPending || !marketFlow.signPermit.isPermitSigned;\n\n const approvalHappeningOrNeverHappened =\n // isPending starts as false,\n // needsApproval && !isSuccess allows to detect approve step right away even then\n marketFlow.approval.isPending || !marketFlow.approval.isSuccess;\n\n const willUsePermit =\n marketFlow.approval.needsApproval &&\n marketFlow.signPermit.isPermitSupported &&\n marketFlow.signPermit.isPermitReadyToSign &&\n !marketFlow.swapBatch.canBatchTxs;\n\n const permitOrApprovalHappeningOrNeverHappened = willUsePermit\n ? permitSigningHappeningOrNeverHappened\n : approvalHappeningOrNeverHappened;\n\n if (\n marketFlow.approval.needsApproval &&\n permitOrApprovalHappeningOrNeverHappened\n ) {\n step = { key: \"signature\", subStep: \"approval-signature\" };\n } else if (\n marketFlow.buildTxParams.isPending ||\n marketFlow.swap.isConfirmingTX ||\n marketFlow.swapBatch.isConfirmingCalls\n ) {\n const permitOrApprovalHappened = !!(\n marketFlow.approval.txHash || marketFlow.signPermit.signature\n );\n\n step = {\n key: \"signature\",\n subStep: permitOrApprovalHappened\n ? \"order-signature\"\n : \"standalone-order-signature\",\n };\n } else if (\n marketFlow.swap.isTxPending ||\n marketFlow.swapBatch.isCallsPending\n ) {\n step = { key: \"swap-tx-execution\" };\n } else if (marketFlow.isPending) {\n // if something is between steps but not clear step,\n // then assume we're at the standalone signature sub-step\n step = { key: \"signature\", subStep: \"standalone-order-signature\" };\n }\n\n const approvalIsStarted =\n step?.key === \"signature\" &&\n step.subStep === \"approval-signature\" &&\n marketFlow.approval.isTxPending;\n\n const inSwapTxConfirmation =\n step?.key === \"signature\" &&\n (step.subStep === \"order-signature\" ||\n step.subStep === \"standalone-order-signature\");\n\n const notYetSwapTxSent =\n step?.key === \"swap-tx-execution\" &&\n !marketFlow.swap.isTxSent &&\n !marketFlow.swapBatch.isCallsSent;\n\n // final tx is not yet sent, there's something to cancel;\n // but some steps are already started so we can't simply dismiss\n const isFlowCancellable =\n approvalIsStarted || inSwapTxConfirmation || notYetSwapTxSent;\n\n // either of the txHashes will be available\n const txHash = marketFlow.swapBatch.txHash || marketFlow.swap.txHash;\n const explorerLink = txHash\n ? constructTxLinkForChain({ chainId: marketFlow.chainId, txHash })\n : undefined;\n\n logger.once.log(\"step\", step, marketFlow, {\n isFlowCancellable,\n explorerLink,\n txHash,\n });\n\n // intentional cancellation is handled separately\n const error = isUserCancelledError(marketFlow.error)\n ? null\n : marketFlow.error;\n\n let erroredStep: MarketSwapStepKey | undefined;\n\n if (marketFlow.isError) {\n if (\n marketFlow.approval.isError ||\n marketFlow.signPermit.isError ||\n marketFlow.buildTxParams.isError ||\n marketFlow.swap.isConfirmingTxError ||\n marketFlow.swapBatch.isConfirmingCallsError\n ) {\n erroredStep = \"signature\";\n } else if (\n marketFlow.swap.isTxAwaitingError ||\n marketFlow.swapBatch.isCallsAwaitingError\n ) {\n erroredStep = \"swap-tx-execution\";\n }\n }\n\n return {\n startMarketSwap,\n reset,\n cancelFlow,\n retryFlow,\n isFlowCancellable,\n step,\n explorerLink,\n error,\n erroredStep,\n result: marketFlow.result,\n usedPrice: marketFlow.usedPrice,\n tradeFlowType: marketFlow.tradeFlowType,\n };\n}\n"],"names":["useMarketSwapStep","options","$","_c","logger","useLogger","marketFlow","useMarketFlow","startMarketSwap","runMarketSwapFlow","reset","cancelFlow","retryFlow","explorerLink","isFlowCancellable","step","once","permitSigningHappeningOrNeverHappened","signPermit","isPending","isPermitSigned","approvalHappeningOrNeverHappened","approval","isSuccess","willUsePermit","needsApproval","isPermitSupported","isPermitReadyToSign","swapBatch","canBatchTxs","permitOrApprovalHappeningOrNeverHappened","buildTxParams","swap","isConfirmingTX","isConfirmingCalls","permitOrApprovalHappened","txHash","signature","isTxPending","isCallsPending","approvalIsStarted","key","subStep","inSwapTxConfirmation","notYetSwapTxSent","isTxSent","isCallsSent","constructTxLinkForChain","chainId","undefined","log","t0","error","isUserCancelledError","erroredStep","isError","isConfirmingTxError","isConfirmingCallsError","isTxAwaitingError","isCallsAwaitingError","t1","result","tradeFlowType","usedPrice"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { isAddress, erc20Abi } from 'viem';
|
|
|
5
5
|
import { useAccount, useReadContract } from 'wagmi';
|
|
6
6
|
|
|
7
7
|
const useTokenAllowance = (t0) => {
|
|
8
|
-
const $ = distExports.c(
|
|
8
|
+
const $ = distExports.c(15);
|
|
9
9
|
const {
|
|
10
10
|
tokenAddress,
|
|
11
11
|
spender,
|
|
@@ -28,22 +28,32 @@ const useTokenAllowance = (t0) => {
|
|
|
28
28
|
} else {
|
|
29
29
|
t3 = $[2];
|
|
30
30
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
let t4;
|
|
32
|
+
if ($[3] !== account || $[4] !== enabled || $[5] !== spender || $[6] !== tokenAddress) {
|
|
33
|
+
t4 = enabled && !!tokenAddress && !!account && !!spender && !isETH({
|
|
34
|
+
address: tokenAddress
|
|
35
|
+
});
|
|
36
|
+
$[3] = account;
|
|
37
|
+
$[4] = enabled;
|
|
38
|
+
$[5] = spender;
|
|
39
|
+
$[6] = tokenAddress;
|
|
40
|
+
$[7] = t4;
|
|
41
|
+
} else {
|
|
42
|
+
t4 = $[7];
|
|
43
|
+
}
|
|
34
44
|
let t5;
|
|
35
|
-
if ($[
|
|
45
|
+
if ($[8] !== t4) {
|
|
36
46
|
t5 = {
|
|
37
47
|
enabled: t4,
|
|
38
48
|
staleTime: LONG_STALE_TIME_FOR_REACTIVENESS
|
|
39
49
|
};
|
|
40
|
-
$[
|
|
41
|
-
$[
|
|
50
|
+
$[8] = t4;
|
|
51
|
+
$[9] = t5;
|
|
42
52
|
} else {
|
|
43
|
-
t5 = $[
|
|
53
|
+
t5 = $[9];
|
|
44
54
|
}
|
|
45
55
|
let t6;
|
|
46
|
-
if ($[
|
|
56
|
+
if ($[10] !== chainId || $[11] !== t2 || $[12] !== t3 || $[13] !== t5) {
|
|
47
57
|
t6 = {
|
|
48
58
|
address: t2,
|
|
49
59
|
functionName: "allowance",
|
|
@@ -52,13 +62,13 @@ const useTokenAllowance = (t0) => {
|
|
|
52
62
|
args: t3,
|
|
53
63
|
query: t5
|
|
54
64
|
};
|
|
55
|
-
$[
|
|
56
|
-
$[
|
|
57
|
-
$[
|
|
58
|
-
$[
|
|
59
|
-
$[
|
|
65
|
+
$[10] = chainId;
|
|
66
|
+
$[11] = t2;
|
|
67
|
+
$[12] = t3;
|
|
68
|
+
$[13] = t5;
|
|
69
|
+
$[14] = t6;
|
|
60
70
|
} else {
|
|
61
|
-
t6 = $[
|
|
71
|
+
t6 = $[14];
|
|
62
72
|
}
|
|
63
73
|
return useReadContract(t6);
|
|
64
74
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTokenAllowance.js","sources":["../../../../src/hooks/tokens/allowance/useTokenAllowance.ts"],"sourcesContent":["import { LONG_STALE_TIME_FOR_REACTIVENESS } from \"@/lib/constants/time\";\nimport { isETH } from \"@/tokens/utils/eth\";\nimport { erc20Abi, isAddress } from \"viem\";\nimport { useAccount, useReadContract } from \"wagmi\";\nimport type { UseTokenAllowanceInput } from \"./types\";\n\nexport const useTokenAllowance = ({\n tokenAddress,\n spender,\n chainId,\n owner,\n enabled = true,\n}: UseTokenAllowanceInput) => {\n const { address: account } = useAccount();\n\n const ownerAddress = owner || account;\n\n return useReadContract({\n address: tokenAddress && isAddress(tokenAddress) ? tokenAddress : undefined,\n functionName: \"allowance\" as const,\n abi: erc20Abi,\n chainId,\n args:\n ownerAddress && spender && isAddress(spender)\n ? [ownerAddress, spender]\n : undefined,\n query: {\n enabled:\n enabled &&\n !!tokenAddress &&\n !!account &&\n !!spender &&\n !isETH({ address: tokenAddress }),\n staleTime: LONG_STALE_TIME_FOR_REACTIVENESS,\n },\n });\n};\n"],"names":["useTokenAllowance","t0","$","_c","tokenAddress","spender","chainId","owner","enabled","t1","undefined","address","account","useAccount","ownerAddress","t2","isAddress","t3","t4","isETH","t5","staleTime","LONG_STALE_TIME_FOR_REACTIVENESS","t6","functionName","abi","erc20Abi","args","query","useReadContract"],"mappings":";;;;;;AAMO,MAAMA,oBAAoBC,CAAAA,EAAAA,KAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,EAAA,CAAA;AAAC,EAAA,MAAA;AAAA,IAAAC,YAAAA;AAAAA,IAAAC,OAAAA;AAAAA,IAAAC,OAAAA;AAAAA,IAAAC,KAAAA;AAAAA,IAAAC,OAAAA,EAAAC;AAAAA,GAAA,GAAAR,EAAAA;AAKhC,EAAA,MAAAO,OAAAA,GAAAC,EAAAA,
|
|
1
|
+
{"version":3,"file":"useTokenAllowance.js","sources":["../../../../src/hooks/tokens/allowance/useTokenAllowance.ts"],"sourcesContent":["import { LONG_STALE_TIME_FOR_REACTIVENESS } from \"@/lib/constants/time\";\nimport { isETH } from \"@/tokens/utils/eth\";\nimport { erc20Abi, isAddress } from \"viem\";\nimport { useAccount, useReadContract } from \"wagmi\";\nimport type { UseTokenAllowanceInput } from \"./types\";\n\nexport const useTokenAllowance = ({\n tokenAddress,\n spender,\n chainId,\n owner,\n enabled = true,\n}: UseTokenAllowanceInput) => {\n const { address: account } = useAccount();\n\n const ownerAddress = owner || account;\n\n return useReadContract({\n address: tokenAddress && isAddress(tokenAddress) ? tokenAddress : undefined,\n functionName: \"allowance\" as const,\n abi: erc20Abi,\n chainId,\n args:\n ownerAddress && spender && isAddress(spender)\n ? [ownerAddress, spender]\n : undefined,\n query: {\n enabled:\n enabled &&\n !!tokenAddress &&\n !!account &&\n !!spender &&\n !isETH({ address: tokenAddress }),\n staleTime: LONG_STALE_TIME_FOR_REACTIVENESS,\n },\n });\n};\n"],"names":["useTokenAllowance","t0","$","_c","tokenAddress","spender","chainId","owner","enabled","t1","undefined","address","account","useAccount","ownerAddress","t2","isAddress","t3","t4","isETH","t5","staleTime","LONG_STALE_TIME_FOR_REACTIVENESS","t6","functionName","abi","erc20Abi","args","query","useReadContract"],"mappings":"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"}
|
|
@@ -30,20 +30,18 @@ const useAttachTokenBalanceMultichain = (t0) => {
|
|
|
30
30
|
const multiChainTokenBalances = useMultiChainTokenBalances(t1);
|
|
31
31
|
const selectedTokenBalances = useSelectedTokenBalances(tradeMode);
|
|
32
32
|
let t2;
|
|
33
|
-
let t3;
|
|
34
33
|
if ($[2] !== addressesMap) {
|
|
35
|
-
|
|
34
|
+
t2 = Object.keys(addressesMap).map(Number).filter(isSupportedChainId);
|
|
36
35
|
$[2] = addressesMap;
|
|
37
|
-
$[3] =
|
|
36
|
+
$[3] = t2;
|
|
38
37
|
} else {
|
|
39
|
-
|
|
38
|
+
t2 = $[3];
|
|
40
39
|
}
|
|
41
|
-
t2 = t3;
|
|
42
40
|
const chainIds = t2;
|
|
43
41
|
const multiChainTokenPrices = useMultiChainTokenPrices(chainIds);
|
|
44
|
-
let
|
|
42
|
+
let t3;
|
|
45
43
|
if ($[4] !== account || $[5] !== multiChainTokenBalances || $[6] !== multiChainTokenPrices || $[7] !== selectedTokenBalances) {
|
|
46
|
-
|
|
44
|
+
t3 = (token) => {
|
|
47
45
|
if (!account) {
|
|
48
46
|
return token;
|
|
49
47
|
}
|
|
@@ -67,11 +65,11 @@ const useAttachTokenBalanceMultichain = (t0) => {
|
|
|
67
65
|
$[5] = multiChainTokenBalances;
|
|
68
66
|
$[6] = multiChainTokenPrices;
|
|
69
67
|
$[7] = selectedTokenBalances;
|
|
70
|
-
$[8] =
|
|
68
|
+
$[8] = t3;
|
|
71
69
|
} else {
|
|
72
|
-
|
|
70
|
+
t3 = $[8];
|
|
73
71
|
}
|
|
74
|
-
return
|
|
72
|
+
return t3;
|
|
75
73
|
};
|
|
76
74
|
|
|
77
75
|
export { useAttachTokenBalanceMultichain };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAttachTokenBalanceMultichain.js","sources":["../../../../src/hooks/tokens/balances/useAttachTokenBalanceMultichain.ts"],"sourcesContent":["import type { Token } from \"@/tokens/state/types\";\n\nimport { useCallback, useMemo } from \"react\";\n\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { formatUnits, isAddress } from \"viem\";\nimport { useMultiChainTokenBalances } from \"./useMultichainTokenBalances\";\nimport { useMultiChainTokenPrices } from \"../prices/useMultichainTokenPrices\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\n\nimport { useAccount } from \"wagmi\";\nimport { useSelectedTokenBalances } from \"./useSelectedTokenBalances\";\nimport { useTradeMode } from \"@/core/state/tradeModeAtom\";\n\ntype AddTokenBalanceToToken = <\n T extends Pick<Token, \"address\" | \"network\" | \"decimals\">,\n>(\n token: T\n) => T & { balance?: string; usdBalance?: number };\n\n/**\n This hook will fetch the balances and return a function that will add a balance to the token if available.\n */\nexport const useAttachTokenBalanceMultichain = ({\n addressesMap,\n}: {\n addressesMap: Partial<Record<SupportedChainId, string[]>>;\n}): AddTokenBalanceToToken => {\n const { address: account } = useAccount();\n const tradeMode = useTradeMode();\n\n const multiChainTokenBalances = useMultiChainTokenBalances({\n addressesMap,\n });\n const selectedTokenBalances = useSelectedTokenBalances(tradeMode);\n\n const chainIds = useMemo(\n () => Object.keys(addressesMap).map(Number).filter(isSupportedChainId),\n [addressesMap]\n );\n\n const multiChainTokenPrices = useMultiChainTokenPrices(chainIds);\n\n return useCallback<AddTokenBalanceToToken>(\n (token) => {\n if (!account) return token;\n\n const loweredAddress = token.address.toLowerCase();\n\n if (!isAddress(loweredAddress)) return token;\n\n const balance =\n // selected token balances have priority,\n // because only these balances are invalidated after each transaction/order,\n // and have the most frequent refetch interval\n selectedTokenBalances[token.network]?.[loweredAddress] ??\n // otherwise grab the balance from the multichain balances query\n multiChainTokenBalances[token.network]?.[loweredAddress]?.result;\n\n if (balance === undefined) return token;\n\n const tokenPrice =\n multiChainTokenPrices[token.network]?.[loweredAddress]?.price;\n\n const usdBalance = tokenPrice\n ? +formatUnits(BigInt(balance), token.decimals) * tokenPrice\n : undefined;\n\n return {\n ...token,\n balance: balance.toString(),\n usdBalance,\n };\n },\n [\n account,\n multiChainTokenBalances,\n multiChainTokenPrices,\n selectedTokenBalances,\n ]\n );\n};\n"],"names":["useAttachTokenBalanceMultichain","t0","$","_c","addressesMap","address","account","useAccount","tradeMode","useTradeMode","t1","multiChainTokenBalances","useMultiChainTokenBalances","selectedTokenBalances","useSelectedTokenBalances","t2","
|
|
1
|
+
{"version":3,"file":"useAttachTokenBalanceMultichain.js","sources":["../../../../src/hooks/tokens/balances/useAttachTokenBalanceMultichain.ts"],"sourcesContent":["import type { Token } from \"@/tokens/state/types\";\n\nimport { useCallback, useMemo } from \"react\";\n\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { formatUnits, isAddress } from \"viem\";\nimport { useMultiChainTokenBalances } from \"./useMultichainTokenBalances\";\nimport { useMultiChainTokenPrices } from \"../prices/useMultichainTokenPrices\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\n\nimport { useAccount } from \"wagmi\";\nimport { useSelectedTokenBalances } from \"./useSelectedTokenBalances\";\nimport { useTradeMode } from \"@/core/state/tradeModeAtom\";\n\ntype AddTokenBalanceToToken = <\n T extends Pick<Token, \"address\" | \"network\" | \"decimals\">,\n>(\n token: T\n) => T & { balance?: string; usdBalance?: number };\n\n/**\n This hook will fetch the balances and return a function that will add a balance to the token if available.\n */\nexport const useAttachTokenBalanceMultichain = ({\n addressesMap,\n}: {\n addressesMap: Partial<Record<SupportedChainId, string[]>>;\n}): AddTokenBalanceToToken => {\n const { address: account } = useAccount();\n const tradeMode = useTradeMode();\n\n const multiChainTokenBalances = useMultiChainTokenBalances({\n addressesMap,\n });\n const selectedTokenBalances = useSelectedTokenBalances(tradeMode);\n\n const chainIds = useMemo(\n () => Object.keys(addressesMap).map(Number).filter(isSupportedChainId),\n [addressesMap]\n );\n\n const multiChainTokenPrices = useMultiChainTokenPrices(chainIds);\n\n return useCallback<AddTokenBalanceToToken>(\n (token) => {\n if (!account) return token;\n\n const loweredAddress = token.address.toLowerCase();\n\n if (!isAddress(loweredAddress)) return token;\n\n const balance =\n // selected token balances have priority,\n // because only these balances are invalidated after each transaction/order,\n // and have the most frequent refetch interval\n selectedTokenBalances[token.network]?.[loweredAddress] ??\n // otherwise grab the balance from the multichain balances query\n multiChainTokenBalances[token.network]?.[loweredAddress]?.result;\n\n if (balance === undefined) return token;\n\n const tokenPrice =\n multiChainTokenPrices[token.network]?.[loweredAddress]?.price;\n\n const usdBalance = tokenPrice\n ? +formatUnits(BigInt(balance), token.decimals) * tokenPrice\n : undefined;\n\n return {\n ...token,\n balance: balance.toString(),\n usdBalance,\n };\n },\n [\n account,\n multiChainTokenBalances,\n multiChainTokenPrices,\n selectedTokenBalances,\n ]\n );\n};\n"],"names":["useAttachTokenBalanceMultichain","t0","$","_c","addressesMap","address","account","useAccount","tradeMode","useTradeMode","t1","multiChainTokenBalances","useMultiChainTokenBalances","selectedTokenBalances","useSelectedTokenBalances","t2","Object","keys","map","Number","filter","isSupportedChainId","chainIds","multiChainTokenPrices","useMultiChainTokenPrices","t3","token","loweredAddress","toLowerCase","isAddress","balance","network","result","undefined","tokenPrice","price","usdBalance","formatUnits","BigInt","decimals","toString"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIsInsufficientTokenBalance.js","sources":["../../../../src/hooks/tokens/balances/useIsInsufficientTokenBalance.ts"],"sourcesContent":["import { useAccount } from \"wagmi\";\nimport { useTokenBalance } from \"./useTokenBalance\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useAtomValue } from \"jotai\";\nimport { amountAfterSlippage } from \"@/lib/utils/slippage\";\nimport { useSwapSide } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\nimport { useSlippage } from \"@/hooks/useSlippage\";\nimport { type TradeMode } from \"@/core/state/tradeModeAtom\";\nimport { MEDIUM_STALE_TIME_FOR_REACTIVENESS } from \"@/lib/constants/time\";\nimport {\n tradeModeToPayAmountWeiAtom,\n tradeModeToTokenAtoms,\n} from \"@/core/inputs/state/common\";\n\nexport const useIsInsufficientTokenBalance = ({\n token,\n requiredBalanceWei,\n}: {\n token?: Token;\n requiredBalanceWei?: string;\n}) => {\n const { address: account } = useAccount();\n const { balance } = useTokenBalance({\n token,\n queryOptions: { refetchInterval: MEDIUM_STALE_TIME_FOR_REACTIVENESS },\n });\n\n if (\n requiredBalanceWei === undefined ||\n balance === undefined ||\n !token ||\n !account\n )\n return false;\n\n return balance === 0n || balance < BigInt(requiredBalanceWei);\n};\n\nexport const useIsTokenFromInsufficientBalance = (tradeMode: TradeMode) => {\n const tokenFromAtom = tradeModeToTokenAtoms[tradeMode].tokenFromAtom;\n const payAmountWeiAtom = tradeModeToPayAmountWeiAtom[tradeMode];\n\n const tokenFrom = useAtomValue(tokenFromAtom);\n const payAmountWei = useAtomValue(payAmountWeiAtom);\n\n const swapSide = useSwapSide();\n const { resolvedSlippage } = useSlippage(tradeMode);\n\n const requiredBalanceAfterPossibleSlippage =\n swapSide === \"BUY\"\n ? // payAmount + slippage for BUY\n amountAfterSlippage(payAmountWei, resolvedSlippage, swapSide).toFixed(0)\n : // raw payAmount for SELL\n payAmountWei;\n\n return useIsInsufficientTokenBalance({\n token: tokenFrom,\n requiredBalanceWei: requiredBalanceAfterPossibleSlippage,\n });\n};\n"],"names":["useIsInsufficientTokenBalance","token","requiredBalanceWei","address","account","useAccount","balance","useTokenBalance","queryOptions","refetchInterval","MEDIUM_STALE_TIME_FOR_REACTIVENESS","undefined","BigInt","useIsTokenFromInsufficientBalance","tradeMode","$","_c","tokenFromAtom","tradeModeToTokenAtoms","payAmountWeiAtom","tradeModeToPayAmountWeiAtom","tokenFrom","useAtomValue","payAmountWei","swapSide","useSwapSide","resolvedSlippage","useSlippage","t0","amountAfterSlippage","toFixed","requiredBalanceAfterPossibleSlippage","t1"],"mappings":";;;;;;;;;;AAcO,MAAMA,gCAAgCA,CAAC;AAAA,EAC5CC,KAAAA;AAAAA,EACAC;AAIF,CAAA,KAAM;AACJ,EAAA,MAAM;AAAA,IAAEC,OAAAA,EAASC;AAAAA,MAAYC,UAAAA,EAAW;AACxC,EAAA,MAAM;AAAA,IAAEC;AAAAA,MAAYC,eAAAA,CAAgB;AAAA,IAClCN,KAAAA;AAAAA,IACAO,YAAAA,EAAc;AAAA,MAAEC,eAAAA,EAAiBC;AAAAA;AAAmC,GACrE,CAAA;AAED,EAAA,IACER,kBAAAA,KAAuBS,UACvBL,OAAAA,KAAYK,MAAAA,IACZ,CAACV,KAAAA,IACD,CAACG,SAED,OAAO,KAAA;AAET,EAAA,OAAOE,OAAAA,KAAY,EAAA,IAAMA,OAAAA,GAAUM,MAAAA,CAAOV,kBAAkB,CAAA;AAC9D;AAEO,MAAMW,oCAAoCC,CAAAA,SAAAA,KAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AAC/C,EAAA,MAAAC,aAAAA,
|
|
1
|
+
{"version":3,"file":"useIsInsufficientTokenBalance.js","sources":["../../../../src/hooks/tokens/balances/useIsInsufficientTokenBalance.ts"],"sourcesContent":["import { useAccount } from \"wagmi\";\nimport { useTokenBalance } from \"./useTokenBalance\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useAtomValue } from \"jotai\";\nimport { amountAfterSlippage } from \"@/lib/utils/slippage\";\nimport { useSwapSide } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\nimport { useSlippage } from \"@/hooks/useSlippage\";\nimport { type TradeMode } from \"@/core/state/tradeModeAtom\";\nimport { MEDIUM_STALE_TIME_FOR_REACTIVENESS } from \"@/lib/constants/time\";\nimport {\n tradeModeToPayAmountWeiAtom,\n tradeModeToTokenAtoms,\n} from \"@/core/inputs/state/common\";\n\nexport const useIsInsufficientTokenBalance = ({\n token,\n requiredBalanceWei,\n}: {\n token?: Token;\n requiredBalanceWei?: string;\n}) => {\n const { address: account } = useAccount();\n const { balance } = useTokenBalance({\n token,\n queryOptions: { refetchInterval: MEDIUM_STALE_TIME_FOR_REACTIVENESS },\n });\n\n if (\n requiredBalanceWei === undefined ||\n balance === undefined ||\n !token ||\n !account\n )\n return false;\n\n return balance === 0n || balance < BigInt(requiredBalanceWei);\n};\n\nexport const useIsTokenFromInsufficientBalance = (tradeMode: TradeMode) => {\n const tokenFromAtom = tradeModeToTokenAtoms[tradeMode].tokenFromAtom;\n const payAmountWeiAtom = tradeModeToPayAmountWeiAtom[tradeMode];\n\n const tokenFrom = useAtomValue(tokenFromAtom);\n const payAmountWei = useAtomValue(payAmountWeiAtom);\n\n const swapSide = useSwapSide();\n const { resolvedSlippage } = useSlippage(tradeMode);\n\n const requiredBalanceAfterPossibleSlippage =\n swapSide === \"BUY\"\n ? // payAmount + slippage for BUY\n amountAfterSlippage(payAmountWei, resolvedSlippage, swapSide).toFixed(0)\n : // raw payAmount for SELL\n payAmountWei;\n\n return useIsInsufficientTokenBalance({\n token: tokenFrom,\n requiredBalanceWei: requiredBalanceAfterPossibleSlippage,\n });\n};\n"],"names":["useIsInsufficientTokenBalance","token","requiredBalanceWei","address","account","useAccount","balance","useTokenBalance","queryOptions","refetchInterval","MEDIUM_STALE_TIME_FOR_REACTIVENESS","undefined","BigInt","useIsTokenFromInsufficientBalance","tradeMode","$","_c","tokenFromAtom","tradeModeToTokenAtoms","payAmountWeiAtom","tradeModeToPayAmountWeiAtom","tokenFrom","useAtomValue","payAmountWei","swapSide","useSwapSide","resolvedSlippage","useSlippage","t0","amountAfterSlippage","toFixed","requiredBalanceAfterPossibleSlippage","t1"],"mappings":";;;;;;;;;;AAcO,MAAMA,gCAAgCA,CAAC;AAAA,EAC5CC,KAAAA;AAAAA,EACAC;AAIF,CAAA,KAAM;AACJ,EAAA,MAAM;AAAA,IAAEC,OAAAA,EAASC;AAAAA,MAAYC,UAAAA,EAAW;AACxC,EAAA,MAAM;AAAA,IAAEC;AAAAA,MAAYC,eAAAA,CAAgB;AAAA,IAClCN,KAAAA;AAAAA,IACAO,YAAAA,EAAc;AAAA,MAAEC,eAAAA,EAAiBC;AAAAA;AAAmC,GACrE,CAAA;AAED,EAAA,IACER,kBAAAA,KAAuBS,UACvBL,OAAAA,KAAYK,MAAAA,IACZ,CAACV,KAAAA,IACD,CAACG,SAED,OAAO,KAAA;AAET,EAAA,OAAOE,OAAAA,KAAY,EAAA,IAAMA,OAAAA,GAAUM,MAAAA,CAAOV,kBAAkB,CAAA;AAC9D;AAEO,MAAMW,oCAAoCC,CAAAA,SAAAA,KAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AAC/C,EAAA,MAAAC,aAAAA,GAAsBC,qBAAAA,CAAsBJ,SAAS,CAAA,CAACG,aAAAA;AACtD,EAAA,MAAAE,gBAAAA,GAAyBC,4BAA4BN,SAAS,CAAA;AAE9D,EAAA,MAAAO,SAAAA,GAAkBC,aAAaL,aAAa,CAAA;AAC5C,EAAA,MAAAM,YAAAA,GAAqBD,aAAaH,gBAAgB,CAAA;AAElD,EAAA,MAAAK,WAAiBC,WAAAA,EAAY;AAC7B,EAAA,MAAA;AAAA,IAAAC;AAAAA,GAAA,GAA6BC,YAAYb,SAAS,CAAA;AAAE,EAAA,IAAAc,EAAAA;AAAA,EAAA,IAAAb,CAAAA,CAAA,CAAA,CAAA,KAAAQ,YAAAA,IAAAR,CAAAA,QAAAW,gBAAAA,IAAAX,CAAAA,CAAA,CAAA,CAAA,KAAAS,QAAAA,EAAA;AAGlDI,IAAAA,EAAAA,GAAAJ,QAAAA,KAAa,QAETK,mBAAAA,CAAoBN,YAAAA,EAAcG,kBAAkBF,QAAQ,CAAA,CAACM,OAAAA,CAAS,CAE3D,CAAA,GAJfP,YAAAA;AAIgBR,IAAAA,CAAAA,MAAAQ,YAAAA;AAAAR,IAAAA,CAAAA,MAAAW,gBAAAA;AAAAX,IAAAA,CAAAA,MAAAS,QAAAA;AAAAT,IAAAA,CAAAA,MAAAa,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAb,EAAA,CAAA,CAAA;AAAA,EAAA;AALlB,EAAA,MAAAgB,oCAAAA,GACEH,EAAAA;AAIiB,EAAA,IAAAI,EAAAA;AAAA,EAAA,IAAAjB,EAAA,CAAA,CAAA,KAAAgB,wCAAAhB,CAAAA,QAAAM,SAAAA,EAAA;AAEkBW,IAAAA,EAAAA,GAAA;AAAA,MAAA/B,KAAAA,EAC5BoB,SAAAA;AAAAA,MAASnB,kBAAAA,EACI6B;AAAAA,KACtB;AAAChB,IAAAA,CAAAA,MAAAgB,oCAAAA;AAAAhB,IAAAA,CAAAA,MAAAM,SAAAA;AAAAN,IAAAA,CAAAA,MAAAiB,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAjB,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAHMf,8BAA8BgC,EAGpC,CAAA;AAAC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIsLimitOrderInsufficientBalance.js","sources":["../../../../src/hooks/tokens/balances/useIsLimitOrderInsufficientBalance.ts"],"sourcesContent":["import { useAtomValue } from \"jotai\";\nimport { formatUnits } from \"viem\";\n\nimport { useIsInsufficientTokenBalance } from \"./useIsInsufficientTokenBalance\";\nimport { useLimitOrderRequiredBalance } from \"@/hooks/otc/queries/useLimitOrderRequiredBalance\";\nimport { LONG_STALE_TIME_FOR_REACTIVENESS } from \"@/lib/constants/time\";\n\nimport { useOtcTokenFrom } from \"@/core/otc/state/selectedTokenAtom\";\nimport { otcPayInputAmountWeiAtom } from \"@/core/otc/state/otcInputAmountAtom\";\n\nimport { useLimitTokenFrom } from \"@/core/limit/state/selectedTokenAtom\";\nimport { limitPayInputAmountWeiAtom } from \"@/core/limit/state/limitInputAmountAtom\";\nimport { useDeltaLimitOrderRequiredBalance } from \"@/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance\";\nimport type { Token } from \"@/tokens/state/types\";\n\nexport const useIsInsufficientBalanceToFillLimitOrder = () => {\n const tokenFrom = useLimitTokenFrom();\n const payAmountWei = useAtomValue(limitPayInputAmountWeiAtom);\n\n const { data } = useDeltaLimitOrderRequiredBalance({\n tokenAddress: tokenFrom.address,\n query: { staleTime: LONG_STALE_TIME_FOR_REACTIVENESS },\n });\n\n const requiredBalanceToFillWei = data?.[tokenFrom.address.toLowerCase()];\n\n return useIsInsufficientBalanceToFillOrder({\n tokenFrom,\n payAmountWei,\n requiredBalanceToFillWei,\n });\n};\n\nexport const useIsInsufficientBalanceToFillOtcOrder = () => {\n const tokenFrom = useOtcTokenFrom();\n const payAmountWei = useAtomValue(otcPayInputAmountWeiAtom);\n\n const { data } = useLimitOrderRequiredBalance({\n tokenAddress: tokenFrom.address,\n query: { staleTime: LONG_STALE_TIME_FOR_REACTIVENESS },\n });\n\n const requiredBalanceToFillWei = data?.[tokenFrom.address.toLowerCase()];\n\n return useIsInsufficientBalanceToFillOrder({\n tokenFrom,\n payAmountWei,\n requiredBalanceToFillWei,\n });\n};\n\nexport const useIsInsufficientBalanceToFillOrder = ({\n tokenFrom,\n payAmountWei,\n requiredBalanceToFillWei,\n}: {\n tokenFrom: Token;\n payAmountWei: string;\n requiredBalanceToFillWei?: string;\n}) => {\n const isInsufficientBalance = useIsInsufficientTokenBalance({\n token: tokenFrom,\n requiredBalanceWei: payAmountWei,\n });\n\n const isInsufficientBalanceToFill = useIsInsufficientTokenBalance({\n token: tokenFrom,\n requiredBalanceWei:\n requiredBalanceToFillWei && requiredBalanceToFillWei !== \"0\"\n ? (BigInt(payAmountWei) + BigInt(requiredBalanceToFillWei)).toString()\n : undefined,\n });\n\n const requiredBalanceToFillUnit =\n isInsufficientBalanceToFill && requiredBalanceToFillWei\n ? formatUnits(BigInt(requiredBalanceToFillWei), tokenFrom.decimals)\n : undefined;\n\n return {\n isInsufficientBalance,\n isInsufficientBalanceToFill,\n requiredBalanceToFillWei,\n requiredBalanceToFillUnit,\n };\n};\n"],"names":["useIsInsufficientBalanceToFillLimitOrder","$","_c","tokenFrom","useLimitTokenFrom","payAmountWei","useAtomValue","limitPayInputAmountWeiAtom","t0","Symbol","for","staleTime","LONG_STALE_TIME_FOR_REACTIVENESS","t1","address","tokenAddress","query","data","useDeltaLimitOrderRequiredBalance","t2","toLowerCase","requiredBalanceToFillWei","t3","useIsInsufficientBalanceToFillOrder","useIsInsufficientBalanceToFillOtcOrder","useOtcTokenFrom","otcPayInputAmountWeiAtom","useLimitOrderRequiredBalance","token","requiredBalanceWei","isInsufficientBalance","useIsInsufficientTokenBalance","BigInt","toString","undefined","isInsufficientBalanceToFill","t4","formatUnits","decimals","requiredBalanceToFillUnit","t5"],"mappings":";;;;;;;;;;;;AAeO,MAAMA,2CAA2CA,MAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,EAAA,CAAA;AACtD,EAAA,MAAAC,YAAkBC,iBAAAA,EAAkB;AACpC,EAAA,MAAAC,YAAAA,GAAqBC,
|
|
1
|
+
{"version":3,"file":"useIsLimitOrderInsufficientBalance.js","sources":["../../../../src/hooks/tokens/balances/useIsLimitOrderInsufficientBalance.ts"],"sourcesContent":["import { useAtomValue } from \"jotai\";\nimport { formatUnits } from \"viem\";\n\nimport { useIsInsufficientTokenBalance } from \"./useIsInsufficientTokenBalance\";\nimport { useLimitOrderRequiredBalance } from \"@/hooks/otc/queries/useLimitOrderRequiredBalance\";\nimport { LONG_STALE_TIME_FOR_REACTIVENESS } from \"@/lib/constants/time\";\n\nimport { useOtcTokenFrom } from \"@/core/otc/state/selectedTokenAtom\";\nimport { otcPayInputAmountWeiAtom } from \"@/core/otc/state/otcInputAmountAtom\";\n\nimport { useLimitTokenFrom } from \"@/core/limit/state/selectedTokenAtom\";\nimport { limitPayInputAmountWeiAtom } from \"@/core/limit/state/limitInputAmountAtom\";\nimport { useDeltaLimitOrderRequiredBalance } from \"@/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance\";\nimport type { Token } from \"@/tokens/state/types\";\n\nexport const useIsInsufficientBalanceToFillLimitOrder = () => {\n const tokenFrom = useLimitTokenFrom();\n const payAmountWei = useAtomValue(limitPayInputAmountWeiAtom);\n\n const { data } = useDeltaLimitOrderRequiredBalance({\n tokenAddress: tokenFrom.address,\n query: { staleTime: LONG_STALE_TIME_FOR_REACTIVENESS },\n });\n\n const requiredBalanceToFillWei = data?.[tokenFrom.address.toLowerCase()];\n\n return useIsInsufficientBalanceToFillOrder({\n tokenFrom,\n payAmountWei,\n requiredBalanceToFillWei,\n });\n};\n\nexport const useIsInsufficientBalanceToFillOtcOrder = () => {\n const tokenFrom = useOtcTokenFrom();\n const payAmountWei = useAtomValue(otcPayInputAmountWeiAtom);\n\n const { data } = useLimitOrderRequiredBalance({\n tokenAddress: tokenFrom.address,\n query: { staleTime: LONG_STALE_TIME_FOR_REACTIVENESS },\n });\n\n const requiredBalanceToFillWei = data?.[tokenFrom.address.toLowerCase()];\n\n return useIsInsufficientBalanceToFillOrder({\n tokenFrom,\n payAmountWei,\n requiredBalanceToFillWei,\n });\n};\n\nexport const useIsInsufficientBalanceToFillOrder = ({\n tokenFrom,\n payAmountWei,\n requiredBalanceToFillWei,\n}: {\n tokenFrom: Token;\n payAmountWei: string;\n requiredBalanceToFillWei?: string;\n}) => {\n const isInsufficientBalance = useIsInsufficientTokenBalance({\n token: tokenFrom,\n requiredBalanceWei: payAmountWei,\n });\n\n const isInsufficientBalanceToFill = useIsInsufficientTokenBalance({\n token: tokenFrom,\n requiredBalanceWei:\n requiredBalanceToFillWei && requiredBalanceToFillWei !== \"0\"\n ? (BigInt(payAmountWei) + BigInt(requiredBalanceToFillWei)).toString()\n : undefined,\n });\n\n const requiredBalanceToFillUnit =\n isInsufficientBalanceToFill && requiredBalanceToFillWei\n ? formatUnits(BigInt(requiredBalanceToFillWei), tokenFrom.decimals)\n : undefined;\n\n return {\n isInsufficientBalance,\n isInsufficientBalanceToFill,\n requiredBalanceToFillWei,\n requiredBalanceToFillUnit,\n };\n};\n"],"names":["useIsInsufficientBalanceToFillLimitOrder","$","_c","tokenFrom","useLimitTokenFrom","payAmountWei","useAtomValue","limitPayInputAmountWeiAtom","t0","Symbol","for","staleTime","LONG_STALE_TIME_FOR_REACTIVENESS","t1","address","tokenAddress","query","data","useDeltaLimitOrderRequiredBalance","t2","toLowerCase","requiredBalanceToFillWei","t3","useIsInsufficientBalanceToFillOrder","useIsInsufficientBalanceToFillOtcOrder","useOtcTokenFrom","otcPayInputAmountWeiAtom","useLimitOrderRequiredBalance","token","requiredBalanceWei","isInsufficientBalance","useIsInsufficientTokenBalance","BigInt","toString","undefined","isInsufficientBalanceToFill","t4","formatUnits","decimals","requiredBalanceToFillUnit","t5"],"mappings":"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"}
|