@velora-dex/widget 0.6.1-dev.4 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/LimitOrderDetails.d.ts.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/LimitOrderDetails.js +77 -67
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/LimitOrderDetails.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/utils.d.ts +3 -0
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/utils.d.ts.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/utils.js +71 -23
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/utils.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.d.ts +2 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.d.ts.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js +123 -110
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/utils.d.ts +2 -0
- package/dist/components/widget/LimitOrderItem/utils.d.ts.map +1 -1
- package/dist/components/widget/LimitOrderItem/utils.js +4 -1
- package/dist/components/widget/LimitOrderItem/utils.js.map +1 -1
- package/dist/core/Warnings.d.ts.map +1 -1
- package/dist/core/Warnings.js +38 -38
- package/dist/core/Warnings.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/utils.js +1 -1
- package/dist/lib/utils/twap.d.ts +5 -0
- package/dist/lib/utils/twap.d.ts.map +1 -1
- package/dist/lib/utils/twap.js +8 -1
- package/dist/lib/utils/twap.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Warnings.js","names":["useCurrentChainConfig","Warning","WarningWithTitle","useSetOpenDrawer","useUnsupportedLimitChain","useUnsupportedOtcChain","useDegenMode","useWidgetConfig","useCurrentSwapPriceError","useCurrentTwapPriceError","useSwapTokenTo","useSetAtom","userTradeModeAtom","TradeMode","useWidgetTokens","selectLimitTokenFromAtom","selectLimitTokenToAtom","Token","TriangleAlert","DEGEN_MODE_MAX_IMPACT","useIsTokenSupportedInDeltaQuery","useTwapTokenTo","PriceImpactResult","useTwapSliceTooShort","TWAP_MIN_SLICE_INTERVAL_S","Duration","warningClasses","root","WidgetWarning","$","_c","chainConfig","chainName","name","limitNotSupported","otcNotSupported","t0","t1","DegenModeText","setOpenDrawer","swapWidgetWarningClasses","const","EnableDegenModeMessage","tokenFrom","tokenTo","priceImpactPercent","degenMode","enableDegenMode","setTradeMode","setLimitTokenFrom","setLimitTokenTo","address","network","token","chainId","data","isTokenFromSupported","t2","t3","t4","isTokenToSupported","belowThreshold","undefined","showEnableDegenModeMessage","t5","Symbol","for","t6","t7","EnableDegenModeWarning","title","tradeMode","DegenModeEnabledWarning","message","warningMessageByReason","highPriceImpact","unavailablePriceImpact","GenericPriceImpactWarning","priceImpact","isMaxImpactReachedError","isNoUsdPriceError","showSinglePriceImpactWarning","isHighImpact","isUnavailable","SwapWidgetWarning","isNoLiquidityError","isDeltaNoAvailableBridgeOptionsError","isDeltaNoAvailablePricesError","isDeltaUnsupportedTokenError","getPriceImpact","TwapPriceImpactWarning","isNoAvailableBridgeOptionsError","isNoAvailablePricesError","isUnsupportedTokenError","TwapSliceIntervalWarning","isSliceTooShort","TwapWarnings"],"sources":["../../src/core/Warnings.tsx"],"sourcesContent":["import { useCurrentChainConfig } from \"@/hooks/useCurrentChain\";\nimport { Warning, WarningWithTitle } from \"@/components/widget/Warning/Warning\";\nimport { useSetOpenDrawer } from \"@/components/widget/Drawer/state/useDrawerControls\";\nimport { useUnsupportedLimitChain } from \"./limit/useLimitNotSupported\";\nimport { useUnsupportedOtcChain } from \"./otc/useOtcNotSupported\";\nimport { useDegenMode } from \"@/components/widget/TradeParameters/state/degenModeParamAtom\";\nimport { useWidgetConfig } from \"./state/configAtom\";\nimport { useCurrentSwapPriceError } from \"@/hooks/swap/prices/useSwapPrices\";\nimport { useCurrentTwapPriceError } from \"@/hooks/swap/prices/useTwapPrices\";\nimport { useSwapTokenTo } from \"./inputs/state/selectedTokenAtom\";\nimport { useSetAtom } from \"./store\";\nimport { userTradeModeAtom, type TradeMode } from \"./state/tradeModeAtom\";\nimport { useWidgetTokens } from \"./inputs/state/common\";\nimport {\n selectLimitTokenFromAtom,\n selectLimitTokenToAtom,\n} from \"./limit/state/selectedTokenActionsAtom\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { TriangleAlert } from \"lucide-react\";\nimport { DEGEN_MODE_MAX_IMPACT } from \"@/hooks/swap/prices/constants\";\nimport { useIsTokenSupportedInDeltaQuery } from \"@/hooks/swap/prices/delta/queries/useIsTokenSupportedInDelta\";\nimport { useTwapTokenTo } from \"./twap/state/twapTokenAtoms\";\nimport type { PriceImpactResult } from \"@/lib/utils/priceImpact\";\nimport { useTwapSliceTooShort } from \"./twap/state/twapParamsAtom\";\nimport { TWAP_MIN_SLICE_INTERVAL_S } from \"./twap/state/constants\";\nimport { Duration } from \"@/components/widget/Duration/Duration\";\n\nconst warningClasses = {\n root: \"mt-4\",\n};\n\nexport const WidgetWarning = () => {\n const chainConfig = useCurrentChainConfig();\n const chainName = chainConfig.name;\n\n const limitNotSupported = useUnsupportedLimitChain();\n const otcNotSupported = useUnsupportedOtcChain();\n\n if (limitNotSupported)\n return (\n <Warning\n message={`Limit Orders are not available yet on ${chainName}`}\n classes={warningClasses}\n />\n );\n\n if (otcNotSupported)\n return (\n <Warning\n message={`OTC Orders are not available yet on ${chainName}`}\n classes={warningClasses}\n />\n );\n\n return null;\n};\n\nconst DegenModeText = () => {\n const setOpenDrawer = useSetOpenDrawer();\n return (\n <span\n className=\"underline cursor-pointer\"\n onClick={() => {\n setOpenDrawer(\"trade-parameters-drawer\");\n }}\n >\n Degen Mode\n </span>\n );\n};\n\nconst swapWidgetWarningClasses = {\n root: \"mt-4 border-1 border-secondary-radical-red-1 rounded-xs bg-[rgba(255,43,82,0.05)] text-secondary-radical-red-1\",\n} as const;\n\nconst EnableDegenModeMessage = ({\n tokenFrom,\n tokenTo,\n priceImpactPercent,\n}: {\n tokenFrom: Token;\n tokenTo: Token;\n priceImpactPercent?: number;\n}) => {\n const degenMode = useDegenMode();\n const { enableDegenMode } = useWidgetConfig();\n\n const setTradeMode = useSetAtom(userTradeModeAtom);\n\n const setLimitTokenFrom = useSetAtom(selectLimitTokenFromAtom);\n const setLimitTokenTo = useSetAtom(selectLimitTokenToAtom);\n\n const { data: isTokenFromSupported } = useIsTokenSupportedInDeltaQuery({\n token: tokenFrom.address,\n chainId: tokenFrom.network,\n });\n const { data: isTokenToSupported } = useIsTokenSupportedInDeltaQuery({\n token: tokenTo?.address,\n chainId: tokenTo?.network || tokenFrom.network,\n });\n\n const belowThreshold =\n priceImpactPercent == undefined\n ? true\n : priceImpactPercent < DEGEN_MODE_MAX_IMPACT;\n const showEnableDegenModeMessage =\n enableDegenMode && !degenMode && belowThreshold;\n\n // doesn't make sense to switch the user to Limit\n if (!isTokenFromSupported || !isTokenToSupported) {\n if (!showEnableDegenModeMessage) return null;\n return (\n <div>\n Ape in anyway with <DegenModeText /> enabled.\n </div>\n );\n }\n\n return (\n <div>\n Use a{\" \"}\n <span\n className=\"underline cursor-pointer\"\n onClick={() => {\n setTradeMode(\"limit\");\n setLimitTokenFrom(tokenFrom);\n setLimitTokenTo(tokenTo);\n }}\n >\n Limit Order\n </span>{\" \"}\n for a better fill\n {showEnableDegenModeMessage ? (\n <>\n , or ape in anyway with <DegenModeText /> enabled.\n </>\n ) : (\n \".\"\n )}\n </div>\n );\n};\n\nconst EnableDegenModeWarning = ({\n title,\n priceImpactPercent,\n tradeMode,\n}: {\n title: string;\n priceImpactPercent?: number;\n tradeMode: TradeMode;\n}) => {\n const { tokenFrom, tokenTo } = useWidgetTokens(tradeMode);\n\n if (!tokenTo) {\n return null;\n }\n\n return (\n <WarningWithTitle\n title={title}\n iconReplacement={<TriangleAlert size={18} />}\n message={\n <EnableDegenModeMessage\n tokenFrom={tokenFrom}\n tokenTo={tokenTo}\n priceImpactPercent={priceImpactPercent}\n />\n }\n classes={swapWidgetWarningClasses}\n />\n );\n};\n\nconst DegenModeEnabledWarning = () => {\n return (\n <Warning\n message={\"You have turned on Degen Mode. Be cautious.\"}\n iconReplacement={<TriangleAlert size={18} />}\n classes={{\n ...swapWidgetWarningClasses,\n message: \"text-sm\",\n }}\n />\n );\n};\n\nconst warningMessageByReason = {\n highPriceImpact:\n // explicit threshold breach, more severe warning\n \"High price impact — expect heavy slippage.\",\n unavailablePriceImpact:\n // unable to calculate price impact, more generic warning\n \"Price impact couldn't be calculated.\",\n} as const;\n\nconst GenericPriceImpactWarning = ({\n tokenTo,\n priceImpact,\n isMaxImpactReachedError,\n isNoUsdPriceError,\n showSinglePriceImpactWarning,\n tradeMode,\n}: {\n tokenTo?: Token;\n priceImpact: PriceImpactResult;\n isMaxImpactReachedError: boolean;\n isNoUsdPriceError: boolean;\n showSinglePriceImpactWarning?: boolean;\n tradeMode: TradeMode;\n}) => {\n const degenMode = useDegenMode();\n\n if (!tokenTo) {\n return null;\n }\n\n if (showSinglePriceImpactWarning) {\n return (\n <Warning\n message={warningMessageByReason.unavailablePriceImpact}\n iconReplacement={<TriangleAlert size={18} />}\n classes={{\n ...swapWidgetWarningClasses,\n message: \"text-sm\",\n }}\n />\n );\n }\n\n if (priceImpact.isHighImpact || isMaxImpactReachedError) {\n return (\n <EnableDegenModeWarning\n title={warningMessageByReason.highPriceImpact}\n priceImpactPercent={priceImpact.priceImpact}\n tradeMode={tradeMode}\n />\n );\n }\n if (priceImpact.isUnavailable || isNoUsdPriceError) {\n return (\n <EnableDegenModeWarning\n title={warningMessageByReason.unavailablePriceImpact}\n priceImpactPercent={priceImpact.priceImpact}\n tradeMode={tradeMode}\n />\n );\n }\n\n if (degenMode) {\n return <DegenModeEnabledWarning />;\n }\n\n return null;\n};\n\nexport const SwapWidgetWarning = () => {\n const tokenTo = useSwapTokenTo();\n const {\n isMaxImpactReachedError,\n isNoUsdPriceError,\n isNoLiquidityError,\n isDeltaNoAvailableBridgeOptionsError,\n isDeltaNoAvailablePricesError,\n isDeltaUnsupportedTokenError,\n getPriceImpact,\n } = useCurrentSwapPriceError();\n\n return (\n <GenericPriceImpactWarning\n tokenTo={tokenTo}\n priceImpact={getPriceImpact()}\n isMaxImpactReachedError={isMaxImpactReachedError}\n isNoUsdPriceError={isNoUsdPriceError}\n showSinglePriceImpactWarning={\n isNoLiquidityError ||\n isDeltaNoAvailableBridgeOptionsError ||\n isDeltaNoAvailablePricesError ||\n isDeltaUnsupportedTokenError\n }\n tradeMode=\"swap\"\n />\n );\n};\n\nconst TwapPriceImpactWarning = () => {\n const tokenTo = useTwapTokenTo();\n const {\n isMaxImpactReachedError,\n isNoUsdPriceError,\n isNoAvailableBridgeOptionsError,\n isNoAvailablePricesError,\n isUnsupportedTokenError,\n getPriceImpact,\n } = useCurrentTwapPriceError();\n\n return (\n <GenericPriceImpactWarning\n tokenTo={tokenTo}\n priceImpact={getPriceImpact()}\n isMaxImpactReachedError={isMaxImpactReachedError}\n isNoUsdPriceError={isNoUsdPriceError}\n tradeMode=\"twap\"\n showSinglePriceImpactWarning={\n isUnsupportedTokenError ||\n isNoAvailablePricesError ||\n isNoAvailableBridgeOptionsError\n }\n />\n );\n};\n\nconst TwapSliceIntervalWarning = () => {\n const isSliceTooShort = useTwapSliceTooShort();\n\n if (!isSliceTooShort) {\n return null;\n }\n\n return (\n <Warning\n message={\n <>\n Each TWAP slice must be at least{\" \"}\n <Duration\n timeMs={TWAP_MIN_SLICE_INTERVAL_S * 1000}\n showSeconds\n classes={{\n root: \"inline-flex text-xs text-secondary-orange-peel-1 dark:text-secondary-orange-peel-1\",\n }}\n />{\" \"}\n apart\n </>\n }\n classes={{\n root: \"mt-4\",\n }}\n />\n );\n};\n\nexport const TwapWarnings = () => {\n return (\n <div className=\"flex flex-col\">\n <TwapSliceIntervalWarning />\n <TwapPriceImpactWarning />\n </div>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Warnings.js","names":["useCurrentChainConfig","Warning","WarningWithTitle","useSetOpenDrawer","useUnsupportedLimitChain","useUnsupportedOtcChain","useDegenMode","useWidgetConfig","useCurrentSwapPriceError","useCurrentTwapPriceError","useSwapTokenTo","useSetAtom","userTradeModeAtom","TradeMode","useWidgetTokens","selectLimitTokenFromAtom","selectLimitTokenToAtom","Token","TriangleAlert","DEGEN_MODE_MAX_IMPACT","useIsTokenSupportedInDeltaQuery","useTwapTokenTo","PriceImpactResult","useTwapSliceTooShort","TWAP_MIN_SLICE_INTERVAL_S","Duration","warningClasses","root","WidgetWarning","$","_c","chainConfig","chainName","name","limitNotSupported","otcNotSupported","t0","t1","DegenModeText","setOpenDrawer","swapWidgetWarningClasses","const","EnableDegenModeMessage","tokenFrom","tokenTo","priceImpactPercent","tradeMode","isTwap","isSwap","degenMode","enableDegenMode","setTradeMode","setLimitTokenFrom","setLimitTokenTo","address","network","token","chainId","data","isTokenFromSupported","t2","t3","t4","isTokenToSupported","belowThreshold","undefined","showEnableDegenModeMessage","canDoLimitOrder","t5","Symbol","for","t6","t7","EnableDegenModeWarning","title","DegenModeEnabledWarning","message","warningMessageByReason","highPriceImpact","unavailablePriceImpact","GenericPriceImpactWarning","priceImpact","isMaxImpactReachedError","isNoUsdPriceError","showSinglePriceImpactWarning","isHighImpact","isUnavailable","SwapWidgetWarning","isNoLiquidityError","isDeltaNoAvailableBridgeOptionsError","isDeltaNoAvailablePricesError","isDeltaUnsupportedTokenError","getPriceImpact","TwapPriceImpactWarning","isNoAvailableBridgeOptionsError","isNoAvailablePricesError","isUnsupportedTokenError","TwapSliceIntervalWarning","isSliceTooShort","TwapWarnings"],"sources":["../../src/core/Warnings.tsx"],"sourcesContent":["import { useCurrentChainConfig } from \"@/hooks/useCurrentChain\";\nimport { Warning, WarningWithTitle } from \"@/components/widget/Warning/Warning\";\nimport { useSetOpenDrawer } from \"@/components/widget/Drawer/state/useDrawerControls\";\nimport { useUnsupportedLimitChain } from \"./limit/useLimitNotSupported\";\nimport { useUnsupportedOtcChain } from \"./otc/useOtcNotSupported\";\nimport { useDegenMode } from \"@/components/widget/TradeParameters/state/degenModeParamAtom\";\nimport { useWidgetConfig } from \"./state/configAtom\";\nimport { useCurrentSwapPriceError } from \"@/hooks/swap/prices/useSwapPrices\";\nimport { useCurrentTwapPriceError } from \"@/hooks/swap/prices/useTwapPrices\";\nimport { useSwapTokenTo } from \"./inputs/state/selectedTokenAtom\";\nimport { useSetAtom } from \"./store\";\nimport { userTradeModeAtom, type TradeMode } from \"./state/tradeModeAtom\";\nimport { useWidgetTokens } from \"./inputs/state/common\";\nimport {\n selectLimitTokenFromAtom,\n selectLimitTokenToAtom,\n} from \"./limit/state/selectedTokenActionsAtom\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { TriangleAlert } from \"lucide-react\";\nimport { DEGEN_MODE_MAX_IMPACT } from \"@/hooks/swap/prices/constants\";\nimport { useIsTokenSupportedInDeltaQuery } from \"@/hooks/swap/prices/delta/queries/useIsTokenSupportedInDelta\";\nimport { useTwapTokenTo } from \"./twap/state/twapTokenAtoms\";\nimport type { PriceImpactResult } from \"@/lib/utils/priceImpact\";\nimport { useTwapSliceTooShort } from \"./twap/state/twapParamsAtom\";\nimport { TWAP_MIN_SLICE_INTERVAL_S } from \"./twap/state/constants\";\nimport { Duration } from \"@/components/widget/Duration/Duration\";\n\nconst warningClasses = {\n root: \"mt-4\",\n};\n\nexport const WidgetWarning = () => {\n const chainConfig = useCurrentChainConfig();\n const chainName = chainConfig.name;\n\n const limitNotSupported = useUnsupportedLimitChain();\n const otcNotSupported = useUnsupportedOtcChain();\n\n if (limitNotSupported)\n return (\n <Warning\n message={`Limit Orders are not available yet on ${chainName}`}\n classes={warningClasses}\n />\n );\n\n if (otcNotSupported)\n return (\n <Warning\n message={`OTC Orders are not available yet on ${chainName}`}\n classes={warningClasses}\n />\n );\n\n return null;\n};\n\nconst DegenModeText = () => {\n const setOpenDrawer = useSetOpenDrawer();\n return (\n <span\n className=\"underline cursor-pointer\"\n onClick={() => {\n setOpenDrawer(\"trade-parameters-drawer\");\n }}\n >\n Degen Mode\n </span>\n );\n};\n\nconst swapWidgetWarningClasses = {\n root: \"mt-4 border-1 border-secondary-radical-red-1 rounded-xs bg-[rgba(255,43,82,0.05)] text-secondary-radical-red-1\",\n} as const;\n\nconst EnableDegenModeMessage = ({\n tokenFrom,\n tokenTo,\n priceImpactPercent,\n tradeMode,\n}: {\n tokenFrom: Token;\n tokenTo: Token;\n priceImpactPercent?: number;\n tradeMode: TradeMode;\n}) => {\n const isTwap = tradeMode === \"twap\";\n const isSwap = tradeMode === \"swap\";\n\n const degenMode = useDegenMode();\n const { enableDegenMode } = useWidgetConfig();\n\n const setTradeMode = useSetAtom(userTradeModeAtom);\n\n const setLimitTokenFrom = useSetAtom(selectLimitTokenFromAtom);\n const setLimitTokenTo = useSetAtom(selectLimitTokenToAtom);\n\n const { data: isTokenFromSupported } = useIsTokenSupportedInDeltaQuery({\n token: tokenFrom.address,\n chainId: tokenFrom.network,\n });\n const { data: isTokenToSupported } = useIsTokenSupportedInDeltaQuery({\n token: tokenTo?.address,\n chainId: tokenTo?.network || tokenFrom.network,\n });\n\n const belowThreshold =\n priceImpactPercent == undefined\n ? true\n : priceImpactPercent < DEGEN_MODE_MAX_IMPACT;\n const showEnableDegenModeMessage =\n enableDegenMode && !degenMode && belowThreshold;\n\n // doesn't make sense to switch the user to Limit if tokens aren't supported in Delta\n const canDoLimitOrder = isTokenFromSupported && isTokenToSupported;\n\n if (!canDoLimitOrder && isSwap) {\n if (!showEnableDegenModeMessage) return null;\n return (\n <div>\n Ape in anyway with <DegenModeText /> enabled (Not recommended).\n </div>\n );\n }\n\n return (\n <div>\n {isTwap ? (\n \"Consider increasing the Order Split for a safer price impact\"\n ) : (\n <>\n Use a{\" \"}\n <span\n className=\"underline cursor-pointer\"\n onClick={() => {\n setTradeMode(\"limit\");\n setLimitTokenFrom(tokenFrom);\n setLimitTokenTo(tokenTo);\n }}\n >\n Limit Order\n </span>{\" \"}\n for a better fill\n </>\n )}\n {showEnableDegenModeMessage ? (\n <>\n , or ape in anyway with <DegenModeText /> enabled (Not recommended).\n </>\n ) : (\n \".\"\n )}\n </div>\n );\n};\n\nconst EnableDegenModeWarning = ({\n title,\n priceImpactPercent,\n tradeMode,\n}: {\n title: string;\n priceImpactPercent?: number;\n tradeMode: TradeMode;\n}) => {\n const { tokenFrom, tokenTo } = useWidgetTokens(tradeMode);\n\n if (!tokenTo) {\n return null;\n }\n\n return (\n <WarningWithTitle\n title={title}\n iconReplacement={<TriangleAlert size={18} />}\n message={\n <EnableDegenModeMessage\n tokenFrom={tokenFrom}\n tokenTo={tokenTo}\n priceImpactPercent={priceImpactPercent}\n tradeMode={tradeMode}\n />\n }\n classes={swapWidgetWarningClasses}\n />\n );\n};\n\nconst DegenModeEnabledWarning = () => {\n return (\n <Warning\n message={\"You have turned on Degen Mode. Be cautious.\"}\n iconReplacement={<TriangleAlert size={18} />}\n classes={{\n ...swapWidgetWarningClasses,\n message: \"text-sm\",\n }}\n />\n );\n};\n\nconst warningMessageByReason = {\n highPriceImpact:\n // explicit threshold breach, more severe warning\n \"High price impact — expect heavy slippage.\",\n unavailablePriceImpact:\n // unable to calculate price impact, more generic warning\n \"Price impact couldn't be calculated.\",\n} as const;\n\nconst GenericPriceImpactWarning = ({\n tokenTo,\n priceImpact,\n isMaxImpactReachedError,\n isNoUsdPriceError,\n showSinglePriceImpactWarning,\n tradeMode,\n}: {\n tokenTo?: Token;\n priceImpact: PriceImpactResult;\n isMaxImpactReachedError: boolean;\n isNoUsdPriceError: boolean;\n showSinglePriceImpactWarning?: boolean;\n tradeMode: TradeMode;\n}) => {\n const degenMode = useDegenMode();\n\n if (!tokenTo) {\n return null;\n }\n\n if (showSinglePriceImpactWarning) {\n return (\n <Warning\n message={warningMessageByReason.unavailablePriceImpact}\n iconReplacement={<TriangleAlert size={18} />}\n classes={{\n ...swapWidgetWarningClasses,\n message: \"text-sm\",\n }}\n />\n );\n }\n\n if (priceImpact.isHighImpact || isMaxImpactReachedError) {\n return (\n <EnableDegenModeWarning\n title={warningMessageByReason.highPriceImpact}\n priceImpactPercent={priceImpact.priceImpact}\n tradeMode={tradeMode}\n />\n );\n }\n if (priceImpact.isUnavailable || isNoUsdPriceError) {\n return (\n <EnableDegenModeWarning\n title={warningMessageByReason.unavailablePriceImpact}\n priceImpactPercent={priceImpact.priceImpact}\n tradeMode={tradeMode}\n />\n );\n }\n\n if (degenMode) {\n return <DegenModeEnabledWarning />;\n }\n\n return null;\n};\n\nexport const SwapWidgetWarning = () => {\n const tokenTo = useSwapTokenTo();\n const {\n isMaxImpactReachedError,\n isNoUsdPriceError,\n isNoLiquidityError,\n isDeltaNoAvailableBridgeOptionsError,\n isDeltaNoAvailablePricesError,\n isDeltaUnsupportedTokenError,\n getPriceImpact,\n } = useCurrentSwapPriceError();\n\n return (\n <GenericPriceImpactWarning\n tokenTo={tokenTo}\n priceImpact={getPriceImpact()}\n isMaxImpactReachedError={isMaxImpactReachedError}\n isNoUsdPriceError={isNoUsdPriceError}\n showSinglePriceImpactWarning={\n isNoLiquidityError ||\n isDeltaNoAvailableBridgeOptionsError ||\n isDeltaNoAvailablePricesError ||\n isDeltaUnsupportedTokenError\n }\n tradeMode=\"swap\"\n />\n );\n};\n\nconst TwapPriceImpactWarning = () => {\n const tokenTo = useTwapTokenTo();\n const {\n isMaxImpactReachedError,\n isNoUsdPriceError,\n isNoAvailableBridgeOptionsError,\n isNoAvailablePricesError,\n isUnsupportedTokenError,\n getPriceImpact,\n } = useCurrentTwapPriceError();\n\n return (\n <GenericPriceImpactWarning\n tokenTo={tokenTo}\n priceImpact={getPriceImpact()}\n isMaxImpactReachedError={isMaxImpactReachedError}\n isNoUsdPriceError={isNoUsdPriceError}\n tradeMode=\"twap\"\n showSinglePriceImpactWarning={\n isUnsupportedTokenError ||\n isNoAvailablePricesError ||\n isNoAvailableBridgeOptionsError\n }\n />\n );\n};\n\nconst TwapSliceIntervalWarning = () => {\n const isSliceTooShort = useTwapSliceTooShort();\n\n if (!isSliceTooShort) {\n return null;\n }\n\n return (\n <Warning\n message={\n <>\n Each TWAP slice must be at least{\" \"}\n <Duration\n timeMs={TWAP_MIN_SLICE_INTERVAL_S * 1000}\n showSeconds\n classes={{\n root: \"inline-flex text-xs text-secondary-orange-peel-1 dark:text-secondary-orange-peel-1\",\n }}\n />{\" \"}\n apart\n </>\n }\n classes={{\n root: \"mt-4\",\n }}\n />\n );\n};\n\nexport const TwapWarnings = () => {\n return (\n <div className=\"flex flex-col\">\n <TwapSliceIntervalWarning />\n <TwapPriceImpactWarning />\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA2BA,IAAM0B,IAAiB,EACrBC,MAAM,QACP,EAEYC,UAAgB;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAE3BE,IADoBhC,GAAuB,CACdiC,MAE7BC,IAA0B9B,GAA0B,EACpD+B,IAAwB9B,GAAwB;AAEhD,KAAI6B,GAAiB;EAGN,IAAAE,IAAA,yCAAyCJ,KAAWK;AAE7D,SAF6DR,EAAA,OAAAO,IAE7DC,IAAAR,EAAA,MAHFQ,IAAA,kBAAC,GAAD;GACW,SAAAD;GACAV,SAAAA;GACT,CAAA,EAAAG,EAAA,KAAAO,GAAAP,EAAA,KAAAQ,IAHFA;;AAMJ,KAAIF,GAAe;EAGJ,IAAAC,IAAA,uCAAuCJ,KAAWK;AAE3D,SAF2DR,EAAA,OAAAO,IAE3DC,IAAAR,EAAA,MAHFQ,IAAA,kBAAC,GAAD;GACW,SAAAD;GACAV,SAAAA;GACT,CAAA,EAAAG,EAAA,KAAAO,GAAAP,EAAA,KAAAQ,IAHFA;;AAIA,QAEG;GAGHC,UAAgB;CAAA,IAAAT,IAAAC,EAAA,EAAA,EACpBS,IAAsBpC,GAAkB,EAACiC;AAShC,QATgCP,EAAA,OAAAU,IAShCH,IAAAP,EAAA,MAPPO,IAAA,kBAAA,QAAA;EACY,WAAA;EACD,eAAA;AACPG,KAAc,0BAA0B;;YAE3C;EAEM,CAAA,EAAAV,EAAA,KAAAU,GAAAV,EAAA,KAAAO,IAPPA;GAWEI,IAA2B,EAC/Bb,MAAM,kHACP,EAEKe,KAAyBN,MAAA;CAAA,IAAAP,IAAAC,EAAA,GAAA,EAAC,EAAAa,cAAAC,YAAAC,uBAAAC,iBAAAV,GAW9BW,IAAeD,MAAc,QAC7BE,IAAeF,MAAc,QAE7BG,IAAkB3C,GAAc,EAChC,EAAA4C,uBAA4B3C,GAAiB,EAE7C4C,IAAqBxC,EAAWC,EAAkB,EAElDwC,IAA0BzC,EAAWI,EAAyB,EAC9DsC,IAAwB1C,EAAWK,EAAuB,EAACqB;AAAA,CAAAR,EAAA,OAAAc,EAAAW,WAAAzB,EAAA,OAAAc,EAAAY,WAEYlB,IAAA;EAAAmB,OAC9Db,EAASW;EAAQG,SACfd,EAASY;EACnB,EAAA1B,EAAA,KAAAc,EAAAW,SAAAzB,EAAA,KAAAc,EAAAY,SAAA1B,EAAA,KAAAQ,KAAAA,IAAAR,EAAA;CAHD,IAAA,EAAA6B,MAAAC,MAAuCvC,EAAgCiB,EAGrE,EAEOuB,IAAAhB,GAAOU,SACLO,IAAAjB,GAAOW,WAAaZ,EAASY,SAAQO;AAAA,CAAAjC,EAAA,OAAA+B,KAAA/B,EAAA,OAAAgC,KAFqBC,IAAA;EAAAN,OAC5DI;EAAgBH,SACdI;EACV,EAAAhC,EAAA,KAAA+B,GAAA/B,EAAA,KAAAgC,GAAAhC,EAAA,KAAAiC,KAAAA,IAAAjC,EAAA;CAHD,IAAA,EAAA6B,MAAAK,MAAqC3C,EAAgC0C,EAGnE,EAMFI,IACEhB,KAAA,CAAoBD,MAJpBJ,KAAsBoB,OAAtB,KAEIpB,IAAAA;AAON,KAAI,EAFoBc,KAAAI,MAEpBf,GAA0B;AAC5B,MAAI,CAACkB,EAA0B,QAAS;EAAK,IAAAE;AAIrC,SAJqCvC,EAAA,OAAAwC,OAAAC,IAAA,4BAAA,IAE3CF,IAAA,kBAAA,OAAA,EAAA,UAAA;GAAK;GACgB,kBAAC,GAAD,EAAiB,CAAA;;GAChC,EAAA,CAAA,EAAAvC,EAAA,KAAAuC,KAAAA,IAAAvC,EAAA,IAFNuC;;CAIH,IAAAA;AAAA,CAAAvC,EAAA,OAAAkB,KAAAlB,EAAA,OAAAuB,KAAAvB,EAAA,OAAAwB,KAAAxB,EAAA,QAAAsB,KAAAtB,EAAA,QAAAc,KAAAd,EAAA,QAAAe,KAIIwB,IAAArB,IAAA,iEAAA,kBAAA,GAAA,EAAA,UAAA;EAGG;EACM;EACN,kBAAA,QAAA;GACY,WAAA;GACD,eAAA;AAGPM,IAFAF,EAAa,QAAQ,EACrBC,EAAkBT,EAAU,EAC5BU,EAAgBT,EAAQ;;aAE3B;GAEO,CAAA;EAAA;EAAI;EAGf,EAAA,CAAA,EAAAf,EAAA,KAAAkB,GAAAlB,EAAA,KAAAuB,GAAAvB,EAAA,KAAAwB,GAAAxB,EAAA,MAAAsB,GAAAtB,EAAA,MAAAc,GAAAd,EAAA,MAAAe,GAAAf,EAAA,MAAAuC,KAAAA,IAAAvC,EAAA;CAAA,IAAA0C;AAAA,CAAA1C,EAAA,QAAAqC,IAOAK,IAAA1C,EAAA,OANA0C,IAAAL,IAAA,kBAAA,GAAA,EAAA,UAAA;EACG;EACwB,kBAAC,GAAD,EAAiB,CAAA;;EAI5C,EAAA,CAAA,GANA,KAMArC,EAAA,MAAAqC,GAAArC,EAAA,MAAA0C;CAAA,IAAAC;AACG,QADH3C,EAAA,QAAAuC,KAAAvC,EAAA,QAAA0C,KAzBHC,IAAA,kBAAA,OAAA,EAAA,UAAA,CACGJ,GAkBAG,EAOG,EAAA,CAAA,EAAA1C,EAAA,MAAAuC,GAAAvC,EAAA,MAAA0C,GAAA1C,EAAA,MAAA2C,KAAAA,IAAA3C,EAAA,KA1BN2C;GA8BEC,KAAyBrC,MAAA;CAAA,IAAAP,IAAAC,EAAA,EAAA,EAAC,EAAA4C,UAAA7B,uBAAAC,iBAAAV,GAS9B,EAAAO,cAAAC,eAA+B9B,EAAgBgC,EAAU;AAEzD,KAAI,CAACF,EAAO,QACH;CACR,IAAAP;AAAA,CAAAR,EAAA,OAAAwC,OAAAC,IAAA,4BAAA,IAKoBjC,IAAA,kBAAC,GAAD,EAAqB,MAAA,IAAM,CAAA,EAAAR,EAAA,KAAAQ,KAAAA,IAAAR,EAAA;CAAA,IAAA+B;AAAA,CAAA/B,EAAA,OAAAgB,KAAAhB,EAAA,OAAAc,KAAAd,EAAA,OAAAe,KAAAf,EAAA,OAAAiB,KAE1Cc,IAAA,kBAAC,GAAD;EACajB;EACFC;EACWC;EACTC;EACX,CAAA,EAAAjB,EAAA,KAAAgB,GAAAhB,EAAA,KAAAc,GAAAd,EAAA,KAAAe,GAAAf,EAAA,KAAAiB,GAAAjB,EAAA,KAAA+B,KAAAA,IAAA/B,EAAA;CAAA,IAAAgC;AAGJ,QAHIhC,EAAA,OAAA+B,KAAA/B,EAAA,OAAA6C,KATNb,IAAA,kBAAC,GAAD;EACSa;EACU,iBAAArC;EAEf,SAAAuB;EAOOpB,SAAAA;EACT,CAAA,EAAAX,EAAA,KAAA+B,GAAA/B,EAAA,KAAA6C,GAAA7C,EAAA,KAAAgC,KAAAA,IAAAhC,EAAA,IAZFgC;GAgBEc,UAA0B;CAAA,IAAA9C,IAAAC,EAAA,EAAA,EAAAM;AAS1B,QAT0BP,EAAA,OAAAwC,OAAAC,IAAA,4BAAA,IAE5BlC,IAAA,kBAAC,GAAD;EACW,SAAA;EACQ,iBAAA,kBAAC,GAAD,EAAqB,MAAA,IAAK,CAAA;EAClC,SAAA;GAAA,GACJI;GAAwBoC,SAClB;GACX;EACA,CAAA,EAAA/C,EAAA,KAAAO,KAAAA,IAAAP,EAAA,IAPFO;GAWEyC,IAAyB;CAC7BC,iBAEE;CACFC,wBAEE;CACH,EAEKC,KAA4B5C,MAAA;CAAA,IAAAP,IAAAC,EAAA,EAAA,EAAC,EAAAc,YAAAqC,gBAAAC,4BAAAC,sBAAAC,iCAAAtC,iBAAAV,GAejCa,IAAkB3C,GAAc;AAEhC,KAAI,CAACsC,EAAO,QACH;AAGT,KAAIwC,GAA4B;EAAA,IAAA/C;AAS1B,SAT0BR,EAAA,OAAAwC,OAAAC,IAAA,4BAAA,IAE5BjC,IAAA,kBAAC,GAAD;GACW,SAAAwC,EAAsBE;GACd,iBAAA,kBAAC,GAAD,EAAqB,MAAA,IAAK,CAAA;GAClC,SAAA;IAAA,GACJvC;IAAwBoC,SAClB;IACX;GACA,CAAA,EAAA/C,EAAA,KAAAQ,KAAAA,IAAAR,EAAA,IAPFQ;;AAWJ,KAAI4C,EAAWI,gBAAXH,GAAmD;EAAA,IAAA7C;AAMjD,SANiDR,EAAA,OAAAoD,EAAAA,eAAApD,EAAA,OAAAiB,KAEnDT,IAAA,kBAAC,GAAD;GACS,OAAAwC,EAAsBC;GACT,oBAAAG,EAAWA;GACpBnC;GACX,CAAA,EAAAjB,EAAA,KAAAoD,EAAAA,aAAApD,EAAA,KAAAiB,GAAAjB,EAAA,KAAAQ,KAAAA,IAAAR,EAAA,IAJFQ;;AAOJ,KAAI4C,EAAWK,iBAAXH,GAA8C;EAAA,IAAA9C;AAM5C,SAN4CR,EAAA,OAAAoD,EAAAA,eAAApD,EAAA,OAAAiB,KAE9CT,IAAA,kBAAC,GAAD;GACS,OAAAwC,EAAsBE;GACT,oBAAAE,EAAWA;GACpBnC;GACX,CAAA,EAAAjB,EAAA,KAAAoD,EAAAA,aAAApD,EAAA,KAAAiB,GAAAjB,EAAA,KAAAQ,KAAAA,IAAAR,EAAA,IAJFQ;;AAQJ,KAAIY,GAAS;EAAA,IAAAZ;AACuB,SADvBR,EAAA,OAAAwC,OAAAC,IAAA,4BAAA,IACJjC,IAAA,kBAAC,GAAD,EAA2B,CAAA,EAAAR,EAAA,KAAAQ,KAAAA,IAAAR,EAAA,IAA3BQ;;AACR,QAEM;GAGIkD,UAAoB;CAAA,IAAA1D,IAAAC,EAAA,EAAA,EAC/Bc,IAAgBlC,GAAgB,EAChC,EAAAwE,4BAAAC,sBAAAK,uBAAAC,yCAAAC,kCAAAC,iCAAAC,sBAQIpF,GAA0B,EAAC4B;AAAA,CAAAP,EAAA,OAAA+D,IAKExD,IAAAP,EAAA,MAAhBO,IAAAwD,GAAgB,EAAA/D,EAAA,KAAA+D,GAAA/D,EAAA,KAAAO;CAI3B,IAAAC,IAAAmD,KAAAC,KAAAC,KAAAC,GAG4B/B;AAG9B,QAH8B/B,EAAA,OAAAqD,KAAArD,EAAA,OAAAsD,KAAAtD,EAAA,OAAAO,KAAAP,EAAA,OAAAQ,KAAAR,EAAA,OAAAe,KAThCgB,IAAA,kBAAC,GAAD;EACWhB;EACI,aAAAR;EACY8C;EACNC;EAEjB,8BAAA9C;EAKQ,WAAA;EACV,CAAA,EAAAR,EAAA,KAAAqD,GAAArD,EAAA,KAAAsD,GAAAtD,EAAA,KAAAO,GAAAP,EAAA,KAAAQ,GAAAR,EAAA,KAAAe,GAAAf,EAAA,KAAA+B,KAAAA,IAAA/B,EAAA,IAZF+B;GAgBEiC,UAAyB;CAAA,IAAAhE,IAAAC,EAAA,EAAA,EAC7Bc,IAAgBvB,GAAgB,EAChC,EAAA6D,4BAAAC,sBAAAW,oCAAAC,6BAAAC,4BAAAJ,sBAOInF,GAA0B,EAAC2B;AAAA,CAAAP,EAAA,OAAA+D,IAKExD,IAAAP,EAAA,MAAhBO,IAAAwD,GAAgB,EAAA/D,EAAA,KAAA+D,GAAA/D,EAAA,KAAAO;CAK3B,IAAAC,IAAA2D,KAAAD,KAAAD,GAE+BlC;AAEjC,QAFiC/B,EAAA,OAAAqD,KAAArD,EAAA,OAAAsD,KAAAtD,EAAA,OAAAO,KAAAP,EAAA,OAAAQ,KAAAR,EAAA,OAAAe,KATnCgB,IAAA,kBAAC,GAAD;EACWhB;EACI,aAAAR;EACY8C;EACNC;EACT,WAAA;EAER,8BAAA9C;EAIF,CAAA,EAAAR,EAAA,KAAAqD,GAAArD,EAAA,KAAAsD,GAAAtD,EAAA,KAAAO,GAAAP,EAAA,KAAAQ,GAAAR,EAAA,KAAAe,GAAAf,EAAA,KAAA+B,KAAAA,IAAA/B,EAAA,IAXF+B;GAeEqC,UAA2B;CAAA,IAAApE,IAAAC,EAAA,EAAA;AAG/B,KAAI,CAFoBP,GAAsB,CAE1B,QACX;CACR,IAAAa;AAoBG,QApBHP,EAAA,OAAAwC,OAAAC,IAAA,4BAAA,IAGClC,IAAA,kBAAC,GAAD;EAEI,SAAA,kBAAA,GAAA,EAAA,UAAA;GAAE;GACiC;GACjC,kBAAC,GAAD;IACU,QAAA,MAA4B;IACpC,aAAA;IACS,SAAA,EAAAT,MACD,sFACR;IACC,CAAA;GAAA;GAAI;GAEP,EAAA,CAAA;EAEK,SAAA,EAAAA,MACD,QACR;EACA,CAAA,EAAAE,EAAA,KAAAO,KAAAA,IAAAP,EAAA,IAjBFO;GAqBS+D,UAAe;CAAA,IAAAtE,IAAAC,EAAA,EAAA,EAAAM;AAKlB,QALkBP,EAAA,OAAAwC,OAAAC,IAAA,4BAAA,IAExBlC,IAAA,kBAAA,OAAA;EAAe,WAAA;YAAf,CACE,kBAAC,GAAD,EACA,CAAA,EAAA,kBAAC,GAAD,EACF,CAAA,CAAM;KAAAP,EAAA,KAAAO,KAAAA,IAAAP,EAAA,IAHNO"}
|
|
@@ -183,6 +183,6 @@ function F(e) {
|
|
|
183
183
|
return P[e];
|
|
184
184
|
}
|
|
185
185
|
//#endregion
|
|
186
|
-
export { p as DeltaOrderStatusChecker, _ as getAuctionDestChainId, y as getDisplayedOrderStatus, D as getOrderTokenAddresses, v as getOverallOrderStatus, j as getSwapSideFromDeltaPrice, T as getTwapOrderDeadlineFromSlices, E as getUnifiedDeltaOrderData, d as isCanceledDeltaAuction, s as isDeltaAuctionData, f as isDeltaAuctionExpired, l as isExecutedDeltaAuction, u as isFailedDeltaAuction, a as isTwapBuyDeltaOrder, i as isTwapSellDeltaOrder };
|
|
186
|
+
export { p as DeltaOrderStatusChecker, _ as getAuctionDestChainId, y as getDisplayedOrderStatus, D as getOrderTokenAddresses, v as getOverallOrderStatus, j as getSwapSideFromDeltaPrice, T as getTwapOrderDeadlineFromSlices, E as getUnifiedDeltaOrderData, d as isCanceledDeltaAuction, s as isDeltaAuctionData, f as isDeltaAuctionExpired, l as isExecutedDeltaAuction, u as isFailedDeltaAuction, b as isTwapAuction, a as isTwapBuyDeltaOrder, i as isTwapSellDeltaOrder };
|
|
187
187
|
|
|
188
188
|
//# sourceMappingURL=utils.js.map
|
package/dist/lib/utils/twap.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DeltaOrBridgePrice } from '../../hooks/swap/prices/types';
|
|
2
|
+
import { DeltaAuctionWithTwapOrder } from '../../hooks/swap/prices/delta/orders/types';
|
|
2
3
|
export declare function getTwapChunkAmount({ totalWei, numSlices, }: {
|
|
3
4
|
totalWei: string;
|
|
4
5
|
numSlices: number;
|
|
@@ -21,4 +22,8 @@ export declare function produceTwapDeadlines({ durationMin, numSlices, }: {
|
|
|
21
22
|
orderDeadline: number;
|
|
22
23
|
orderInterval: number;
|
|
23
24
|
};
|
|
25
|
+
export declare function getTwapAuctionDeadlines({ order, createdAt, }: Pick<DeltaAuctionWithTwapOrder, "order" | "createdAt">): {
|
|
26
|
+
endsInMs: number;
|
|
27
|
+
durationMs: number;
|
|
28
|
+
};
|
|
24
29
|
//# sourceMappingURL=twap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"twap.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/twap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"twap.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/twap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAKpE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AAExF,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,MAAM,CAGT;AAED,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,MAAM,CAGT;AAED,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,SAAS,GACV,EAAE;IACD,KAAK,EAAE,kBAAkB,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;;;EAQA;AACD,wBAAgB,oBAAoB,CAAC,EACnC,WAAW,EACX,SAAS,GACV,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;;;EAcA;AAED,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,SAAS,GACV,EAAE,IAAI,CAAC,yBAAyB,EAAE,OAAO,GAAG,WAAW,CAAC;;;EAIxD"}
|
package/dist/lib/utils/twap.js
CHANGED
|
@@ -28,7 +28,14 @@ function c({ durationMin: i, numSlices: a }) {
|
|
|
28
28
|
orderInterval: c
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
|
+
function l({ order: e, createdAt: t }) {
|
|
32
|
+
let n = e.numSlices * e.interval * 1e3;
|
|
33
|
+
return {
|
|
34
|
+
endsInMs: new Date(t).getTime() + n,
|
|
35
|
+
durationMs: n
|
|
36
|
+
};
|
|
37
|
+
}
|
|
31
38
|
//#endregion
|
|
32
|
-
export { o as getTotalTwapAmount, s as getTwapAmountsFromPrice, a as getTwapChunkAmount, c as produceTwapDeadlines };
|
|
39
|
+
export { o as getTotalTwapAmount, s as getTwapAmountsFromPrice, l as getTwapAuctionDeadlines, a as getTwapChunkAmount, c as produceTwapDeadlines };
|
|
33
40
|
|
|
34
41
|
//# sourceMappingURL=twap.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"twap.js","names":["DeltaOrBridgePrice","Big","millisecondsToSeconds","minutesToMilliseconds","TEN_MINUTES_MS","produceDeltaOrderDeadline","getTwapChunkAmount","totalWei","numSlices","div","toFixed","getTotalTwapAmount","chunkWei","mul","getTwapAmountsFromPrice","price","srcAmount","destAmount","receivedDestAmount","produceTwapDeadlines","durationMin","orderDurationMs","orderDeadline","orderInterval","Math","floor","Number"],"sources":["../../../src/lib/utils/twap.ts"],"sourcesContent":["import type { DeltaOrBridgePrice } from \"@/hooks/swap/prices/types\";\nimport Big from \"big.js\";\nimport { millisecondsToSeconds, minutesToMilliseconds } from \"./time\";\nimport { TEN_MINUTES_MS } from \"../constants/time\";\nimport { produceDeltaOrderDeadline } from \"./delta\";\n\nexport function getTwapChunkAmount({\n totalWei,\n numSlices,\n}: {\n totalWei: string;\n numSlices: number;\n}): string {\n if (numSlices <= 0 || totalWei === \"0\") return totalWei;\n return Big(totalWei).div(numSlices).toFixed(0, 0); // roundDown to avoid overestimating\n}\n\nexport function getTotalTwapAmount({\n chunkWei,\n numSlices,\n}: {\n chunkWei: string;\n numSlices: number;\n}): string {\n if (numSlices <= 0 || chunkWei === \"0\") return chunkWei;\n return Big(chunkWei).mul(numSlices).toFixed();\n}\n\nexport function getTwapAmountsFromPrice({\n price,\n numSlices,\n}: {\n price: DeltaOrBridgePrice;\n numSlices: number;\n}) {\n return {\n srcAmount: getTotalTwapAmount({ chunkWei: price.srcAmount, numSlices }),\n destAmount: getTotalTwapAmount({\n chunkWei: price.receivedDestAmount,\n numSlices,\n }),\n };\n}\nexport function produceTwapDeadlines({\n durationMin,\n numSlices,\n}: {\n durationMin: number;\n numSlices: number;\n}) {\n const orderDurationMs = minutesToMilliseconds(durationMin);\n const orderDeadline = produceDeltaOrderDeadline(\n // 10 min buffer for possible delays in order creation or slice executions\n orderDurationMs + TEN_MINUTES_MS\n );\n const orderInterval = Math.floor(\n millisecondsToSeconds(orderDurationMs) / numSlices\n );\n\n return {\n orderDeadline: Number(orderDeadline),\n orderInterval,\n };\n}\n"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"twap.js","names":["DeltaOrBridgePrice","Big","millisecondsToSeconds","minutesToMilliseconds","TEN_MINUTES_MS","produceDeltaOrderDeadline","DeltaAuctionWithTwapOrder","getTwapChunkAmount","totalWei","numSlices","div","toFixed","getTotalTwapAmount","chunkWei","mul","getTwapAmountsFromPrice","price","srcAmount","destAmount","receivedDestAmount","produceTwapDeadlines","durationMin","orderDurationMs","orderDeadline","orderInterval","Math","floor","Number","getTwapAuctionDeadlines","order","createdAt","Pick","durationMs","interval","endsInMs","Date","getTime"],"sources":["../../../src/lib/utils/twap.ts"],"sourcesContent":["import type { DeltaOrBridgePrice } from \"@/hooks/swap/prices/types\";\nimport Big from \"big.js\";\nimport { millisecondsToSeconds, minutesToMilliseconds } from \"./time\";\nimport { TEN_MINUTES_MS } from \"../constants/time\";\nimport { produceDeltaOrderDeadline } from \"./delta\";\nimport type { DeltaAuctionWithTwapOrder } from \"@/hooks/swap/prices/delta/orders/types\";\n\nexport function getTwapChunkAmount({\n totalWei,\n numSlices,\n}: {\n totalWei: string;\n numSlices: number;\n}): string {\n if (numSlices <= 0 || totalWei === \"0\") return totalWei;\n return Big(totalWei).div(numSlices).toFixed(0, 0); // roundDown to avoid overestimating\n}\n\nexport function getTotalTwapAmount({\n chunkWei,\n numSlices,\n}: {\n chunkWei: string;\n numSlices: number;\n}): string {\n if (numSlices <= 0 || chunkWei === \"0\") return chunkWei;\n return Big(chunkWei).mul(numSlices).toFixed();\n}\n\nexport function getTwapAmountsFromPrice({\n price,\n numSlices,\n}: {\n price: DeltaOrBridgePrice;\n numSlices: number;\n}) {\n return {\n srcAmount: getTotalTwapAmount({ chunkWei: price.srcAmount, numSlices }),\n destAmount: getTotalTwapAmount({\n chunkWei: price.receivedDestAmount,\n numSlices,\n }),\n };\n}\nexport function produceTwapDeadlines({\n durationMin,\n numSlices,\n}: {\n durationMin: number;\n numSlices: number;\n}) {\n const orderDurationMs = minutesToMilliseconds(durationMin);\n const orderDeadline = produceDeltaOrderDeadline(\n // 10 min buffer for possible delays in order creation or slice executions\n orderDurationMs + TEN_MINUTES_MS\n );\n const orderInterval = Math.floor(\n millisecondsToSeconds(orderDurationMs) / numSlices\n );\n\n return {\n orderDeadline: Number(orderDeadline),\n orderInterval,\n };\n}\n\nexport function getTwapAuctionDeadlines({\n order,\n createdAt,\n}: Pick<DeltaAuctionWithTwapOrder, \"order\" | \"createdAt\">) {\n const durationMs = order.numSlices * order.interval * 1000;\n const endsInMs = new Date(createdAt).getTime() + durationMs;\n return { endsInMs, durationMs };\n}\n"],"mappings":";;;;;AAOA,SAAgBO,EAAmB,EACjCC,aACAC,gBAIS;AAET,QADIA,KAAa,KAAKD,MAAa,MAAYA,IACxCP,EAAIO,EAAS,CAACE,IAAID,EAAU,CAACE,QAAQ,GAAG,EAAE;;AAGnD,SAAgBC,EAAmB,EACjCC,aACAJ,gBAIS;AAET,QADIA,KAAa,KAAKI,MAAa,MAAYA,IACxCZ,EAAIY,EAAS,CAACC,IAAIL,EAAU,CAACE,SAAS;;AAG/C,SAAgBI,EAAwB,EACtCC,UACAP,gBAIC;AACD,QAAO;EACLQ,WAAWL,EAAmB;GAAEC,UAAUG,EAAMC;GAAWR;GAAW,CAAC;EACvES,YAAYN,EAAmB;GAC7BC,UAAUG,EAAMG;GAChBV;GACD,CAAA;EACF;;AAEH,SAAgBW,EAAqB,EACnCC,gBACAZ,gBAIC;CACD,IAAMa,IAAkBnB,EAAsBkB,EAAY,EACpDE,IAAgBlB,EAEpBiB,IAAkBlB,EACnB,EACKoB,IAAgBC,KAAKC,MACzBxB,EAAsBoB,EAAgB,GAAGb,EAC1C;AAED,QAAO;EACLc,eAAeI,OAAOJ,EAAc;EACpCC;EACD;;AAGH,SAAgBI,EAAwB,EACtCC,UACAC,gBACyD;CACzD,IAAME,IAAaH,EAAMpB,YAAYoB,EAAMI,WAAW;AAEtD,QAAO;EAAEC,UADQ,IAAIC,KAAKL,EAAU,CAACM,SAAS,GAAGJ;EAC9BA;EAAY"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@velora-dex/widget",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
"@tanstack/react-pacer": "^0.14.0",
|
|
79
79
|
"@tanstack/react-virtual": "^3.13.12",
|
|
80
80
|
"@uniswap/token-lists": "1.0.0-beta.34",
|
|
81
|
-
"@velora-dex/sdk": "9.
|
|
81
|
+
"@velora-dex/sdk": "9.5.0",
|
|
82
82
|
"@wagmi/core": "^2.18.1",
|
|
83
83
|
"axios": "^1.11.0",
|
|
84
84
|
"big.js": "^7.0.1",
|