@velora-dex/widget 0.1.3 → 0.2.0
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.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.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.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.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.js.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.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.js +53 -66
- 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.js.map +1 -1
- 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.js.map +1 -1
- package/dist/core/inputs/state/selectedTokenAtom.js.map +1 -1
- package/dist/core/inputs/state/setTokenByAddressAtom.js.map +1 -1
- 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/configAtom.d.ts +2 -2
- package/dist/core/state/configAtom.d.ts.map +1 -1
- package/dist/core/state/configAtom.js +1 -7
- 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.js.map +1 -1
- package/dist/core/swapDetails/useSwapDetailsListProps.js +34 -36
- package/dist/core/swapDetails/useSwapDetailsListProps.js.map +1 -1
- package/dist/events/hooks/useActivateEffects.js.map +1 -1
- 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/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/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/web3/privy/config.js +1 -1
- package/dist/lib/web3/wagmi/config.js +1 -1
- package/dist/lib/web3/wagmi/isInsideSafeIframe.js.map +1 -1
- package/dist/styles.css +80 -39
- 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/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
package/dist/styles.css
CHANGED
|
@@ -67,18 +67,13 @@
|
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
|
-
|
|
70
|
+
.velora-widget {
|
|
71
71
|
--font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
|
72
72
|
--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
|
73
73
|
--color-red-800: oklch(44.4% .177 26.899);
|
|
74
74
|
--color-green-300: oklch(87.1% .15 154.449);
|
|
75
75
|
--color-green-400: oklch(79.2% .209 151.711);
|
|
76
76
|
--color-blue-600: oklch(54.6% .245 262.881);
|
|
77
|
-
--color-blue-700: oklch(48.8% .243 264.376);
|
|
78
|
-
--color-gray-100: oklch(96.7% .003 264.542);
|
|
79
|
-
--color-gray-300: oklch(87.2% .01 258.338);
|
|
80
|
-
--color-gray-700: oklch(37.3% .034 259.733);
|
|
81
|
-
--color-gray-800: oklch(27.8% .033 256.848);
|
|
82
77
|
--color-gray-900: oklch(21% .034 264.665);
|
|
83
78
|
--color-black: #000;
|
|
84
79
|
--color-white: #fff;
|
|
@@ -98,8 +93,10 @@
|
|
|
98
93
|
--text-lg--line-height: calc(1.75 / 1.125);
|
|
99
94
|
--text-xl: 1.25rem;
|
|
100
95
|
--text-xl--line-height: calc(1.75 / 1.25);
|
|
96
|
+
--font-weight-normal: 400;
|
|
101
97
|
--font-weight-medium: 500;
|
|
102
98
|
--font-weight-semibold: 600;
|
|
99
|
+
--font-weight-bold: 700;
|
|
103
100
|
--tracking-widest: .1em;
|
|
104
101
|
--radius-2xl: 1rem;
|
|
105
102
|
--ease-in-out: cubic-bezier(.4, 0, .2, 1);
|
|
@@ -326,6 +323,9 @@
|
|
|
326
323
|
.velora-widget.velora-widget .pointer-events-none {
|
|
327
324
|
pointer-events: none;
|
|
328
325
|
}
|
|
326
|
+
.velora-widget.velora-widget .collapse {
|
|
327
|
+
visibility: collapse;
|
|
328
|
+
}
|
|
329
329
|
.velora-widget.velora-widget .visible {
|
|
330
330
|
visibility: visible;
|
|
331
331
|
}
|
|
@@ -530,9 +530,6 @@
|
|
|
530
530
|
.velora-widget.velora-widget .mb-8 {
|
|
531
531
|
margin-bottom: calc(var(--spacing) * 8);
|
|
532
532
|
}
|
|
533
|
-
.velora-widget.velora-widget .mb-10 {
|
|
534
|
-
margin-bottom: calc(var(--spacing) * 10);
|
|
535
|
-
}
|
|
536
533
|
.velora-widget.velora-widget .mb-\[17\.5px\] {
|
|
537
534
|
margin-bottom: 17.5px;
|
|
538
535
|
}
|
|
@@ -755,6 +752,9 @@
|
|
|
755
752
|
.velora-widget.velora-widget .h-px {
|
|
756
753
|
height: 1px;
|
|
757
754
|
}
|
|
755
|
+
.velora-widget.velora-widget .h-screen {
|
|
756
|
+
height: 100vh;
|
|
757
|
+
}
|
|
758
758
|
.velora-widget.velora-widget .max-h-\(--radix-dropdown-menu-content-available-height\) {
|
|
759
759
|
max-height: var(--radix-dropdown-menu-content-available-height);
|
|
760
760
|
}
|
|
@@ -773,8 +773,8 @@
|
|
|
773
773
|
.velora-widget.velora-widget .min-h-\[92px\] {
|
|
774
774
|
min-height: 92px;
|
|
775
775
|
}
|
|
776
|
-
.velora-widget.velora-widget .min-h
|
|
777
|
-
min-height:
|
|
776
|
+
.velora-widget.velora-widget .min-h-\[400px\] {
|
|
777
|
+
min-height: 400px;
|
|
778
778
|
}
|
|
779
779
|
.velora-widget.velora-widget .w-3\.5 {
|
|
780
780
|
width: calc(var(--spacing) * 3.5);
|
|
@@ -806,12 +806,18 @@
|
|
|
806
806
|
.velora-widget.velora-widget .w-\[42px\] {
|
|
807
807
|
width: 42px;
|
|
808
808
|
}
|
|
809
|
+
.velora-widget.velora-widget .w-\[50\%\] {
|
|
810
|
+
width: 50%;
|
|
811
|
+
}
|
|
809
812
|
.velora-widget.velora-widget .w-\[50px\] {
|
|
810
813
|
width: 50px;
|
|
811
814
|
}
|
|
812
815
|
.velora-widget.velora-widget .w-\[78px\] {
|
|
813
816
|
width: 78px;
|
|
814
817
|
}
|
|
818
|
+
.velora-widget.velora-widget .w-\[93px\] {
|
|
819
|
+
width: 93px;
|
|
820
|
+
}
|
|
815
821
|
.velora-widget.velora-widget .w-\[100px\] {
|
|
816
822
|
width: 100px;
|
|
817
823
|
}
|
|
@@ -824,8 +830,8 @@
|
|
|
824
830
|
.velora-widget.velora-widget .w-\[254px\] {
|
|
825
831
|
width: 254px;
|
|
826
832
|
}
|
|
827
|
-
.velora-widget.velora-widget .w-\[
|
|
828
|
-
width:
|
|
833
|
+
.velora-widget.velora-widget .w-\[400px\] {
|
|
834
|
+
width: 400px;
|
|
829
835
|
}
|
|
830
836
|
.velora-widget.velora-widget .w-fit {
|
|
831
837
|
width: fit-content;
|
|
@@ -1213,18 +1219,15 @@
|
|
|
1213
1219
|
.velora-widget.velora-widget .border-contrast-9 {
|
|
1214
1220
|
border-color: var(--contrast-9);
|
|
1215
1221
|
}
|
|
1216
|
-
.velora-widget.velora-widget .border-gray-300 {
|
|
1217
|
-
border-color: var(--color-gray-300);
|
|
1218
|
-
}
|
|
1219
|
-
.velora-widget.velora-widget .border-gray-700 {
|
|
1220
|
-
border-color: var(--color-gray-700);
|
|
1221
|
-
}
|
|
1222
1222
|
.velora-widget.velora-widget .border-input {
|
|
1223
1223
|
border-color: var(--input);
|
|
1224
1224
|
}
|
|
1225
1225
|
.velora-widget.velora-widget .border-primary-azul-1 {
|
|
1226
1226
|
border-color: var(--primary-azul-1);
|
|
1227
1227
|
}
|
|
1228
|
+
.velora-widget.velora-widget .border-secondary-iris-blue-1 {
|
|
1229
|
+
border-color: var(--secondary-iris_blue-1);
|
|
1230
|
+
}
|
|
1228
1231
|
.velora-widget.velora-widget .border-secondary-orange-peel-1 {
|
|
1229
1232
|
border-color: var(--secondary-orange_peel-1);
|
|
1230
1233
|
}
|
|
@@ -1252,6 +1255,9 @@
|
|
|
1252
1255
|
.velora-widget.velora-widget .bg-\[\#FF950033\] {
|
|
1253
1256
|
background-color: #ff950033;
|
|
1254
1257
|
}
|
|
1258
|
+
.velora-widget.velora-widget .bg-\[rgba\(0\,183\,213\,0\.05\)\] {
|
|
1259
|
+
background-color: #00b7d50d;
|
|
1260
|
+
}
|
|
1255
1261
|
.velora-widget.velora-widget .bg-\[rgba\(255\,153\,0\,0\.05\)\] {
|
|
1256
1262
|
background-color: #ff99000d;
|
|
1257
1263
|
}
|
|
@@ -1350,6 +1356,9 @@
|
|
|
1350
1356
|
.velora-widget.velora-widget .fill-contrast-1 {
|
|
1351
1357
|
fill: var(--contrast-1);
|
|
1352
1358
|
}
|
|
1359
|
+
.velora-widget.velora-widget .fill-contrast-5 {
|
|
1360
|
+
fill: var(--contrast-5);
|
|
1361
|
+
}
|
|
1353
1362
|
.velora-widget.velora-widget .fill-contrast-6 {
|
|
1354
1363
|
fill: var(--contrast-6);
|
|
1355
1364
|
}
|
|
@@ -1446,6 +1455,9 @@
|
|
|
1446
1455
|
.velora-widget.velora-widget .py-3 {
|
|
1447
1456
|
padding-block: calc(var(--spacing) * 3);
|
|
1448
1457
|
}
|
|
1458
|
+
.velora-widget.velora-widget .py-3\.5 {
|
|
1459
|
+
padding-block: calc(var(--spacing) * 3.5);
|
|
1460
|
+
}
|
|
1449
1461
|
.velora-widget.velora-widget .py-4 {
|
|
1450
1462
|
padding-block: calc(var(--spacing) * 4);
|
|
1451
1463
|
}
|
|
@@ -1476,6 +1488,9 @@
|
|
|
1476
1488
|
.velora-widget.velora-widget .pt-2 {
|
|
1477
1489
|
padding-top: calc(var(--spacing) * 2);
|
|
1478
1490
|
}
|
|
1491
|
+
.velora-widget.velora-widget .pt-3 {
|
|
1492
|
+
padding-top: calc(var(--spacing) * 3);
|
|
1493
|
+
}
|
|
1479
1494
|
.velora-widget.velora-widget .pt-4 {
|
|
1480
1495
|
padding-top: calc(var(--spacing) * 4);
|
|
1481
1496
|
}
|
|
@@ -1494,6 +1509,9 @@
|
|
|
1494
1509
|
.velora-widget.velora-widget .pt-\[24px\] {
|
|
1495
1510
|
padding-top: 24px;
|
|
1496
1511
|
}
|
|
1512
|
+
.velora-widget.velora-widget .pt-\[185px\] {
|
|
1513
|
+
padding-top: 185px;
|
|
1514
|
+
}
|
|
1497
1515
|
.velora-widget.velora-widget .pr-0\.5 {
|
|
1498
1516
|
padding-right: calc(var(--spacing) * .5);
|
|
1499
1517
|
}
|
|
@@ -1587,9 +1605,6 @@
|
|
|
1587
1605
|
.velora-widget.velora-widget .font-inter {
|
|
1588
1606
|
font-family: var(--font-inter);
|
|
1589
1607
|
}
|
|
1590
|
-
.velora-widget.velora-widget .font-mono {
|
|
1591
|
-
font-family: var(--font-mono);
|
|
1592
|
-
}
|
|
1593
1608
|
.velora-widget.velora-widget .text-base {
|
|
1594
1609
|
font-size: var(--text-base);
|
|
1595
1610
|
line-height: var(--tw-leading, var(--text-base--line-height));
|
|
@@ -1616,6 +1631,9 @@
|
|
|
1616
1631
|
.velora-widget.velora-widget .text-\[11px\] {
|
|
1617
1632
|
font-size: 11px;
|
|
1618
1633
|
}
|
|
1634
|
+
.velora-widget.velora-widget .text-\[14px\] {
|
|
1635
|
+
font-size: 14px;
|
|
1636
|
+
}
|
|
1619
1637
|
.velora-widget.velora-widget .text-\[18px\] {
|
|
1620
1638
|
font-size: 18px;
|
|
1621
1639
|
}
|
|
@@ -1626,10 +1644,18 @@
|
|
|
1626
1644
|
--tw-leading: 1;
|
|
1627
1645
|
line-height: 1;
|
|
1628
1646
|
}
|
|
1647
|
+
.velora-widget.velora-widget .font-bold {
|
|
1648
|
+
--tw-font-weight: var(--font-weight-bold);
|
|
1649
|
+
font-weight: var(--font-weight-bold);
|
|
1650
|
+
}
|
|
1629
1651
|
.velora-widget.velora-widget .font-medium {
|
|
1630
1652
|
--tw-font-weight: var(--font-weight-medium);
|
|
1631
1653
|
font-weight: var(--font-weight-medium);
|
|
1632
1654
|
}
|
|
1655
|
+
.velora-widget.velora-widget .font-normal {
|
|
1656
|
+
--tw-font-weight: var(--font-weight-normal);
|
|
1657
|
+
font-weight: var(--font-weight-normal);
|
|
1658
|
+
}
|
|
1633
1659
|
.velora-widget.velora-widget .font-semibold {
|
|
1634
1660
|
--tw-font-weight: var(--font-weight-semibold);
|
|
1635
1661
|
font-weight: var(--font-weight-semibold);
|
|
@@ -1699,12 +1725,6 @@
|
|
|
1699
1725
|
.velora-widget.velora-widget .text-foreground {
|
|
1700
1726
|
color: var(--foreground);
|
|
1701
1727
|
}
|
|
1702
|
-
.velora-widget.velora-widget .text-gray-100 {
|
|
1703
|
-
color: var(--color-gray-100);
|
|
1704
|
-
}
|
|
1705
|
-
.velora-widget.velora-widget .text-green-400 {
|
|
1706
|
-
color: var(--color-green-400);
|
|
1707
|
-
}
|
|
1708
1728
|
.velora-widget.velora-widget .text-muted-foreground {
|
|
1709
1729
|
color: var(--muted-foreground);
|
|
1710
1730
|
}
|
|
@@ -1723,6 +1743,9 @@
|
|
|
1723
1743
|
.velora-widget.velora-widget .text-secondary-foreground {
|
|
1724
1744
|
color: var(--secondary-foreground);
|
|
1725
1745
|
}
|
|
1746
|
+
.velora-widget.velora-widget .text-secondary-iris-blue-1 {
|
|
1747
|
+
color: var(--secondary-iris_blue-1);
|
|
1748
|
+
}
|
|
1726
1749
|
.velora-widget.velora-widget .text-secondary-orange-peel-1 {
|
|
1727
1750
|
color: var(--secondary-orange_peel-1);
|
|
1728
1751
|
}
|
|
@@ -1836,10 +1859,16 @@
|
|
|
1836
1859
|
outline: 2px solid #0000;
|
|
1837
1860
|
}
|
|
1838
1861
|
}
|
|
1839
|
-
.velora-widget.velora-widget .outline {
|
|
1862
|
+
.velora-widget.velora-widget .outline, .velora-widget.velora-widget .outline-1 {
|
|
1840
1863
|
outline-style: var(--tw-outline-style);
|
|
1841
1864
|
outline-width: 1px;
|
|
1842
1865
|
}
|
|
1866
|
+
.velora-widget.velora-widget .outline-contrast-7 {
|
|
1867
|
+
outline-color: var(--contrast-7);
|
|
1868
|
+
}
|
|
1869
|
+
.velora-widget.velora-widget .outline-contrast-8 {
|
|
1870
|
+
outline-color: var(--contrast-8);
|
|
1871
|
+
}
|
|
1843
1872
|
.velora-widget.velora-widget .outline-primary-azul-1 {
|
|
1844
1873
|
outline-color: var(--primary-azul-1);
|
|
1845
1874
|
}
|
|
@@ -1984,6 +2013,9 @@
|
|
|
1984
2013
|
.velora-widget.velora-widget .placeholder\:text-contrast-6::placeholder {
|
|
1985
2014
|
color: var(--contrast-6);
|
|
1986
2015
|
}
|
|
2016
|
+
.velora-widget.velora-widget .last\:mb-0:last-child {
|
|
2017
|
+
margin-bottom: calc(var(--spacing) * 0);
|
|
2018
|
+
}
|
|
1987
2019
|
.velora-widget.velora-widget .last\:border-b-0:last-child {
|
|
1988
2020
|
border-bottom-style: var(--tw-border-style);
|
|
1989
2021
|
border-bottom-width: 0;
|
|
@@ -2026,10 +2058,6 @@
|
|
|
2026
2058
|
background-color: var(--accent);
|
|
2027
2059
|
}
|
|
2028
2060
|
|
|
2029
|
-
.velora-widget.velora-widget .hover\:bg-blue-700:hover {
|
|
2030
|
-
background-color: var(--color-blue-700);
|
|
2031
|
-
}
|
|
2032
|
-
|
|
2033
2061
|
.velora-widget.velora-widget .hover\:bg-contrast-7:hover, .velora-widget.velora-widget .hover\:bg-contrast-7\/80:hover {
|
|
2034
2062
|
background-color: var(--contrast-7);
|
|
2035
2063
|
}
|
|
@@ -2480,15 +2508,16 @@
|
|
|
2480
2508
|
line-height: var(--tw-leading, var(--text-sm--line-height));
|
|
2481
2509
|
}
|
|
2482
2510
|
}
|
|
2511
|
+
.velora-widget.velora-widget .dark\:border:is(.velora-widget.dark *) {
|
|
2512
|
+
border-style: var(--tw-border-style);
|
|
2513
|
+
border-width: 1px;
|
|
2514
|
+
}
|
|
2483
2515
|
.velora-widget.velora-widget .dark\:border-contrast-3:is(.velora-widget.dark *) {
|
|
2484
2516
|
border-color: var(--contrast-3);
|
|
2485
2517
|
}
|
|
2486
2518
|
.velora-widget.velora-widget .dark\:border-contrast-4:is(.velora-widget.dark *) {
|
|
2487
2519
|
border-color: var(--contrast-4);
|
|
2488
2520
|
}
|
|
2489
|
-
.velora-widget.velora-widget .dark\:border-gray-700:is(.velora-widget.dark *) {
|
|
2490
|
-
border-color: var(--color-gray-700);
|
|
2491
|
-
}
|
|
2492
2521
|
.velora-widget.velora-widget .dark\:border-input:is(.velora-widget.dark *) {
|
|
2493
2522
|
border-color: var(--input);
|
|
2494
2523
|
}
|
|
@@ -2501,9 +2530,15 @@
|
|
|
2501
2530
|
.velora-widget.velora-widget .dark\:border-b-contrast-5:is(.velora-widget.dark *) {
|
|
2502
2531
|
border-bottom-color: var(--contrast-5);
|
|
2503
2532
|
}
|
|
2533
|
+
.velora-widget.velora-widget .dark\:bg-\[\#0F111A\]:is(.velora-widget.dark *) {
|
|
2534
|
+
background-color: #0f111a;
|
|
2535
|
+
}
|
|
2504
2536
|
.velora-widget.velora-widget .dark\:bg-\[\#0000000D\]:is(.velora-widget.dark *) {
|
|
2505
2537
|
background-color: #0000000d;
|
|
2506
2538
|
}
|
|
2539
|
+
.velora-widget.velora-widget .dark\:bg-\[\#151724\]:is(.velora-widget.dark *) {
|
|
2540
|
+
background-color: #151724;
|
|
2541
|
+
}
|
|
2507
2542
|
.velora-widget.velora-widget .dark\:bg-contrast-1:is(.velora-widget.dark *) {
|
|
2508
2543
|
background-color: var(--contrast-1);
|
|
2509
2544
|
}
|
|
@@ -2527,9 +2562,6 @@
|
|
|
2527
2562
|
background-color: color-mix(in oklab, var(--destructive) 60%, transparent);
|
|
2528
2563
|
}
|
|
2529
2564
|
}
|
|
2530
|
-
.velora-widget.velora-widget .dark\:bg-gray-800:is(.velora-widget.dark *) {
|
|
2531
|
-
background-color: var(--color-gray-800);
|
|
2532
|
-
}
|
|
2533
2565
|
.velora-widget.velora-widget .dark\:bg-input\/30:is(.velora-widget.dark *) {
|
|
2534
2566
|
background-color: var(--input);
|
|
2535
2567
|
}
|
|
@@ -2547,6 +2579,9 @@
|
|
|
2547
2579
|
.velora-widget.velora-widget .dark\:fill-contrast-5:is(.velora-widget.dark *) {
|
|
2548
2580
|
fill: var(--contrast-5);
|
|
2549
2581
|
}
|
|
2582
|
+
.velora-widget.velora-widget .dark\:fill-contrast-6:is(.velora-widget.dark *) {
|
|
2583
|
+
fill: var(--contrast-6);
|
|
2584
|
+
}
|
|
2550
2585
|
.velora-widget.velora-widget .dark\:stroke-contrast-2:is(.velora-widget.dark *) {
|
|
2551
2586
|
stroke: var(--contrast-2);
|
|
2552
2587
|
}
|
|
@@ -2589,6 +2624,12 @@
|
|
|
2589
2624
|
.velora-widget.velora-widget .dark\:text-white:is(.velora-widget.dark *) {
|
|
2590
2625
|
color: var(--color-white);
|
|
2591
2626
|
}
|
|
2627
|
+
.velora-widget.velora-widget .dark\:outline-contrast-3:is(.velora-widget.dark *) {
|
|
2628
|
+
outline-color: var(--contrast-3);
|
|
2629
|
+
}
|
|
2630
|
+
.velora-widget.velora-widget .dark\:outline-contrast-4:is(.velora-widget.dark *) {
|
|
2631
|
+
outline-color: var(--contrast-4);
|
|
2632
|
+
}
|
|
2592
2633
|
@media (hover: hover) {
|
|
2593
2634
|
.velora-widget.velora-widget .group-hover\:dark\:fill-contrast-7:is(:where(.group):hover *):is(.velora-widget.dark *) {
|
|
2594
2635
|
fill: var(--contrast-7);
|
package/dist/tokens/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../src/tokens/hooks.ts"],"sourcesContent":["import { useAtomValue } from \"jotai\";\nimport type { TokenFromExtendedList, TokenFromList } from \"./state/types\";\nimport { useChainId } from \"wagmi\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { emptyArray, emptyObject } from \"@/lib/constants\";\nimport { allTokensByChainAtom } from \"./state/allTokensByChainAtom\";\nimport type { MarkOptional } from \"ts-essentials\";\nimport type { Address } from \"viem\";\n\nexport function useAllTokens(\n forcedChainId?: SupportedChainId\n): TokenFromExtendedList[] {\n const chainId = useChainId();\n const _chainId = forcedChainId ?? chainId;\n\n const fromLists = useAtomValue(allTokensByChainAtom);\n\n return fromLists.listByChainId[_chainId]?.tokens || emptyArray;\n}\n\nexport function useAllTokensMap(\n forcedChainId?: SupportedChainId\n): Record<Address, TokenFromExtendedList> {\n const chainId = useChainId();\n const _chainId = forcedChainId ?? chainId;\n\n const fromLists = useAtomValue(allTokensByChainAtom);\n\n return fromLists.listByChainId[_chainId]?.addressMap || emptyObject;\n}\n\nexport function useTokensFromListsAllChains(): MarkOptional<\n TokenFromList,\n \"fromListURL\"\n>[] {\n const fromLists = useAtomValue(allTokensByChainAtom);\n\n return fromLists.tokensFromAllChains;\n}\n\nexport function useTokensFromDisabledLists(\n forcedChainId?: SupportedChainId\n): MarkOptional<TokenFromList, \"fromListURL\">[] {\n const chainId = useChainId();\n const _chainId = forcedChainId ?? chainId;\n\n const fromLists = useAtomValue(allTokensByChainAtom);\n\n return fromLists.disabledListByChainId[_chainId]?.tokens || emptyArray;\n}\n"],"names":["useAllTokens","forcedChainId","chainId","useChainId","_chainId","fromLists","useAtomValue","allTokensByChainAtom","listByChainId","tokens","emptyArray","useAllTokensMap","addressMap","emptyObject","useTokensFromListsAllChains","tokensFromAllChains"],"mappings":";;;;;AASO,SAAAA,aAAAC,aAAAA,EAAA;AAGL,EAAA,MAAAC,UAAgBC,UAAAA,EAAW;AAC3B,EAAA,MAAAC,WAAiBH,aAAAA,
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../src/tokens/hooks.ts"],"sourcesContent":["import { useAtomValue } from \"jotai\";\nimport type { TokenFromExtendedList, TokenFromList } from \"./state/types\";\nimport { useChainId } from \"wagmi\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { emptyArray, emptyObject } from \"@/lib/constants\";\nimport { allTokensByChainAtom } from \"./state/allTokensByChainAtom\";\nimport type { MarkOptional } from \"ts-essentials\";\nimport type { Address } from \"viem\";\n\nexport function useAllTokens(\n forcedChainId?: SupportedChainId\n): TokenFromExtendedList[] {\n const chainId = useChainId();\n const _chainId = forcedChainId ?? chainId;\n\n const fromLists = useAtomValue(allTokensByChainAtom);\n\n return fromLists.listByChainId[_chainId]?.tokens || emptyArray;\n}\n\nexport function useAllTokensMap(\n forcedChainId?: SupportedChainId\n): Record<Address, TokenFromExtendedList> {\n const chainId = useChainId();\n const _chainId = forcedChainId ?? chainId;\n\n const fromLists = useAtomValue(allTokensByChainAtom);\n\n return fromLists.listByChainId[_chainId]?.addressMap || emptyObject;\n}\n\nexport function useTokensFromListsAllChains(): MarkOptional<\n TokenFromList,\n \"fromListURL\"\n>[] {\n const fromLists = useAtomValue(allTokensByChainAtom);\n\n return fromLists.tokensFromAllChains;\n}\n\nexport function useTokensFromDisabledLists(\n forcedChainId?: SupportedChainId\n): MarkOptional<TokenFromList, \"fromListURL\">[] {\n const chainId = useChainId();\n const _chainId = forcedChainId ?? chainId;\n\n const fromLists = useAtomValue(allTokensByChainAtom);\n\n return fromLists.disabledListByChainId[_chainId]?.tokens || emptyArray;\n}\n"],"names":["useAllTokens","forcedChainId","chainId","useChainId","_chainId","fromLists","useAtomValue","allTokensByChainAtom","listByChainId","tokens","emptyArray","useAllTokensMap","addressMap","emptyObject","useTokensFromListsAllChains","tokensFromAllChains"],"mappings":";;;;;AASO,SAAAA,aAAAC,aAAAA,EAAA;AAGL,EAAA,MAAAC,UAAgBC,UAAAA,EAAW;AAC3B,EAAA,MAAAC,WAAiBH,aAAAA,IAAAC,OAAAA;AAEjB,EAAA,MAAAG,SAAAA,GAAkBC,aAAaC,oBAAoB,CAAA;AAAE,EAAA,OAE9CF,SAAAA,CAASG,aAAAA,CAAeJ,QAAQ,CAAA,EAASK,MAAAA,IAAzCC,UAAAA;AAAuD;AAGzD,SAAAC,gBAAAV,aAAAA,EAAA;AAGL,EAAA,MAAAC,UAAgBC,UAAAA,EAAW;AAC3B,EAAA,MAAAC,WAAiBH,aAAAA,IAAAC,OAAAA;AAEjB,EAAA,MAAAG,SAAAA,GAAkBC,aAAaC,oBAAoB,CAAA;AAAE,EAAA,OAE9CF,SAAAA,CAASG,aAAAA,CAAeJ,QAAQ,CAAA,EAAaQ,UAAAA,IAA7CC,WAAAA;AAA4D;AAG9D,SAAAC,2BAAAA,GAAA;AAIL,EAAA,MAAAT,SAAAA,GAAkBC,aAAaC,oBAAoB,CAAA;AAAE,EAAA,OAE9CF,SAAAA,CAASU,mBAAAA;AAAoB;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effects.js","sources":["../../../../src/tokens/lists/state/effects.ts"],"sourcesContent":["import { jotaiStore } from \"@/core/inputs/state/store\";\nimport { queryClient } from \"@/lib/queryClient\";\nimport { produceSingleQueryOptionMin } from \"@/tokens/queries\";\nimport { atomEffect } from \"jotai-effect\";\nimport { addTokenListsAtom } from \"./tokenListsActionsAtom\";\nimport { tokenListUrlsAtom } from \"./tokenListsStateAtom\";\nimport { useAtomValue } from \"jotai\";\n\nconst addedUrlsSet = new Set<string>();\n\nasync function addTokenList(url: string) {\n // list already in store\n if (addedUrlsSet.has(url)) return;\n\n // fetch token list or get from cache\n const queryOptions = produceSingleQueryOptionMin(url);\n const tokenList = await queryClient.ensureQueryData(queryOptions);\n\n // add url to set\n addedUrlsSet.add(url);\n\n // add to state once per fetched list\n if (tokenList?.available) jotaiStore.set(addTokenListsAtom, [tokenList]);\n}\n\nconst addTokenListEffect = atomEffect((get) => {\n get(tokenListUrlsAtom).forEach(addTokenList);\n});\n\nexport function useActivateEffects() {\n useAtomValue(addTokenListEffect);\n}\n"],"names":["addedUrlsSet","Set","addTokenList","url","has","queryOptions","produceSingleQueryOptionMin","tokenList","queryClient","ensureQueryData","add","available","jotaiStore","set","addTokenListsAtom","addTokenListEffect","atomEffect","get","tokenListUrlsAtom","forEach","useActivateEffects","useAtomValue"],"mappings":";;;;;;;;AAQA,MAAMA,YAAAA,uBAAmBC,GAAAA,EAAY;AAErC,eAAeC,aAAaC,GAAAA,EAAa;AAEvC,EAAA,IAAIH,YAAAA,CAAaI,GAAAA,CAAID,GAAG,CAAA,EAAG;AAG3B,EAAA,MAAME,YAAAA,GAAeC,4BAA4BH,GAAG,CAAA;AACpD,EAAA,MAAMI,SAAAA,GAAY,MAAMC,WAAAA,CAAYC,eAAAA,CAAgBJ,YAAY,CAAA;AAGhEL,EAAAA,YAAAA,CAAaU,IAAIP,GAAG,CAAA;AAGpB,EAAA,IAAII,WAAWI,SAAAA,EAAWC,UAAAA,CAAWC,IAAIC,iBAAAA,EAAmB,CAACP,SAAS,CAAC,CAAA;AACzE;AAEA,MAAMQ,kBAAAA,GAAqBC,WAAYC,CAAAA,GAAAA,KAAQ;AAC7CA,EAAAA,GAAAA,CAAIC,iBAAiB,CAAA,CAAEC,OAAAA,CAAQjB,YAAY,CAAA;AAC7C,CAAC,CAAA;AAEM,SAAAkB,kBAAAA,GAAA;AACLC,EAAAA,YAAAA,
|
|
1
|
+
{"version":3,"file":"effects.js","sources":["../../../../src/tokens/lists/state/effects.ts"],"sourcesContent":["import { jotaiStore } from \"@/core/inputs/state/store\";\nimport { queryClient } from \"@/lib/queryClient\";\nimport { produceSingleQueryOptionMin } from \"@/tokens/queries\";\nimport { atomEffect } from \"jotai-effect\";\nimport { addTokenListsAtom } from \"./tokenListsActionsAtom\";\nimport { tokenListUrlsAtom } from \"./tokenListsStateAtom\";\nimport { useAtomValue } from \"jotai\";\n\nconst addedUrlsSet = new Set<string>();\n\nasync function addTokenList(url: string) {\n // list already in store\n if (addedUrlsSet.has(url)) return;\n\n // fetch token list or get from cache\n const queryOptions = produceSingleQueryOptionMin(url);\n const tokenList = await queryClient.ensureQueryData(queryOptions);\n\n // add url to set\n addedUrlsSet.add(url);\n\n // add to state once per fetched list\n if (tokenList?.available) jotaiStore.set(addTokenListsAtom, [tokenList]);\n}\n\nconst addTokenListEffect = atomEffect((get) => {\n get(tokenListUrlsAtom).forEach(addTokenList);\n});\n\nexport function useActivateEffects() {\n useAtomValue(addTokenListEffect);\n}\n"],"names":["addedUrlsSet","Set","addTokenList","url","has","queryOptions","produceSingleQueryOptionMin","tokenList","queryClient","ensureQueryData","add","available","jotaiStore","set","addTokenListsAtom","addTokenListEffect","atomEffect","get","tokenListUrlsAtom","forEach","useActivateEffects","useAtomValue"],"mappings":";;;;;;;;AAQA,MAAMA,YAAAA,uBAAmBC,GAAAA,EAAY;AAErC,eAAeC,aAAaC,GAAAA,EAAa;AAEvC,EAAA,IAAIH,YAAAA,CAAaI,GAAAA,CAAID,GAAG,CAAA,EAAG;AAG3B,EAAA,MAAME,YAAAA,GAAeC,4BAA4BH,GAAG,CAAA;AACpD,EAAA,MAAMI,SAAAA,GAAY,MAAMC,WAAAA,CAAYC,eAAAA,CAAgBJ,YAAY,CAAA;AAGhEL,EAAAA,YAAAA,CAAaU,IAAIP,GAAG,CAAA;AAGpB,EAAA,IAAII,WAAWI,SAAAA,EAAWC,UAAAA,CAAWC,IAAIC,iBAAAA,EAAmB,CAACP,SAAS,CAAC,CAAA;AACzE;AAEA,MAAMQ,kBAAAA,GAAqBC,WAAYC,CAAAA,GAAAA,KAAQ;AAC7CA,EAAAA,GAAAA,CAAIC,iBAAiB,CAAA,CAAEC,OAAAA,CAAQjB,YAAY,CAAA;AAC7C,CAAC,CAAA;AAEM,SAAAkB,kBAAAA,GAAA;AACLC,EAAAA,YAAAA,CAAaN,kBAAkB,CAAA;AAAC;;;;"}
|
package/dist/tokens/queries.js
CHANGED
|
@@ -76,30 +76,26 @@ const useFetchListsWithQueryResult = (listURLs, tag) => {
|
|
|
76
76
|
}
|
|
77
77
|
const queryResults = useQueries(t1);
|
|
78
78
|
let t2;
|
|
79
|
-
let t3;
|
|
80
79
|
if ($[5] !== queryResults) {
|
|
81
|
-
|
|
80
|
+
t2 = queryResults.map(_temp);
|
|
82
81
|
$[5] = queryResults;
|
|
83
|
-
$[6] =
|
|
82
|
+
$[6] = t2;
|
|
84
83
|
} else {
|
|
85
|
-
|
|
84
|
+
t2 = $[6];
|
|
86
85
|
}
|
|
87
|
-
t2 = t3;
|
|
88
86
|
return t2;
|
|
89
87
|
};
|
|
90
88
|
function useFetchLists(listURLs, tag) {
|
|
91
89
|
const $ = distExports.c(2);
|
|
92
90
|
const queryResults = useFetchListsWithQueryResult(listURLs, tag);
|
|
93
91
|
let t0;
|
|
94
|
-
let t1;
|
|
95
92
|
if ($[0] !== queryResults) {
|
|
96
|
-
|
|
93
|
+
t0 = queryResults.map(_temp2);
|
|
97
94
|
$[0] = queryResults;
|
|
98
|
-
$[1] =
|
|
95
|
+
$[1] = t0;
|
|
99
96
|
} else {
|
|
100
|
-
|
|
97
|
+
t0 = $[1];
|
|
101
98
|
}
|
|
102
|
-
t0 = t1;
|
|
103
99
|
return t0;
|
|
104
100
|
}
|
|
105
101
|
function _temp2(t0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.js","sources":["../../src/tokens/queries.ts"],"sourcesContent":["import {\n replaceEqualDeep,\n useQueries,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport { versionComparator } from \"@uniswap/token-lists\";\nimport type { AxiosError } from \"axios\";\nimport { /* useRef, useLayoutEffect, */ useMemo } from \"react\";\nimport { downloadTokenListDataWithFallback } from \"./lists/download\";\nimport type { TokenListFetched } from \"./types\";\nimport { QUERY_KEY_FETCH_TOKEN_LISTS } from \"./constants\";\nimport { constructPlaceholderData } from \"./lists/utils\";\nimport { isTruthy } from \"@/lib/utils\";\nimport { overrideTokenList } from \"./overrides\";\nimport { stableCoinsTokenLists } from \"./stabeCoins\";\nimport { useAtomValue } from \"jotai\";\nimport { tokenListUrlsAtom } from \"./lists/state/tokenListsStateAtom\";\n\ntype UseFetchListsResult<T extends string> = {\n dataOrPlaceholder: TokenListFetched<T>;\n result: UseQueryResult<TokenListFetched<T>, AxiosError>;\n};\n\nfunction isDataEqual<T extends string | never = never>(\n currentData: TokenListFetched<T> | undefined,\n incomingData: TokenListFetched<T>\n): currentData is typeof incomingData {\n // there was no oldData --> data not equal\n if (!currentData) return false;\n // data was a placeholder (available = false) and data.available changed --> data not equal\n if (!currentData.available || !incomingData.available)\n return currentData.available !== incomingData.available;\n // incoming list.version <= current list.version --> consider data equal (don't replace with incoming older version)\n const isOlderOrEqual =\n versionComparator(incomingData.data.version, currentData.data.version) <= 0;\n return isOlderOrEqual;\n}\n\nexport function produceQueriesOptions<T extends string | never = never>(\n listURLs: string[],\n tag?: T\n) {\n // there are duplicate listURLs because in lists.json same list can be present for multiple chains\n const uniqueListURLs = Array.from(new Set(listURLs));\n\n return (\n uniqueListURLs\n // to prevent occasional `token_list_download_error:\"\"` event tag\n .filter(isTruthy)\n .map<UseQueryOptions<TokenListFetched<T>, AxiosError>>((listURL) =>\n produceSingleQueryOption<T>(listURL, tag)\n )\n );\n}\n\nexport function produceSingleQueryOptionMin<T extends string | never = never>(\n listURL: string,\n tag?: T\n): UseQueryOptions<TokenListFetched<T>, AxiosError> {\n return {\n queryKey: [QUERY_KEY_FETCH_TOKEN_LISTS, listURL],\n queryFn: async ({ signal }) => {\n const _data = await downloadTokenListDataWithFallback(listURL, signal);\n\n const data = overrideTokenList(_data, listURL);\n\n return {\n url: listURL,\n name: data.name,\n data,\n tag,\n // possibly mitigates https://sentry.io/organizations/paraswap/discover/ui:3fa26b87e3594d1998ff9fb4770a26d9\n available: Array.isArray(data.tokens),\n };\n },\n staleTime: Infinity,\n gcTime: Infinity,\n\n // custom comparison to optimize big token list comparison\n structuralSharing: (oldData, newData) =>\n isDataEqual(\n oldData as TokenListFetched<T> | undefined,\n newData as TokenListFetched<T>\n )\n ? oldData\n : replaceEqualDeep(oldData, newData),\n };\n}\n\n// adds useQuery options\nexport function produceSingleQueryOption<T extends string | never = never>(\n listURL: string,\n tag?: T\n): UseQueryOptions<TokenListFetched<T>, AxiosError> {\n return {\n ...produceSingleQueryOptionMin<T>(listURL, tag),\n notifyOnChangeProps: [\"data\"],\n placeholderData: constructPlaceholderData(listURL), // start with unavailable but still with url\n refetchOnMount: false,\n };\n}\n\nexport const useFetchListsWithQueryResult = <T extends string | never = never>(\n listURLs: string[],\n tag?: T\n): UseFetchListsResult<T>[] => {\n const queryResults = useQueries<\n UseQueryOptions<TokenListFetched<T>, AxiosError>[]\n >({ queries: produceQueriesOptions(listURLs, tag) });\n\n return useMemo<UseFetchListsResult<T>[]>(\n () =>\n queryResults.map((result) => ({\n // provide {url, name} even on error\n dataOrPlaceholder:\n result.data ||\n constructPlaceholderData(result.error?.config?.url || \"\"),\n result,\n })),\n [queryResults]\n );\n};\n\nexport function useFetchLists<T extends string | never = never>(\n listURLs: string[],\n tag?: T\n): TokenListFetched<T>[] {\n const queryResults = useFetchListsWithQueryResult(listURLs, tag);\n\n return useMemo(\n () => queryResults.map(({ dataOrPlaceholder }) => dataOrPlaceholder),\n [queryResults]\n );\n}\n\nexport function useFetchTokenLists(): TokenListFetched[] {\n const currentlyEnabledLists = useAtomValue(tokenListUrlsAtom);\n\n // stablecoins list is auxiliary list, always in use\n const includingStablecoins = stableCoinsTokenLists.concat(\n currentlyEnabledLists\n );\n\n return useFetchLists(includingStablecoins);\n}\n"],"names":["isDataEqual","currentData","incomingData","available","isOlderOrEqual","versionComparator","data","version","produceQueriesOptions","listURLs","tag","uniqueListURLs","Array","from","Set","filter","isTruthy","map","listURL","produceSingleQueryOption","produceSingleQueryOptionMin","queryKey","QUERY_KEY_FETCH_TOKEN_LISTS","queryFn","signal","_data","downloadTokenListDataWithFallback","overrideTokenList","url","name","isArray","tokens","staleTime","Infinity","gcTime","structuralSharing","oldData","newData","replaceEqualDeep","notifyOnChangeProps","placeholderData","constructPlaceholderData","refetchOnMount","useFetchListsWithQueryResult","$","_c","t0","t1","queries","queryResults","useQueries","t2","
|
|
1
|
+
{"version":3,"file":"queries.js","sources":["../../src/tokens/queries.ts"],"sourcesContent":["import {\n replaceEqualDeep,\n useQueries,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport { versionComparator } from \"@uniswap/token-lists\";\nimport type { AxiosError } from \"axios\";\nimport { /* useRef, useLayoutEffect, */ useMemo } from \"react\";\nimport { downloadTokenListDataWithFallback } from \"./lists/download\";\nimport type { TokenListFetched } from \"./types\";\nimport { QUERY_KEY_FETCH_TOKEN_LISTS } from \"./constants\";\nimport { constructPlaceholderData } from \"./lists/utils\";\nimport { isTruthy } from \"@/lib/utils\";\nimport { overrideTokenList } from \"./overrides\";\nimport { stableCoinsTokenLists } from \"./stabeCoins\";\nimport { useAtomValue } from \"jotai\";\nimport { tokenListUrlsAtom } from \"./lists/state/tokenListsStateAtom\";\n\ntype UseFetchListsResult<T extends string> = {\n dataOrPlaceholder: TokenListFetched<T>;\n result: UseQueryResult<TokenListFetched<T>, AxiosError>;\n};\n\nfunction isDataEqual<T extends string | never = never>(\n currentData: TokenListFetched<T> | undefined,\n incomingData: TokenListFetched<T>\n): currentData is typeof incomingData {\n // there was no oldData --> data not equal\n if (!currentData) return false;\n // data was a placeholder (available = false) and data.available changed --> data not equal\n if (!currentData.available || !incomingData.available)\n return currentData.available !== incomingData.available;\n // incoming list.version <= current list.version --> consider data equal (don't replace with incoming older version)\n const isOlderOrEqual =\n versionComparator(incomingData.data.version, currentData.data.version) <= 0;\n return isOlderOrEqual;\n}\n\nexport function produceQueriesOptions<T extends string | never = never>(\n listURLs: string[],\n tag?: T\n) {\n // there are duplicate listURLs because in lists.json same list can be present for multiple chains\n const uniqueListURLs = Array.from(new Set(listURLs));\n\n return (\n uniqueListURLs\n // to prevent occasional `token_list_download_error:\"\"` event tag\n .filter(isTruthy)\n .map<UseQueryOptions<TokenListFetched<T>, AxiosError>>((listURL) =>\n produceSingleQueryOption<T>(listURL, tag)\n )\n );\n}\n\nexport function produceSingleQueryOptionMin<T extends string | never = never>(\n listURL: string,\n tag?: T\n): UseQueryOptions<TokenListFetched<T>, AxiosError> {\n return {\n queryKey: [QUERY_KEY_FETCH_TOKEN_LISTS, listURL],\n queryFn: async ({ signal }) => {\n const _data = await downloadTokenListDataWithFallback(listURL, signal);\n\n const data = overrideTokenList(_data, listURL);\n\n return {\n url: listURL,\n name: data.name,\n data,\n tag,\n // possibly mitigates https://sentry.io/organizations/paraswap/discover/ui:3fa26b87e3594d1998ff9fb4770a26d9\n available: Array.isArray(data.tokens),\n };\n },\n staleTime: Infinity,\n gcTime: Infinity,\n\n // custom comparison to optimize big token list comparison\n structuralSharing: (oldData, newData) =>\n isDataEqual(\n oldData as TokenListFetched<T> | undefined,\n newData as TokenListFetched<T>\n )\n ? oldData\n : replaceEqualDeep(oldData, newData),\n };\n}\n\n// adds useQuery options\nexport function produceSingleQueryOption<T extends string | never = never>(\n listURL: string,\n tag?: T\n): UseQueryOptions<TokenListFetched<T>, AxiosError> {\n return {\n ...produceSingleQueryOptionMin<T>(listURL, tag),\n notifyOnChangeProps: [\"data\"],\n placeholderData: constructPlaceholderData(listURL), // start with unavailable but still with url\n refetchOnMount: false,\n };\n}\n\nexport const useFetchListsWithQueryResult = <T extends string | never = never>(\n listURLs: string[],\n tag?: T\n): UseFetchListsResult<T>[] => {\n const queryResults = useQueries<\n UseQueryOptions<TokenListFetched<T>, AxiosError>[]\n >({ queries: produceQueriesOptions(listURLs, tag) });\n\n return useMemo<UseFetchListsResult<T>[]>(\n () =>\n queryResults.map((result) => ({\n // provide {url, name} even on error\n dataOrPlaceholder:\n result.data ||\n constructPlaceholderData(result.error?.config?.url || \"\"),\n result,\n })),\n [queryResults]\n );\n};\n\nexport function useFetchLists<T extends string | never = never>(\n listURLs: string[],\n tag?: T\n): TokenListFetched<T>[] {\n const queryResults = useFetchListsWithQueryResult(listURLs, tag);\n\n return useMemo(\n () => queryResults.map(({ dataOrPlaceholder }) => dataOrPlaceholder),\n [queryResults]\n );\n}\n\nexport function useFetchTokenLists(): TokenListFetched[] {\n const currentlyEnabledLists = useAtomValue(tokenListUrlsAtom);\n\n // stablecoins list is auxiliary list, always in use\n const includingStablecoins = stableCoinsTokenLists.concat(\n currentlyEnabledLists\n );\n\n return useFetchLists(includingStablecoins);\n}\n"],"names":["isDataEqual","currentData","incomingData","available","isOlderOrEqual","versionComparator","data","version","produceQueriesOptions","listURLs","tag","uniqueListURLs","Array","from","Set","filter","isTruthy","map","listURL","produceSingleQueryOption","produceSingleQueryOptionMin","queryKey","QUERY_KEY_FETCH_TOKEN_LISTS","queryFn","signal","_data","downloadTokenListDataWithFallback","overrideTokenList","url","name","isArray","tokens","staleTime","Infinity","gcTime","structuralSharing","oldData","newData","replaceEqualDeep","notifyOnChangeProps","placeholderData","constructPlaceholderData","refetchOnMount","useFetchListsWithQueryResult","$","_c","t0","t1","queries","queryResults","useQueries","t2","_temp","useFetchLists","_temp2","dataOrPlaceholder","useFetchTokenLists","currentlyEnabledLists","useAtomValue","tokenListUrlsAtom","stableCoinsTokenLists","concat","includingStablecoins","result","error","config"],"mappings":"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"}
|
|
@@ -11,15 +11,13 @@ function useStablecoinSetsByChain() {
|
|
|
11
11
|
const $ = distExports.c(2);
|
|
12
12
|
const lists = useStableCoinTokenLists();
|
|
13
13
|
let t0;
|
|
14
|
-
let t1;
|
|
15
14
|
if ($[0] !== lists) {
|
|
16
|
-
|
|
15
|
+
t0 = tokenlistsToSetsByChain(lists);
|
|
17
16
|
$[0] = lists;
|
|
18
|
-
$[1] =
|
|
17
|
+
$[1] = t0;
|
|
19
18
|
} else {
|
|
20
|
-
|
|
19
|
+
t0 = $[1];
|
|
21
20
|
}
|
|
22
|
-
t0 = t1;
|
|
23
21
|
return t0;
|
|
24
22
|
}
|
|
25
23
|
function useIsAddressStablecoin(addresses, chainId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../src/tokens/stabeCoins/hooks.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { stableCoinsTokenLists } from \".\";\nimport { useFetchLists } from \"../queries\";\nimport type { ChainTokensSet, TokenListFetched } from \"../types\";\nimport {\n checkAddressesBelongToChainSet,\n tokenlistsToSetsByChain,\n} from \"../utils/sets\";\n\nexport function useStableCoinTokenLists(): TokenListFetched<\"stablecoin\">[] {\n return useFetchLists(stableCoinsTokenLists, \"stablecoin\");\n}\n\n// compose stablecoin sets\nexport function useStablecoinSetsByChain(): ChainTokensSet {\n const lists = useStableCoinTokenLists();\n\n return useMemo(() => tokenlistsToSetsByChain(lists), [lists]);\n}\n\nexport function useIsAddressStablecoin(\n addresses: (string | undefined)[],\n chainId?: number\n): boolean {\n const chainId2StableCoinSets = useStablecoinSetsByChain();\n return checkAddressesBelongToChainSet(\n chainId2StableCoinSets,\n addresses,\n chainId\n );\n}\n"],"names":["useStableCoinTokenLists","useFetchLists","stableCoinsTokenLists","useStablecoinSetsByChain","$","_c","lists","t0","
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../src/tokens/stabeCoins/hooks.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { stableCoinsTokenLists } from \".\";\nimport { useFetchLists } from \"../queries\";\nimport type { ChainTokensSet, TokenListFetched } from \"../types\";\nimport {\n checkAddressesBelongToChainSet,\n tokenlistsToSetsByChain,\n} from \"../utils/sets\";\n\nexport function useStableCoinTokenLists(): TokenListFetched<\"stablecoin\">[] {\n return useFetchLists(stableCoinsTokenLists, \"stablecoin\");\n}\n\n// compose stablecoin sets\nexport function useStablecoinSetsByChain(): ChainTokensSet {\n const lists = useStableCoinTokenLists();\n\n return useMemo(() => tokenlistsToSetsByChain(lists), [lists]);\n}\n\nexport function useIsAddressStablecoin(\n addresses: (string | undefined)[],\n chainId?: number\n): boolean {\n const chainId2StableCoinSets = useStablecoinSetsByChain();\n return checkAddressesBelongToChainSet(\n chainId2StableCoinSets,\n addresses,\n chainId\n );\n}\n"],"names":["useStableCoinTokenLists","useFetchLists","stableCoinsTokenLists","useStablecoinSetsByChain","$","_c","lists","t0","tokenlistsToSetsByChain","useIsAddressStablecoin","addresses","chainId","chainId2StableCoinSets","checkAddressesBelongToChainSet"],"mappings":";;;;;;AASO,SAAAA,uBAAAA,GAAA;AAAA,EAAA,OACEC,aAAAA,CAAcC,uBAAuB,YAAY,CAAA;AAAC;AAIpD,SAAAC,wBAAAA,GAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AACL,EAAA,MAAAC,QAAcN,uBAAAA,EAAwB;AAAE,EAAA,IAAAO,EAAAA;AAAA,EAAA,IAAAH,CAAAA,QAAAE,KAAAA,EAAA;AAEnBC,IAAAA,EAAAA,GAAAC,wBAAwBF,KAAK,CAAA;AAACF,IAAAA,CAAAA,MAAAE,KAAAA;AAAAF,IAAAA,CAAAA,MAAAG,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAH,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAA9BG,EAAAA;AAA8B;AAG9C,SAAAE,sBAAAA,CAAAC,WAAAC,OAAAA,EAAA;AAAA,EAAA,MAAAP,CAAAA,GAAAC,cAAA,CAAA,CAAA;AAIL,EAAA,MAAAO,yBAA+BT,wBAAAA,EAAyB;AAAE,EAAA,IAAAI,EAAAA;AAAA,EAAA,IAAAH,CAAAA,CAAA,CAAA,CAAA,KAAAM,SAAAA,IAAAN,CAAAA,QAAAO,OAAAA,IAAAP,CAAAA,CAAA,CAAA,CAAA,KAAAQ,sBAAAA,EAAA;AACnDL,IAAAA,EAAAA,GAAAM,8BAAAA,CACLD,sBAAAA,EACAF,SAAAA,EACAC,OACF,CAAA;AAACP,IAAAA,CAAAA,MAAAM,SAAAA;AAAAN,IAAAA,CAAAA,MAAAO,OAAAA;AAAAP,IAAAA,CAAAA,MAAAQ,sBAAAA;AAAAR,IAAAA,CAAAA,MAAAG,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAH,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAJMG,EAAAA;AAIN;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transferAmountsFromReceipt.js","sources":["../../../src/tokens/utils/transferAmountsFromReceipt.ts"],"sourcesContent":["import {\n type Address,\n type TransactionReceipt,\n type Client,\n decodeEventLog,\n erc20Abi,\n type Hex,\n type Hash,\n} from \"viem\";\nimport {\n getBalance,\n getGasPrice,\n getTransaction,\n getTransactionReceipt,\n} from \"viem/actions\";\nimport type { Token } from \"../state/types\";\nimport { ETH_ADDRESS_LOWERCASE } from \"../constants\";\nimport { gatherObjectsByProp } from \"@/lib/utils\";\nimport { useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { useClient } from \"wagmi\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useCallback } from \"react\";\nimport { assert, type MarkOptional } from \"ts-essentials\";\nimport { isETH } from \"./eth\";\nimport { createLogger } from \"@/lib/utils/logger\";\nimport { isFilledArray } from \"@/lib/utils/tuple\";\n\ntype MinRequiredReceiptLog = {\n address: Address;\n topics: Hex[];\n data: Hex;\n};\n\ntype ERC20TransferAmountsFromReceiptInput = {\n receipt: {\n logs: MinRequiredReceiptLog[];\n };\n tokens: Pick<Token, \"address\">[];\n senderAddress: Address;\n receiverAddress: Address;\n};\n\ntype TransferAmountsFromReceiptInput = ERC20TransferAmountsFromReceiptInput & {\n receipt: MarkOptional<\n Pick<\n TransactionReceipt,\n | \"blockNumber\"\n | \"gasUsed\"\n | \"effectiveGasPrice\"\n | \"from\"\n | \"transactionHash\"\n >,\n \"effectiveGasPrice\" | \"from\"\n >;\n};\n\nexport type TokenTransfers = {\n token: Address;\n sentAmount: bigint;\n receivedAmount: bigint;\n};\n\ntype TransferAmountsFromReceiptResult = Record<Address, TokenTransfers>;\n\n// ERC20 Transfer event signature: Transfer(address,address,uint256)\nconst TRANSFER_EVENT_SIGNATURE =\n \"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\";\n\n// give TransactionReceipt and tokens finds all transfers of Tokens to receiverAddress and returns amounts\nexport function getERC20TransferAmountsFromReceipt({\n receipt,\n tokens,\n senderAddress,\n receiverAddress,\n}: ERC20TransferAmountsFromReceiptInput): TransferAmountsFromReceiptResult {\n // Initialize result mapping with one entry per token\n const result: Record<Address, TokenTransfers> = gatherObjectsByProp(\n tokens,\n (token) => token.address.toLowerCase(),\n (token) => ({\n token: token.address as Address,\n sentAmount: 0n,\n receivedAmount: 0n,\n })\n );\n\n // Create a map for quick token lookup\n const tokensSet = new Set(tokens.map((token) => token.address.toLowerCase()));\n\n const fromAddressLowercase = senderAddress.toLowerCase();\n const toAddressLowercase = receiverAddress.toLowerCase();\n\n // Parse all logs in the transaction receipt\n for (const log of receipt.logs) {\n const logAddressLowercase = log.address.toLowerCase() as Address;\n // Check if this is a Transfer event from one of our tokens\n if (\n isFilledArray(log.topics) &&\n log.topics[0] === TRANSFER_EVENT_SIGNATURE &&\n tokensSet.has(logAddressLowercase)\n ) {\n try {\n // Parse the Transfer event parameters\n // topics[0] = event signature\n // topics[1] = from address (padded to 32 bytes)\n // topics[2] = to address (padded to 32 bytes)\n // data = value (uint256)\n\n const decoded = decodeEventLog({\n abi: erc20Abi,\n data: log.data,\n topics: log.topics,\n eventName: \"Transfer\",\n });\n\n const { from: fromAddress, to: toAddress, value } = decoded.args;\n\n const tokenTransfer = result[logAddressLowercase];\n if (!tokenTransfer) {\n continue;\n }\n\n // Check if the transfer is from sender to someone else\n if (fromAddress.toLowerCase() === fromAddressLowercase) {\n tokenTransfer.sentAmount += value;\n }\n // Check if the transfer is to receiver from someone else\n if (toAddress.toLowerCase() === toAddressLowercase) {\n tokenTransfer.receivedAmount += value;\n }\n } catch (_error) {\n // If parsing fails, skip this log\n continue;\n }\n }\n }\n\n return result;\n}\n\ntype NativeTokenTransferInput = {\n receipt: MarkOptional<\n Pick<\n TransactionReceipt,\n | \"blockNumber\"\n | \"gasUsed\"\n | \"effectiveGasPrice\"\n | \"from\"\n | \"transactionHash\"\n >,\n \"effectiveGasPrice\" | \"from\"\n >;\n senderAddress: Address;\n receiverAddress: Address;\n client: Client;\n};\n\n// when no gasPrice was fetched across several methods\nconst REASONABLE_GAS_PRICE = 2700000000n;\n\nexport async function getNativeTokenTransfer({\n receipt,\n senderAddress,\n receiverAddress,\n client,\n}: NativeTokenTransferInput): Promise<TokenTransfers> {\n const beforeBlockNumber = receipt.blockNumber - 1n;\n const afterBlockNumber = receipt.blockNumber;\n\n /*\n if the transaction was the only one transaction involving the sender and receiver\n in the block it was mined, and if the transaction was a SwapTransaction only,\n not some bulk transaction or a flashbot transaction, then we can consider\n that the ETH balances difference matches the ETH Swap amount.\n */\n\n const senderPromises = [\n // Get balances before the transaction\n getBalance(client, {\n address: senderAddress,\n blockNumber: beforeBlockNumber,\n }),\n // Get balances after the transaction\n getBalance(client, {\n address: senderAddress,\n blockNumber: afterBlockNumber,\n }),\n ] as const;\n\n const senderIsReceiver =\n senderAddress.toLowerCase() === receiverAddress.toLowerCase();\n\n const receiverPromises = senderIsReceiver\n ? // reuse sender promises if sender is receiver\n senderPromises\n : ([\n // Get balances before the transaction\n getBalance(client, {\n address: receiverAddress,\n blockNumber: beforeBlockNumber,\n }),\n // Get balances after the transaction\n getBalance(client, {\n address: receiverAddress,\n blockNumber: afterBlockNumber,\n }),\n ] as const);\n\n const [\n senderBalanceBefore,\n senderBalanceAfter,\n receiverBalanceBefore,\n receiverBalanceAfter,\n ] = await Promise.all([...senderPromises, ...receiverPromises]);\n\n // Calculate the differences\n let sentAmount = senderBalanceBefore - senderBalanceAfter; // difference in balances = sent ETH + paid gas\n let receivedAmount = receiverBalanceAfter - receiverBalanceBefore;\n\n let gasPrice = receipt.effectiveGasPrice;\n let from = receipt.from;\n if (!gasPrice) {\n // SendCalls receipt does not include some fields,\n // try to fetch them from the transaction hash\n const minTxData = await getMinTxDataFromHash({\n hash: receipt.transactionHash,\n client,\n });\n gasPrice = minTxData.gasPrice;\n from = minTxData.from;\n }\n\n if (!gasPrice) {\n gasPrice = REASONABLE_GAS_PRICE;\n }\n\n if (!from) {\n from = client.account?.address || senderAddress;\n }\n\n const gasCost = receipt.gasUsed * gasPrice;\n\n // if sender is the transaction sender (it may not be if a Relayer was involved)\n if (senderAddress.toLowerCase() === from.toLowerCase()) {\n // Adjust sentAmount for gas:\n // Subtract gas cost from sentAmount to get actual ETH sent (excluding gas fees)\n sentAmount -= gasCost;\n }\n\n // if sender is receiver, then need to adjust receivedAmount for gas\n if (senderAddress.toLowerCase() === receiverAddress.toLowerCase()) {\n receivedAmount += gasCost; // gas was paid out of the receivedAmount, so make this the amount before gas paid\n }\n\n return {\n token: ETH_ADDRESS_LOWERCASE, // Native token address\n sentAmount: sentAmount > 0n ? sentAmount : 0n,\n receivedAmount: receivedAmount > 0n ? receivedAmount : 0n,\n };\n}\n\ntype TokenTransfersFromReceiptInput = TransferAmountsFromReceiptInput & {\n client: Client;\n};\n\nexport async function getTokenTransfersFromReceipt({\n receipt,\n tokens,\n senderAddress,\n receiverAddress,\n client,\n}: TokenTransfersFromReceiptInput): Promise<TransferAmountsFromReceiptResult> {\n const tokensWithoutNative = tokens.filter((token) => !isETH(token));\n\n const tokenTransfers = getERC20TransferAmountsFromReceipt({\n receipt,\n tokens: tokensWithoutNative,\n senderAddress,\n receiverAddress,\n });\n\n // there was a native Token in the list\n if (tokensWithoutNative.length < tokens.length) {\n const nativeTokenTransfer = await getNativeTokenTransfer({\n receipt,\n senderAddress,\n receiverAddress,\n client,\n });\n\n tokenTransfers[ETH_ADDRESS_LOWERCASE] = nativeTokenTransfer;\n }\n\n return tokenTransfers;\n}\n\ntype TokenTransfersFromReceiptWithLimitsInput = {\n detectedTokenTransfers: Record<Address, TokenTransfers>;\n expectedTokenTransfers: Record<Address, TokenTransfers>;\n};\n\n// Helper function to validate an amount against expected value with tolerance\nfunction validateAmount({\n calculatedAmount,\n expectedAmount,\n tolerancePercent = 15, // max slippage %\n}: {\n calculatedAmount: bigint;\n expectedAmount: bigint;\n tolerancePercent?: number;\n}): bigint {\n if (expectedAmount === 0n) {\n // If expected is 0, use expected\n return expectedAmount;\n }\n\n // Check if calculated is within tolerance of expected\n const tolerance = (expectedAmount * BigInt(tolerancePercent)) / 100n;\n const minExpected = expectedAmount - tolerance;\n const maxExpected = expectedAmount + tolerance;\n\n if (calculatedAmount >= minExpected && calculatedAmount <= maxExpected) {\n return calculatedAmount;\n } else {\n return expectedAmount;\n }\n}\n\nconst logger1 = createLogger(\"Swap:amounts:Expected\");\nconst logger2 = createLogger(\"Swap:amounts:Detected\");\n\nexport function getTokenTransfersFromReceiptWithLimits({\n detectedTokenTransfers,\n expectedTokenTransfers,\n}: TokenTransfersFromReceiptWithLimitsInput): TransferAmountsFromReceiptResult {\n // Validate and adjust amounts based on expected values\n const validatedTokenTransfers: Record<Address, TokenTransfers> = {};\n\n logger1.once.log(\"Expected token transfers\", expectedTokenTransfers);\n logger2.once.log(\"Detected token transfers\", detectedTokenTransfers);\n\n for (const [tokenAddress, calculatedTransfer] of Object.entries(\n detectedTokenTransfers\n )) {\n const expectedTransfer = expectedTokenTransfers[tokenAddress as Address];\n\n if (!expectedTransfer) {\n // No expected value, use calculated\n validatedTokenTransfers[tokenAddress as Address] = calculatedTransfer;\n continue;\n }\n\n const validatedTransfer: TokenTransfers = {\n token: calculatedTransfer.token,\n sentAmount: validateAmount({\n calculatedAmount: calculatedTransfer.sentAmount,\n expectedAmount: expectedTransfer.sentAmount,\n }),\n receivedAmount: validateAmount({\n calculatedAmount: calculatedTransfer.receivedAmount,\n expectedAmount: expectedTransfer.receivedAmount,\n }),\n };\n\n validatedTokenTransfers[tokenAddress as Address] = validatedTransfer;\n }\n\n return validatedTokenTransfers;\n}\n\ntype UseTokenTransfersFromReceiptInput = TransferAmountsFromReceiptInput & {\n receipt: Pick<TransactionReceipt, \"transactionHash\">;\n chainId: SupportedChainId;\n expectedTokenTransfers: Record<Address, TokenTransfers>;\n};\n\n/**\n * @param expectedTokenTransfers - expected token transfers, if provided, will be used to validate the detected token transfers\n * @param chainId - chain id\n * @param receipt - transaction receipt\n * @param tokens - tokens\n * @param senderAddress - sender address\n * @param receiverAddress - receiver address\n * @returns - token transfers from receipt validated against expected token transfers\n * @note - ETH transfers are a best guess, and may not be accurate (falls back to expected token transfers)\n */\nexport function useTokenTransfersFromReceipt({\n receipt,\n tokens,\n senderAddress,\n receiverAddress,\n expectedTokenTransfers,\n chainId,\n}: MarkOptional<\n UseTokenTransfersFromReceiptInput,\n \"receipt\" | \"senderAddress\" | \"receiverAddress\" | \"expectedTokenTransfers\"\n>): UseQueryResult<TransferAmountsFromReceiptResult, Error> {\n const client = useClient({ chainId });\n\n const select = useCallback(\n (data: TransferAmountsFromReceiptResult) => {\n if (!expectedTokenTransfers) {\n return data;\n }\n\n return getTokenTransfersFromReceiptWithLimits({\n detectedTokenTransfers: data,\n expectedTokenTransfers,\n });\n },\n [expectedTokenTransfers]\n );\n\n return useQuery({\n queryKey: [\n \"token-transfers-from-receipt\",\n receipt?.transactionHash,\n receipt?.logs.length,\n senderAddress?.toLowerCase(),\n receiverAddress?.toLowerCase(),\n ],\n queryFn: async () => {\n assert(receipt, \"Receipt is required\");\n assert(senderAddress, \"Sender address is required\");\n assert(receiverAddress, \"Receiver address is required\");\n\n return getTokenTransfersFromReceipt({\n receipt,\n tokens,\n senderAddress,\n receiverAddress,\n client,\n });\n },\n select,\n enabled:\n !!receipt &&\n receipt.logs.length > 0 &&\n tokens.length > 0 &&\n !!senderAddress &&\n !!receiverAddress,\n });\n}\n\ntype MinTxData = {\n from?: Address;\n gasPrice?: bigint;\n};\n\ntype GetMinTxDataFromHashInput = {\n hash: Hash;\n client: Client;\n};\n\nasync function getMinTxDataFromHash({\n hash,\n client,\n}: GetMinTxDataFromHashInput): Promise<MinTxData> {\n let gasPrice: bigint | undefined = undefined;\n let from: Address | undefined;\n try {\n // likely this will return the correct receipt for the hash,\n // but in case of different RPC providers between the Wallet (which performed sendCalls),\n // and the RPC of the Client, the receipt may not be found\n const receipt = await getTransactionReceipt(client, {\n hash,\n });\n from = receipt.from;\n gasPrice = receipt.effectiveGasPrice;\n } catch {\n // can be TransactionReceiptNotFoundError\n }\n\n if (!gasPrice) {\n try {\n // very unlikely that even the transaction will not be found, but still possible\n const tx = await getTransaction(client, {\n hash,\n });\n from = tx.from;\n gasPrice = tx.gasPrice;\n } catch {\n // can be TransactionNotFoundError\n }\n }\n\n if (!gasPrice) {\n try {\n // just in case this may error\n gasPrice = await getGasPrice(client);\n } catch {\n // can be RequestError\n }\n }\n\n if (!from) {\n from = client.account?.address;\n }\n\n return {\n from,\n gasPrice,\n };\n}\n"],"names":["TRANSFER_EVENT_SIGNATURE","getERC20TransferAmountsFromReceipt","receipt","tokens","senderAddress","receiverAddress","result","gatherObjectsByProp","token","address","toLowerCase","sentAmount","receivedAmount","tokensSet","Set","map","fromAddressLowercase","toAddressLowercase","log","logs","logAddressLowercase","isFilledArray","topics","has","decoded","decodeEventLog","abi","erc20Abi","data","eventName","from","fromAddress","to","toAddress","value","args","tokenTransfer","_error","REASONABLE_GAS_PRICE","getNativeTokenTransfer","client","beforeBlockNumber","blockNumber","afterBlockNumber","senderPromises","getBalance","senderIsReceiver","receiverPromises","senderBalanceBefore","senderBalanceAfter","receiverBalanceBefore","receiverBalanceAfter","Promise","all","gasPrice","effectiveGasPrice","minTxData","getMinTxDataFromHash","hash","transactionHash","account","gasCost","gasUsed","ETH_ADDRESS_LOWERCASE","getTokenTransfersFromReceipt","tokensWithoutNative","filter","isETH","tokenTransfers","length","nativeTokenTransfer","validateAmount","calculatedAmount","expectedAmount","tolerancePercent","tolerance","BigInt","minExpected","maxExpected","logger1","createLogger","logger2","getTokenTransfersFromReceiptWithLimits","detectedTokenTransfers","expectedTokenTransfers","validatedTokenTransfers","once","tokenAddress","calculatedTransfer","Object","entries","expectedTransfer","validatedTransfer","useTokenTransfersFromReceipt","t0","$","_c","chainId","t1","useClient","t2","select","t3","t4","t5","t6","t7","t8","assert","t9","t10","queryKey","queryFn","enabled","useQuery","undefined","getTransactionReceipt","tx","getTransaction","getGasPrice"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transferAmountsFromReceipt.js","sources":["../../../src/tokens/utils/transferAmountsFromReceipt.ts"],"sourcesContent":["import {\n type Address,\n type TransactionReceipt,\n type Client,\n decodeEventLog,\n erc20Abi,\n type Hex,\n type Hash,\n} from \"viem\";\nimport {\n getBalance,\n getGasPrice,\n getTransaction,\n getTransactionReceipt,\n} from \"viem/actions\";\nimport type { Token } from \"../state/types\";\nimport { ETH_ADDRESS_LOWERCASE } from \"../constants\";\nimport { gatherObjectsByProp } from \"@/lib/utils\";\nimport { useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { useClient } from \"wagmi\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useCallback } from \"react\";\nimport { assert, type MarkOptional } from \"ts-essentials\";\nimport { isETH } from \"./eth\";\nimport { createLogger } from \"@/lib/utils/logger\";\nimport { isFilledArray } from \"@/lib/utils/tuple\";\n\ntype MinRequiredReceiptLog = {\n address: Address;\n topics: Hex[];\n data: Hex;\n};\n\ntype ERC20TransferAmountsFromReceiptInput = {\n receipt: {\n logs: MinRequiredReceiptLog[];\n };\n tokens: Pick<Token, \"address\">[];\n senderAddress: Address;\n receiverAddress: Address;\n};\n\ntype TransferAmountsFromReceiptInput = ERC20TransferAmountsFromReceiptInput & {\n receipt: MarkOptional<\n Pick<\n TransactionReceipt,\n | \"blockNumber\"\n | \"gasUsed\"\n | \"effectiveGasPrice\"\n | \"from\"\n | \"transactionHash\"\n >,\n \"effectiveGasPrice\" | \"from\"\n >;\n};\n\nexport type TokenTransfers = {\n token: Address;\n sentAmount: bigint;\n receivedAmount: bigint;\n};\n\ntype TransferAmountsFromReceiptResult = Record<Address, TokenTransfers>;\n\n// ERC20 Transfer event signature: Transfer(address,address,uint256)\nconst TRANSFER_EVENT_SIGNATURE =\n \"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\";\n\n// give TransactionReceipt and tokens finds all transfers of Tokens to receiverAddress and returns amounts\nexport function getERC20TransferAmountsFromReceipt({\n receipt,\n tokens,\n senderAddress,\n receiverAddress,\n}: ERC20TransferAmountsFromReceiptInput): TransferAmountsFromReceiptResult {\n // Initialize result mapping with one entry per token\n const result: Record<Address, TokenTransfers> = gatherObjectsByProp(\n tokens,\n (token) => token.address.toLowerCase(),\n (token) => ({\n token: token.address as Address,\n sentAmount: 0n,\n receivedAmount: 0n,\n })\n );\n\n // Create a map for quick token lookup\n const tokensSet = new Set(tokens.map((token) => token.address.toLowerCase()));\n\n const fromAddressLowercase = senderAddress.toLowerCase();\n const toAddressLowercase = receiverAddress.toLowerCase();\n\n // Parse all logs in the transaction receipt\n for (const log of receipt.logs) {\n const logAddressLowercase = log.address.toLowerCase() as Address;\n // Check if this is a Transfer event from one of our tokens\n if (\n isFilledArray(log.topics) &&\n log.topics[0] === TRANSFER_EVENT_SIGNATURE &&\n tokensSet.has(logAddressLowercase)\n ) {\n try {\n // Parse the Transfer event parameters\n // topics[0] = event signature\n // topics[1] = from address (padded to 32 bytes)\n // topics[2] = to address (padded to 32 bytes)\n // data = value (uint256)\n\n const decoded = decodeEventLog({\n abi: erc20Abi,\n data: log.data,\n topics: log.topics,\n eventName: \"Transfer\",\n });\n\n const { from: fromAddress, to: toAddress, value } = decoded.args;\n\n const tokenTransfer = result[logAddressLowercase];\n if (!tokenTransfer) {\n continue;\n }\n\n // Check if the transfer is from sender to someone else\n if (fromAddress.toLowerCase() === fromAddressLowercase) {\n tokenTransfer.sentAmount += value;\n }\n // Check if the transfer is to receiver from someone else\n if (toAddress.toLowerCase() === toAddressLowercase) {\n tokenTransfer.receivedAmount += value;\n }\n } catch (_error) {\n // If parsing fails, skip this log\n continue;\n }\n }\n }\n\n return result;\n}\n\ntype NativeTokenTransferInput = {\n receipt: MarkOptional<\n Pick<\n TransactionReceipt,\n | \"blockNumber\"\n | \"gasUsed\"\n | \"effectiveGasPrice\"\n | \"from\"\n | \"transactionHash\"\n >,\n \"effectiveGasPrice\" | \"from\"\n >;\n senderAddress: Address;\n receiverAddress: Address;\n client: Client;\n};\n\n// when no gasPrice was fetched across several methods\nconst REASONABLE_GAS_PRICE = 2700000000n;\n\nexport async function getNativeTokenTransfer({\n receipt,\n senderAddress,\n receiverAddress,\n client,\n}: NativeTokenTransferInput): Promise<TokenTransfers> {\n const beforeBlockNumber = receipt.blockNumber - 1n;\n const afterBlockNumber = receipt.blockNumber;\n\n /*\n if the transaction was the only one transaction involving the sender and receiver\n in the block it was mined, and if the transaction was a SwapTransaction only,\n not some bulk transaction or a flashbot transaction, then we can consider\n that the ETH balances difference matches the ETH Swap amount.\n */\n\n const senderPromises = [\n // Get balances before the transaction\n getBalance(client, {\n address: senderAddress,\n blockNumber: beforeBlockNumber,\n }),\n // Get balances after the transaction\n getBalance(client, {\n address: senderAddress,\n blockNumber: afterBlockNumber,\n }),\n ] as const;\n\n const senderIsReceiver =\n senderAddress.toLowerCase() === receiverAddress.toLowerCase();\n\n const receiverPromises = senderIsReceiver\n ? // reuse sender promises if sender is receiver\n senderPromises\n : ([\n // Get balances before the transaction\n getBalance(client, {\n address: receiverAddress,\n blockNumber: beforeBlockNumber,\n }),\n // Get balances after the transaction\n getBalance(client, {\n address: receiverAddress,\n blockNumber: afterBlockNumber,\n }),\n ] as const);\n\n const [\n senderBalanceBefore,\n senderBalanceAfter,\n receiverBalanceBefore,\n receiverBalanceAfter,\n ] = await Promise.all([...senderPromises, ...receiverPromises]);\n\n // Calculate the differences\n let sentAmount = senderBalanceBefore - senderBalanceAfter; // difference in balances = sent ETH + paid gas\n let receivedAmount = receiverBalanceAfter - receiverBalanceBefore;\n\n let gasPrice = receipt.effectiveGasPrice;\n let from = receipt.from;\n if (!gasPrice) {\n // SendCalls receipt does not include some fields,\n // try to fetch them from the transaction hash\n const minTxData = await getMinTxDataFromHash({\n hash: receipt.transactionHash,\n client,\n });\n gasPrice = minTxData.gasPrice;\n from = minTxData.from;\n }\n\n if (!gasPrice) {\n gasPrice = REASONABLE_GAS_PRICE;\n }\n\n if (!from) {\n from = client.account?.address || senderAddress;\n }\n\n const gasCost = receipt.gasUsed * gasPrice;\n\n // if sender is the transaction sender (it may not be if a Relayer was involved)\n if (senderAddress.toLowerCase() === from.toLowerCase()) {\n // Adjust sentAmount for gas:\n // Subtract gas cost from sentAmount to get actual ETH sent (excluding gas fees)\n sentAmount -= gasCost;\n }\n\n // if sender is receiver, then need to adjust receivedAmount for gas\n if (senderAddress.toLowerCase() === receiverAddress.toLowerCase()) {\n receivedAmount += gasCost; // gas was paid out of the receivedAmount, so make this the amount before gas paid\n }\n\n return {\n token: ETH_ADDRESS_LOWERCASE, // Native token address\n sentAmount: sentAmount > 0n ? sentAmount : 0n,\n receivedAmount: receivedAmount > 0n ? receivedAmount : 0n,\n };\n}\n\ntype TokenTransfersFromReceiptInput = TransferAmountsFromReceiptInput & {\n client: Client;\n};\n\nexport async function getTokenTransfersFromReceipt({\n receipt,\n tokens,\n senderAddress,\n receiverAddress,\n client,\n}: TokenTransfersFromReceiptInput): Promise<TransferAmountsFromReceiptResult> {\n const tokensWithoutNative = tokens.filter((token) => !isETH(token));\n\n const tokenTransfers = getERC20TransferAmountsFromReceipt({\n receipt,\n tokens: tokensWithoutNative,\n senderAddress,\n receiverAddress,\n });\n\n // there was a native Token in the list\n if (tokensWithoutNative.length < tokens.length) {\n const nativeTokenTransfer = await getNativeTokenTransfer({\n receipt,\n senderAddress,\n receiverAddress,\n client,\n });\n\n tokenTransfers[ETH_ADDRESS_LOWERCASE] = nativeTokenTransfer;\n }\n\n return tokenTransfers;\n}\n\ntype TokenTransfersFromReceiptWithLimitsInput = {\n detectedTokenTransfers: Record<Address, TokenTransfers>;\n expectedTokenTransfers: Record<Address, TokenTransfers>;\n};\n\n// Helper function to validate an amount against expected value with tolerance\nfunction validateAmount({\n calculatedAmount,\n expectedAmount,\n tolerancePercent = 15, // max slippage %\n}: {\n calculatedAmount: bigint;\n expectedAmount: bigint;\n tolerancePercent?: number;\n}): bigint {\n if (expectedAmount === 0n) {\n // If expected is 0, use expected\n return expectedAmount;\n }\n\n // Check if calculated is within tolerance of expected\n const tolerance = (expectedAmount * BigInt(tolerancePercent)) / 100n;\n const minExpected = expectedAmount - tolerance;\n const maxExpected = expectedAmount + tolerance;\n\n if (calculatedAmount >= minExpected && calculatedAmount <= maxExpected) {\n return calculatedAmount;\n } else {\n return expectedAmount;\n }\n}\n\nconst logger1 = createLogger(\"Swap:amounts:Expected\");\nconst logger2 = createLogger(\"Swap:amounts:Detected\");\n\nexport function getTokenTransfersFromReceiptWithLimits({\n detectedTokenTransfers,\n expectedTokenTransfers,\n}: TokenTransfersFromReceiptWithLimitsInput): TransferAmountsFromReceiptResult {\n // Validate and adjust amounts based on expected values\n const validatedTokenTransfers: Record<Address, TokenTransfers> = {};\n\n logger1.once.log(\"Expected token transfers\", expectedTokenTransfers);\n logger2.once.log(\"Detected token transfers\", detectedTokenTransfers);\n\n for (const [tokenAddress, calculatedTransfer] of Object.entries(\n detectedTokenTransfers\n )) {\n const expectedTransfer = expectedTokenTransfers[tokenAddress as Address];\n\n if (!expectedTransfer) {\n // No expected value, use calculated\n validatedTokenTransfers[tokenAddress as Address] = calculatedTransfer;\n continue;\n }\n\n const validatedTransfer: TokenTransfers = {\n token: calculatedTransfer.token,\n sentAmount: validateAmount({\n calculatedAmount: calculatedTransfer.sentAmount,\n expectedAmount: expectedTransfer.sentAmount,\n }),\n receivedAmount: validateAmount({\n calculatedAmount: calculatedTransfer.receivedAmount,\n expectedAmount: expectedTransfer.receivedAmount,\n }),\n };\n\n validatedTokenTransfers[tokenAddress as Address] = validatedTransfer;\n }\n\n return validatedTokenTransfers;\n}\n\ntype UseTokenTransfersFromReceiptInput = TransferAmountsFromReceiptInput & {\n receipt: Pick<TransactionReceipt, \"transactionHash\">;\n chainId: SupportedChainId;\n expectedTokenTransfers: Record<Address, TokenTransfers>;\n};\n\n/**\n * @param expectedTokenTransfers - expected token transfers, if provided, will be used to validate the detected token transfers\n * @param chainId - chain id\n * @param receipt - transaction receipt\n * @param tokens - tokens\n * @param senderAddress - sender address\n * @param receiverAddress - receiver address\n * @returns - token transfers from receipt validated against expected token transfers\n * @note - ETH transfers are a best guess, and may not be accurate (falls back to expected token transfers)\n */\nexport function useTokenTransfersFromReceipt({\n receipt,\n tokens,\n senderAddress,\n receiverAddress,\n expectedTokenTransfers,\n chainId,\n}: MarkOptional<\n UseTokenTransfersFromReceiptInput,\n \"receipt\" | \"senderAddress\" | \"receiverAddress\" | \"expectedTokenTransfers\"\n>): UseQueryResult<TransferAmountsFromReceiptResult, Error> {\n const client = useClient({ chainId });\n\n const select = useCallback(\n (data: TransferAmountsFromReceiptResult) => {\n if (!expectedTokenTransfers) {\n return data;\n }\n\n return getTokenTransfersFromReceiptWithLimits({\n detectedTokenTransfers: data,\n expectedTokenTransfers,\n });\n },\n [expectedTokenTransfers]\n );\n\n return useQuery({\n queryKey: [\n \"token-transfers-from-receipt\",\n receipt?.transactionHash,\n receipt?.logs.length,\n senderAddress?.toLowerCase(),\n receiverAddress?.toLowerCase(),\n ],\n queryFn: async () => {\n assert(receipt, \"Receipt is required\");\n assert(senderAddress, \"Sender address is required\");\n assert(receiverAddress, \"Receiver address is required\");\n\n return getTokenTransfersFromReceipt({\n receipt,\n tokens,\n senderAddress,\n receiverAddress,\n client,\n });\n },\n select,\n enabled:\n !!receipt &&\n receipt.logs.length > 0 &&\n tokens.length > 0 &&\n !!senderAddress &&\n !!receiverAddress,\n });\n}\n\ntype MinTxData = {\n from?: Address;\n gasPrice?: bigint;\n};\n\ntype GetMinTxDataFromHashInput = {\n hash: Hash;\n client: Client;\n};\n\nasync function getMinTxDataFromHash({\n hash,\n client,\n}: GetMinTxDataFromHashInput): Promise<MinTxData> {\n let gasPrice: bigint | undefined = undefined;\n let from: Address | undefined;\n try {\n // likely this will return the correct receipt for the hash,\n // but in case of different RPC providers between the Wallet (which performed sendCalls),\n // and the RPC of the Client, the receipt may not be found\n const receipt = await getTransactionReceipt(client, {\n hash,\n });\n from = receipt.from;\n gasPrice = receipt.effectiveGasPrice;\n } catch {\n // can be TransactionReceiptNotFoundError\n }\n\n if (!gasPrice) {\n try {\n // very unlikely that even the transaction will not be found, but still possible\n const tx = await getTransaction(client, {\n hash,\n });\n from = tx.from;\n gasPrice = tx.gasPrice;\n } catch {\n // can be TransactionNotFoundError\n }\n }\n\n if (!gasPrice) {\n try {\n // just in case this may error\n gasPrice = await getGasPrice(client);\n } catch {\n // can be RequestError\n }\n }\n\n if (!from) {\n from = client.account?.address;\n }\n\n return {\n from,\n gasPrice,\n };\n}\n"],"names":["TRANSFER_EVENT_SIGNATURE","getERC20TransferAmountsFromReceipt","receipt","tokens","senderAddress","receiverAddress","result","gatherObjectsByProp","token","address","toLowerCase","sentAmount","receivedAmount","tokensSet","Set","map","fromAddressLowercase","toAddressLowercase","log","logs","logAddressLowercase","isFilledArray","topics","has","decoded","decodeEventLog","abi","erc20Abi","data","eventName","from","fromAddress","to","toAddress","value","args","tokenTransfer","_error","REASONABLE_GAS_PRICE","getNativeTokenTransfer","client","beforeBlockNumber","blockNumber","afterBlockNumber","senderPromises","getBalance","senderIsReceiver","receiverPromises","senderBalanceBefore","senderBalanceAfter","receiverBalanceBefore","receiverBalanceAfter","Promise","all","gasPrice","effectiveGasPrice","minTxData","getMinTxDataFromHash","hash","transactionHash","account","gasCost","gasUsed","ETH_ADDRESS_LOWERCASE","getTokenTransfersFromReceipt","tokensWithoutNative","filter","isETH","tokenTransfers","length","nativeTokenTransfer","validateAmount","calculatedAmount","expectedAmount","tolerancePercent","tolerance","BigInt","minExpected","maxExpected","logger1","createLogger","logger2","getTokenTransfersFromReceiptWithLimits","detectedTokenTransfers","expectedTokenTransfers","validatedTokenTransfers","once","tokenAddress","calculatedTransfer","Object","entries","expectedTransfer","validatedTransfer","useTokenTransfersFromReceipt","t0","$","_c","chainId","t1","useClient","t2","select","t3","t4","t5","t6","t7","t8","assert","t9","t10","queryKey","queryFn","enabled","useQuery","undefined","getTransactionReceipt","tx","getTransaction","getGasPrice"],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ export type EnsureCallsStatusFn = (options: {
|
|
|
7
7
|
type EnsureCallsStatusFactory = (params?: {
|
|
8
8
|
queryClient?: QueryClient;
|
|
9
9
|
wagmiConfig?: Config;
|
|
10
|
+
isSafe?: boolean;
|
|
10
11
|
}) => EnsureCallsStatusFn;
|
|
11
12
|
export declare const ensureCallsStatusFactory: EnsureCallsStatusFactory;
|
|
12
13
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensureCallsStatus.d.ts","sourceRoot":"","sources":["../../../src/transactions/queries/ensureCallsStatus.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ensureCallsStatus.d.ts","sourceRoot":"","sources":["../../../src/transactions/queries/ensureCallsStatus.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAsB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE;IAC1C,EAAE,EAAE,MAAM,CAAC;CACZ,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAEtC,KAAK,wBAAwB,GAAG,CAAC,MAAM,CAAC,EAAE;IACxC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,KAAK,mBAAmB,CAAC;AAE1B,eAAO,MAAM,wBAAwB,EAAE,wBAwBpC,CAAC"}
|