@velora-dex/widget 0.0.15 → 0.0.17
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/README.md +91 -29
- package/dist/assets/circle-check.svg.js +12 -0
- package/dist/assets/circle-check.svg.js.map +1 -0
- package/dist/assets/circle-exclamation.svg.js +12 -0
- package/dist/assets/circle-exclamation.svg.js.map +1 -0
- package/dist/assets/copy.svg.js +12 -0
- package/dist/assets/copy.svg.js.map +1 -0
- package/dist/assets/external-url.svg.js +12 -0
- package/dist/assets/external-url.svg.js.map +1 -0
- package/dist/assets/logout.svg.js +12 -0
- package/dist/assets/logout.svg.js.map +1 -0
- package/dist/assets/spinner.svg.js.map +1 -0
- package/dist/assets/wS.svg.js +12 -0
- package/dist/assets/wS.svg.js.map +1 -0
- package/dist/assets/wS.svg2.js +4 -0
- package/dist/assets/wS.svg2.js.map +1 -0
- package/dist/components/ui/button.d.ts +1 -1
- package/dist/components/ui/button.js +1 -1
- package/dist/components/ui/button.js.map +1 -1
- package/dist/components/ui/card.js +1 -106
- package/dist/components/ui/card.js.map +1 -1
- package/dist/components/ui/dialog.d.ts.map +1 -1
- package/dist/components/ui/dialog.js +5 -117
- package/dist/components/ui/dialog.js.map +1 -1
- package/dist/components/ui/drawer.d.ts +1 -1
- package/dist/components/ui/drawer.d.ts.map +1 -1
- package/dist/components/ui/drawer.js +2 -2
- package/dist/components/ui/drawer.js.map +1 -1
- package/dist/components/ui/dropdown-menu.js +3 -334
- package/dist/components/ui/dropdown-menu.js.map +1 -1
- package/dist/components/ui/progress.d.ts +13 -0
- package/dist/components/ui/progress.d.ts.map +1 -0
- package/dist/components/ui/progress.js +120 -0
- package/dist/components/ui/progress.js.map +1 -0
- package/dist/components/ui/sonner.d.ts.map +1 -1
- package/dist/components/ui/sonner.js +34 -9
- package/dist/components/ui/sonner.js.map +1 -1
- package/dist/components/ui/switch.d.ts +3 -1
- package/dist/components/ui/switch.d.ts.map +1 -1
- package/dist/components/ui/switch.js +30 -16
- package/dist/components/ui/switch.js.map +1 -1
- package/dist/components/ui/tooltip.d.ts.map +1 -1
- package/dist/components/ui/tooltip.js +15 -4
- package/dist/components/ui/tooltip.js.map +1 -1
- package/dist/components/web3/AccountButton.d.ts.map +1 -1
- package/dist/components/web3/AccountButton.js +78 -30
- package/dist/components/web3/AccountButton.js.map +1 -1
- package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.d.ts +2 -0
- package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.d.ts.map +1 -0
- package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.js +92 -0
- package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.js.map +1 -0
- package/dist/components/web3/ConnectWallets/index.js +1 -1
- package/dist/components/web3/ConnectWallets/index.js.map +1 -1
- package/dist/components/web3/ConnectWallets/privy/button.d.ts.map +1 -1
- package/dist/components/web3/ConnectWallets/privy/button.js +99 -76
- package/dist/components/web3/ConnectWallets/privy/button.js.map +1 -1
- package/dist/components/web3/ConnectWallets/privy/connectRunner.d.ts.map +1 -1
- package/dist/components/web3/ConnectWallets/privy/connectRunner.js +5 -3
- package/dist/components/web3/ConnectWallets/privy/connectRunner.js.map +1 -1
- package/dist/components/web3/ConnectedWallet/ConnectedWallet.d.ts +9 -0
- package/dist/components/web3/ConnectedWallet/ConnectedWallet.d.ts.map +1 -0
- package/dist/components/web3/ConnectedWallet/ConnectedWallet.js +211 -0
- package/dist/components/web3/ConnectedWallet/ConnectedWallet.js.map +1 -0
- package/dist/components/web3/providers.d.ts.map +1 -1
- package/dist/components/web3/providers.js +10 -6
- package/dist/components/web3/providers.js.map +1 -1
- package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressDialog.js +126 -136
- package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressDialog.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListBody.d.ts.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListBody.js +2 -3
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListBody.js.map +1 -1
- package/dist/components/widget/Drawer/state/useDrawerControls.d.ts +6 -5
- package/dist/components/widget/Drawer/state/useDrawerControls.d.ts.map +1 -1
- package/dist/components/widget/Drawer/state/useDrawerControls.js +37 -29
- package/dist/components/widget/Drawer/state/useDrawerControls.js.map +1 -1
- package/dist/components/widget/Line/Line.d.ts +3 -1
- package/dist/components/widget/Line/Line.d.ts.map +1 -1
- package/dist/components/widget/Line/Line.js +22 -15
- package/dist/components/widget/Line/Line.js.map +1 -1
- package/dist/components/widget/NetworkIcon/NetworkIconSquare.d.ts.map +1 -1
- package/dist/components/widget/NetworkIcon/NetworkIconSquare.js +25 -21
- package/dist/components/widget/NetworkIcon/NetworkIconSquare.js.map +1 -1
- package/dist/components/widget/NetworkIcon/assets/sqr/sonic.svg.js +12 -0
- package/dist/components/widget/NetworkIcon/assets/sqr/sonic.svg.js.map +1 -0
- package/dist/components/widget/NetworkIcon/assets/sqr/unichain.svg.js +12 -0
- package/dist/components/widget/NetworkIcon/assets/sqr/unichain.svg.js.map +1 -0
- package/dist/components/widget/NetworkWithIcon/NetworkWithIcon.d.ts.map +1 -1
- package/dist/components/widget/NetworkWithIcon/NetworkWithIcon.js +3 -1
- package/dist/components/widget/NetworkWithIcon/NetworkWithIcon.js.map +1 -1
- package/dist/components/widget/RowVirtualizer/RowVirtualizerFixed.d.ts.map +1 -1
- package/dist/components/widget/RowVirtualizer/RowVirtualizerFixed.js +3 -1
- package/dist/components/widget/RowVirtualizer/RowVirtualizerFixed.js.map +1 -1
- package/dist/components/widget/Toasts/CustomToast.d.ts +8 -0
- package/dist/components/widget/Toasts/CustomToast.d.ts.map +1 -0
- package/dist/components/widget/Toasts/CustomToast.js +222 -0
- package/dist/components/widget/Toasts/CustomToast.js.map +1 -0
- package/dist/components/widget/TokenInput/index.d.ts.map +1 -1
- package/dist/components/widget/TokenInput/index.js +122 -137
- package/dist/components/widget/TokenInput/index.js.map +1 -1
- package/dist/components/widget/TokenInput/types.d.ts +1 -0
- package/dist/components/widget/TokenInput/types.d.ts.map +1 -1
- package/dist/components/widget/TokenSwitcher/TokenSwitcher.js +1 -1
- package/dist/components/widget/TokenSwitcher/TokenSwitcher.js.map +1 -1
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts +2 -2
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js +20 -16
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.d.ts +2 -2
- package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.js +20 -16
- package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/Step.js +1 -1
- package/dist/components/widget/TradeOverview/Step.js.map +1 -1
- package/dist/components/widget/TradeOverview/Stepper.js +5 -40
- package/dist/components/widget/TradeOverview/Stepper.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/index.js +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/index.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeDetails.js +1 -1
- package/dist/components/widget/TradeOverview/TradeDetails.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeDetailsDisplay.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TradeDetailsDisplay.js +35 -6
- package/dist/components/widget/TradeOverview/TradeDetailsDisplay.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeError/TradeErrorDetails.d.ts +5 -0
- package/dist/components/widget/TradeOverview/TradeError/TradeErrorDetails.d.ts.map +1 -0
- package/dist/components/widget/TradeOverview/TradeError/TradeErrorDetails.js +55 -0
- package/dist/components/widget/TradeOverview/TradeError/TradeErrorDetails.js.map +1 -0
- package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.d.ts +5 -0
- package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.d.ts.map +1 -0
- package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.js +43 -0
- package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.js.map +1 -0
- package/dist/components/widget/TradeOverview/TradeError/index.d.ts +6 -0
- package/dist/components/widget/TradeOverview/TradeError/index.d.ts.map +1 -0
- package/dist/components/widget/TradeOverview/TradeError/index.js +55 -0
- package/dist/components/widget/TradeOverview/TradeError/index.js.map +1 -0
- package/dist/components/widget/TradeOverview/TradeError/utils.d.ts +4 -0
- package/dist/components/widget/TradeOverview/TradeError/utils.d.ts.map +1 -0
- package/dist/components/widget/TradeOverview/TradeError/utils.js +30 -0
- package/dist/components/widget/TradeOverview/TradeError/utils.js.map +1 -0
- package/dist/components/widget/TradeOverview/TradeOverview.d.ts +3 -1
- package/dist/components/widget/TradeOverview/TradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverview.js +156 -101
- package/dist/components/widget/TradeOverview/TradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverviewHeader.js +1 -1
- package/dist/components/widget/TradeOverview/TradeOverviewHeader.js.map +1 -1
- package/dist/components/widget/TradeOverview/assets/1_approving.lottie.js +4 -0
- package/dist/components/widget/TradeOverview/assets/1_approving.lottie.js.map +1 -0
- package/dist/components/widget/TradeOverview/assets/2_in_progress.lottie.js +4 -0
- package/dist/components/widget/TradeOverview/assets/2_in_progress.lottie.js.map +1 -0
- package/dist/components/widget/TradeOverview/assets/3_executing_step.lottie.js +4 -0
- package/dist/components/widget/TradeOverview/assets/3_executing_step.lottie.js.map +1 -0
- package/dist/components/widget/TradeOverview/assets/4_complete_step.lottie.js +4 -0
- package/dist/components/widget/TradeOverview/assets/4_complete_step.lottie.js.map +1 -0
- package/dist/components/widget/TradeOverview/assets/5_error_step.lottie.js +4 -0
- package/dist/components/widget/TradeOverview/assets/5_error_step.lottie.js.map +1 -0
- package/dist/components/widget/TradeOverview/tradeFlowContext.d.ts +8 -3
- package/dist/components/widget/TradeOverview/tradeFlowContext.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/tradeFlowContext.js +17 -1
- package/dist/components/widget/TradeOverview/tradeFlowContext.js.map +1 -1
- package/dist/components/widget/TradeParameters/EIP1559Parameter.d.ts +2 -0
- package/dist/components/widget/TradeParameters/EIP1559Parameter.d.ts.map +1 -0
- package/dist/components/widget/TradeParameters/EIP1559Parameter.js +56 -0
- package/dist/components/widget/TradeParameters/EIP1559Parameter.js.map +1 -0
- package/dist/components/widget/TradeParameters/SlippageParameter/SlippageParameter.d.ts.map +1 -1
- package/dist/components/widget/TradeParameters/SlippageParameter/SlippageParameter.js +25 -16
- package/dist/components/widget/TradeParameters/SlippageParameter/SlippageParameter.js.map +1 -1
- package/dist/components/widget/TradeParameters/TradeParameters.d.ts.map +1 -1
- package/dist/components/widget/TradeParameters/TradeParameters.js +61 -34
- package/dist/components/widget/TradeParameters/TradeParameters.js.map +1 -1
- package/dist/components/widget/TradeParameters/TransactionSpeedParameter.d.ts +2 -0
- package/dist/components/widget/TradeParameters/TransactionSpeedParameter.d.ts.map +1 -0
- package/dist/components/widget/TradeParameters/TransactionSpeedParameter.js +155 -0
- package/dist/components/widget/TradeParameters/TransactionSpeedParameter.js.map +1 -0
- package/dist/components/widget/TradeParameters/hooks/useIsNotDefaultAnyParameter.d.ts.map +1 -1
- package/dist/components/widget/TradeParameters/hooks/useIsNotDefaultAnyParameter.js +24 -7
- package/dist/components/widget/TradeParameters/hooks/useIsNotDefaultAnyParameter.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/eip1559ParamAtom.d.ts +6 -0
- package/dist/components/widget/TradeParameters/state/eip1559ParamAtom.d.ts.map +1 -0
- package/dist/components/widget/TradeParameters/state/eip1559ParamAtom.js +10 -0
- package/dist/components/widget/TradeParameters/state/eip1559ParamAtom.js.map +1 -0
- package/dist/components/widget/TradeParameters/state/gasPresetParamAtom.d.ts +8 -0
- package/dist/components/widget/TradeParameters/state/gasPresetParamAtom.d.ts.map +1 -0
- package/dist/components/widget/TradeParameters/state/gasPresetParamAtom.js +13 -0
- package/dist/components/widget/TradeParameters/state/gasPresetParamAtom.js.map +1 -0
- package/dist/components/widget/TradeParameters/state/resetParamsAtom.d.ts +4 -0
- package/dist/components/widget/TradeParameters/state/resetParamsAtom.d.ts.map +1 -0
- package/dist/components/widget/TradeParameters/state/resetParamsAtom.js +16 -0
- package/dist/components/widget/TradeParameters/state/resetParamsAtom.js.map +1 -0
- package/dist/components/widget/WrapEth/WrapEthContent.d.ts.map +1 -1
- package/dist/components/widget/WrapEth/WrapEthContent.js +64 -66
- package/dist/components/widget/WrapEth/WrapEthContent.js.map +1 -1
- package/dist/components/widget/WrapEth/WrapEthDrawerButton.d.ts +1 -1
- package/dist/components/widget/WrapEth/WrapEthDrawerButton.d.ts.map +1 -1
- package/dist/components/widget/WrapEth/WrapEthDrawerButton.js.map +1 -1
- package/dist/components/widget/WrapEth/hooks/useSubmitDepositTxMutation.d.ts.map +1 -1
- package/dist/components/widget/WrapEth/hooks/useSubmitDepositTxMutation.js +35 -29
- package/dist/components/widget/WrapEth/hooks/useSubmitDepositTxMutation.js.map +1 -1
- package/dist/components/widget/YouGet/YouGet.d.ts.map +1 -1
- package/dist/components/widget/YouGet/YouGet.js +97 -98
- package/dist/components/widget/YouGet/YouGet.js.map +1 -1
- package/dist/external/.pnpm/vaul@1.1.2_patch_hash_07b36ba5def3805dde9d543a880ba9e4caf55e5eb58e544faaa2c186846bf3c1__15df56ff48174365d34843c037ea8a33/external/vaul/dist/index.js +1626 -0
- package/dist/external/.pnpm/vaul@1.1.2_patch_hash_07b36ba5def3805dde9d543a880ba9e4caf55e5eb58e544faaa2c186846bf3c1__15df56ff48174365d34843c037ea8a33/external/vaul/dist/index.js.map +1 -0
- package/dist/hooks/gas/config.d.ts.map +1 -1
- package/dist/hooks/gas/config.js +9 -5
- package/dist/hooks/gas/config.js.map +1 -1
- package/dist/hooks/gas/types.d.ts +1 -1
- package/dist/hooks/gas/types.d.ts.map +1 -1
- package/dist/hooks/gas/useGasPrices.d.ts +8 -0
- package/dist/hooks/gas/useGasPrices.d.ts.map +1 -1
- package/dist/hooks/gas/useGasPrices.js +30 -21
- package/dist/hooks/gas/useGasPrices.js.map +1 -1
- package/dist/hooks/gas/utils.d.ts +5 -0
- package/dist/hooks/gas/utils.d.ts.map +1 -1
- package/dist/hooks/gas/utils.js +5 -2
- package/dist/hooks/gas/utils.js.map +1 -1
- package/dist/hooks/getCode/useIsAccountContract.d.ts.map +1 -1
- package/dist/hooks/getCode/useIsAccountContract.js +21 -8
- package/dist/hooks/getCode/useIsAccountContract.js.map +1 -1
- package/dist/hooks/permit/hooks/common/useSignArbitraryTypedData.d.ts.map +1 -0
- package/dist/hooks/permit/hooks/{useSignArbitraryTypedData.js → common/useSignArbitraryTypedData.js} +1 -1
- package/dist/hooks/permit/hooks/common/useSignArbitraryTypedData.js.map +1 -0
- package/dist/hooks/permit/hooks/{useSignPermit.d.ts → common/useSignPermit.d.ts} +1 -1
- package/dist/hooks/permit/hooks/common/useSignPermit.d.ts.map +1 -0
- package/dist/hooks/permit/hooks/{useSignPermit.js → common/useSignPermit.js} +2 -2
- package/dist/hooks/permit/hooks/common/useSignPermit.js.map +1 -0
- package/dist/hooks/permit/hooks/common/useWalletSupportsPermit.d.ts +7 -0
- package/dist/hooks/permit/hooks/common/useWalletSupportsPermit.d.ts.map +1 -0
- package/dist/hooks/permit/hooks/common/useWalletSupportsPermit.js +25 -0
- package/dist/hooks/permit/hooks/common/useWalletSupportsPermit.js.map +1 -0
- package/dist/hooks/permit/hooks/{useGetPermitInfo.d.ts → permit1/useGetPermitInfo.d.ts} +2 -2
- package/dist/hooks/permit/hooks/permit1/useGetPermitInfo.d.ts.map +1 -0
- package/dist/hooks/permit/hooks/{useGetPermitInfo.js → permit1/useGetPermitInfo.js} +20 -17
- package/dist/hooks/permit/hooks/permit1/useGetPermitInfo.js.map +1 -0
- package/dist/hooks/permit/hooks/{useGetSafePermitInfo.d.ts → permit1/useGetSafePermitInfo.d.ts} +3 -3
- package/dist/hooks/permit/hooks/permit1/useGetSafePermitInfo.d.ts.map +1 -0
- package/dist/hooks/permit/hooks/{useGetSafePermitInfo.js → permit1/useGetSafePermitInfo.js} +1 -1
- package/dist/hooks/permit/hooks/permit1/useGetSafePermitInfo.js.map +1 -0
- package/dist/hooks/permit/hooks/{usePermit1Nonce.d.ts → permit1/usePermit1Nonce.d.ts} +5 -5
- package/dist/hooks/permit/hooks/permit1/usePermit1Nonce.d.ts.map +1 -0
- package/dist/hooks/permit/hooks/{usePermit1Nonce.js → permit1/usePermit1Nonce.js} +4 -2
- package/dist/hooks/permit/hooks/permit1/usePermit1Nonce.js.map +1 -0
- package/dist/hooks/permit/hooks/{useSignTokenFromPermit1.d.ts → permit1/useSignTokenPermit1.d.ts} +15 -14
- package/dist/hooks/permit/hooks/permit1/useSignTokenPermit1.d.ts.map +1 -0
- package/dist/hooks/permit/hooks/{useSignTokenFromPermit1.js → permit1/useSignTokenPermit1.js} +75 -68
- package/dist/hooks/permit/hooks/permit1/useSignTokenPermit1.js.map +1 -0
- package/dist/hooks/permit/hooks/permit1/useTokenFromPermit1Nonce.d.ts +10 -0
- package/dist/hooks/permit/hooks/permit1/useTokenFromPermit1Nonce.d.ts.map +1 -0
- package/dist/hooks/permit/hooks/{useTokenFromPermit1Nonce.js → permit1/useTokenFromPermit1Nonce.js} +2 -2
- package/dist/hooks/permit/hooks/permit1/useTokenFromPermit1Nonce.js.map +1 -0
- package/dist/hooks/permit/hooks/{useTokenFromPermitInfo.d.ts → permit1/useTokenFromPermitInfo.d.ts} +1 -1
- package/dist/hooks/permit/hooks/permit1/useTokenFromPermitInfo.d.ts.map +1 -0
- package/dist/hooks/permit/hooks/{useTokenFromPermitInfo.js → permit1/useTokenFromPermitInfo.js} +2 -2
- package/dist/hooks/permit/hooks/permit1/useTokenFromPermitInfo.js.map +1 -0
- package/dist/hooks/permit/hooks/{useTryToSignPermit1.d.ts → permit1/useTryToSignPermit1.d.ts} +1 -1
- package/dist/hooks/permit/hooks/permit1/useTryToSignPermit1.d.ts.map +1 -0
- package/dist/hooks/permit/hooks/{useTryToSignPermit1.js → permit1/useTryToSignPermit1.js} +20 -17
- package/dist/hooks/permit/hooks/permit1/useTryToSignPermit1.js.map +1 -0
- package/dist/hooks/permit/hooks/permit2/usePermit2Allowance.d.ts +21 -0
- package/dist/hooks/permit/hooks/permit2/usePermit2Allowance.d.ts.map +1 -0
- package/dist/hooks/permit/hooks/permit2/usePermit2Allowance.js +77 -0
- package/dist/hooks/permit/hooks/permit2/usePermit2Allowance.js.map +1 -0
- package/dist/hooks/permit/hooks/permit2/usePermit2TransferFromNonce.d.ts +76 -0
- package/dist/hooks/permit/hooks/permit2/usePermit2TransferFromNonce.d.ts.map +1 -0
- package/dist/hooks/permit/hooks/permit2/usePermit2TransferFromNonce.js +145 -0
- package/dist/hooks/permit/hooks/permit2/usePermit2TransferFromNonce.js.map +1 -0
- package/dist/hooks/permit/hooks/permit2/useSignTokenPermit2TransferFrom.d.ts +52 -0
- package/dist/hooks/permit/hooks/permit2/useSignTokenPermit2TransferFrom.d.ts.map +1 -0
- package/dist/hooks/permit/hooks/permit2/useSignTokenPermit2TransferFrom.js +299 -0
- package/dist/hooks/permit/hooks/permit2/useSignTokenPermit2TransferFrom.js.map +1 -0
- package/dist/hooks/permit/hooks/permit2/useTokenFromPermit2TransferFromNonce.d.ts +10 -0
- package/dist/hooks/permit/hooks/permit2/useTokenFromPermit2TransferFromNonce.d.ts.map +1 -0
- package/dist/hooks/permit/hooks/permit2/useTokenFromPermit2TransferFromNonce.js +55 -0
- package/dist/hooks/permit/hooks/permit2/useTokenFromPermit2TransferFromNonce.js.map +1 -0
- package/dist/hooks/permit/utils/abi.d.ts +173 -0
- package/dist/hooks/permit/utils/abi.d.ts.map +1 -1
- package/dist/hooks/permit/utils/abi.js +174 -1
- package/dist/hooks/permit/utils/abi.js.map +1 -1
- package/dist/hooks/permit/utils/construct.d.ts +3 -4
- package/dist/hooks/permit/utils/construct.d.ts.map +1 -1
- package/dist/hooks/permit/utils/construct.js +1 -1
- package/dist/hooks/permit/utils/construct.js.map +1 -1
- package/dist/hooks/permit/utils/deadlines.d.ts +8 -0
- package/dist/hooks/permit/utils/deadlines.d.ts.map +1 -0
- package/dist/hooks/permit/utils/deadlines.js +15 -0
- package/dist/hooks/permit/utils/deadlines.js.map +1 -0
- package/dist/hooks/permit/utils/encodeArgs.d.ts +22 -4
- package/dist/hooks/permit/utils/encodeArgs.d.ts.map +1 -1
- package/dist/hooks/permit/utils/encodeArgs.js +33 -4
- package/dist/hooks/permit/utils/encodeArgs.js.map +1 -1
- package/dist/hooks/permit/utils/trySignPermit1.d.ts +1 -1
- package/dist/hooks/permit/utils/trySignPermit1.d.ts.map +1 -1
- package/dist/hooks/permit/utils/trySignPermit1.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts +1 -0
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +4 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js +12 -11
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/usePricesParams.d.ts +1 -1
- package/dist/hooks/swap/prices/usePricesParams.d.ts.map +1 -1
- package/dist/hooks/swap/prices/usePricesParams.js +87 -32
- package/dist/hooks/swap/prices/usePricesParams.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/types.d.ts +0 -1
- package/dist/hooks/swap/tradeFlow/common/types.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.d.ts +18 -0
- package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.d.ts.map +1 -0
- package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.js +204 -0
- package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.js.map +1 -0
- package/dist/hooks/swap/tradeFlow/common/useConstructGasParams.d.ts +20 -0
- package/dist/hooks/swap/tradeFlow/common/useConstructGasParams.d.ts.map +1 -0
- package/dist/hooks/swap/tradeFlow/common/useConstructGasParams.js +81 -0
- package/dist/hooks/swap/tradeFlow/common/useConstructGasParams.js.map +1 -0
- package/dist/hooks/swap/tradeFlow/common/useSignPermit1Or2.d.ts +53 -0
- package/dist/hooks/swap/tradeFlow/common/useSignPermit1Or2.d.ts.map +1 -0
- package/dist/hooks/swap/tradeFlow/common/useSignPermit1Or2.js +334 -0
- package/dist/hooks/swap/tradeFlow/common/useSignPermit1Or2.js.map +1 -0
- package/dist/hooks/swap/tradeFlow/common/useTrackedPrice.d.ts +25 -0
- package/dist/hooks/swap/tradeFlow/common/useTrackedPrice.d.ts.map +1 -0
- package/dist/hooks/swap/tradeFlow/common/useTrackedPrice.js +103 -0
- package/dist/hooks/swap/tradeFlow/common/useTrackedPrice.js.map +1 -0
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +2 -0
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +386 -414
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.d.ts +3 -0
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js +50 -23
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketFlow.d.ts +4 -0
- package/dist/hooks/swap/tradeFlow/useMarketFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketFlow.js +326 -378
- package/dist/hooks/swap/tradeFlow/useMarketFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketSwapStep.d.ts +3 -0
- package/dist/hooks/swap/tradeFlow/useMarketSwapStep.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js +52 -25
- package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js.map +1 -1
- package/dist/hooks/tokens/allowance/types.d.ts +3 -0
- package/dist/hooks/tokens/allowance/types.d.ts.map +1 -1
- package/dist/hooks/tokens/allowance/useTokenAllowance.d.ts +1 -1
- package/dist/hooks/tokens/allowance/useTokenAllowance.d.ts.map +1 -1
- package/dist/hooks/tokens/allowance/useTokenAllowance.js +32 -28
- package/dist/hooks/tokens/allowance/useTokenAllowance.js.map +1 -1
- package/dist/hooks/tokens/balances/useInvalidateTokenData.d.ts.map +1 -1
- package/dist/hooks/tokens/balances/useInvalidateTokenData.js.map +1 -1
- package/dist/hooks/tokens/balances/useIsInsufficientTokenBalance.d.ts +1 -0
- package/dist/hooks/tokens/balances/useIsInsufficientTokenBalance.d.ts.map +1 -1
- package/dist/hooks/tokens/balances/useIsInsufficientTokenBalance.js +41 -1
- package/dist/hooks/tokens/balances/useIsInsufficientTokenBalance.js.map +1 -1
- package/dist/hooks/tokens/useTokenLists.d.ts +1 -0
- package/dist/hooks/tokens/useTokenLists.d.ts.map +1 -1
- package/dist/hooks/tokens/useTokenLists.js +15 -2
- package/dist/hooks/tokens/useTokenLists.js.map +1 -1
- package/dist/hooks/tokens/useTokenTaxFee.d.ts +12 -0
- package/dist/hooks/tokens/useTokenTaxFee.d.ts.map +1 -0
- package/dist/hooks/tokens/useTokenTaxFee.js +54 -0
- package/dist/hooks/tokens/useTokenTaxFee.js.map +1 -0
- package/dist/hooks/txs/index.d.ts +1 -1
- package/dist/hooks/txs/mutations/useApprove.d.ts +5 -4
- package/dist/hooks/txs/mutations/useApprove.d.ts.map +1 -1
- package/dist/hooks/txs/mutations/useApprove.js +55 -39
- package/dist/hooks/txs/mutations/useApprove.js.map +1 -1
- package/dist/hooks/txs/mutations/useDepositWeth.d.ts.map +1 -1
- package/dist/hooks/txs/mutations/useDepositWeth.js +37 -27
- package/dist/hooks/txs/mutations/useDepositWeth.js.map +1 -1
- package/dist/hooks/txs/queries/useAwaitTx.d.ts.map +1 -1
- package/dist/hooks/txs/queries/useAwaitTx.js +16 -13
- package/dist/hooks/txs/queries/useAwaitTx.js.map +1 -1
- package/dist/hooks/txs/queries/useAwaitTxs.d.ts.map +1 -1
- package/dist/hooks/useEIP1559Enabled.d.ts +6 -0
- package/dist/hooks/useEIP1559Enabled.d.ts.map +1 -0
- package/dist/hooks/useEIP1559Enabled.js +31 -0
- package/dist/hooks/useEIP1559Enabled.js.map +1 -0
- package/dist/hooks/useSDK.d.ts.map +1 -1
- package/dist/hooks/useSDK.js +4 -2
- package/dist/hooks/useSDK.js.map +1 -1
- package/dist/index.d.ts +2 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -21
- package/dist/index.js.map +1 -1
- package/dist/lib/constants/delta.d.ts.map +1 -1
- package/dist/lib/constants/delta.js +3 -2
- package/dist/lib/constants/delta.js.map +1 -1
- package/dist/lib/constants/weth.d.ts.map +1 -1
- package/dist/lib/constants/weth.js +24 -17
- package/dist/lib/constants/weth.js.map +1 -1
- package/dist/lib/utils/copyToClipboard.d.ts +2 -0
- package/dist/lib/utils/copyToClipboard.d.ts.map +1 -0
- package/dist/lib/utils/copyToClipboard.js +14 -0
- package/dist/lib/utils/copyToClipboard.js.map +1 -0
- package/dist/lib/utils/index.d.ts +0 -1
- package/dist/lib/utils/index.d.ts.map +1 -1
- package/dist/lib/utils/index.js.map +1 -1
- package/dist/lib/utils/logger.d.ts +5 -8
- package/dist/lib/utils/logger.d.ts.map +1 -1
- package/dist/lib/utils/logger.js +233 -0
- package/dist/lib/utils/logger.js.map +1 -0
- package/dist/lib/utils/price.js +1 -1
- package/dist/lib/utils/providerErrors.d.ts +12 -0
- package/dist/lib/utils/providerErrors.d.ts.map +1 -0
- package/dist/lib/utils/providerErrors.js +29 -0
- package/dist/lib/utils/providerErrors.js.map +1 -0
- package/dist/lib/utils/slippage.d.ts +5 -0
- package/dist/lib/utils/slippage.d.ts.map +1 -1
- package/dist/lib/utils/slippage.js.map +1 -1
- package/dist/lib/utils/toDecimal.d.ts +1 -0
- package/dist/lib/utils/toDecimal.d.ts.map +1 -1
- package/dist/lib/utils/toDecimal.js +9 -4
- package/dist/lib/utils/toDecimal.js.map +1 -1
- package/dist/lib/utils/toasts.d.ts +2 -0
- package/dist/lib/utils/toasts.d.ts.map +1 -1
- package/dist/lib/utils/toasts.js +48 -27
- package/dist/lib/utils/toasts.js.map +1 -1
- package/dist/lib/web3/wagmi/config.d.ts +333 -35
- package/dist/lib/web3/wagmi/config.d.ts.map +1 -1
- package/dist/lib/web3/wagmi/constants.d.ts +333 -35
- package/dist/lib/web3/wagmi/constants.d.ts.map +1 -1
- package/dist/lib/web3/wagmi/constants.js +5 -4
- package/dist/lib/web3/wagmi/constants.js.map +1 -1
- package/dist/lib/web3/wagmi/supportedChains.d.ts +1 -1
- package/dist/lib/web3/wagmi/supportedChains.d.ts.map +1 -1
- package/dist/lib/web3/wagmi/transports.d.ts.map +1 -1
- package/dist/lib/web3/wagmi/transports.js +3 -2
- package/dist/lib/web3/wagmi/transports.js.map +1 -1
- package/dist/styles.css +2445 -2933
- package/dist/test/Configurator.d.ts.map +1 -1
- package/dist/tokens/constants.d.ts.map +1 -1
- package/dist/tokens/constants.js +4 -3
- package/dist/tokens/constants.js.map +1 -1
- package/dist/tokens/defaultTokens.d.ts.map +1 -1
- package/dist/tokens/defaultTokens.js +44 -22
- package/dist/tokens/defaultTokens.js.map +1 -1
- package/dist/tokens/lists/lists.json.d.ts +21 -0
- package/dist/tokens/lists/lists.json.js +21 -0
- package/dist/tokens/lists/lists.json.js.map +1 -1
- package/dist/tokens/lists/state/tokenListsStateAtom.d.ts +10 -6
- package/dist/tokens/lists/state/tokenListsStateAtom.d.ts.map +1 -1
- package/dist/tokens/lists/state/types.d.ts +3 -2
- package/dist/tokens/lists/state/types.d.ts.map +1 -1
- package/dist/widget/ConnectWalletDrawerButton.d.ts +7 -0
- package/dist/widget/ConnectWalletDrawerButton.d.ts.map +1 -0
- package/dist/widget/ConnectWalletDrawerButton.js +86 -0
- package/dist/widget/ConnectWalletDrawerButton.js.map +1 -0
- package/dist/widget/Toaster.d.ts +2 -0
- package/dist/widget/Toaster.d.ts.map +1 -0
- package/dist/widget/Toaster.js +24 -0
- package/dist/widget/Toaster.js.map +1 -0
- package/dist/widget/TradeFlowButton.d.ts +16 -0
- package/dist/widget/TradeFlowButton.d.ts.map +1 -0
- package/dist/widget/TradeFlowButton.js +473 -0
- package/dist/widget/TradeFlowButton.js.map +1 -0
- package/dist/widget/Updaters.d.ts.map +1 -1
- package/dist/widget/Updaters.js +6 -2
- package/dist/widget/Updaters.js.map +1 -1
- package/dist/widget/button/hooks/useWidgetButtonExtraProps.d.ts.map +1 -1
- package/dist/widget/button/hooks/useWidgetButtonExtraProps.js +64 -31
- package/dist/widget/button/hooks/useWidgetButtonExtraProps.js.map +1 -1
- package/dist/widget/constants.d.ts +1 -0
- package/dist/widget/constants.d.ts.map +1 -1
- package/dist/widget/constants.js +2 -1
- package/dist/widget/constants.js.map +1 -1
- package/dist/widget/index.d.ts +1 -1
- package/dist/widget/index.d.ts.map +1 -1
- package/dist/widget/index.js +120 -461
- package/dist/widget/index.js.map +1 -1
- package/dist/widget/inputs/hooks/types.d.ts +1 -1
- package/dist/widget/inputs/hooks/types.d.ts.map +1 -1
- package/dist/widget/inputs/hooks/useTokenFromInputProps.d.ts.map +1 -1
- package/dist/widget/inputs/hooks/useTokenFromInputProps.js +70 -54
- package/dist/widget/inputs/hooks/useTokenFromInputProps.js.map +1 -1
- package/dist/widget/inputs/hooks/useTokenToInputProps.d.ts.map +1 -1
- package/dist/widget/inputs/hooks/useTokenToInputProps.js +50 -21
- package/dist/widget/inputs/hooks/useTokenToInputProps.js.map +1 -1
- package/dist/widget/inputs/state/selectedTokenActionsAtom.js +1 -1
- package/dist/widget/inputs/state/subscriptions.d.ts.map +1 -1
- package/dist/widget/inputs/state/subscriptions.js +2 -1
- package/dist/widget/inputs/state/subscriptions.js.map +1 -1
- package/dist/widget/logger.d.ts +8 -0
- package/dist/widget/logger.d.ts.map +1 -0
- package/dist/widget/logger.js +32 -0
- package/dist/widget/logger.js.map +1 -0
- package/dist/widget/state/chainToAtom.d.ts +2 -2
- package/dist/widget/state/chainToAtom.d.ts.map +1 -1
- package/dist/widget/state/configActionsAtom.d.ts.map +1 -1
- package/dist/widget/state/configActionsAtom.js +5 -1
- package/dist/widget/state/configActionsAtom.js.map +1 -1
- package/dist/widget/state/configAtom.d.ts +7 -1
- package/dist/widget/state/configAtom.d.ts.map +1 -1
- package/dist/widget/state/configAtom.js +3 -1
- package/dist/widget/state/configAtom.js.map +1 -1
- package/dist/widget/state/containerAtom.js +1 -1
- package/dist/widget/state/externalProviderAtom.d.ts +23 -0
- package/dist/widget/state/externalProviderAtom.d.ts.map +1 -0
- package/dist/widget/state/externalProviderAtom.js +20 -0
- package/dist/widget/state/externalProviderAtom.js.map +1 -0
- package/dist/widget/swapDetails/youGet.d.ts.map +1 -1
- package/dist/widget/swapDetails/youGet.js +2 -3
- package/dist/widget/swapDetails/youGet.js.map +1 -1
- package/dist/widget/types.d.ts +15 -0
- package/dist/widget/types.d.ts.map +1 -1
- package/package.json +8 -66
- package/dist/components/ui/counter.js +0 -33
- package/dist/components/ui/counter.js.map +0 -1
- package/dist/components/ui/header.js +0 -21
- package/dist/components/ui/header.js.map +0 -1
- package/dist/components/ui/select.js +0 -427
- package/dist/components/ui/select.js.map +0 -1
- package/dist/components/ui/vaul/browser.d.ts +0 -8
- package/dist/components/ui/vaul/browser.d.ts.map +0 -1
- package/dist/components/ui/vaul/browser.js +0 -27
- package/dist/components/ui/vaul/browser.js.map +0 -1
- package/dist/components/ui/vaul/constants.d.ts +0 -12
- package/dist/components/ui/vaul/constants.d.ts.map +0 -1
- package/dist/components/ui/vaul/constants.js +0 -14
- package/dist/components/ui/vaul/constants.js.map +0 -1
- package/dist/components/ui/vaul/context.d.ts +0 -38
- package/dist/components/ui/vaul/context.d.ts.map +0 -1
- package/dist/components/ui/vaul/context.js +0 -62
- package/dist/components/ui/vaul/context.js.map +0 -1
- package/dist/components/ui/vaul/helpers.d.ts +0 -17
- package/dist/components/ui/vaul/helpers.d.ts.map +0 -1
- package/dist/components/ui/vaul/helpers.js +0 -77
- package/dist/components/ui/vaul/helpers.js.map +0 -1
- package/dist/components/ui/vaul/index.d.ts +0 -140
- package/dist/components/ui/vaul/index.d.ts.map +0 -1
- package/dist/components/ui/vaul/index.js +0 -797
- package/dist/components/ui/vaul/index.js.map +0 -1
- package/dist/components/ui/vaul/types.d.ts +0 -7
- package/dist/components/ui/vaul/types.d.ts.map +0 -1
- package/dist/components/ui/vaul/use-composed-refs.d.ts +0 -14
- package/dist/components/ui/vaul/use-composed-refs.d.ts.map +0 -1
- package/dist/components/ui/vaul/use-composed-refs.js +0 -18
- package/dist/components/ui/vaul/use-composed-refs.js.map +0 -1
- package/dist/components/ui/vaul/use-controllable-state.d.ts +0 -9
- package/dist/components/ui/vaul/use-controllable-state.d.ts.map +0 -1
- package/dist/components/ui/vaul/use-controllable-state.js +0 -124
- package/dist/components/ui/vaul/use-controllable-state.js.map +0 -1
- package/dist/components/ui/vaul/use-position-fixed.d.ts +0 -19
- package/dist/components/ui/vaul/use-position-fixed.d.ts.map +0 -1
- package/dist/components/ui/vaul/use-position-fixed.js +0 -99
- package/dist/components/ui/vaul/use-position-fixed.js.map +0 -1
- package/dist/components/ui/vaul/use-prevent-scroll.d.ts +0 -18
- package/dist/components/ui/vaul/use-prevent-scroll.d.ts.map +0 -1
- package/dist/components/ui/vaul/use-prevent-scroll.js +0 -172
- package/dist/components/ui/vaul/use-prevent-scroll.js.map +0 -1
- package/dist/components/ui/vaul/use-scale-background.d.ts +0 -2
- package/dist/components/ui/vaul/use-scale-background.d.ts.map +0 -1
- package/dist/components/ui/vaul/use-scale-background.js +0 -58
- package/dist/components/ui/vaul/use-scale-background.js.map +0 -1
- package/dist/components/ui/vaul/use-snap-points.d.ts +0 -32
- package/dist/components/ui/vaul/use-snap-points.d.ts.map +0 -1
- package/dist/components/ui/vaul/use-snap-points.js +0 -212
- package/dist/components/ui/vaul/use-snap-points.js.map +0 -1
- package/dist/components/widget/Informative/Informative.js +0 -23
- package/dist/components/widget/Informative/Informative.js.map +0 -1
- package/dist/components/widget/NetworkIcon/assets/sqr/polygonZkEVM.svg.js +0 -12
- package/dist/components/widget/NetworkIcon/assets/sqr/polygonZkEVM.svg.js.map +0 -1
- package/dist/components/widget/TradeOverview/assets/spinner.svg.js.map +0 -1
- package/dist/hooks/permit/hooks/useGetPermitInfo.d.ts.map +0 -1
- package/dist/hooks/permit/hooks/useGetPermitInfo.js.map +0 -1
- package/dist/hooks/permit/hooks/useGetSafePermitInfo.d.ts.map +0 -1
- package/dist/hooks/permit/hooks/useGetSafePermitInfo.js.map +0 -1
- package/dist/hooks/permit/hooks/usePermit1Nonce.d.ts.map +0 -1
- package/dist/hooks/permit/hooks/usePermit1Nonce.js.map +0 -1
- package/dist/hooks/permit/hooks/useSignArbitraryTypedData.d.ts.map +0 -1
- package/dist/hooks/permit/hooks/useSignArbitraryTypedData.js.map +0 -1
- package/dist/hooks/permit/hooks/useSignPermit.d.ts.map +0 -1
- package/dist/hooks/permit/hooks/useSignPermit.js.map +0 -1
- package/dist/hooks/permit/hooks/useSignTokenFromPermit1.d.ts.map +0 -1
- package/dist/hooks/permit/hooks/useSignTokenFromPermit1.js.map +0 -1
- package/dist/hooks/permit/hooks/useTokenFromPermit1Nonce.d.ts +0 -10
- package/dist/hooks/permit/hooks/useTokenFromPermit1Nonce.d.ts.map +0 -1
- package/dist/hooks/permit/hooks/useTokenFromPermit1Nonce.js.map +0 -1
- package/dist/hooks/permit/hooks/useTokenFromPermitInfo.d.ts.map +0 -1
- package/dist/hooks/permit/hooks/useTokenFromPermitInfo.js.map +0 -1
- package/dist/hooks/permit/hooks/useTryToSignPermit1.d.ts.map +0 -1
- package/dist/hooks/permit/hooks/useTryToSignPermit1.js.map +0 -1
- package/dist/styles2.css +0 -256
- package/dist/test/connect/AccountDisplay.js +0 -83
- package/dist/test/connect/AccountDisplay.js.map +0 -1
- package/dist/test/connect/App.js +0 -68
- package/dist/test/connect/App.js.map +0 -1
- package/dist/test/connect/ConnectWallet.js +0 -100
- package/dist/test/connect/ConnectWallet.js.map +0 -1
- package/dist/test/connect/WagmiProfile.js +0 -396
- package/dist/test/connect/WagmiProfile.js.map +0 -1
- package/dist/test/connect/WalletActions.js +0 -314
- package/dist/test/connect/WalletActions.js.map +0 -1
- package/dist/widget/DevTools.js +0 -24
- package/dist/widget/DevTools.js.map +0 -1
- /package/dist/{components/widget/TradeOverview/assets → assets}/spinner.svg.js +0 -0
- /package/dist/hooks/permit/hooks/{useSignArbitraryTypedData.d.ts → common/useSignArbitraryTypedData.d.ts} +0 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const PERMIT_VALIDITY_BUFFER = 3 * 24 * 60 * 60 * 1e3;
|
|
2
|
+
const DELTA_DEFAULT_EXPIRY = 60 * 60 * 1e3;
|
|
3
|
+
function produceSignatureDeadline() {
|
|
4
|
+
return toDeadline(PERMIT_VALIDITY_BUFFER);
|
|
5
|
+
}
|
|
6
|
+
function produceDeltaOrderDeadline() {
|
|
7
|
+
return toDeadline(DELTA_DEFAULT_EXPIRY);
|
|
8
|
+
}
|
|
9
|
+
function toDeadline(expiration) {
|
|
10
|
+
const deadline = Math.floor((Date.now() + expiration) / 1e3);
|
|
11
|
+
return BigInt(deadline);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export { DELTA_DEFAULT_EXPIRY, PERMIT_VALIDITY_BUFFER, produceDeltaOrderDeadline, produceSignatureDeadline, toDeadline };
|
|
15
|
+
//# sourceMappingURL=deadlines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deadlines.js","sources":["../../../../src/hooks/permit/utils/deadlines.ts"],"sourcesContent":["export const PERMIT_VALIDITY_BUFFER = 3 * 24 * 60 * 60 * 1000; // 3 days in milliseconds\nexport const ALLOWANCE_VALIDITY_BUFFER = 10 * PERMIT_VALIDITY_BUFFER; // 30 days in milliseconds\n// default deadline = 1 hour for Delta Order\nexport const DELTA_DEFAULT_EXPIRY = 60 * 60 * 1000; // 1 hour in milliseconds\n\n// deadline for Permit1 and Permit2 signature expiration to use up a signed Permit)\nexport function produceSignatureDeadline(): bigint {\n return toDeadline(PERMIT_VALIDITY_BUFFER);\n}\n\n// deadline for Token allowance expiration in Permit2\nexport function produceAllowanceDeadline(): bigint {\n return toDeadline(ALLOWANCE_VALIDITY_BUFFER);\n}\n\n// deadline for Permit2 TransferFrom signature expiration,\n// and for Delta Order deadline;\n// they must match exactly\nexport function produceDeltaOrderDeadline(): bigint {\n return toDeadline(DELTA_DEFAULT_EXPIRY);\n}\n\n// given expiration in milliseconds, return the deadline(now+expiration) in seconds\nexport function toDeadline(expiration: number): bigint {\n const deadline = Math.floor((Date.now() + expiration) / 1000);\n\n return BigInt(deadline);\n}\n"],"names":["PERMIT_VALIDITY_BUFFER","DELTA_DEFAULT_EXPIRY","produceSignatureDeadline","toDeadline","produceDeltaOrderDeadline","expiration","deadline","Math","floor","Date","now","BigInt"],"mappings":"AAAO,MAAMA,sBAAAA,GAAyB,CAAA,GAAI,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK;AAGlD,MAAMC,oBAAAA,GAAuB,KAAK,EAAA,GAAK;AAGvC,SAASC,wBAAAA,GAAmC;AACjD,EAAA,OAAOC,WAAWH,sBAAsB,CAAA;AAC1C;AAUO,SAASI,yBAAAA,GAAoC;AAClD,EAAA,OAAOD,WAAWF,oBAAoB,CAAA;AACxC;AAGO,SAASE,WAAWE,UAAAA,EAA4B;AACrD,EAAA,MAAMC,WAAWC,IAAAA,CAAKC,KAAAA,CAAAA,CAAOC,KAAKC,GAAAA,EAAI,GAAIL,cAAc,GAAI,CAAA;AAE5D,EAAA,OAAOM,OAAOL,QAAQ,CAAA;AACxB;;;;"}
|
|
@@ -1,11 +1,29 @@
|
|
|
1
|
-
import { Hash } from 'viem';
|
|
2
|
-
import { DaiPermitInput,
|
|
3
|
-
type EncodePermitMethodArgsInputEIP2612 = Pick<
|
|
1
|
+
import { Address, Hash } from 'viem';
|
|
2
|
+
import { DaiPermitInput, Permit1Input, Permit2Input } from './construct';
|
|
3
|
+
type EncodePermitMethodArgsInputEIP2612 = Pick<Permit1Input, "owner" | "spender" | "value" | "nonce" | "deadline" | "type"> & {
|
|
4
4
|
signature: Hash;
|
|
5
5
|
};
|
|
6
6
|
type EncodePermitMethodArgsInputDAI = Pick<DaiPermitInput, "holder" | "spender" | "nonce" | "expiry" | "allowed" | "type"> & {
|
|
7
7
|
signature: Hash;
|
|
8
8
|
};
|
|
9
|
-
export declare function
|
|
9
|
+
export declare function encodePermit1MethodArgs(input: EncodePermitMethodArgsInputEIP2612 | EncodePermitMethodArgsInputDAI): Hash;
|
|
10
|
+
type EncodePermitMethodArgsInputPermit2TransferFrom = Pick<Permit2Input, "token" | "spender" | "nonce" | "amount" | "expiration" | "chainId"> & {
|
|
11
|
+
variant: "transferFrom";
|
|
12
|
+
signature: Hash;
|
|
13
|
+
owner: Address;
|
|
14
|
+
};
|
|
15
|
+
export declare function encodePermit2TransferFromMethodArgs(input: EncodePermitMethodArgsInputPermit2TransferFrom): Hash;
|
|
16
|
+
/**
|
|
17
|
+
* Builds the 96‑byte payload required by Permit2’s `permitTransferFrom`
|
|
18
|
+
* Delta contract (bytes32 nonce · bytes64 signature).
|
|
19
|
+
*
|
|
20
|
+
* @param sigData.nonce – numeric nonce as a bigint
|
|
21
|
+
* @param sigData.signature – compact 64‑byte (compact) signature (0x…128 hex digits)
|
|
22
|
+
* @returns 0x‑prefixed hex string, length = 2 + 96 × 2 = 194 chars
|
|
23
|
+
*/
|
|
24
|
+
export declare function encodePermit2TransferFromSigDataForDelta(sigData: {
|
|
25
|
+
nonce: bigint;
|
|
26
|
+
signature: Hash;
|
|
27
|
+
}): Hash;
|
|
10
28
|
export {};
|
|
11
29
|
//# sourceMappingURL=encodeArgs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encodeArgs.d.ts","sourceRoot":"","sources":["../../../../src/hooks/permit/utils/encodeArgs.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"encodeArgs.d.ts","sourceRoot":"","sources":["../../../../src/hooks/permit/utils/encodeArgs.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,OAAO,EACZ,KAAK,IAAI,EACV,MAAM,MAAM,CAAC;AAEd,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE9E,KAAK,kCAAkC,GAAG,IAAI,CAC5C,YAAY,EACZ,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAC9D,GAAG;IACF,SAAS,EAAE,IAAI,CAAC;CACjB,CAAC;AAEF,KAAK,8BAA8B,GAAG,IAAI,CACxC,cAAc,EACd,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAC/D,GAAG;IACF,SAAS,EAAE,IAAI,CAAC;CACjB,CAAC;AASF,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,kCAAkC,GAAG,8BAA8B,GACzE,IAAI,CAyBN;AAID,KAAK,8CAA8C,GAAG,IAAI,CACxD,YAAY,EACZ,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,CACpE,GAAG;IACF,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAMF,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,8CAA8C,GACpD,IAAI,CAqBN;AAED;;;;;;;GAOG;AACH,wBAAgB,wCAAwC,CAAC,OAAO,EAAE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;CACjB,GAAG,IAAI,CAUP"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { parseSignature,
|
|
2
|
-
import { EIP_2612_PERMIT_ABI, DAI_PERMIT_ABI } from './abi.js';
|
|
1
|
+
import { encodeAbiParameters, parseSignature, toHex, concatHex } from 'viem';
|
|
2
|
+
import { EIP_2612_PERMIT_ABI, DAI_PERMIT_ABI, PERMIT2_ABI } from './abi.js';
|
|
3
3
|
|
|
4
4
|
const EIP_2612_PERMIT_PARAMETERS = EIP_2612_PERMIT_ABI.find((abiItem) => abiItem.name === "permit").inputs;
|
|
5
5
|
const DAI_PERMIT_PARAMETERS = DAI_PERMIT_ABI.find((abiItem) => abiItem.name === "permit").inputs;
|
|
6
|
-
function
|
|
6
|
+
function encodePermit1MethodArgs(input) {
|
|
7
7
|
const {
|
|
8
8
|
r,
|
|
9
9
|
s,
|
|
@@ -14,6 +14,35 @@ function encodePermitMethodArgs(input) {
|
|
|
14
14
|
}
|
|
15
15
|
return encodeAbiParameters(DAI_PERMIT_PARAMETERS, [input.holder, input.spender, input.nonce, input.expiry, input.allowed, Number(v), r, s]);
|
|
16
16
|
}
|
|
17
|
+
const PERMIT2_TRANSFER_FROM_PARAMETERS = PERMIT2_ABI.find((abiItem) => abiItem.name === "permitTransferFrom").inputs;
|
|
18
|
+
function encodePermit2TransferFromMethodArgs(input) {
|
|
19
|
+
return encodeAbiParameters(PERMIT2_TRANSFER_FROM_PARAMETERS, [
|
|
20
|
+
{
|
|
21
|
+
permitted: {
|
|
22
|
+
token: input.token,
|
|
23
|
+
amount: input.amount
|
|
24
|
+
},
|
|
25
|
+
nonce: input.nonce,
|
|
26
|
+
deadline: input.expiration
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
to: input.spender,
|
|
30
|
+
requestedAmount: input.amount
|
|
31
|
+
},
|
|
32
|
+
input.owner,
|
|
33
|
+
input.signature
|
|
34
|
+
// this could work with Multisig signature, because it's bytes without fixed length in ABI,
|
|
35
|
+
// but the Contract only supports compact signature for Permit2 TransferFrom,
|
|
36
|
+
// and compactSignature is made from full-length signature through parsing and serializing.
|
|
37
|
+
// Multisig signature is non-standard length and it can't be parsed
|
|
38
|
+
]);
|
|
39
|
+
}
|
|
40
|
+
function encodePermit2TransferFromSigDataForDelta(sigData) {
|
|
41
|
+
const nonceHex = toHex(sigData.nonce, {
|
|
42
|
+
size: 32
|
|
43
|
+
});
|
|
44
|
+
return concatHex([nonceHex, sigData.signature]);
|
|
45
|
+
}
|
|
17
46
|
|
|
18
|
-
export {
|
|
47
|
+
export { encodePermit1MethodArgs, encodePermit2TransferFromMethodArgs, encodePermit2TransferFromSigDataForDelta };
|
|
19
48
|
//# sourceMappingURL=encodeArgs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encodeArgs.js","sources":["../../../../src/hooks/permit/utils/encodeArgs.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"encodeArgs.js","sources":["../../../../src/hooks/permit/utils/encodeArgs.ts"],"sourcesContent":["import {\n encodeAbiParameters,\n parseSignature,\n concatHex,\n toHex,\n type Address,\n type Hash,\n} from \"viem\";\nimport { DAI_PERMIT_ABI, EIP_2612_PERMIT_ABI, PERMIT2_ABI } from \"./abi\";\nimport type { DaiPermitInput, Permit1Input, Permit2Input } from \"./construct\";\n\ntype EncodePermitMethodArgsInputEIP2612 = Pick<\n Permit1Input,\n \"owner\" | \"spender\" | \"value\" | \"nonce\" | \"deadline\" | \"type\"\n> & {\n signature: Hash;\n};\n\ntype EncodePermitMethodArgsInputDAI = Pick<\n DaiPermitInput,\n \"holder\" | \"spender\" | \"nonce\" | \"expiry\" | \"allowed\" | \"type\"\n> & {\n signature: Hash;\n};\n\nconst EIP_2612_PERMIT_PARAMETERS = EIP_2612_PERMIT_ABI.find(\n (abiItem) => abiItem.name === \"permit\"\n)!.inputs;\nconst DAI_PERMIT_PARAMETERS = DAI_PERMIT_ABI.find(\n (abiItem) => abiItem.name === \"permit\"\n)!.inputs;\n\nexport function encodePermit1MethodArgs(\n input: EncodePermitMethodArgsInputEIP2612 | EncodePermitMethodArgsInputDAI\n): Hash {\n // this is unusable with Multisig Smart Wallets, because signature is non-standard length and it can'be parsed\n // @TODO implement bundle txs (Approve + Swap) for Multisig Smart Wallets (and in general wallets that support bundle txs)\n const { r, s, v } = parseSignature(input.signature);\n if (input.type === \"permit1\") {\n return encodeAbiParameters(EIP_2612_PERMIT_PARAMETERS, [\n input.owner,\n input.spender,\n input.value,\n input.deadline,\n Number(v),\n r,\n s,\n ]);\n }\n return encodeAbiParameters(DAI_PERMIT_PARAMETERS, [\n input.holder,\n input.spender,\n input.nonce,\n input.expiry,\n input.allowed,\n Number(v),\n r,\n s,\n ]);\n}\n\n/// Permit2 TransferFrom /////\n\ntype EncodePermitMethodArgsInputPermit2TransferFrom = Pick<\n Permit2Input,\n \"token\" | \"spender\" | \"nonce\" | \"amount\" | \"expiration\" | \"chainId\"\n> & {\n variant: \"transferFrom\";\n signature: Hash;\n owner: Address;\n};\n\nconst PERMIT2_TRANSFER_FROM_PARAMETERS = PERMIT2_ABI.find(\n (abiItem) => abiItem.name === \"permitTransferFrom\"\n)!.inputs;\n\nexport function encodePermit2TransferFromMethodArgs(\n input: EncodePermitMethodArgsInputPermit2TransferFrom\n): Hash {\n return encodeAbiParameters(PERMIT2_TRANSFER_FROM_PARAMETERS, [\n {\n permitted: {\n token: input.token,\n amount: input.amount,\n },\n nonce: input.nonce,\n deadline: input.expiration,\n },\n {\n to: input.spender,\n requestedAmount: input.amount,\n },\n input.owner,\n input.signature,\n // this could work with Multisig signature, because it's bytes without fixed length in ABI,\n // but the Contract only supports compact signature for Permit2 TransferFrom,\n // and compactSignature is made from full-length signature through parsing and serializing.\n // Multisig signature is non-standard length and it can't be parsed\n ] as const);\n}\n\n/**\n * Builds the 96‑byte payload required by Permit2’s `permitTransferFrom`\n * Delta contract (bytes32 nonce · bytes64 signature).\n *\n * @param sigData.nonce – numeric nonce as a bigint\n * @param sigData.signature – compact 64‑byte (compact) signature (0x…128 hex digits)\n * @returns 0x‑prefixed hex string, length = 2 + 96 × 2 = 194 chars\n */\nexport function encodePermit2TransferFromSigDataForDelta(sigData: {\n nonce: bigint;\n signature: Hash;\n}): Hash {\n // In the Delta Contract, specifically for Permit2 transferFrom, we have signature consisting of\n // bytes32(permit2nonce) + bytes64(signature) = bytes96 Permit2 Transfer format\n\n // 1. Convert nonce → BigInt → 32‑byte left‑padded hex (0x…64 hex digits)\n const nonceHex = toHex(sigData.nonce, { size: 32 });\n\n // 2. Join the fixed‑width pieces → bytes96\n return concatHex([nonceHex, sigData.signature]);\n // currently doesn't work with Multisig signature, because of the Delta Contract implementation\n}\n"],"names":["EIP_2612_PERMIT_PARAMETERS","EIP_2612_PERMIT_ABI","find","abiItem","name","inputs","DAI_PERMIT_PARAMETERS","DAI_PERMIT_ABI","encodePermit1MethodArgs","input","r","s","v","parseSignature","signature","type","encodeAbiParameters","owner","spender","value","deadline","Number","holder","nonce","expiry","allowed","PERMIT2_TRANSFER_FROM_PARAMETERS","PERMIT2_ABI","encodePermit2TransferFromMethodArgs","permitted","token","amount","expiration","to","requestedAmount","encodePermit2TransferFromSigDataForDelta","sigData","nonceHex","toHex","size","concatHex"],"mappings":";;;AAyBA,MAAMA,6BAA6BC,mBAAAA,CAAoBC,IAAAA,CACpDC,aAAYA,OAAAA,CAAQC,IAAAA,KAAS,QAChC,CAAA,CAAGC,MAAAA;AACH,MAAMC,wBAAwBC,cAAAA,CAAeL,IAAAA,CAC1CC,aAAYA,OAAAA,CAAQC,IAAAA,KAAS,QAChC,CAAA,CAAGC,MAAAA;AAEI,SAASG,wBACdC,KAAAA,EACM;AAGN,EAAA,MAAM;AAAA,IAAEC,CAAAA;AAAAA,IAAGC,CAAAA;AAAAA,IAAGC;AAAAA,GAAE,GAAIC,cAAAA,CAAeJ,KAAAA,CAAMK,SAAS,CAAA;AAClD,EAAA,IAAIL,KAAAA,CAAMM,SAAS,SAAA,EAAW;AAC5B,IAAA,OAAOC,oBAAoBhB,0BAAAA,EAA4B,CACrDS,KAAAA,CAAMQ,KAAAA,EACNR,MAAMS,OAAAA,EACNT,KAAAA,CAAMU,KAAAA,EACNV,KAAAA,CAAMW,UACNC,MAAAA,CAAOT,CAAC,CAAA,EACRF,CAAAA,EACAC,CAAC,CACF,CAAA;AAAA;AAEH,EAAA,OAAOK,oBAAoBV,qBAAAA,EAAuB,CAChDG,MAAMa,MAAAA,EACNb,KAAAA,CAAMS,SACNT,KAAAA,CAAMc,KAAAA,EACNd,KAAAA,CAAMe,MAAAA,EACNf,MAAMgB,OAAAA,EACNJ,MAAAA,CAAOT,CAAC,CAAA,EACRF,CAAAA,EACAC,CAAC,CACF,CAAA;AACH;AAaA,MAAMe,mCAAmCC,WAAAA,CAAYzB,IAAAA,CAClDC,aAAYA,OAAAA,CAAQC,IAAAA,KAAS,oBAChC,CAAA,CAAGC,MAAAA;AAEI,SAASuB,oCACdnB,KAAAA,EACM;AACN,EAAA,OAAOO,oBAAoBU,gCAAAA,EAAkC;AAAA,IAC3D;AAAA,MACEG,SAAAA,EAAW;AAAA,QACTC,OAAOrB,KAAAA,CAAMqB,KAAAA;AAAAA,QACbC,QAAQtB,KAAAA,CAAMsB;AAAAA,OAChB;AAAA,MACAR,OAAOd,KAAAA,CAAMc,KAAAA;AAAAA,MACbH,UAAUX,KAAAA,CAAMuB;AAAAA,KAClB;AAAA,IACA;AAAA,MACEC,IAAIxB,KAAAA,CAAMS,OAAAA;AAAAA,MACVgB,iBAAiBzB,KAAAA,CAAMsB;AAAAA,KACzB;AAAA,IACAtB,KAAAA,CAAMQ,KAAAA;AAAAA,IACNR,KAAAA,CAAMK;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GAKE,CAAA;AACZ;AAUO,SAASqB,yCAAyCC,OAAAA,EAGhD;AAKP,EAAA,MAAMC,QAAAA,GAAWC,KAAAA,CAAMF,OAAAA,CAAQb,KAAAA,EAAO;AAAA,IAAEgB,IAAAA,EAAM;AAAA,GAAI,CAAA;AAGlD,EAAA,OAAOC,SAAAA,CAAU,CAACH,QAAAA,EAAUD,OAAAA,CAAQtB,SAAS,CAAC,CAAA;AAEhD;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Config } from '@wagmi/core';
|
|
2
2
|
import { Address } from 'viem';
|
|
3
3
|
import { NotDetectedPermitSupport, PermitSupportResult } from './detect';
|
|
4
|
-
import { NonceMethod } from '../hooks/usePermit1Nonce';
|
|
4
|
+
import { NonceMethod } from '../hooks/permit1/usePermit1Nonce';
|
|
5
5
|
import { SupportedChainId } from '../../../lib/web3/wagmi/types';
|
|
6
6
|
export type TrySignPermitParams = {
|
|
7
7
|
config: Config;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trySignPermit1.d.ts","sourceRoot":"","sources":["../../../../src/hooks/permit/utils/trySignPermit1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,aAAa,CAAC;AACzD,OAAO,EAAY,KAAK,OAAO,EAA8B,MAAM,MAAM,CAAC;AAE1E,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACzB,MAAM,UAAU,CAAC;AAIlB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"trySignPermit1.d.ts","sourceRoot":"","sources":["../../../../src/hooks/permit/utils/trySignPermit1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,aAAa,CAAC;AACzD,OAAO,EAAY,KAAK,OAAO,EAA8B,MAAM,MAAM,CAAC;AAE1E,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACzB,MAAM,UAAU,CAAC;AAIlB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,mBAAmB,GAAG,wBAAwB,CAAC;IAC3D,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,UAAU,EAAE,mBAAmB,CAAC;IAChC,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,IAAI,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,UAAU,EAAE,mBAAmB,GAAG,wBAAwB,CAAC;IAC3D,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,GAAG,oBAAoB,CAAC;AAU9E;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,EACnC,MAAM,EACN,OAAO,EACP,UAAU,EACV,YAAY,EACZ,cAAuC,EACvC,MAAwB,GACzB,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAyOpD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trySignPermit1.js","sources":["../../../../src/hooks/permit/utils/trySignPermit1.ts"],"sourcesContent":["import { type Config, readContracts } from \"@wagmi/core\";\nimport { type Hex, type Address, parseEther, parseSignature } from \"viem\";\nimport { generatePrivateKey, privateKeyToAccount } from \"viem/accounts\";\nimport {\n type NotDetectedPermitSupport,\n type PermitSupportResult,\n} from \"./detect\";\nimport { constructPermitTypedData } from \"./construct\";\nimport { ERC_20_NONCES_ABI } from \"./constants\";\nimport { DAI_PERMIT_ABI, EIP_2612_PERMIT_ABI } from \"./abi\";\nimport type { NonceMethod } from \"../hooks/usePermit1Nonce\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\n\nexport type TrySignPermitParams = {\n config: Config;\n permitInfo: PermitSupportResult | NotDetectedPermitSupport;\n tokenAddress: Address;\n spenderAddress?: Address;\n amount?: bigint;\n chainId: SupportedChainId;\n};\n\nexport type TrySignPermitSuccess = {\n tokenAddress: Address;\n chainId: SupportedChainId;\n permitInfo: PermitSupportResult;\n success: true;\n error: null;\n nonceBefore: bigint;\n nonceAfter: bigint;\n nonceMethod: NonceMethod;\n};\n\nexport type TrySignPermitFailure = {\n tokenAddress: Address;\n chainId: SupportedChainId;\n permitInfo: PermitSupportResult | NotDetectedPermitSupport;\n success: false;\n error: string;\n};\n\nexport type TrySignPermitResult = TrySignPermitSuccess | TrySignPermitFailure;\n\n// Create a random wallet for testing,\n// wallet starts with nonce=0 everywhere\nconst randomAcc = privateKeyToAccount(generatePrivateKey());\nconst randomAccAddress = randomAcc.address;\n\n// not ZERO_ADDRESS to avoid possible !=address(0) checks\nconst RANDOM_SPENDER_ADDRESS = \"0x0000000000000000000000000000000000000123\";\n\n/**\n * Ultimate check if signing a permit will succeed with detected permitInfo\n * Tests permit functionality by:\n * 1. Creating a random wallet\n * 2. Reading the wallet's nonce\n * 3. Signing permit data with the wallet\n * 4. Making a multicall with: [read nonce, permit(), read nonce]\n * 5. Verifying the nonce increased (indicating permit was processed)\n */\nexport async function trySignPermit1({\n config,\n chainId,\n permitInfo,\n tokenAddress,\n spenderAddress = RANDOM_SPENDER_ADDRESS,\n amount = parseEther(\"1\"),\n}: TrySignPermitParams): Promise<TrySignPermitResult> {\n if (permitInfo.type === \"NOT_DETECTED\") {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: \"Permit not detected\",\n };\n }\n\n try {\n // Create a deadline 1 hour from now\n const deadline = BigInt(Math.floor(Date.now() / 1000) + 3600);\n\n // Read nonce before permit\n const nonceBefore = await readNonce({\n config,\n tokenAddress,\n ownerAddress: randomAccAddress,\n chainId,\n });\n\n if (nonceBefore === null) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: \"Failed to read nonce\",\n };\n }\n\n // Construct permit typed data\n const permitTypedData =\n permitInfo.type === \"dai\"\n ? constructPermitTypedData({\n type: \"dai\",\n permitInfo,\n holder: randomAccAddress,\n spender: spenderAddress,\n nonce: nonceBefore.nonce,\n expiry: deadline,\n allowed: true,\n })\n : constructPermitTypedData({\n type: \"permit1\",\n permitInfo,\n owner: randomAccAddress,\n spender: spenderAddress,\n value: amount,\n nonce: nonceBefore.nonce,\n deadline,\n });\n\n // Only support EIP-2612 and DAI permit types\n if (\n permitTypedData.primaryType !== \"Permit\" ||\n !(\"domain\" in permitTypedData && \"message\" in permitTypedData)\n ) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error:\n \"Unsupported permit type for trySignPermit (only EIP-2612 and DAI supported)\",\n };\n }\n\n // Sign the permit data using the account's signTypedData method\n const signature = await randomAcc.signTypedData({\n domain: permitTypedData.domain,\n types: permitTypedData.types,\n primaryType: permitTypedData.primaryType,\n message: permitTypedData.message,\n });\n\n // Split signature into v, r, s\n const { v, r, s } = parseSignature(signature);\n\n // Ensure v is defined and convert to number for permit calls\n if (v === undefined) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: \"Failed to parse signature - v component is undefined\",\n };\n }\n\n // Convert v to number for permit calls\n const vNumber = Number(v);\n\n // Create permit call data\n let permitCallData: unknown[];\n if (permitInfo.type === \"dai\") {\n permitCallData = createPermitCallData({\n permitType: \"dai\",\n owner: randomAccAddress,\n spender: spenderAddress,\n value: amount,\n nonce: nonceBefore.nonce,\n deadline,\n v: vNumber,\n r,\n s,\n });\n } else {\n permitCallData = createPermitCallData({\n permitType: \"eip2612\",\n owner: randomAccAddress,\n spender: spenderAddress,\n value: amount,\n nonce: nonceBefore.nonce,\n deadline,\n v: vNumber,\n r,\n s,\n });\n }\n\n // Create multicall with: [read nonce, permit(), read nonce]\n const multicallContracts = [\n // 1. Read nonce before permit\n {\n chainId,\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: nonceBefore.nonceMethod,\n args: [randomAccAddress],\n },\n // 2. Call permit function\n {\n chainId,\n address: tokenAddress,\n abi: permitInfo.type === \"dai\" ? DAI_PERMIT_ABI : EIP_2612_PERMIT_ABI,\n functionName: \"permit\",\n args: permitCallData as\n | [Address, Address, bigint, bigint, boolean, number, Hex, Hex]\n | [Address, Address, bigint, bigint, number, Hex, Hex],\n },\n // 3. Read nonce after permit\n {\n chainId,\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: nonceBefore.nonceMethod,\n args: [randomAccAddress],\n },\n ] as const;\n\n // Execute the multicall\n const multicallResult = await readContracts(config, {\n allowFailure: true,\n contracts: multicallContracts,\n });\n\n // Extract results\n const [nonceBeforeResult, permitResult, nonceAfterResult] = multicallResult;\n\n // Check if all results exist\n if (!nonceBeforeResult || !permitResult || !nonceAfterResult) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: \"Multicall returned incomplete results\",\n };\n }\n\n // Check if permit call succeeded\n if (permitResult.status === \"failure\") {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: `Permit call failed: ${permitResult.error?.message || \"Unknown error\"}`,\n };\n }\n\n // Check if we can read nonces\n if (\n nonceBeforeResult.status === \"failure\" ||\n nonceAfterResult.status === \"failure\"\n ) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: \"Failed to read nonces in multicall\",\n };\n }\n\n const nonceBeforeMulticall = nonceBeforeResult.result as bigint;\n const nonceAfterMulticall = nonceAfterResult.result as bigint;\n\n // Verify nonce increased (indicating permit was processed)\n const nonceIncreased = nonceAfterMulticall > nonceBeforeMulticall;\n\n if (!nonceIncreased) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: \"Permit simulation failed - nonce did not increase\",\n };\n }\n\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: true,\n nonceBefore: nonceBeforeMulticall,\n nonceAfter: nonceAfterMulticall,\n nonceMethod: nonceBefore.nonceMethod,\n error: null,\n };\n } catch (error) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: error instanceof Error ? error.message : \"Unknown error occurred\",\n };\n }\n}\n\ntype ReadNonceParams = {\n config: Config;\n tokenAddress: Address;\n ownerAddress: Address;\n chainId: SupportedChainId;\n};\n\n/**\n * Reads the nonce for a given address and token\n */\nasync function readNonce({\n config,\n tokenAddress,\n ownerAddress,\n chainId,\n}: ReadNonceParams): Promise<{\n nonce: bigint;\n nonceMethod: NonceMethod;\n} | null> {\n const contractCalls = [\n {\n chainId,\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: \"nonces\",\n args: [ownerAddress],\n },\n {\n chainId,\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: \"_nonces\",\n args: [ownerAddress],\n },\n {\n chainId,\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: \"nonce\",\n args: [ownerAddress],\n },\n {\n chainId,\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: \"getNonce\",\n args: [ownerAddress],\n },\n ] as const;\n\n const results = await readContracts(config, {\n allowFailure: true,\n contracts: contractCalls,\n });\n\n const validNonceIndex = results.findIndex(\n (result) => result.status === \"success\"\n );\n\n if (validNonceIndex === -1) {\n return null;\n }\n\n const nonce = results[validNonceIndex]?.result as bigint;\n const nonceMethod = contractCalls[validNonceIndex]\n ?.functionName as NonceMethod;\n\n return { nonce, nonceMethod };\n}\n\n/**\n * Creates the call data for permit function based on permit type\n */\nfunction createPermitCallData({\n permitType,\n owner,\n spender,\n value,\n nonce,\n deadline,\n v,\n r,\n s,\n}: {\n permitType: \"eip2612\" | \"dai\";\n owner: Address;\n spender: Address;\n value: bigint;\n nonce: bigint;\n deadline: bigint;\n v: number;\n r: Hex;\n s: Hex;\n}): unknown[] {\n if (permitType === \"dai\") {\n // DAI permit: (holder, spender, nonce, expiry, allowed, v, r, s)\n return [owner, spender, nonce, deadline, true, v, r, s];\n } else {\n // EIP2612 permit: (owner, spender, value, deadline, v, r, s)\n return [owner, spender, value, deadline, v, r, s];\n }\n}\n"],"names":["randomAcc","privateKeyToAccount","generatePrivateKey","randomAccAddress","address","RANDOM_SPENDER_ADDRESS","trySignPermit1","config","chainId","permitInfo","tokenAddress","spenderAddress","amount","parseEther","type","success","error","deadline","BigInt","Math","floor","Date","now","nonceBefore","readNonce","ownerAddress","permitTypedData","constructPermitTypedData","holder","spender","nonce","expiry","allowed","owner","value","primaryType","signature","signTypedData","domain","types","message","v","r","s","parseSignature","undefined","vNumber","Number","permitCallData","createPermitCallData","permitType","multicallContracts","abi","ERC_20_NONCES_ABI","functionName","nonceMethod","args","DAI_PERMIT_ABI","EIP_2612_PERMIT_ABI","multicallResult","readContracts","allowFailure","contracts","nonceBeforeResult","permitResult","nonceAfterResult","status","nonceBeforeMulticall","result","nonceAfterMulticall","nonceIncreased","nonceAfter","Error","contractCalls","results","validNonceIndex","findIndex"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"trySignPermit1.js","sources":["../../../../src/hooks/permit/utils/trySignPermit1.ts"],"sourcesContent":["import { type Config, readContracts } from \"@wagmi/core\";\nimport { type Hex, type Address, parseEther, parseSignature } from \"viem\";\nimport { generatePrivateKey, privateKeyToAccount } from \"viem/accounts\";\nimport {\n type NotDetectedPermitSupport,\n type PermitSupportResult,\n} from \"./detect\";\nimport { constructPermitTypedData } from \"./construct\";\nimport { ERC_20_NONCES_ABI } from \"./constants\";\nimport { DAI_PERMIT_ABI, EIP_2612_PERMIT_ABI } from \"./abi\";\nimport type { NonceMethod } from \"../hooks/permit1/usePermit1Nonce\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\n\nexport type TrySignPermitParams = {\n config: Config;\n permitInfo: PermitSupportResult | NotDetectedPermitSupport;\n tokenAddress: Address;\n spenderAddress?: Address;\n amount?: bigint;\n chainId: SupportedChainId;\n};\n\nexport type TrySignPermitSuccess = {\n tokenAddress: Address;\n chainId: SupportedChainId;\n permitInfo: PermitSupportResult;\n success: true;\n error: null;\n nonceBefore: bigint;\n nonceAfter: bigint;\n nonceMethod: NonceMethod;\n};\n\nexport type TrySignPermitFailure = {\n tokenAddress: Address;\n chainId: SupportedChainId;\n permitInfo: PermitSupportResult | NotDetectedPermitSupport;\n success: false;\n error: string;\n};\n\nexport type TrySignPermitResult = TrySignPermitSuccess | TrySignPermitFailure;\n\n// Create a random wallet for testing,\n// wallet starts with nonce=0 everywhere\nconst randomAcc = privateKeyToAccount(generatePrivateKey());\nconst randomAccAddress = randomAcc.address;\n\n// not ZERO_ADDRESS to avoid possible !=address(0) checks\nconst RANDOM_SPENDER_ADDRESS = \"0x0000000000000000000000000000000000000123\";\n\n/**\n * Ultimate check if signing a permit will succeed with detected permitInfo\n * Tests permit functionality by:\n * 1. Creating a random wallet\n * 2. Reading the wallet's nonce\n * 3. Signing permit data with the wallet\n * 4. Making a multicall with: [read nonce, permit(), read nonce]\n * 5. Verifying the nonce increased (indicating permit was processed)\n */\nexport async function trySignPermit1({\n config,\n chainId,\n permitInfo,\n tokenAddress,\n spenderAddress = RANDOM_SPENDER_ADDRESS,\n amount = parseEther(\"1\"),\n}: TrySignPermitParams): Promise<TrySignPermitResult> {\n if (permitInfo.type === \"NOT_DETECTED\") {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: \"Permit not detected\",\n };\n }\n\n try {\n // Create a deadline 1 hour from now\n const deadline = BigInt(Math.floor(Date.now() / 1000) + 3600);\n\n // Read nonce before permit\n const nonceBefore = await readNonce({\n config,\n tokenAddress,\n ownerAddress: randomAccAddress,\n chainId,\n });\n\n if (nonceBefore === null) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: \"Failed to read nonce\",\n };\n }\n\n // Construct permit typed data\n const permitTypedData =\n permitInfo.type === \"dai\"\n ? constructPermitTypedData({\n type: \"dai\",\n permitInfo,\n holder: randomAccAddress,\n spender: spenderAddress,\n nonce: nonceBefore.nonce,\n expiry: deadline,\n allowed: true,\n })\n : constructPermitTypedData({\n type: \"permit1\",\n permitInfo,\n owner: randomAccAddress,\n spender: spenderAddress,\n value: amount,\n nonce: nonceBefore.nonce,\n deadline,\n });\n\n // Only support EIP-2612 and DAI permit types\n if (\n permitTypedData.primaryType !== \"Permit\" ||\n !(\"domain\" in permitTypedData && \"message\" in permitTypedData)\n ) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error:\n \"Unsupported permit type for trySignPermit (only EIP-2612 and DAI supported)\",\n };\n }\n\n // Sign the permit data using the account's signTypedData method\n const signature = await randomAcc.signTypedData({\n domain: permitTypedData.domain,\n types: permitTypedData.types,\n primaryType: permitTypedData.primaryType,\n message: permitTypedData.message,\n });\n\n // Split signature into v, r, s\n const { v, r, s } = parseSignature(signature);\n\n // Ensure v is defined and convert to number for permit calls\n if (v === undefined) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: \"Failed to parse signature - v component is undefined\",\n };\n }\n\n // Convert v to number for permit calls\n const vNumber = Number(v);\n\n // Create permit call data\n let permitCallData: unknown[];\n if (permitInfo.type === \"dai\") {\n permitCallData = createPermitCallData({\n permitType: \"dai\",\n owner: randomAccAddress,\n spender: spenderAddress,\n value: amount,\n nonce: nonceBefore.nonce,\n deadline,\n v: vNumber,\n r,\n s,\n });\n } else {\n permitCallData = createPermitCallData({\n permitType: \"eip2612\",\n owner: randomAccAddress,\n spender: spenderAddress,\n value: amount,\n nonce: nonceBefore.nonce,\n deadline,\n v: vNumber,\n r,\n s,\n });\n }\n\n // Create multicall with: [read nonce, permit(), read nonce]\n const multicallContracts = [\n // 1. Read nonce before permit\n {\n chainId,\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: nonceBefore.nonceMethod,\n args: [randomAccAddress],\n },\n // 2. Call permit function\n {\n chainId,\n address: tokenAddress,\n abi: permitInfo.type === \"dai\" ? DAI_PERMIT_ABI : EIP_2612_PERMIT_ABI,\n functionName: \"permit\",\n args: permitCallData as\n | [Address, Address, bigint, bigint, boolean, number, Hex, Hex]\n | [Address, Address, bigint, bigint, number, Hex, Hex],\n },\n // 3. Read nonce after permit\n {\n chainId,\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: nonceBefore.nonceMethod,\n args: [randomAccAddress],\n },\n ] as const;\n\n // Execute the multicall\n const multicallResult = await readContracts(config, {\n allowFailure: true,\n contracts: multicallContracts,\n });\n\n // Extract results\n const [nonceBeforeResult, permitResult, nonceAfterResult] = multicallResult;\n\n // Check if all results exist\n if (!nonceBeforeResult || !permitResult || !nonceAfterResult) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: \"Multicall returned incomplete results\",\n };\n }\n\n // Check if permit call succeeded\n if (permitResult.status === \"failure\") {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: `Permit call failed: ${permitResult.error?.message || \"Unknown error\"}`,\n };\n }\n\n // Check if we can read nonces\n if (\n nonceBeforeResult.status === \"failure\" ||\n nonceAfterResult.status === \"failure\"\n ) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: \"Failed to read nonces in multicall\",\n };\n }\n\n const nonceBeforeMulticall = nonceBeforeResult.result as bigint;\n const nonceAfterMulticall = nonceAfterResult.result as bigint;\n\n // Verify nonce increased (indicating permit was processed)\n const nonceIncreased = nonceAfterMulticall > nonceBeforeMulticall;\n\n if (!nonceIncreased) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: \"Permit simulation failed - nonce did not increase\",\n };\n }\n\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: true,\n nonceBefore: nonceBeforeMulticall,\n nonceAfter: nonceAfterMulticall,\n nonceMethod: nonceBefore.nonceMethod,\n error: null,\n };\n } catch (error) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: error instanceof Error ? error.message : \"Unknown error occurred\",\n };\n }\n}\n\ntype ReadNonceParams = {\n config: Config;\n tokenAddress: Address;\n ownerAddress: Address;\n chainId: SupportedChainId;\n};\n\n/**\n * Reads the nonce for a given address and token\n */\nasync function readNonce({\n config,\n tokenAddress,\n ownerAddress,\n chainId,\n}: ReadNonceParams): Promise<{\n nonce: bigint;\n nonceMethod: NonceMethod;\n} | null> {\n const contractCalls = [\n {\n chainId,\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: \"nonces\",\n args: [ownerAddress],\n },\n {\n chainId,\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: \"_nonces\",\n args: [ownerAddress],\n },\n {\n chainId,\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: \"nonce\",\n args: [ownerAddress],\n },\n {\n chainId,\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: \"getNonce\",\n args: [ownerAddress],\n },\n ] as const;\n\n const results = await readContracts(config, {\n allowFailure: true,\n contracts: contractCalls,\n });\n\n const validNonceIndex = results.findIndex(\n (result) => result.status === \"success\"\n );\n\n if (validNonceIndex === -1) {\n return null;\n }\n\n const nonce = results[validNonceIndex]?.result as bigint;\n const nonceMethod = contractCalls[validNonceIndex]\n ?.functionName as NonceMethod;\n\n return { nonce, nonceMethod };\n}\n\n/**\n * Creates the call data for permit function based on permit type\n */\nfunction createPermitCallData({\n permitType,\n owner,\n spender,\n value,\n nonce,\n deadline,\n v,\n r,\n s,\n}: {\n permitType: \"eip2612\" | \"dai\";\n owner: Address;\n spender: Address;\n value: bigint;\n nonce: bigint;\n deadline: bigint;\n v: number;\n r: Hex;\n s: Hex;\n}): unknown[] {\n if (permitType === \"dai\") {\n // DAI permit: (holder, spender, nonce, expiry, allowed, v, r, s)\n return [owner, spender, nonce, deadline, true, v, r, s];\n } else {\n // EIP2612 permit: (owner, spender, value, deadline, v, r, s)\n return [owner, spender, value, deadline, v, r, s];\n }\n}\n"],"names":["randomAcc","privateKeyToAccount","generatePrivateKey","randomAccAddress","address","RANDOM_SPENDER_ADDRESS","trySignPermit1","config","chainId","permitInfo","tokenAddress","spenderAddress","amount","parseEther","type","success","error","deadline","BigInt","Math","floor","Date","now","nonceBefore","readNonce","ownerAddress","permitTypedData","constructPermitTypedData","holder","spender","nonce","expiry","allowed","owner","value","primaryType","signature","signTypedData","domain","types","message","v","r","s","parseSignature","undefined","vNumber","Number","permitCallData","createPermitCallData","permitType","multicallContracts","abi","ERC_20_NONCES_ABI","functionName","nonceMethod","args","DAI_PERMIT_ABI","EIP_2612_PERMIT_ABI","multicallResult","readContracts","allowFailure","contracts","nonceBeforeResult","permitResult","nonceAfterResult","status","nonceBeforeMulticall","result","nonceAfterMulticall","nonceIncreased","nonceAfter","Error","contractCalls","results","validNonceIndex","findIndex"],"mappings":"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"}
|
|
@@ -32,5 +32,6 @@ export declare function useDeltaPriceQuery<TData = DeltaPrice>({ priceParams, qu
|
|
|
32
32
|
export declare function useDeltaPriceQuery<TData = DeltaPrice | BridgePrice>({ priceParams, query, chainId, timeout, }: DeltaPriceQueryInput<TData> & {
|
|
33
33
|
destChainId?: number;
|
|
34
34
|
}): DeltaQueryResult<TData>;
|
|
35
|
+
export declare function isBridgePrice(price: DeltaPrice | BridgePrice): price is BridgePrice;
|
|
35
36
|
export {};
|
|
36
37
|
//# sourceMappingURL=useDeltaPriceQuery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDeltaPriceQuery.d.ts","sourceRoot":"","sources":["../../../../../../src/hooks/swap/prices/delta/queries/useDeltaPriceQuery.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,gBAAgB,IAAI,OAAO,EAC5B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAU,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAG1D,KAAK,wBAAwB,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAC7D,KAAK,gBAAgB,GAAG,YAAY,CAClC,wBAAwB,EACxB,WAAW,GAAG,cAAc,CAC7B,CAAC;AAEF,KAAK,gBAAgB,CAAC,KAAK,GAAG,UAAU,GAAG,WAAW,IAAI,IAAI,CAC5D,eAAe,CAAC,UAAU,GAAG,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,CAAC,EAC3E,UAAU,GAAG,SAAS,CACvB,CAAC;AACF,KAAK,gBAAgB,CAAC,KAAK,GAAG,UAAU,IAAI,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAEzE,KAAK,oBAAoB,CAAC,KAAK,GAAG,UAAU,IAAI;IAC9C,WAAW,EAAE,gBAAgB,CAAC;IAC9B,KAAK,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,mBAAmB;IACzB,OAAO,EAAE,MAAM;IACf,WAAW,EAAE,gBAAgB,GAAG;QAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB;CACF,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,GAAG,WAAW,EAAE,EACtD,WAAW,EACX,KAAK,EACL,OAAO,EACP,OAAO,GACR,EAAE,oBAAoB,CAAC,KAAK,CAAC,GAAG;IAC/B,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC5B,wBAAgB,kBAAkB,CAAC,KAAK,GAAG,UAAU,EAAE,EACrD,WAAW,EACX,KAAK,EACL,OAAO,EACP,OAAO,GACR,EAAE,oBAAoB,CAAC,KAAK,CAAC,GAAG;IAC/B,WAAW,CAAC,EAAE,SAAS,CAAC;CACzB,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC5B,wBAAgB,kBAAkB,CAAC,KAAK,GAAG,UAAU,GAAG,WAAW,EAAE,EACnE,WAAW,EACX,KAAK,EACL,OAAO,EACP,OAAO,GACR,EAAE,oBAAoB,CAAC,KAAK,CAAC,GAAG;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"useDeltaPriceQuery.d.ts","sourceRoot":"","sources":["../../../../../../src/hooks/swap/prices/delta/queries/useDeltaPriceQuery.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,gBAAgB,IAAI,OAAO,EAC5B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAU,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAG1D,KAAK,wBAAwB,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAC7D,KAAK,gBAAgB,GAAG,YAAY,CAClC,wBAAwB,EACxB,WAAW,GAAG,cAAc,CAC7B,CAAC;AAEF,KAAK,gBAAgB,CAAC,KAAK,GAAG,UAAU,GAAG,WAAW,IAAI,IAAI,CAC5D,eAAe,CAAC,UAAU,GAAG,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,CAAC,EAC3E,UAAU,GAAG,SAAS,CACvB,CAAC;AACF,KAAK,gBAAgB,CAAC,KAAK,GAAG,UAAU,IAAI,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAEzE,KAAK,oBAAoB,CAAC,KAAK,GAAG,UAAU,IAAI;IAC9C,WAAW,EAAE,gBAAgB,CAAC;IAC9B,KAAK,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,mBAAmB;IACzB,OAAO,EAAE,MAAM;IACf,WAAW,EAAE,gBAAgB,GAAG;QAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB;CACF,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,GAAG,WAAW,EAAE,EACtD,WAAW,EACX,KAAK,EACL,OAAO,EACP,OAAO,GACR,EAAE,oBAAoB,CAAC,KAAK,CAAC,GAAG;IAC/B,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC5B,wBAAgB,kBAAkB,CAAC,KAAK,GAAG,UAAU,EAAE,EACrD,WAAW,EACX,KAAK,EACL,OAAO,EACP,OAAO,GACR,EAAE,oBAAoB,CAAC,KAAK,CAAC,GAAG;IAC/B,WAAW,CAAC,EAAE,SAAS,CAAC;CACzB,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC5B,wBAAgB,kBAAkB,CAAC,KAAK,GAAG,UAAU,GAAG,WAAW,EAAE,EACnE,WAAW,EACX,KAAK,EACL,OAAO,EACP,OAAO,GACR,EAAE,oBAAoB,CAAC,KAAK,CAAC,GAAG;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;AA6D5B,wBAAgB,aAAa,CAC3B,KAAK,EAAE,UAAU,GAAG,WAAW,GAC9B,KAAK,IAAI,WAAW,CAEtB"}
|
|
@@ -71,6 +71,9 @@ function useDeltaPriceQuery(t0) {
|
|
|
71
71
|
function isPriceParamsValid(priceParams) {
|
|
72
72
|
return !!priceParams.destToken && !!priceParams.destDecimals && Number(priceParams.amount) > 0;
|
|
73
73
|
}
|
|
74
|
+
function isBridgePrice(price) {
|
|
75
|
+
return "bridge" in price;
|
|
76
|
+
}
|
|
74
77
|
|
|
75
|
-
export { useDeltaPriceQuery };
|
|
78
|
+
export { isBridgePrice, useDeltaPriceQuery };
|
|
76
79
|
//# sourceMappingURL=useDeltaPriceQuery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDeltaPriceQuery.js","sources":["../../../../../../src/hooks/swap/prices/delta/queries/useDeltaPriceQuery.ts"],"sourcesContent":["import { useDeltaSDK } from \"@/hooks/useSDK\";\nimport {\n useQuery,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport { useDebouncedValue } from \"@tanstack/react-pacer/debouncer\";\nimport type {\n DeltaPrice,\n BridgePrice,\n DeltaPriceParams as DParams,\n} from \"@velora-dex/sdk\";\nimport { assert, type MarkOptional } from \"ts-essentials\";\n\n// overload is easier with input.destChainId\ntype RequiredDeltaPriceParams = Omit<DParams, \"destChainId\">;\ntype DeltaPriceParams = MarkOptional<\n RequiredDeltaPriceParams,\n \"destToken\" | \"destDecimals\" // destToken is not available in SwapForm initially\n>;\n\ntype DeltaQueryParams<TData = DeltaPrice | BridgePrice> = Omit<\n UseQueryOptions<DeltaPrice | BridgePrice, Error, TData, DeltaPriceQueryKey>,\n \"queryKey\" | \"queryFn\"\n>;\ntype DeltaQueryResult<TData = DeltaPrice> = UseQueryResult<TData, Error>;\n\ntype DeltaPriceQueryInput<TData = DeltaPrice> = {\n priceParams: DeltaPriceParams;\n query?: DeltaQueryParams<TData>;\n chainId: number;\n timeout?: number;\n};\n\ntype DeltaPriceQueryKey = [\n base: \"swap/prices/delta\",\n chainId: number,\n priceParams: DeltaPriceParams & {\n destChainId?: number;\n },\n];\n\n/**\n * 1. With destChainId: number -> returns BridgePrice\n * 2. With destChainId?: undefined -> returns DeltaPrice\n * 3. With destChainId?: number -> returns DeltaPrice | BridgePrice\n */\nexport function useDeltaPriceQuery<TData = BridgePrice>({\n priceParams,\n query,\n chainId,\n timeout,\n}: DeltaPriceQueryInput<TData> & {\n destChainId: number;\n}): DeltaQueryResult<TData>;\nexport function useDeltaPriceQuery<TData = DeltaPrice>({\n priceParams,\n query,\n chainId,\n timeout,\n}: DeltaPriceQueryInput<TData> & {\n destChainId?: undefined;\n}): DeltaQueryResult<TData>;\nexport function useDeltaPriceQuery<TData = DeltaPrice | BridgePrice>({\n priceParams,\n query,\n chainId,\n timeout,\n}: DeltaPriceQueryInput<TData> & {\n destChainId?: number;\n}): DeltaQueryResult<TData>;\nexport function useDeltaPriceQuery<TData = DeltaPrice | BridgePrice>({\n priceParams: _priceParams,\n query,\n chainId,\n timeout,\n destChainId,\n}: DeltaPriceQueryInput<TData> & {\n destChainId?: number;\n}): DeltaQueryResult<TData> {\n const { sdk } = useDeltaSDK({ chainId });\n\n const priceParams: DeltaPriceParams & { destChainId?: number } = {\n ..._priceParams,\n destChainId,\n };\n\n const queryEnabled = query?.enabled ?? true;\n\n // amount tends to change fast during input\n const [debouncedAmount] = useDebouncedValue(priceParams.amount, {\n wait: 500,\n });\n\n // avoid passing unnecessary params to url?search and queryKey\n const sanitizedPriceParams: DeltaPriceParams & { destChainId?: number } = {\n srcToken: priceParams.srcToken,\n destToken: priceParams.destToken,\n amount: debouncedAmount,\n srcDecimals: priceParams.srcDecimals,\n destDecimals: priceParams.destDecimals,\n userAddress: priceParams.userAddress,\n partner: priceParams.partner,\n destChainId: priceParams.destChainId,\n };\n\n return useQuery<DeltaPrice | BridgePrice, Error, TData, DeltaPriceQueryKey>({\n queryKey: [\"swap/prices/delta\", chainId, sanitizedPriceParams],\n queryFn: ({ signal }) => {\n assert(isPriceParamsValid(sanitizedPriceParams), \"destToken is required\");\n const price = sdk.getDeltaPrice(sanitizedPriceParams, {\n signal,\n timeout,\n });\n return price;\n },\n ...query,\n enabled: queryEnabled && isPriceParamsValid(sanitizedPriceParams),\n });\n}\n\nfunction isPriceParamsValid(\n priceParams: DeltaPriceParams\n): priceParams is RequiredDeltaPriceParams {\n return (\n !!priceParams.destToken &&\n !!priceParams.destDecimals &&\n Number(priceParams.amount) > 0\n );\n}\n"],"names":["useDeltaPriceQuery","t0","$","_c","priceParams","_priceParams","query","chainId","timeout","destChainId","t1","sdk","useDeltaSDK","queryEnabled","enabled","t2","Symbol","for","wait","debouncedAmount","useDebouncedValue","amount","sanitizedPriceParams","srcToken","destToken","srcDecimals","destDecimals","userAddress","partner","useQuery","queryKey","queryFn","t3","signal","assert","isPriceParamsValid","price","getDeltaPrice","Number"],"mappings":";;;;;;AAuEO,SAAAA,mBAAAC,EAAAA,EAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AAA8D,EAAA,MAAA;AAAA,IAAAC,WAAAA,EAAAC,YAAAA;AAAAA,IAAAC,KAAAA;AAAAA,IAAAC,OAAAA;AAAAA,IAAAC,OAAAA;AAAAA,IAAAC;AAAAA,GAAA,GAAAR,EAAAA;AAQpE,EAAA,IAAAS,EAAAA;AAAA,EAAA,IAAAR,CAAAA,QAAAK,OAAAA,EAAA;AAC6BG,IAAAA,EAAAA,GAAA;AAAA,MAAAH;AAAAA,KAAA;AAAWL,IAAAA,CAAAA,MAAAK,OAAAA;AAAAL,IAAAA,CAAAA,MAAAQ,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAR,EAAA,CAAA,CAAA;AAAA;AAAvC,EAAA,MAAA;AAAA,IAAAS;AAAAA,GAAA,GAAgBC,YAAYF,EAAW,CAAA;AAEvC,EAAA,MAAAN,WAAAA,GAAA;AAAA,IAAA,GACKC,YAAAA;AAAAA,IAAYI;AAAAA,GAAA;AAIjB,EAAA,MAAAI,YAAAA,GAAqBP,OAAKQ,OAAAA,IAAA,IAAA;AAAkB,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAb,EAAA,CAAA,CAAA,KAAAc,MAAAA,CAAAC,GAAAA,CAAA,2BAAA,CAAA,EAAA;AAGoBF,IAAAA,EAAAA,GAAA;AAAA,MAAAG,IAAAA,EAAA;AAAA,KAAA;AAE/DhB,IAAAA,CAAAA,MAAAa,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAb,EAAA,CAAA,CAAA;AAAA;AAFD,EAAA,MAAA,CAAAiB,eAAA,CAAA,GAA0BC,iBAAAA,CAAkBhB,WAAAA,CAAWiB,QAASN,EAE/D,CAAA;AAGD,EAAA,MAAAO,oBAAAA,GAAA;AAAA,IAAAC,UACYnB,WAAAA,CAAWmB,QAAAA;AAAAA,IAAAC,WACVpB,WAAAA,CAAWoB,SAAAA;AAAAA,IAAAH,MAAAA,EACdF,eAAAA;AAAAA,IAAeM,aACVrB,WAAAA,CAAWqB,WAAAA;AAAAA,IAAAC,cACVtB,WAAAA,CAAWsB,YAAAA;AAAAA,IAAAC,aACZvB,WAAAA,CAAWuB,WAAAA;AAAAA,IAAAC,SACfxB,WAAAA,CAAWwB,OAAAA;AAAAA,IAAAnB,aACPL,WAAAA,CAAWK;AAAAA,GAAA;AACxB,EAAA,OAEKoB,QAAAA,CAAA;AAAA,IAAAC,QAAAA,EAAA,CACM,mBAAA,EAAqBvB,OAAAA,EAASe,oBAAoB,CAAA;AAAA,IAAAS,SAAAC,CAAAA,EAAAA,KAAA;AACnD,MAAA,MAAA;AAAA,QAAAC;AAAAA,OAAA,GAAAD,EAAAA;AACRE,MAAAA,MAAAA,CAAOC,kBAAAA,CAAmBb,oBAAoB,CAAA,EAAG,uBAAuB,CAAA;AACxE,MAAA,MAAAc,KAAAA,GAAczB,GAAAA,CAAG0B,aAAAA,CAAef,oBAAAA,EAAoB;AAAA,QAAAW,MAAAA;AAAAA,QAAAzB;AAAAA,OAGnD,CAAA;AAAE,MAAA,OACI4B,KAAAA;AAAAA,KAAK;AAAA,IAAA,GAEX9B,KAAAA;AAAAA,IAAKQ,OAAAA,EACCD,YAAAA,IAAgBsB,kBAAAA,CAAmBb,oBAAoB;AAAA,GACjE,CAAA;AAAC;AAGJ,SAASa,mBACP/B,WAAAA,EACyC;AACzC,EAAA,OACE,CAAC,CAACA,WAAAA,CAAYoB,SAAAA,IACd,CAAC,CAACpB,WAAAA,CAAYsB,YAAAA,IACdY,MAAAA,CAAOlC,WAAAA,CAAYiB,MAAM,CAAA,GAAI,CAAA;AAEjC;;;;"}
|
|
1
|
+
{"version":3,"file":"useDeltaPriceQuery.js","sources":["../../../../../../src/hooks/swap/prices/delta/queries/useDeltaPriceQuery.ts"],"sourcesContent":["import { useDeltaSDK } from \"@/hooks/useSDK\";\nimport {\n useQuery,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport { useDebouncedValue } from \"@tanstack/react-pacer/debouncer\";\nimport type {\n DeltaPrice,\n BridgePrice,\n DeltaPriceParams as DParams,\n} from \"@velora-dex/sdk\";\nimport { assert, type MarkOptional } from \"ts-essentials\";\n\n// overload is easier with input.destChainId\ntype RequiredDeltaPriceParams = Omit<DParams, \"destChainId\">;\ntype DeltaPriceParams = MarkOptional<\n RequiredDeltaPriceParams,\n \"destToken\" | \"destDecimals\" // destToken is not available in SwapForm initially\n>;\n\ntype DeltaQueryParams<TData = DeltaPrice | BridgePrice> = Omit<\n UseQueryOptions<DeltaPrice | BridgePrice, Error, TData, DeltaPriceQueryKey>,\n \"queryKey\" | \"queryFn\"\n>;\ntype DeltaQueryResult<TData = DeltaPrice> = UseQueryResult<TData, Error>;\n\ntype DeltaPriceQueryInput<TData = DeltaPrice> = {\n priceParams: DeltaPriceParams;\n query?: DeltaQueryParams<TData>;\n chainId: number;\n timeout?: number;\n};\n\ntype DeltaPriceQueryKey = [\n base: \"swap/prices/delta\",\n chainId: number,\n priceParams: DeltaPriceParams & {\n destChainId?: number;\n },\n];\n\n/**\n * 1. With destChainId: number -> returns BridgePrice\n * 2. With destChainId?: undefined -> returns DeltaPrice\n * 3. With destChainId?: number -> returns DeltaPrice | BridgePrice\n */\nexport function useDeltaPriceQuery<TData = BridgePrice>({\n priceParams,\n query,\n chainId,\n timeout,\n}: DeltaPriceQueryInput<TData> & {\n destChainId: number;\n}): DeltaQueryResult<TData>;\nexport function useDeltaPriceQuery<TData = DeltaPrice>({\n priceParams,\n query,\n chainId,\n timeout,\n}: DeltaPriceQueryInput<TData> & {\n destChainId?: undefined;\n}): DeltaQueryResult<TData>;\nexport function useDeltaPriceQuery<TData = DeltaPrice | BridgePrice>({\n priceParams,\n query,\n chainId,\n timeout,\n}: DeltaPriceQueryInput<TData> & {\n destChainId?: number;\n}): DeltaQueryResult<TData>;\nexport function useDeltaPriceQuery<TData = DeltaPrice | BridgePrice>({\n priceParams: _priceParams,\n query,\n chainId,\n timeout,\n destChainId,\n}: DeltaPriceQueryInput<TData> & {\n destChainId?: number;\n}): DeltaQueryResult<TData> {\n const { sdk } = useDeltaSDK({ chainId });\n\n const priceParams: DeltaPriceParams & { destChainId?: number } = {\n ..._priceParams,\n destChainId,\n };\n\n const queryEnabled = query?.enabled ?? true;\n\n // amount tends to change fast during input\n const [debouncedAmount] = useDebouncedValue(priceParams.amount, {\n wait: 500,\n });\n\n // avoid passing unnecessary params to url?search and queryKey\n const sanitizedPriceParams: DeltaPriceParams & { destChainId?: number } = {\n srcToken: priceParams.srcToken,\n destToken: priceParams.destToken,\n amount: debouncedAmount,\n srcDecimals: priceParams.srcDecimals,\n destDecimals: priceParams.destDecimals,\n userAddress: priceParams.userAddress,\n partner: priceParams.partner,\n destChainId: priceParams.destChainId,\n };\n\n return useQuery<DeltaPrice | BridgePrice, Error, TData, DeltaPriceQueryKey>({\n queryKey: [\"swap/prices/delta\", chainId, sanitizedPriceParams],\n queryFn: ({ signal }) => {\n assert(isPriceParamsValid(sanitizedPriceParams), \"destToken is required\");\n const price = sdk.getDeltaPrice(sanitizedPriceParams, {\n signal,\n timeout,\n });\n return price;\n },\n ...query,\n enabled: queryEnabled && isPriceParamsValid(sanitizedPriceParams),\n });\n}\n\nfunction isPriceParamsValid(\n priceParams: DeltaPriceParams\n): priceParams is RequiredDeltaPriceParams {\n return (\n !!priceParams.destToken &&\n !!priceParams.destDecimals &&\n Number(priceParams.amount) > 0\n );\n}\n\nexport function isBridgePrice(\n price: DeltaPrice | BridgePrice\n): price is BridgePrice {\n return \"bridge\" in price;\n}\n"],"names":["useDeltaPriceQuery","t0","$","_c","priceParams","_priceParams","query","chainId","timeout","destChainId","t1","sdk","useDeltaSDK","queryEnabled","enabled","t2","Symbol","for","wait","debouncedAmount","useDebouncedValue","amount","sanitizedPriceParams","srcToken","destToken","srcDecimals","destDecimals","userAddress","partner","useQuery","queryKey","queryFn","t3","signal","assert","isPriceParamsValid","price","getDeltaPrice","Number","isBridgePrice"],"mappings":";;;;;;AAuEO,SAAAA,mBAAAC,EAAAA,EAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AAA8D,EAAA,MAAA;AAAA,IAAAC,WAAAA,EAAAC,YAAAA;AAAAA,IAAAC,KAAAA;AAAAA,IAAAC,OAAAA;AAAAA,IAAAC,OAAAA;AAAAA,IAAAC;AAAAA,GAAA,GAAAR,EAAAA;AAQpE,EAAA,IAAAS,EAAAA;AAAA,EAAA,IAAAR,CAAAA,QAAAK,OAAAA,EAAA;AAC6BG,IAAAA,EAAAA,GAAA;AAAA,MAAAH;AAAAA,KAAA;AAAWL,IAAAA,CAAAA,MAAAK,OAAAA;AAAAL,IAAAA,CAAAA,MAAAQ,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAR,EAAA,CAAA,CAAA;AAAA;AAAvC,EAAA,MAAA;AAAA,IAAAS;AAAAA,GAAA,GAAgBC,YAAYF,EAAW,CAAA;AAEvC,EAAA,MAAAN,WAAAA,GAAA;AAAA,IAAA,GACKC,YAAAA;AAAAA,IAAYI;AAAAA,GAAA;AAIjB,EAAA,MAAAI,YAAAA,GAAqBP,OAAKQ,OAAAA,IAAA,IAAA;AAAkB,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAb,EAAA,CAAA,CAAA,KAAAc,MAAAA,CAAAC,GAAAA,CAAA,2BAAA,CAAA,EAAA;AAGoBF,IAAAA,EAAAA,GAAA;AAAA,MAAAG,IAAAA,EAAA;AAAA,KAAA;AAE/DhB,IAAAA,CAAAA,MAAAa,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAb,EAAA,CAAA,CAAA;AAAA;AAFD,EAAA,MAAA,CAAAiB,eAAA,CAAA,GAA0BC,iBAAAA,CAAkBhB,WAAAA,CAAWiB,QAASN,EAE/D,CAAA;AAGD,EAAA,MAAAO,oBAAAA,GAAA;AAAA,IAAAC,UACYnB,WAAAA,CAAWmB,QAAAA;AAAAA,IAAAC,WACVpB,WAAAA,CAAWoB,SAAAA;AAAAA,IAAAH,MAAAA,EACdF,eAAAA;AAAAA,IAAeM,aACVrB,WAAAA,CAAWqB,WAAAA;AAAAA,IAAAC,cACVtB,WAAAA,CAAWsB,YAAAA;AAAAA,IAAAC,aACZvB,WAAAA,CAAWuB,WAAAA;AAAAA,IAAAC,SACfxB,WAAAA,CAAWwB,OAAAA;AAAAA,IAAAnB,aACPL,WAAAA,CAAWK;AAAAA,GAAA;AACxB,EAAA,OAEKoB,QAAAA,CAAA;AAAA,IAAAC,QAAAA,EAAA,CACM,mBAAA,EAAqBvB,OAAAA,EAASe,oBAAoB,CAAA;AAAA,IAAAS,SAAAC,CAAAA,EAAAA,KAAA;AACnD,MAAA,MAAA;AAAA,QAAAC;AAAAA,OAAA,GAAAD,EAAAA;AACRE,MAAAA,MAAAA,CAAOC,kBAAAA,CAAmBb,oBAAoB,CAAA,EAAG,uBAAuB,CAAA;AACxE,MAAA,MAAAc,KAAAA,GAAczB,GAAAA,CAAG0B,aAAAA,CAAef,oBAAAA,EAAoB;AAAA,QAAAW,MAAAA;AAAAA,QAAAzB;AAAAA,OAGnD,CAAA;AAAE,MAAA,OACI4B,KAAAA;AAAAA,KAAK;AAAA,IAAA,GAEX9B,KAAAA;AAAAA,IAAKQ,OAAAA,EACCD,YAAAA,IAAgBsB,kBAAAA,CAAmBb,oBAAoB;AAAA,GACjE,CAAA;AAAC;AAGJ,SAASa,mBACP/B,WAAAA,EACyC;AACzC,EAAA,OACE,CAAC,CAACA,WAAAA,CAAYoB,SAAAA,IACd,CAAC,CAACpB,WAAAA,CAAYsB,YAAAA,IACdY,MAAAA,CAAOlC,WAAAA,CAAYiB,MAAM,CAAA,GAAI,CAAA;AAEjC;AAEO,SAASkB,cACdH,KAAAA,EACsB;AACtB,EAAA,OAAO,QAAA,IAAYA,KAAAA;AACrB;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWatchDeltaOrder.d.ts","sourceRoot":"","sources":["../../../../../../src/hooks/swap/prices/delta/queries/useWatchDeltaOrder.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAU,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAE1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAQ1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAOpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"useWatchDeltaOrder.d.ts","sourceRoot":"","sources":["../../../../../../src/hooks/swap/prices/delta/queries/useWatchDeltaOrder.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import { assert } from 'ts-essentials';
|
|
|
5
5
|
import { useDeltaSDK } from '../../../../useSDK.js';
|
|
6
6
|
import { isMetaWithTimeStart } from '../bridge/utils.js';
|
|
7
7
|
import { DeltaOrderStatusChecker, isExecutedDeltaAuction, isFailedDeltaAuction, isOrderExpired } from '../orders/utils.js';
|
|
8
|
+
import { useLogger, getLogger } from '../../../../../widget/logger.js';
|
|
8
9
|
|
|
9
10
|
const SINGLE_DELTA_AUCTION_QUERY_KEY_PREFIX = "single_delta_auction";
|
|
10
11
|
const DELTA_ORDER_POLLING_INTERVAL = 3e3;
|
|
@@ -42,7 +43,7 @@ function constructDeltaAuctionPollingQueryOptions({
|
|
|
42
43
|
const queryMeta = query.options.meta;
|
|
43
44
|
const isWithDoneState = !!queryMeta && isMetaWithDoneState(queryMeta);
|
|
44
45
|
if (isWithDoneState && queryMeta.doneState) {
|
|
45
|
-
|
|
46
|
+
getLogger("DeltaAuctionPollingQueryOptions").log("Shortcut return for refetchInterval");
|
|
46
47
|
return false;
|
|
47
48
|
}
|
|
48
49
|
if (maybeOrder) onUpdatedAuction?.(maybeOrder);
|
|
@@ -100,7 +101,6 @@ function useWatchDeltaAuction({
|
|
|
100
101
|
onTimeoutGettingOrder
|
|
101
102
|
});
|
|
102
103
|
useLayoutEffect(() => {
|
|
103
|
-
console.log("Recalculating callbacksRef");
|
|
104
104
|
callbacksRef.current = {
|
|
105
105
|
onAuctionSuccess,
|
|
106
106
|
onAuctionFailure,
|
|
@@ -109,7 +109,6 @@ function useWatchDeltaAuction({
|
|
|
109
109
|
};
|
|
110
110
|
}, [onAuctionSuccess, onAuctionFailure, onUpdatedAuction, onTimeoutGettingOrder]);
|
|
111
111
|
const queryOptions = useMemo(() => {
|
|
112
|
-
console.log("Recalculating queryOptions");
|
|
113
112
|
return constructDeltaAuctionPollingQueryOptions({
|
|
114
113
|
orderId,
|
|
115
114
|
enabled,
|
|
@@ -123,10 +122,11 @@ function useWatchDeltaAuction({
|
|
|
123
122
|
return useQuery(queryOptions);
|
|
124
123
|
}
|
|
125
124
|
function useEnsureDeltaOrderExecuted() {
|
|
126
|
-
const $ = distExports.c(
|
|
125
|
+
const $ = distExports.c(3);
|
|
127
126
|
const queryClient = useQueryClient();
|
|
127
|
+
const logger = useLogger("EnsureDeltaOrderExecuted");
|
|
128
128
|
let t0;
|
|
129
|
-
if ($[0] !== queryClient) {
|
|
129
|
+
if ($[0] !== logger || $[1] !== queryClient) {
|
|
130
130
|
t0 = async (t1) => {
|
|
131
131
|
const {
|
|
132
132
|
orderId,
|
|
@@ -140,7 +140,7 @@ function useEnsureDeltaOrderExecuted() {
|
|
|
140
140
|
const promise = new Promise((resolve, reject) => {
|
|
141
141
|
const startedQueryAt = Date.now();
|
|
142
142
|
let timeout = setTimeout(() => {
|
|
143
|
-
|
|
143
|
+
logger.log("QueryObserver", queryKey, "timeout");
|
|
144
144
|
unsubscribe();
|
|
145
145
|
reject(new Error(`Order ${orderId} not found`));
|
|
146
146
|
}, LOOK_FOR_ORDER_TIMEOUT + 1e3);
|
|
@@ -153,10 +153,10 @@ function useEnsureDeltaOrderExecuted() {
|
|
|
153
153
|
});
|
|
154
154
|
const unsubscribe = observer.subscribe((result) => {
|
|
155
155
|
const cleanup = () => {
|
|
156
|
-
|
|
156
|
+
logger.log("QueryObserver", queryKey, "cleanup");
|
|
157
157
|
unsubscribe();
|
|
158
158
|
};
|
|
159
|
-
|
|
159
|
+
logger.log("QueryObserver", queryKey, result);
|
|
160
160
|
const maybeOrder = result.data;
|
|
161
161
|
if (maybeOrder && timeout !== null) {
|
|
162
162
|
clearTimeout(timeout);
|
|
@@ -191,10 +191,11 @@ function useEnsureDeltaOrderExecuted() {
|
|
|
191
191
|
});
|
|
192
192
|
return promise;
|
|
193
193
|
};
|
|
194
|
-
$[0] =
|
|
195
|
-
$[1] =
|
|
194
|
+
$[0] = logger;
|
|
195
|
+
$[1] = queryClient;
|
|
196
|
+
$[2] = t0;
|
|
196
197
|
} else {
|
|
197
|
-
t0 = $[
|
|
198
|
+
t0 = $[2];
|
|
198
199
|
}
|
|
199
200
|
const ensureOrderSent = t0;
|
|
200
201
|
return ensureOrderSent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWatchDeltaOrder.js","sources":["../../../../../../src/hooks/swap/prices/delta/queries/useWatchDeltaOrder.ts"],"sourcesContent":["import {\n QueryObserver,\n useQueries,\n useQuery,\n useQueryClient,\n type QueryMeta,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport { useLayoutEffect, useMemo, useRef } from \"react\";\nimport { assert, type MarkOptional } from \"ts-essentials\";\nimport { useDeltaSDK } from \"@/hooks/useSDK\";\nimport type { DeltaOrderFromAPI } from \"./useDeltaOrders\";\nimport {\n isMetaWithTimeStart,\n type BridgedDepositResponseFailure,\n type BridgedDepositResponseSuccess,\n type GetBridgedDepositStatusInput,\n type RefetchMetaWithTiming,\n} from \"../bridge/utils\";\nimport type { BridgedDepositResponse } from \"../bridge/types\";\nimport { useBridgedDepositStatus } from \"../bridge/useBridgedDeposit\";\nimport type { DeltaAuction } from \"@velora-dex/sdk\";\nimport {\n DeltaOrderStatusChecker,\n isExecutedDeltaAuction,\n isFailedDeltaAuction,\n isOrderExpired,\n} from \"../orders/utils\";\nimport type { ExecutedDeltaAuction, FailedDeltaAuction } from \"../orders/types\";\n\n// ------------------------------------ Single Delta Auction -----------------------------------\n\nconst SINGLE_DELTA_AUCTION_QUERY_KEY_PREFIX = \"single_delta_auction\";\ntype SingleDeltaAuctionQueryKey = [\n base: typeof SINGLE_DELTA_AUCTION_QUERY_KEY_PREFIX,\n orderId?: string,\n];\n\nexport type MaybeVeloraDeltaAuction = DeltaOrderFromAPI | null; // null is when no such Order for orderId\n\ntype UseDeltaAuctionQueryOptions<TData = MaybeVeloraDeltaAuction> =\n UseQueryOptions<\n MaybeVeloraDeltaAuction,\n Error,\n TData,\n SingleDeltaAuctionQueryKey\n >;\n\nconst DELTA_ORDER_POLLING_INTERVAL = 3_000;\n\ntype ConstructDeltaAuctionPollingQueryOptionsInput = {\n orderId?: string;\n enabled?: boolean;\n getAuction(\n orderId: string,\n requestParams: { signal?: AbortSignal }\n ): Promise<MaybeVeloraDeltaAuction>;\n} & Pick<\n UseWatchMultiDeltaAuctions,\n | \"onAuctionSuccess\"\n | \"onAuctionFailure\"\n | \"onUpdatedAuction\"\n | \"onTimeoutGettingOrder\"\n>;\n\nconst LOOK_FOR_ORDER_TIMEOUT = 60_000;\n\nfunction constructDeltaAuctionPollingQueryOptions({\n orderId,\n enabled,\n getAuction,\n onUpdatedAuction,\n onAuctionSuccess,\n onAuctionFailure,\n onTimeoutGettingOrder,\n}: ConstructDeltaAuctionPollingQueryOptionsInput): Pick<\n UseDeltaAuctionQueryOptions<MaybeVeloraDeltaAuction>,\n \"queryKey\" | \"queryFn\" | \"meta\" | \"refetchInterval\" | \"enabled\"\n> {\n const doneState = false;\n\n const isMetaWithDoneState = (\n queryMeta: QueryMeta\n ): queryMeta is { doneState: boolean } => {\n return \"doneState\" in queryMeta && typeof queryMeta.doneState === \"boolean\";\n };\n\n // queryOptions has to be memoized, otherwise queryMeta is updated on each render,\n // including startedQueryAt\n const meta: RefetchMetaWithTiming & {\n doneState: boolean;\n } = {\n startedQueryAt: Date.now(),\n doneState,\n };\n\n return {\n queryKey: [SINGLE_DELTA_AUCTION_QUERY_KEY_PREFIX, orderId],\n queryFn: ({ signal }) => {\n assert(orderId, \"orderId is required\");\n return getAuction(orderId, { signal });\n },\n meta,\n refetchInterval: (query) => {\n const maybeOrder = query.state.data;\n\n const queryMeta = query.options.meta;\n // refetchInterval is called on each render, regardless of queryOptions memoizations.\n // @TODO rework Watch Order logic to avoid callbacks inside refetchInterval,\n // or do away with these callbacks, they are unused currently.\n const isWithDoneState = !!queryMeta && isMetaWithDoneState(queryMeta);\n if (isWithDoneState && queryMeta.doneState) {\n console.log(\"Shortcut return for refetchInterval\");\n return false;\n }\n\n // Order could have an updated status during its lifecycle\n if (maybeOrder) onUpdatedAuction?.(maybeOrder);\n\n // Order done with one way or the other\n if (\n maybeOrder &&\n DeltaOrderStatusChecker.completed.has(maybeOrder.status)\n ) {\n // Crosschain Orders are considered executed when both srcChain and destChain are executed\n if (isExecutedDeltaAuction(maybeOrder)) {\n onAuctionSuccess?.(maybeOrder);\n if (isWithDoneState) {\n queryMeta.doneState = true;\n }\n return false; // stop polling\n }\n if (isFailedDeltaAuction(maybeOrder) || isOrderExpired(maybeOrder)) {\n onAuctionFailure?.(maybeOrder);\n if (isWithDoneState) {\n queryMeta.doneState = true;\n }\n return false; // stop polling\n }\n }\n\n if (maybeOrder === null && queryMeta && isMetaWithTimeStart(queryMeta)) {\n // no Order for this orderId for a long time\n const elapsed = Date.now() - queryMeta.startedQueryAt;\n if (elapsed > LOOK_FOR_ORDER_TIMEOUT) {\n assert(orderId, \"orderId is required\");\n onTimeoutGettingOrder?.({ id: orderId });\n if (isWithDoneState) {\n queryMeta.doneState = true;\n }\n return false; // stop polling after 1 minute\n }\n }\n\n return DELTA_ORDER_POLLING_INTERVAL; // default interval for both crosschain and singlechain Orders\n },\n enabled: !!orderId && enabled,\n };\n}\n\n// ----------------- Single Delta Query -----------------------------------\n\ntype UseWatchDeltaAuctionQueryInput = {\n orderId?: string;\n enabled?: boolean;\n onAuctionSuccess?: (auction: ExecutedDeltaAuction) => void;\n onAuctionFailure?: (auction: FailedDeltaAuction) => void;\n onUpdatedAuction?: (auction: MarkOptional<DeltaAuction, \"signature\">) => void;\n onTimeoutGettingOrder?: (auction: Pick<DeltaAuction, \"id\">) => void;\n};\n\nexport function useWatchDeltaAuction({\n orderId,\n enabled = true,\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n}: UseWatchDeltaAuctionQueryInput): UseQueryResult<MaybeVeloraDeltaAuction> {\n const { sdk } = useDeltaSDK({ chainId: 1 }); // chain doesn't matter\n\n const callbacksRef = useRef({\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n });\n\n useLayoutEffect(() => {\n console.log(\"Recalculating callbacksRef\");\n callbacksRef.current = {\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n };\n }, [\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n ]);\n\n const queryOptions = useMemo(() => {\n console.log(\"Recalculating queryOptions\");\n return constructDeltaAuctionPollingQueryOptions({\n orderId,\n enabled,\n getAuction: sdk.getDeltaOrderById,\n onUpdatedAuction: callbacksRef.current.onUpdatedAuction,\n onAuctionSuccess: callbacksRef.current.onAuctionSuccess,\n onAuctionFailure: callbacksRef.current.onAuctionFailure,\n onTimeoutGettingOrder: callbacksRef.current.onTimeoutGettingOrder,\n });\n }, [orderId, enabled, sdk.getDeltaOrderById]);\n\n return useQuery<\n MaybeVeloraDeltaAuction,\n Error,\n MaybeVeloraDeltaAuction,\n SingleDeltaAuctionQueryKey\n >(queryOptions);\n}\n\ntype EnsureOrderExecutedFn = (options: {\n orderId: string;\n signal?: AbortSignal;\n}) => Promise<MaybeVeloraDeltaAuction>;\n\nexport function useEnsureDeltaOrderExecuted(): EnsureOrderExecutedFn {\n const queryClient = useQueryClient();\n\n const ensureOrderSent: EnsureOrderExecutedFn = async ({\n orderId,\n signal,\n }): Promise<MaybeVeloraDeltaAuction> => {\n const queryKey: SingleDeltaAuctionQueryKey = [\n SINGLE_DELTA_AUCTION_QUERY_KEY_PREFIX,\n orderId,\n ];\n\n const observer = new QueryObserver<\n MaybeVeloraDeltaAuction,\n Error,\n MaybeVeloraDeltaAuction,\n SingleDeltaAuctionQueryKey\n >(queryClient, {\n queryKey,\n enabled: false, // no queryFn, just subscription\n // @TODO consider if we want queryFn to have refetching separate from useDeltaFlow\n });\n\n const promise = new Promise<MaybeVeloraDeltaAuction>((resolve, reject) => {\n const startedQueryAt = Date.now();\n\n // don't leave the promise and therefore the observer hanging,\n // if useWatchDeltaAuction doesn't finish its job and stops triggering the subscription\n let timeout: NodeJS.Timeout | null = setTimeout(() => {\n console.log(\"QueryObserver\", queryKey, \"timeout\");\n unsubscribe();\n reject(new Error(`Order ${orderId} not found`));\n }, LOOK_FOR_ORDER_TIMEOUT + 1000); // a bit of jitter time\n\n signal?.addEventListener(\"abort\", () => {\n if (timeout) {\n clearTimeout(timeout);\n }\n unsubscribe();\n reject(new Error(`Order execution aborted: ${signal.reason}`));\n });\n\n const unsubscribe = observer.subscribe((result) => {\n const cleanup = () => {\n console.log(\"QueryObserver\", queryKey, \"cleanup\");\n unsubscribe();\n };\n\n console.log(\"QueryObserver\", queryKey, result);\n\n const maybeOrder = result.data;\n\n if (maybeOrder && timeout !== null) {\n // Order fetched at least once\n clearTimeout(timeout);\n timeout = null;\n }\n\n // Order done with one way or the other\n if (\n maybeOrder &&\n DeltaOrderStatusChecker.completed.has(maybeOrder.status)\n ) {\n // Crosschain Orders are considered executed when both srcChain and destChain are executed\n if (isExecutedDeltaAuction(maybeOrder)) {\n cleanup();\n resolve(maybeOrder);\n return;\n }\n if (isFailedDeltaAuction(maybeOrder)) {\n cleanup();\n reject(maybeOrder);\n return;\n }\n }\n\n if (maybeOrder === null) {\n // no Order for this orderId for a long time\n const elapsed = Date.now() - startedQueryAt;\n if (elapsed > LOOK_FOR_ORDER_TIMEOUT) {\n cleanup();\n reject(new Error(`Order ${orderId} not found`));\n return;\n }\n }\n if (result.error) {\n cleanup();\n reject(result.error);\n return;\n }\n });\n });\n\n return promise;\n };\n\n return ensureOrderSent;\n}\n\n// ----------------- Multi Delta Queries -----------------------------------\n\ntype UseWatchMultiDeltaAuctions = {\n orderIds: string[];\n enabled?: boolean;\n onAuctionSuccess?: (auction: ExecutedDeltaAuction) => void;\n onAuctionFailure?: (auction: FailedDeltaAuction) => void;\n onUpdatedAuction?: (auction: MarkOptional<DeltaAuction, \"signature\">) => void;\n onTimeoutGettingOrder?: (auction: Pick<DeltaAuction, \"id\">) => void;\n};\n\nexport function useWatchMultiDeltaAuctions({\n orderIds,\n enabled = true,\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n}: UseWatchMultiDeltaAuctions): UseQueryResult<MaybeVeloraDeltaAuction>[] {\n const { sdk } = useDeltaSDK({ chainId: 1 }); // chain doesn't matter\n\n const callbacksRef = useRef({\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n });\n\n useLayoutEffect(() => {\n console.log(\"Recalculating callbacksRef\");\n callbacksRef.current = {\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n };\n }, [\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n ]);\n\n const queries = useMemo<\n UseDeltaAuctionQueryOptions<MaybeVeloraDeltaAuction>[]\n >(\n () =>\n orderIds.map((orderId) =>\n constructDeltaAuctionPollingQueryOptions({\n orderId,\n enabled,\n getAuction: sdk.getDeltaOrderById,\n onUpdatedAuction: callbacksRef.current.onUpdatedAuction,\n onAuctionSuccess: callbacksRef.current.onAuctionSuccess,\n onAuctionFailure: callbacksRef.current.onAuctionFailure,\n onTimeoutGettingOrder: callbacksRef.current.onTimeoutGettingOrder,\n })\n ),\n [enabled, orderIds, sdk.getDeltaOrderById]\n );\n\n const auctionsResults = useQueries({ queries });\n\n return auctionsResults;\n}\n\ntype MultiOrdersStatusCrossChainInput = {\n orders: DeltaOrderFromAPI[];\n onAuctionSuccess?: (order: DeltaOrderFromAPI) => void;\n onAuctionFailure?: (order: DeltaOrderFromAPI) => void;\n onUpdatedAuction?: (\n auction: MarkOptional<DeltaAuction, \"signature\">,\n bridgeResponse: BridgedDepositResponse\n ) => void;\n};\n\n// can be used for checking Crosschain Order status checking\n// if status check from API is slow to update\nexport function useWatchMultiOrdersStatusCrossChain({\n orders,\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n}: MultiOrdersStatusCrossChainInput): UseQueryResult<BridgedDepositResponse>[] {\n const { deposits, onNewResponse, onDepositSuccess, onDepositFailure } =\n useMemo(() => {\n const { deposits, depositId2Order } = orders.reduce<{\n deposits: GetBridgedDepositStatusInput[];\n depositId2Order: Record<string, DeltaOrderFromAPI>;\n }>(\n (acc, order) => {\n if (order.bridgeMetadata?.depositId) {\n acc.deposits.push({\n depositId: String(order.bridgeMetadata.depositId),\n originChainId: order.chainId,\n });\n acc.depositId2Order[order.bridgeMetadata.depositId] = order;\n }\n return acc;\n },\n { deposits: [], depositId2Order: {} }\n );\n const onNewResponse = (response: BridgedDepositResponse) => {\n const order = depositId2Order[response.depositId];\n if (order) {\n onUpdatedAuction?.(order, response);\n }\n };\n\n const onDepositSuccess = onAuctionSuccess\n ? (deposit: BridgedDepositResponseSuccess) => {\n const order = depositId2Order[deposit.depositId];\n if (order) {\n const successfulOrder = {\n ...order,\n bridgeStatus: deposit.status,\n bridgeMetadata: {\n ...order.bridgeMetadata,\n fillTx: deposit.fillTx,\n },\n } as DeltaOrderFromAPI; // order.bridgeMetadata should be filled but not according to types\n onAuctionSuccess(successfulOrder);\n }\n }\n : undefined;\n\n const onDepositFailure = onAuctionFailure\n ? (deposit: BridgedDepositResponseFailure) => {\n const order = depositId2Order[deposit.depositId];\n if (order) {\n const failedOrder = {\n ...order,\n bridgeStatus: deposit.status,\n bridgeMetadata: {\n ...order.bridgeMetadata,\n fillTx: deposit.fillTx || undefined,\n },\n } as DeltaOrderFromAPI; // order.bridgeMetadata should be filled but not according to types\n onAuctionFailure(failedOrder);\n }\n }\n : undefined;\n\n return { deposits, onNewResponse, onDepositSuccess, onDepositFailure };\n }, [orders, onAuctionSuccess, onAuctionFailure, onUpdatedAuction]);\n\n const depositStatuses = useBridgedDepositStatus({\n deposits,\n onNewResponse,\n onDepositSuccess,\n onDepositFailure,\n });\n\n return depositStatuses;\n}\n"],"names":["SINGLE_DELTA_AUCTION_QUERY_KEY_PREFIX","DELTA_ORDER_POLLING_INTERVAL","LOOK_FOR_ORDER_TIMEOUT","constructDeltaAuctionPollingQueryOptions","orderId","enabled","getAuction","onUpdatedAuction","onAuctionSuccess","onAuctionFailure","onTimeoutGettingOrder","doneState","isMetaWithDoneState","queryMeta","meta","startedQueryAt","Date","now","queryKey","queryFn","signal","assert","refetchInterval","query","maybeOrder","state","data","options","isWithDoneState","console","log","DeltaOrderStatusChecker","completed","has","status","isExecutedDeltaAuction","isFailedDeltaAuction","isOrderExpired","isMetaWithTimeStart","elapsed","id","useWatchDeltaAuction","sdk","useDeltaSDK","chainId","callbacksRef","useRef","useLayoutEffect","current","queryOptions","useMemo","getDeltaOrderById","useQuery","useEnsureDeltaOrderExecuted","$","_c","queryClient","useQueryClient","t0","t1","observer","QueryObserver","promise","Promise","resolve","reject","timeout","setTimeout","unsubscribe","Error","addEventListener","clearTimeout","reason","subscribe","result","cleanup","error","ensureOrderSent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useWatchDeltaOrder.js","sources":["../../../../../../src/hooks/swap/prices/delta/queries/useWatchDeltaOrder.ts"],"sourcesContent":["import {\n QueryObserver,\n useQueries,\n useQuery,\n useQueryClient,\n type QueryMeta,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport { useLayoutEffect, useMemo, useRef } from \"react\";\nimport { assert, type MarkOptional } from \"ts-essentials\";\nimport { useDeltaSDK } from \"@/hooks/useSDK\";\nimport type { DeltaOrderFromAPI } from \"./useDeltaOrders\";\nimport {\n isMetaWithTimeStart,\n type BridgedDepositResponseFailure,\n type BridgedDepositResponseSuccess,\n type GetBridgedDepositStatusInput,\n type RefetchMetaWithTiming,\n} from \"../bridge/utils\";\nimport type { BridgedDepositResponse } from \"../bridge/types\";\nimport { useBridgedDepositStatus } from \"../bridge/useBridgedDeposit\";\nimport type { DeltaAuction } from \"@velora-dex/sdk\";\nimport {\n DeltaOrderStatusChecker,\n isExecutedDeltaAuction,\n isFailedDeltaAuction,\n isOrderExpired,\n} from \"../orders/utils\";\nimport type { ExecutedDeltaAuction, FailedDeltaAuction } from \"../orders/types\";\nimport { getLogger, useLogger } from \"@/widget/logger\";\n\n// ------------------------------------ Single Delta Auction -----------------------------------\n\nconst SINGLE_DELTA_AUCTION_QUERY_KEY_PREFIX = \"single_delta_auction\";\ntype SingleDeltaAuctionQueryKey = [\n base: typeof SINGLE_DELTA_AUCTION_QUERY_KEY_PREFIX,\n orderId?: string,\n];\n\nexport type MaybeVeloraDeltaAuction = DeltaOrderFromAPI | null; // null is when no such Order for orderId\n\ntype UseDeltaAuctionQueryOptions<TData = MaybeVeloraDeltaAuction> =\n UseQueryOptions<\n MaybeVeloraDeltaAuction,\n Error,\n TData,\n SingleDeltaAuctionQueryKey\n >;\n\nconst DELTA_ORDER_POLLING_INTERVAL = 3_000;\n\ntype ConstructDeltaAuctionPollingQueryOptionsInput = {\n orderId?: string;\n enabled?: boolean;\n getAuction(\n orderId: string,\n requestParams: { signal?: AbortSignal }\n ): Promise<MaybeVeloraDeltaAuction>;\n} & Pick<\n UseWatchMultiDeltaAuctions,\n | \"onAuctionSuccess\"\n | \"onAuctionFailure\"\n | \"onUpdatedAuction\"\n | \"onTimeoutGettingOrder\"\n>;\n\nconst LOOK_FOR_ORDER_TIMEOUT = 60_000;\n\nfunction constructDeltaAuctionPollingQueryOptions({\n orderId,\n enabled,\n getAuction,\n onUpdatedAuction,\n onAuctionSuccess,\n onAuctionFailure,\n onTimeoutGettingOrder,\n}: ConstructDeltaAuctionPollingQueryOptionsInput): Pick<\n UseDeltaAuctionQueryOptions<MaybeVeloraDeltaAuction>,\n \"queryKey\" | \"queryFn\" | \"meta\" | \"refetchInterval\" | \"enabled\"\n> {\n const doneState = false;\n\n const isMetaWithDoneState = (\n queryMeta: QueryMeta\n ): queryMeta is { doneState: boolean } => {\n return \"doneState\" in queryMeta && typeof queryMeta.doneState === \"boolean\";\n };\n\n // queryOptions has to be memoized, otherwise queryMeta is updated on each render,\n // including startedQueryAt\n const meta: RefetchMetaWithTiming & {\n doneState: boolean;\n } = {\n startedQueryAt: Date.now(),\n doneState,\n };\n\n return {\n queryKey: [SINGLE_DELTA_AUCTION_QUERY_KEY_PREFIX, orderId],\n queryFn: ({ signal }) => {\n assert(orderId, \"orderId is required\");\n return getAuction(orderId, { signal });\n },\n meta,\n refetchInterval: (query) => {\n const maybeOrder = query.state.data;\n\n const queryMeta = query.options.meta;\n // refetchInterval is called on each render, regardless of queryOptions memoizations.\n // @TODO rework Watch Order logic to avoid callbacks inside refetchInterval,\n // or do away with these callbacks, they are unused currently.\n const isWithDoneState = !!queryMeta && isMetaWithDoneState(queryMeta);\n if (isWithDoneState && queryMeta.doneState) {\n getLogger(\"DeltaAuctionPollingQueryOptions\").log(\n \"Shortcut return for refetchInterval\"\n );\n return false;\n }\n\n // Order could have an updated status during its lifecycle\n if (maybeOrder) onUpdatedAuction?.(maybeOrder);\n\n // Order done with one way or the other\n if (\n maybeOrder &&\n DeltaOrderStatusChecker.completed.has(maybeOrder.status)\n ) {\n // Crosschain Orders are considered executed when both srcChain and destChain are executed\n if (isExecutedDeltaAuction(maybeOrder)) {\n onAuctionSuccess?.(maybeOrder);\n if (isWithDoneState) {\n queryMeta.doneState = true;\n }\n return false; // stop polling\n }\n if (isFailedDeltaAuction(maybeOrder) || isOrderExpired(maybeOrder)) {\n onAuctionFailure?.(maybeOrder);\n if (isWithDoneState) {\n queryMeta.doneState = true;\n }\n return false; // stop polling\n }\n }\n\n if (maybeOrder === null && queryMeta && isMetaWithTimeStart(queryMeta)) {\n // no Order for this orderId for a long time\n const elapsed = Date.now() - queryMeta.startedQueryAt;\n if (elapsed > LOOK_FOR_ORDER_TIMEOUT) {\n assert(orderId, \"orderId is required\");\n onTimeoutGettingOrder?.({ id: orderId });\n if (isWithDoneState) {\n queryMeta.doneState = true;\n }\n return false; // stop polling after 1 minute\n }\n }\n\n return DELTA_ORDER_POLLING_INTERVAL; // default interval for both crosschain and singlechain Orders\n },\n enabled: !!orderId && enabled,\n };\n}\n\n// ----------------- Single Delta Query -----------------------------------\n\ntype UseWatchDeltaAuctionQueryInput = {\n orderId?: string;\n enabled?: boolean;\n onAuctionSuccess?: (auction: ExecutedDeltaAuction) => void;\n onAuctionFailure?: (auction: FailedDeltaAuction) => void;\n onUpdatedAuction?: (auction: MarkOptional<DeltaAuction, \"signature\">) => void;\n onTimeoutGettingOrder?: (auction: Pick<DeltaAuction, \"id\">) => void;\n};\n\nexport function useWatchDeltaAuction({\n orderId,\n enabled = true,\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n}: UseWatchDeltaAuctionQueryInput): UseQueryResult<MaybeVeloraDeltaAuction> {\n const { sdk } = useDeltaSDK({ chainId: 1 }); // chain doesn't matter\n\n const callbacksRef = useRef({\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n });\n\n useLayoutEffect(() => {\n callbacksRef.current = {\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n };\n }, [\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n ]);\n\n const queryOptions = useMemo(() => {\n return constructDeltaAuctionPollingQueryOptions({\n orderId,\n enabled,\n getAuction: sdk.getDeltaOrderById,\n onUpdatedAuction: callbacksRef.current.onUpdatedAuction,\n onAuctionSuccess: callbacksRef.current.onAuctionSuccess,\n onAuctionFailure: callbacksRef.current.onAuctionFailure,\n onTimeoutGettingOrder: callbacksRef.current.onTimeoutGettingOrder,\n });\n }, [orderId, enabled, sdk.getDeltaOrderById]);\n\n return useQuery<\n MaybeVeloraDeltaAuction,\n Error,\n MaybeVeloraDeltaAuction,\n SingleDeltaAuctionQueryKey\n >(queryOptions);\n}\n\ntype EnsureOrderExecutedFn = (options: {\n orderId: string;\n signal?: AbortSignal;\n}) => Promise<MaybeVeloraDeltaAuction>;\n\nexport function useEnsureDeltaOrderExecuted(): EnsureOrderExecutedFn {\n const queryClient = useQueryClient();\n const logger = useLogger(\"EnsureDeltaOrderExecuted\");\n\n const ensureOrderSent: EnsureOrderExecutedFn = async ({\n orderId,\n signal,\n }): Promise<MaybeVeloraDeltaAuction> => {\n const queryKey: SingleDeltaAuctionQueryKey = [\n SINGLE_DELTA_AUCTION_QUERY_KEY_PREFIX,\n orderId,\n ];\n\n const observer = new QueryObserver<\n MaybeVeloraDeltaAuction,\n Error,\n MaybeVeloraDeltaAuction,\n SingleDeltaAuctionQueryKey\n >(queryClient, {\n queryKey,\n enabled: false, // no queryFn, just subscription\n // @TODO consider if we want queryFn to have refetching separate from useDeltaFlow\n });\n\n const promise = new Promise<MaybeVeloraDeltaAuction>((resolve, reject) => {\n const startedQueryAt = Date.now();\n\n // don't leave the promise and therefore the observer hanging,\n // if useWatchDeltaAuction doesn't finish its job and stops triggering the subscription\n let timeout: NodeJS.Timeout | null = setTimeout(() => {\n logger.log(\"QueryObserver\", queryKey, \"timeout\");\n unsubscribe();\n reject(new Error(`Order ${orderId} not found`));\n }, LOOK_FOR_ORDER_TIMEOUT + 1000); // a bit of jitter time\n\n signal?.addEventListener(\"abort\", () => {\n if (timeout) {\n clearTimeout(timeout);\n }\n unsubscribe();\n reject(new Error(`Order execution aborted: ${signal.reason}`));\n });\n\n const unsubscribe = observer.subscribe((result) => {\n const cleanup = () => {\n logger.log(\"QueryObserver\", queryKey, \"cleanup\");\n unsubscribe();\n };\n\n logger.log(\"QueryObserver\", queryKey, result);\n\n const maybeOrder = result.data;\n\n if (maybeOrder && timeout !== null) {\n // Order fetched at least once\n clearTimeout(timeout);\n timeout = null;\n }\n\n // Order done with one way or the other\n if (\n maybeOrder &&\n DeltaOrderStatusChecker.completed.has(maybeOrder.status)\n ) {\n // Crosschain Orders are considered executed when both srcChain and destChain are executed\n if (isExecutedDeltaAuction(maybeOrder)) {\n cleanup();\n resolve(maybeOrder);\n return;\n }\n if (isFailedDeltaAuction(maybeOrder)) {\n cleanup();\n reject(maybeOrder);\n return;\n }\n }\n\n if (maybeOrder === null) {\n // no Order for this orderId for a long time\n const elapsed = Date.now() - startedQueryAt;\n if (elapsed > LOOK_FOR_ORDER_TIMEOUT) {\n cleanup();\n reject(new Error(`Order ${orderId} not found`));\n return;\n }\n }\n if (result.error) {\n cleanup();\n reject(result.error);\n return;\n }\n });\n });\n\n return promise;\n };\n\n return ensureOrderSent;\n}\n\n// ----------------- Multi Delta Queries -----------------------------------\n\ntype UseWatchMultiDeltaAuctions = {\n orderIds: string[];\n enabled?: boolean;\n onAuctionSuccess?: (auction: ExecutedDeltaAuction) => void;\n onAuctionFailure?: (auction: FailedDeltaAuction) => void;\n onUpdatedAuction?: (auction: MarkOptional<DeltaAuction, \"signature\">) => void;\n onTimeoutGettingOrder?: (auction: Pick<DeltaAuction, \"id\">) => void;\n};\n\nexport function useWatchMultiDeltaAuctions({\n orderIds,\n enabled = true,\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n}: UseWatchMultiDeltaAuctions): UseQueryResult<MaybeVeloraDeltaAuction>[] {\n const { sdk } = useDeltaSDK({ chainId: 1 }); // chain doesn't matter\n\n const callbacksRef = useRef({\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n });\n\n useLayoutEffect(() => {\n callbacksRef.current = {\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n };\n }, [\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n onTimeoutGettingOrder,\n ]);\n\n const queries = useMemo<\n UseDeltaAuctionQueryOptions<MaybeVeloraDeltaAuction>[]\n >(\n () =>\n orderIds.map((orderId) =>\n constructDeltaAuctionPollingQueryOptions({\n orderId,\n enabled,\n getAuction: sdk.getDeltaOrderById,\n onUpdatedAuction: callbacksRef.current.onUpdatedAuction,\n onAuctionSuccess: callbacksRef.current.onAuctionSuccess,\n onAuctionFailure: callbacksRef.current.onAuctionFailure,\n onTimeoutGettingOrder: callbacksRef.current.onTimeoutGettingOrder,\n })\n ),\n [enabled, orderIds, sdk.getDeltaOrderById]\n );\n\n const auctionsResults = useQueries({ queries });\n\n return auctionsResults;\n}\n\ntype MultiOrdersStatusCrossChainInput = {\n orders: DeltaOrderFromAPI[];\n onAuctionSuccess?: (order: DeltaOrderFromAPI) => void;\n onAuctionFailure?: (order: DeltaOrderFromAPI) => void;\n onUpdatedAuction?: (\n auction: MarkOptional<DeltaAuction, \"signature\">,\n bridgeResponse: BridgedDepositResponse\n ) => void;\n};\n\n// can be used for checking Crosschain Order status checking\n// if status check from API is slow to update\nexport function useWatchMultiOrdersStatusCrossChain({\n orders,\n onAuctionSuccess,\n onAuctionFailure,\n onUpdatedAuction,\n}: MultiOrdersStatusCrossChainInput): UseQueryResult<BridgedDepositResponse>[] {\n const { deposits, onNewResponse, onDepositSuccess, onDepositFailure } =\n useMemo(() => {\n const { deposits, depositId2Order } = orders.reduce<{\n deposits: GetBridgedDepositStatusInput[];\n depositId2Order: Record<string, DeltaOrderFromAPI>;\n }>(\n (acc, order) => {\n if (order.bridgeMetadata?.depositId) {\n acc.deposits.push({\n depositId: String(order.bridgeMetadata.depositId),\n originChainId: order.chainId,\n });\n acc.depositId2Order[order.bridgeMetadata.depositId] = order;\n }\n return acc;\n },\n { deposits: [], depositId2Order: {} }\n );\n const onNewResponse = (response: BridgedDepositResponse) => {\n const order = depositId2Order[response.depositId];\n if (order) {\n onUpdatedAuction?.(order, response);\n }\n };\n\n const onDepositSuccess = onAuctionSuccess\n ? (deposit: BridgedDepositResponseSuccess) => {\n const order = depositId2Order[deposit.depositId];\n if (order) {\n const successfulOrder = {\n ...order,\n bridgeStatus: deposit.status,\n bridgeMetadata: {\n ...order.bridgeMetadata,\n fillTx: deposit.fillTx,\n },\n } as DeltaOrderFromAPI; // order.bridgeMetadata should be filled but not according to types\n onAuctionSuccess(successfulOrder);\n }\n }\n : undefined;\n\n const onDepositFailure = onAuctionFailure\n ? (deposit: BridgedDepositResponseFailure) => {\n const order = depositId2Order[deposit.depositId];\n if (order) {\n const failedOrder = {\n ...order,\n bridgeStatus: deposit.status,\n bridgeMetadata: {\n ...order.bridgeMetadata,\n fillTx: deposit.fillTx || undefined,\n },\n } as DeltaOrderFromAPI; // order.bridgeMetadata should be filled but not according to types\n onAuctionFailure(failedOrder);\n }\n }\n : undefined;\n\n return { deposits, onNewResponse, onDepositSuccess, onDepositFailure };\n }, [orders, onAuctionSuccess, onAuctionFailure, onUpdatedAuction]);\n\n const depositStatuses = useBridgedDepositStatus({\n deposits,\n onNewResponse,\n onDepositSuccess,\n onDepositFailure,\n });\n\n return depositStatuses;\n}\n"],"names":["SINGLE_DELTA_AUCTION_QUERY_KEY_PREFIX","DELTA_ORDER_POLLING_INTERVAL","LOOK_FOR_ORDER_TIMEOUT","constructDeltaAuctionPollingQueryOptions","orderId","enabled","getAuction","onUpdatedAuction","onAuctionSuccess","onAuctionFailure","onTimeoutGettingOrder","doneState","isMetaWithDoneState","queryMeta","meta","startedQueryAt","Date","now","queryKey","queryFn","signal","assert","refetchInterval","query","maybeOrder","state","data","options","isWithDoneState","getLogger","log","DeltaOrderStatusChecker","completed","has","status","isExecutedDeltaAuction","isFailedDeltaAuction","isOrderExpired","isMetaWithTimeStart","elapsed","id","useWatchDeltaAuction","sdk","useDeltaSDK","chainId","callbacksRef","useRef","useLayoutEffect","current","queryOptions","useMemo","getDeltaOrderById","useQuery","useEnsureDeltaOrderExecuted","$","_c","queryClient","useQueryClient","logger","useLogger","t0","t1","observer","QueryObserver","promise","Promise","resolve","reject","timeout","setTimeout","unsubscribe","Error","addEventListener","clearTimeout","reason","subscribe","result","cleanup","error","ensureOrderSent"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { RateParamsInput } from './market/queries/useMarketPriceQuery';
|
|
2
2
|
import { MarkOptional, MarkRequired } from 'ts-essentials';
|
|
3
3
|
import { SupportedChainId } from '../../../lib/web3/wagmi/types';
|
|
4
|
-
type FetchPriceParams = MarkRequired<MarkOptional<Pick<RateParamsInput, "srcToken" | "destToken" | "amount" | "userAddress" | "side" | "srcDecimals" | "destDecimals" | "partner" | "ignoreBadUsdPrice">, "destToken">, "srcDecimals" | "side">;
|
|
4
|
+
type FetchPriceParams = MarkRequired<MarkOptional<Pick<RateParamsInput, "srcToken" | "destToken" | "amount" | "userAddress" | "side" | "srcDecimals" | "destDecimals" | "partner" | "ignoreBadUsdPrice" | "srcTokenDexTransferFee" | "destTokenDexTransferFee">, "destToken">, "srcDecimals" | "side">;
|
|
5
5
|
export declare function usePricesParams(): {
|
|
6
6
|
priceParams: FetchPriceParams;
|
|
7
7
|
isCrossChain: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePricesParams.d.ts","sourceRoot":"","sources":["../../../../src/hooks/swap/prices/usePricesParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAW5E,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"usePricesParams.d.ts","sourceRoot":"","sources":["../../../../src/hooks/swap/prices/usePricesParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAW5E,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,KAAK,gBAAgB,GAAG,YAAY,CAClC,YAAY,CACV,IAAI,CACF,eAAe,EACb,UAAU,GACV,WAAW,GACX,QAAQ,GACR,aAAa,GACb,MAAM,GACN,aAAa,GACb,cAAc,GACd,SAAS,GACT,mBAAmB,GACnB,wBAAwB,GACxB,yBAAyB,CAC5B,EACD,WAAW,CACZ,EACD,aAAa,GAAG,MAAM,CACvB,CAAC;AAIF,wBAAgB,eAAe,IAAI;IACjC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,WAAW,CAAC,EAAE,gBAAgB,CAAC;CAChC,CAmDA"}
|