@velora-dex/widget 0.1.0-rc.0 → 0.1.0-rc.2
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/ui/drawer.js +1 -1
- package/dist/components/ui/drawer.js.map +1 -1
- package/dist/components/web3/providers.d.ts +3 -0
- package/dist/components/web3/providers.d.ts.map +1 -1
- package/dist/components/web3/providers.js +18 -1
- package/dist/components/web3/providers.js.map +1 -1
- package/dist/components/widget/Details/DetailWithValueList.d.ts.map +1 -1
- package/dist/components/widget/Details/DetailWithValueList.js +38 -28
- package/dist/components/widget/Details/DetailWithValueList.js.map +1 -1
- package/dist/components/widget/Details/types.d.ts +1 -1
- package/dist/components/widget/Details/types.d.ts.map +1 -1
- package/dist/components/widget/DexesList/DexItem.d.ts +3 -0
- package/dist/components/widget/DexesList/DexItem.d.ts.map +1 -0
- package/dist/components/widget/DexesList/DexItem.js +366 -0
- package/dist/components/widget/DexesList/DexItem.js.map +1 -0
- package/dist/components/widget/DexesList/DexesList.d.ts +10 -0
- package/dist/components/widget/DexesList/DexesList.d.ts.map +1 -0
- package/dist/components/widget/DexesList/DexesList.js +71 -0
- package/dist/components/widget/DexesList/DexesList.js.map +1 -0
- package/dist/components/widget/DexesList/assets/exchanges/biswap.png.js +4 -0
- package/dist/components/widget/DexesList/assets/exchanges/biswap.png.js.map +1 -0
- package/dist/components/widget/DexesList/assets/exchanges/cheeseswap.png.js +4 -0
- package/dist/components/widget/DexesList/assets/exchanges/cheeseswap.png.js.map +1 -0
- package/dist/components/widget/DexesList/assets/exchanges/complusswap.png.js +4 -0
- package/dist/components/widget/DexesList/assets/exchanges/complusswap.png.js.map +1 -0
- package/dist/components/widget/DexesList/assets/exchanges/hashflow.png.js +4 -0
- package/dist/components/widget/DexesList/assets/exchanges/hashflow.png.js.map +1 -0
- package/dist/components/widget/DexesList/assets/exchanges/icons.json.d.ts +82 -0
- package/dist/components/widget/DexesList/assets/exchanges/icons.json.js +159 -0
- package/dist/components/widget/DexesList/assets/exchanges/icons.json.js.map +1 -0
- package/dist/components/widget/DexesList/assets/exchanges/quickswap.png.js +4 -0
- package/dist/components/widget/DexesList/assets/exchanges/quickswap.png.js.map +1 -0
- package/dist/components/widget/DexesList/assets/exchanges/shibaswap.png.js +4 -0
- package/dist/components/widget/DexesList/assets/exchanges/shibaswap.png.js.map +1 -0
- package/dist/components/widget/DexesList/assets/exchanges/uniswap.svg.js +4 -0
- package/dist/components/widget/DexesList/assets/exchanges/uniswap.svg.js.map +1 -0
- package/dist/components/widget/DexesList/assets/exchanges/velora-dark.svg.js +4 -0
- package/dist/components/widget/DexesList/assets/exchanges/velora-dark.svg.js.map +1 -0
- package/dist/components/widget/DexesList/assets/exchanges/velora-light.svg.js +4 -0
- package/dist/components/widget/DexesList/assets/exchanges/velora-light.svg.js.map +1 -0
- package/dist/components/widget/DexesList/assets/gas.svg.js +12 -0
- package/dist/components/widget/DexesList/assets/gas.svg.js.map +1 -0
- package/dist/components/widget/DexesList/assets/unknown-dex.svg.js +4 -0
- package/dist/components/widget/DexesList/assets/unknown-dex.svg.js.map +1 -0
- package/dist/components/widget/DexesList/constants.d.ts +2 -0
- package/dist/components/widget/DexesList/constants.d.ts.map +1 -0
- package/dist/components/widget/DexesList/constants.js +4 -0
- package/dist/components/widget/DexesList/constants.js.map +1 -0
- package/dist/components/widget/DexesList/getDexProps.d.ts +11 -0
- package/dist/components/widget/DexesList/getDexProps.d.ts.map +1 -0
- package/dist/components/widget/DexesList/getDexProps.js +94 -0
- package/dist/components/widget/DexesList/getDexProps.js.map +1 -0
- package/dist/components/widget/DexesList/types.d.ts +15 -0
- package/dist/components/widget/DexesList/types.d.ts.map +1 -0
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/tokens.js +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/tokens.js.map +1 -1
- package/dist/components/widget/Drawer/Overlay.d.ts +9 -0
- package/dist/components/widget/Drawer/Overlay.d.ts.map +1 -0
- package/dist/components/widget/Drawer/Overlay.js +62 -0
- package/dist/components/widget/Drawer/Overlay.js.map +1 -0
- package/dist/components/widget/Drawer/index.d.ts.map +1 -1
- package/dist/components/widget/Drawer/index.js +2 -1
- package/dist/components/widget/Drawer/index.js.map +1 -1
- package/dist/components/widget/Drawer/state/useDrawerControls.d.ts +3 -0
- package/dist/components/widget/Drawer/state/useDrawerControls.d.ts.map +1 -1
- package/dist/components/widget/Drawer/state/useDrawerControls.js +1 -1
- package/dist/components/widget/Drawer/state/useDrawerControls.js.map +1 -1
- package/dist/components/widget/ReceiverAddress/state/subscriptions.d.ts.map +1 -1
- package/dist/components/widget/ReceiverAddress/state/subscriptions.js +1 -2
- package/dist/components/widget/ReceiverAddress/state/subscriptions.js.map +1 -1
- package/dist/components/widget/SwapModeSwitcher/SwapModeSwitcherExpandable.d.ts.map +1 -1
- package/dist/components/widget/SwapModeSwitcher/SwapModeSwitcherExpandable.js +44 -4
- package/dist/components/widget/SwapModeSwitcher/SwapModeSwitcherExpandable.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/utils.js +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/utils.js.map +1 -1
- package/dist/core/across/utils.d.ts.map +1 -1
- package/dist/core/across/utils.js +1 -2
- package/dist/core/across/utils.js.map +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +93 -85
- package/dist/core/index.js.map +1 -1
- package/dist/core/inputs/hooks/useTokenToInputProps.js +1 -4
- package/dist/core/inputs/hooks/useTokenToInputProps.js.map +1 -1
- package/dist/core/inputs/state/selectedTokenActionsAtom.d.ts.map +1 -1
- package/dist/core/inputs/state/selectedTokenActionsAtom.js +2 -2
- package/dist/core/inputs/state/selectedTokenActionsAtom.js.map +1 -1
- package/dist/core/inputs/state/store.d.ts +6 -0
- package/dist/core/inputs/state/store.d.ts.map +1 -0
- package/dist/core/inputs/state/store.js +6 -0
- package/dist/core/inputs/state/store.js.map +1 -0
- package/dist/core/logger.d.ts.map +1 -1
- package/dist/core/logger.js +4 -5
- package/dist/core/logger.js.map +1 -1
- package/dist/core/swapDetails/useSwapDetailsListProps.d.ts.map +1 -1
- package/dist/core/swapDetails/useSwapDetailsListProps.js +0 -1
- package/dist/core/swapDetails/useSwapDetailsListProps.js.map +1 -1
- package/dist/core/swapDetails/youGet.d.ts +1 -3
- package/dist/core/swapDetails/youGet.d.ts.map +1 -1
- package/dist/core/swapDetails/youGet.js +1 -3
- package/dist/core/swapDetails/youGet.js.map +1 -1
- package/dist/crosschain_token_list.json +3230 -0
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts +3 -2
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/utils.d.ts +6 -6
- package/dist/hooks/swap/prices/delta/orders/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/utils.js +3 -3
- package/dist/hooks/swap/prices/delta/orders/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.d.ts +2 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts +2 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +5 -2
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.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 +2 -1
- package/dist/hooks/swap/prices/usePricesParams.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +4 -4
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js.map +1 -1
- package/dist/lib/constants/index.d.ts +1 -1
- package/dist/lib/constants/index.d.ts.map +1 -1
- package/dist/lib/constants/index.js +1 -1
- package/dist/lib/constants/index.js.map +1 -1
- package/dist/lib/utils/index.d.ts +2 -0
- package/dist/lib/utils/index.d.ts.map +1 -1
- package/dist/lib/utils/index.js +4 -1
- package/dist/lib/utils/index.js.map +1 -1
- package/dist/lib/utils/price.d.ts +2 -6
- package/dist/lib/utils/price.d.ts.map +1 -1
- package/dist/lib/utils/price.js +6 -13
- package/dist/lib/utils/price.js.map +1 -1
- package/dist/lib/utils/savedAmountUSD.d.ts +3 -0
- package/dist/lib/utils/savedAmountUSD.d.ts.map +1 -0
- package/dist/lib/utils/savedAmountUSD.js +57 -0
- package/dist/lib/utils/savedAmountUSD.js.map +1 -0
- package/dist/lib/utils/toasts.d.ts +2 -2
- package/dist/lib/utils/toasts.d.ts.map +1 -1
- package/dist/lib/utils/toasts.js.map +1 -1
- package/dist/lib/web3/privy/config.js +1 -1
- package/dist/lib/web3/wagmi/config.js +1 -1
- package/dist/styles.css +23 -8
- package/dist/tokens/lists/lists.json.d.ts +84 -2
- package/dist/tokens/lists/lists.json.js +104 -2
- package/dist/tokens/lists/lists.json.js.map +1 -1
- package/dist/tokens/lists/state/observer.js +2 -2
- package/dist/tokens/lists/state/observer.js.map +1 -1
- package/dist/tokens/lists/utils.js +1 -1
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDeltaSwapStep.js","sources":["../../../../src/hooks/swap/tradeFlow/useDeltaSwapStep.ts"],"sourcesContent":["import type {\n DeltaOrderStep,\n DeltaOrderStepKey,\n} from \"@/components/widget/TradeOverview/steps\";\nimport {\n useDeltaFlow,\n type SubmitDeltaOrderResult,\n type UseDeltaFlowInput,\n type UseDeltaFlowResult,\n} from \"./useDeltaFlow\";\nimport { useLogger } from \"@/core/logger\";\nimport { constructExplorerOrderDetailsLink } from \"@/lib/utils/explorer\";\nimport { isUserCancelledError } from \"./common/errors\";\n\ntype UseDeltaSwapStepResult = {\n startDeltaSwap: UseDeltaFlowResult[\"runDeltaOrderFlow\"];\n // @TODO check if resetting is necessary on error, maybe not if submit on click works as a reset\n reset: UseDeltaFlowResult[\"reset\"];\n cancelFlow: UseDeltaFlowResult[\"cancelFlow\"];\n retryFlow: UseDeltaFlowResult[\"retryFlow\"];\n isCancellable: boolean;\n step?: DeltaOrderStep;\n explorerLink?: string;\n error: Error | null;\n erroredStep?: DeltaOrderStepKey;\n result?: SubmitDeltaOrderResult;\n usedPrice: UseDeltaFlowResult[\"usedPrice\"];\n};\n\nexport function useDeltaSwapStep(\n options: UseDeltaFlowInput\n): UseDeltaSwapStepResult {\n const logger = useLogger(\"DeltaSwapStep\");\n const deltaFlow = useDeltaFlow(options);\n\n const startDeltaSwap = deltaFlow.runDeltaOrderFlow;\n const reset = deltaFlow.reset;\n const cancelFlow = deltaFlow.cancelFlow;\n const retryFlow = deltaFlow.retryFlow;\n\n let step: DeltaOrderStep | undefined;\n\n const permitSigningHappeningOrNeverHappened =\n // isPending starts as false,\n // so we can use !isPermitSigned to detect if Permit signing is happening or never happened\n deltaFlow.signPermit.isPending || !deltaFlow.signPermit.isPermitSigned;\n\n const approvalHappeningOrNeverHappened =\n // isPending starts as false,\n // needsApproval && !isSuccess allows to detect approve step right away even then\n deltaFlow.approval.isPending || !deltaFlow.approval.isSuccess;\n\n const willUsePermit =\n deltaFlow.approval.needsApproval &&\n deltaFlow.signPermit.isPermitSupported &&\n deltaFlow.signPermit.isPermitReadyToSign;\n\n const permitOrApprovalHappeningOrNeverHappened = willUsePermit\n ? permitSigningHappeningOrNeverHappened\n : approvalHappeningOrNeverHappened;\n\n if (\n deltaFlow.approval.needsApproval &&\n permitOrApprovalHappeningOrNeverHappened\n ) {\n step = { key: \"signature\", subStep: \"approval-signature\" };\n } else if (deltaFlow.deltaOrderSubmission.isPending) {\n const permitOrApprovalHappened = !!(\n deltaFlow.approval.txHash || deltaFlow.signPermit.signature\n );\n\n step = {\n key: \"signature\",\n subStep: permitOrApprovalHappened\n ? \"order-signature\"\n : \"standalone-order-signature\",\n };\n } else if (deltaFlow.deltaOrderExecution.isPending) {\n const orderStatus = deltaFlow.deltaOrderExecution.lastOrderState?.status;\n const notYetRunning =\n !orderStatus || orderStatus === \"NOT_STARTED\" || orderStatus === \"POSTED\";\n step = {\n key: notYetRunning ? \"auction\" : \"order-execution\",\n };\n } else if (deltaFlow.isPending) {\n // if something is between steps but not clear step,\n // then assume we're at the standalone signature sub-step\n step = { key: \"signature\", subStep: \"standalone-order-signature\" };\n }\n\n const approvalIsStarted =\n step?.key === \"signature\" &&\n step.subStep === \"approval-signature\" &&\n deltaFlow.approval.isTxPending;\n\n const isOrderBeingSigned =\n step?.key === \"signature\" &&\n (step.subStep === \"order-signature\" ||\n step.subStep === \"standalone-order-signature\");\n\n const isCancellable =\n // final Order is not yet submitted, there's something to cancel;\n // but some steps are already started so we can't simply dismiss\n approvalIsStarted || isOrderBeingSigned;\n\n const orderId = deltaFlow.deltaOrderSubmission.order?.id;\n const explorerLink = orderId\n ? constructExplorerOrderDetailsLink(orderId)\n : undefined;\n\n logger.once.log(\"step\", step, deltaFlow, {\n isCancellable,\n explorerLink,\n orderId,\n });\n\n // intentional cancellation is handled separately\n const error = isUserCancelledError(deltaFlow.error) ? null : deltaFlow.error;\n\n let erroredStep: DeltaOrderStepKey | undefined;\n\n if (deltaFlow.isError) {\n if (deltaFlow.approval.isError || deltaFlow.signPermit.isError) {\n erroredStep = \"signature\";\n } else if (deltaFlow.deltaOrderSubmission.isError) {\n erroredStep = \"auction\";\n } else if (deltaFlow.deltaOrderExecution.isError) {\n erroredStep = \"order-execution\";\n }\n }\n\n return {\n usedPrice: deltaFlow.usedPrice,\n startDeltaSwap,\n reset, // @TODO it maybe makes sense to reset mutation data when TradeOverflow drawer is closed\n // if we ever depend on mutation.result when Drawer is not closed,\n // otherwise the result sticks around until remount or next mutation start\n cancelFlow,\n retryFlow,\n isCancellable,\n step,\n explorerLink,\n error,\n erroredStep,\n result: deltaFlow.result,\n };\n}\n"],"names":["useDeltaSwapStep","options","$","_c","logger","useLogger","deltaFlow","useDeltaFlow","startDeltaSwap","runDeltaOrderFlow","reset","cancelFlow","retryFlow","explorerLink","isCancellable","step","once","permitSigningHappeningOrNeverHappened","signPermit","isPending","isPermitSigned","approvalHappeningOrNeverHappened","approval","isSuccess","willUsePermit","needsApproval","isPermitSupported","isPermitReadyToSign","permitOrApprovalHappeningOrNeverHappened","deltaOrderSubmission","permitOrApprovalHappened","txHash","signature","deltaOrderExecution","orderStatus","lastOrderState","status","notYetRunning","approvalIsStarted","key","subStep","isTxPending","isOrderBeingSigned","orderId","order","id","constructExplorerOrderDetailsLink","undefined","log","t0","error","isUserCancelledError","erroredStep","isError","t1","result","usedPrice"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useDeltaSwapStep.js","sources":["../../../../src/hooks/swap/tradeFlow/useDeltaSwapStep.ts"],"sourcesContent":["import type {\n DeltaOrderStep,\n DeltaOrderStepKey,\n} from \"@/components/widget/TradeOverview/steps\";\nimport {\n useDeltaFlow,\n type SubmitDeltaOrderResult,\n type UseDeltaFlowInput,\n type UseDeltaFlowResult,\n} from \"./useDeltaFlow\";\nimport { useLogger } from \"@/core/logger\";\nimport { constructExplorerOrderDetailsLink } from \"@/lib/utils/explorer\";\nimport { isUserCancelledError } from \"./common/errors\";\n\ntype UseDeltaSwapStepResult = {\n startDeltaSwap: UseDeltaFlowResult[\"runDeltaOrderFlow\"];\n // @TODO check if resetting is necessary on error, maybe not if submit on click works as a reset\n reset: UseDeltaFlowResult[\"reset\"];\n cancelFlow: UseDeltaFlowResult[\"cancelFlow\"];\n retryFlow: UseDeltaFlowResult[\"retryFlow\"];\n isCancellable: boolean;\n step?: DeltaOrderStep;\n explorerLink?: string;\n error: Error | null;\n erroredStep?: DeltaOrderStepKey;\n result?: SubmitDeltaOrderResult;\n usedPrice: UseDeltaFlowResult[\"usedPrice\"];\n};\n\nexport function useDeltaSwapStep(\n options: UseDeltaFlowInput\n): UseDeltaSwapStepResult {\n const logger = useLogger(\"DeltaSwapStep\");\n const deltaFlow = useDeltaFlow(options);\n\n const startDeltaSwap = deltaFlow.runDeltaOrderFlow;\n const reset = deltaFlow.reset;\n const cancelFlow = deltaFlow.cancelFlow;\n const retryFlow = deltaFlow.retryFlow;\n\n let step: DeltaOrderStep | undefined;\n\n const permitSigningHappeningOrNeverHappened =\n // isPending starts as false,\n // so we can use !isPermitSigned to detect if Permit signing is happening or never happened\n deltaFlow.signPermit.isPending || !deltaFlow.signPermit.isPermitSigned;\n\n const approvalHappeningOrNeverHappened =\n // isPending starts as false,\n // needsApproval && !isSuccess allows to detect approve step right away even then\n deltaFlow.approval.isPending || !deltaFlow.approval.isSuccess;\n\n const willUsePermit =\n deltaFlow.approval.needsApproval &&\n deltaFlow.signPermit.isPermitSupported &&\n deltaFlow.signPermit.isPermitReadyToSign;\n\n const permitOrApprovalHappeningOrNeverHappened = willUsePermit\n ? permitSigningHappeningOrNeverHappened\n : approvalHappeningOrNeverHappened;\n\n if (\n deltaFlow.approval.needsApproval &&\n permitOrApprovalHappeningOrNeverHappened\n ) {\n step = { key: \"signature\", subStep: \"approval-signature\" };\n } else if (deltaFlow.deltaOrderSubmission.isPending) {\n const permitOrApprovalHappened = !!(\n deltaFlow.approval.txHash || deltaFlow.signPermit.signature\n );\n\n step = {\n key: \"signature\",\n subStep: permitOrApprovalHappened\n ? \"order-signature\"\n : \"standalone-order-signature\",\n };\n } else if (deltaFlow.deltaOrderExecution.isPending) {\n const orderStatus = deltaFlow.deltaOrderExecution.lastOrderState?.status;\n const notYetRunning = !orderStatus || orderStatus === \"NOT_STARTED\";\n step = {\n key: notYetRunning ? \"auction\" : \"order-execution\",\n };\n } else if (deltaFlow.isPending) {\n // if something is between steps but not clear step,\n // then assume we're at the standalone signature sub-step\n step = { key: \"signature\", subStep: \"standalone-order-signature\" };\n }\n\n const approvalIsStarted =\n step?.key === \"signature\" &&\n step.subStep === \"approval-signature\" &&\n deltaFlow.approval.isTxPending;\n\n const isOrderBeingSigned =\n step?.key === \"signature\" &&\n (step.subStep === \"order-signature\" ||\n step.subStep === \"standalone-order-signature\");\n\n const isCancellable =\n // final Order is not yet submitted, there's something to cancel;\n // but some steps are already started so we can't simply dismiss\n approvalIsStarted || isOrderBeingSigned;\n\n const orderId = deltaFlow.deltaOrderSubmission.order?.id;\n const explorerLink = orderId\n ? constructExplorerOrderDetailsLink(orderId)\n : undefined;\n\n logger.once.log(\"step\", step, deltaFlow, {\n isCancellable,\n explorerLink,\n orderId,\n });\n\n // intentional cancellation is handled separately\n const error = isUserCancelledError(deltaFlow.error) ? null : deltaFlow.error;\n\n let erroredStep: DeltaOrderStepKey | undefined;\n\n if (deltaFlow.isError) {\n if (deltaFlow.approval.isError || deltaFlow.signPermit.isError) {\n erroredStep = \"signature\";\n } else if (deltaFlow.deltaOrderSubmission.isError) {\n erroredStep = \"auction\";\n } else if (deltaFlow.deltaOrderExecution.isError) {\n erroredStep = \"order-execution\";\n }\n }\n\n return {\n usedPrice: deltaFlow.usedPrice,\n startDeltaSwap,\n reset, // @TODO it maybe makes sense to reset mutation data when TradeOverflow drawer is closed\n // if we ever depend on mutation.result when Drawer is not closed,\n // otherwise the result sticks around until remount or next mutation start\n cancelFlow,\n retryFlow,\n isCancellable,\n step,\n explorerLink,\n error,\n erroredStep,\n result: deltaFlow.result,\n };\n}\n"],"names":["useDeltaSwapStep","options","$","_c","logger","useLogger","deltaFlow","useDeltaFlow","startDeltaSwap","runDeltaOrderFlow","reset","cancelFlow","retryFlow","explorerLink","isCancellable","step","once","permitSigningHappeningOrNeverHappened","signPermit","isPending","isPermitSigned","approvalHappeningOrNeverHappened","approval","isSuccess","willUsePermit","needsApproval","isPermitSupported","isPermitReadyToSign","permitOrApprovalHappeningOrNeverHappened","deltaOrderSubmission","permitOrApprovalHappened","txHash","signature","deltaOrderExecution","orderStatus","lastOrderState","status","notYetRunning","approvalIsStarted","key","subStep","isTxPending","isOrderBeingSigned","orderId","order","id","constructExplorerOrderDetailsLink","undefined","log","t0","error","isUserCancelledError","erroredStep","isError","t1","result","usedPrice"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/constants/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/constants/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,KACuC,CAAC;AAE5D,eAAO,MAAM,UAAU,EAAE,KAAK,EAAO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/lib/constants/index.ts"],"sourcesContent":["export const API_URL
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/lib/constants/index.ts"],"sourcesContent":["export const API_URL =\n import.meta.env.VITE_API_URL ?? \"https://api.paraswap.io\";\n\nexport const emptyArray: never[] = [];\n"],"names":["API_URL","import","emptyArray"],"mappings":"AAAO,MAAMA,OAAAA,GACXC;AAEK,MAAMC,aAAsB;;;;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Token } from '../../tokens/state/types';
|
|
2
2
|
import { ClassValue } from 'clsx';
|
|
3
|
+
import { NonEmptyArray } from 'ts-essentials';
|
|
3
4
|
export declare function cn(...inputs: ClassValue[]): string;
|
|
4
5
|
export declare function gatherObjectsByProp<T>(elements: T[], pickProp: (elem: T) => string): Record<string, T>;
|
|
5
6
|
export declare function gatherObjectsByProp<T, U>(elements: T[], pickProp: (elem: T) => string, transform: (elem: T, accumElem?: U) => U): Record<string, U>;
|
|
@@ -18,4 +19,5 @@ export declare const stringIncludes: (a: string, b: string) => boolean;
|
|
|
18
19
|
*/
|
|
19
20
|
export declare const shortenText: (str: string, start: number, end?: number) => string;
|
|
20
21
|
export declare function shortenAddress(address: string, slashIndex?: number, rightCutLength?: number): string;
|
|
22
|
+
export declare const isNonEmptyArray: <T>(array: T[]) => array is NonEmptyArray<T>;
|
|
21
23
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AAE7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC;AAKD,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,QAAQ,EAAE,CAAC,EAAE,EACb,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAC5B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACrB,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EACtC,QAAQ,EAAE,CAAC,EAAE,EACb,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,EAC7B,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,GACvC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAwBrB,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAC/B,QAAQ,EAAE,CAAC,EAAE,EAEb,mBAAmB,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,GACvC,CAAC,EAAE,CAWL;AAED,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,SAAS,KAAG,CAAC,IAAI,CACvE,CAAC;AAEN,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAErE;AAED,eAAO,MAAM,yBAAyB,GAAI,cAEvC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,YAAqC,CAAC;AAE/D,eAAO,MAAM,cAAc,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,KAAG,OAErD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,GACtB,KAAK,MAAM,EACX,OAAO,MAAM,EACb,MAAK,MAAU,KACd,MAGF,CAAC;AAEF,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,UAAU,SAAI,EACd,cAAc,SAAI,GACjB,MAAM,CAGR;AAED,eAAO,MAAM,eAAe,GAAI,CAAC,EAAE,OAAO,CAAC,EAAE,KAAG,KAAK,IAAI,aAAa,CAAC,CAAC,CAEvE,CAAC"}
|
package/dist/lib/utils/index.js
CHANGED
|
@@ -43,6 +43,9 @@ const shortenText = (str, start, end = 0) => {
|
|
|
43
43
|
function shortenAddress(address, slashIndex = 6, rightCutLength = 4) {
|
|
44
44
|
return shortenText(address, slashIndex, rightCutLength);
|
|
45
45
|
}
|
|
46
|
+
const isNonEmptyArray = (array) => {
|
|
47
|
+
return array.length > 0;
|
|
48
|
+
};
|
|
46
49
|
|
|
47
|
-
export { cn, filterInvalidTokenAddress, filterUnique, gatherObjectsByProp, hasCorrectAddressLength, isTruthy, shortenAddress, shortenText, stringIncludes };
|
|
50
|
+
export { cn, filterInvalidTokenAddress, filterUnique, gatherObjectsByProp, hasCorrectAddressLength, isNonEmptyArray, isTruthy, shortenAddress, shortenText, stringIncludes };
|
|
48
51
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/lib/utils/index.ts"],"sourcesContent":["import type { Token } from \"@/tokens/state/types\";\nimport { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\n// reduce element[] to Object{key: prop, val?: element}\n// for example\n// gatherObjectsByProp(Token[], token => token.address) => Record<address, Token|undefined>\nexport function gatherObjectsByProp<T>(\n elements: T[],\n pickProp: (elem: T) => string\n): Record<string, T>;\nexport function gatherObjectsByProp<T, U>(\n elements: T[],\n pickProp: (elem: T) => string,\n transform: (elem: T, accumElem?: U) => U\n): Record<string, U>;\nexport function gatherObjectsByProp<T, U>(\n elements: T[],\n pickProp: (elem: T) => string,\n transform?: (elem: T, accumElem?: U) => U\n): Record<string, T> | Record<string, U> {\n return elements.reduce<Record<string, T> | Record<string, U>>(\n (accum, element) => {\n const key = pickProp(element);\n\n const accumElem: T | U | undefined = accum[key];\n const transformedElement = transform\n ? // if transform is available, can only be U | undefined\n transform(element, accumElem as U | undefined)\n : element;\n\n accum[key] = transformedElement;\n\n return accum;\n },\n {}\n );\n}\n\nexport function filterUnique<T, U>(\n elements: T[],\n // supports multikey filtering, if only one key required return [U]\n constructUniqueKeys: (element: T) => U[]\n): T[] {\n if (elements.length <= 1) return elements;\n const hasSeen = new Set<U>();\n\n return elements.filter((element) => {\n const keys = constructUniqueKeys(element);\n if (keys.some((key) => hasSeen.has(key))) return false;\n\n keys.forEach((key) => hasSeen.add(key));\n return true;\n });\n}\n\nexport const isTruthy = <T>(x: T | false | 0 | \"\" | null | undefined): x is T =>\n !!x;\n\nexport function hasCorrectAddressLength(maybeAddress: string): boolean {\n return maybeAddress.length === 42;\n}\n\nexport const filterInvalidTokenAddress = ({\n address,\n}: Pick<Token, \"address\">) => hasCorrectAddressLength(address);\n\nexport const stringIncludes = (a: string, b: string): boolean => {\n return a.toLowerCase().includes(b.toLowerCase());\n};\n\n/**\n * Shorten any string with more than 6 characters (included) by inserting ellipsis placeholder in between\n *\n * @param {string} str the string to shorten\n * @param {number} start how much to leave off the start\n * @param {number} [end=0] how much to leave off the end\n * @returns {string} shortened text\n */\nexport const shortenText = (\n str: string,\n start: number,\n end: number = 0\n): string => {\n const regexp = new RegExp(`(.{${start}}).{3,}(.{${end}})`);\n return str.replace(regexp, \"$1...$2\");\n};\n\nexport function shortenAddress(\n address: string,\n slashIndex = 6,\n rightCutLength = 4\n): string {\n // An ethereum address has 42 characters\n return shortenText(address, slashIndex, rightCutLength);\n}\n"],"names":["cn","inputs","twMerge","clsx","gatherObjectsByProp","elements","pickProp","transform","reduce","accum","element","key","accumElem","transformedElement","filterUnique","constructUniqueKeys","length","hasSeen","Set","filter","keys","some","has","forEach","add","isTruthy","x","hasCorrectAddressLength","maybeAddress","filterInvalidTokenAddress","address","stringIncludes","a","b","toLowerCase","includes","shortenText","str","start","end","regexp","RegExp","replace","shortenAddress","slashIndex","rightCutLength"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/lib/utils/index.ts"],"sourcesContent":["import type { Token } from \"@/tokens/state/types\";\nimport { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\nimport type { NonEmptyArray } from \"ts-essentials\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\n// reduce element[] to Object{key: prop, val?: element}\n// for example\n// gatherObjectsByProp(Token[], token => token.address) => Record<address, Token|undefined>\nexport function gatherObjectsByProp<T>(\n elements: T[],\n pickProp: (elem: T) => string\n): Record<string, T>;\nexport function gatherObjectsByProp<T, U>(\n elements: T[],\n pickProp: (elem: T) => string,\n transform: (elem: T, accumElem?: U) => U\n): Record<string, U>;\nexport function gatherObjectsByProp<T, U>(\n elements: T[],\n pickProp: (elem: T) => string,\n transform?: (elem: T, accumElem?: U) => U\n): Record<string, T> | Record<string, U> {\n return elements.reduce<Record<string, T> | Record<string, U>>(\n (accum, element) => {\n const key = pickProp(element);\n\n const accumElem: T | U | undefined = accum[key];\n const transformedElement = transform\n ? // if transform is available, can only be U | undefined\n transform(element, accumElem as U | undefined)\n : element;\n\n accum[key] = transformedElement;\n\n return accum;\n },\n {}\n );\n}\n\nexport function filterUnique<T, U>(\n elements: T[],\n // supports multikey filtering, if only one key required return [U]\n constructUniqueKeys: (element: T) => U[]\n): T[] {\n if (elements.length <= 1) return elements;\n const hasSeen = new Set<U>();\n\n return elements.filter((element) => {\n const keys = constructUniqueKeys(element);\n if (keys.some((key) => hasSeen.has(key))) return false;\n\n keys.forEach((key) => hasSeen.add(key));\n return true;\n });\n}\n\nexport const isTruthy = <T>(x: T | false | 0 | \"\" | null | undefined): x is T =>\n !!x;\n\nexport function hasCorrectAddressLength(maybeAddress: string): boolean {\n return maybeAddress.length === 42;\n}\n\nexport const filterInvalidTokenAddress = ({\n address,\n}: Pick<Token, \"address\">) => hasCorrectAddressLength(address);\n\nexport const stringIncludes = (a: string, b: string): boolean => {\n return a.toLowerCase().includes(b.toLowerCase());\n};\n\n/**\n * Shorten any string with more than 6 characters (included) by inserting ellipsis placeholder in between\n *\n * @param {string} str the string to shorten\n * @param {number} start how much to leave off the start\n * @param {number} [end=0] how much to leave off the end\n * @returns {string} shortened text\n */\nexport const shortenText = (\n str: string,\n start: number,\n end: number = 0\n): string => {\n const regexp = new RegExp(`(.{${start}}).{3,}(.{${end}})`);\n return str.replace(regexp, \"$1...$2\");\n};\n\nexport function shortenAddress(\n address: string,\n slashIndex = 6,\n rightCutLength = 4\n): string {\n // An ethereum address has 42 characters\n return shortenText(address, slashIndex, rightCutLength);\n}\n\nexport const isNonEmptyArray = <T>(array: T[]): array is NonEmptyArray<T> => {\n return array.length > 0;\n};\n"],"names":["cn","inputs","twMerge","clsx","gatherObjectsByProp","elements","pickProp","transform","reduce","accum","element","key","accumElem","transformedElement","filterUnique","constructUniqueKeys","length","hasSeen","Set","filter","keys","some","has","forEach","add","isTruthy","x","hasCorrectAddressLength","maybeAddress","filterInvalidTokenAddress","address","stringIncludes","a","b","toLowerCase","includes","shortenText","str","start","end","regexp","RegExp","replace","shortenAddress","slashIndex","rightCutLength","isNonEmptyArray","array"],"mappings":";;;AAKO,SAASA,MAAMC,MAAAA,EAAsB;AAC1C,EAAA,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,MAAM,CAAC,CAAA;AAC7B;AAcO,SAASG,mBAAAA,CACdC,QAAAA,EACAC,QAAAA,EACAC,SAAAA,EACuC;AACvC,EAAA,OAAOF,QAAAA,CAASG,MAAAA,CACd,CAACC,KAAAA,EAAOC,OAAAA,KAAY;AAClB,IAAA,MAAMC,GAAAA,GAAML,SAASI,OAAO,CAAA;AAE5B,IAAA,MAAME,SAAAA,GAA+BH,MAAME,GAAG,CAAA;AAC9C,IAAA,MAAME,kBAAAA,GAAqBN,SAAAA;AAAAA;AAAAA,MAEvBA,SAAAA,CAAUG,SAASE,SAA0B;AAAA,QAC7CF,OAAAA;AAEJD,IAAAA,KAAAA,CAAME,GAAG,CAAA,GAAIE,kBAAAA;AAEb,IAAA,OAAOJ,KAAAA;AAAAA,EACT,CAAA,EACA,EACF,CAAA;AACF;AAEO,SAASK,YAAAA,CACdT,UAEAU,mBAAAA,EACK;AACL,EAAA,IAAIV,QAAAA,CAASW,MAAAA,IAAU,CAAA,EAAG,OAAOX,QAAAA;AACjC,EAAA,MAAMY,OAAAA,uBAAcC,GAAAA,EAAO;AAE3B,EAAA,OAAOb,QAAAA,CAASc,OAAQT,CAAAA,OAAAA,KAAY;AAClC,IAAA,MAAMU,IAAAA,GAAOL,oBAAoBL,OAAO,CAAA;AACxC,IAAA,IAAIU,IAAAA,CAAKC,KAAMV,CAAAA,GAAAA,KAAQM,OAAAA,CAAQK,IAAIX,GAAG,CAAC,GAAG,OAAO,KAAA;AAEjDS,IAAAA,IAAAA,CAAKG,OAAAA,CAASZ,CAAAA,GAAAA,KAAQM,OAAAA,CAAQO,GAAAA,CAAIb,GAAG,CAAC,CAAA;AACtC,IAAA,OAAO,IAAA;AAAA,EACT,CAAC,CAAA;AACH;AAEO,MAAMc,QAAAA,GAAW,CAAIC,CAAAA,KAC1B,CAAC,CAACA;AAEG,SAASC,wBAAwBC,YAAAA,EAA+B;AACrE,EAAA,OAAOA,aAAaZ,MAAAA,KAAW,EAAA;AACjC;AAEO,MAAMa,4BAA4BA,CAAC;AAAA,EACxCC;AACsB,CAAA,KAAMH,wBAAwBG,OAAO;AAEtD,MAAMC,cAAAA,GAAiBA,CAACC,CAAAA,EAAWC,CAAAA,KAAuB;AAC/D,EAAA,OAAOD,EAAEE,WAAAA,EAAY,CAAEC,QAAAA,CAASF,CAAAA,CAAEC,aAAa,CAAA;AACjD;AAUO,MAAME,WAAAA,GAAcA,CACzBC,GAAAA,EACAC,KAAAA,EACAC,MAAc,CAAA,KACH;AACX,EAAA,MAAMC,SAAS,IAAIC,MAAAA,CAAO,MAAMH,KAAK,CAAA,UAAA,EAAaC,GAAG,CAAA,EAAA,CAAI,CAAA;AACzD,EAAA,OAAOF,GAAAA,CAAIK,OAAAA,CAAQF,MAAAA,EAAQ,SAAS,CAAA;AACtC;AAEO,SAASG,cAAAA,CACdb,OAAAA,EACAc,UAAAA,GAAa,CAAA,EACbC,iBAAiB,CAAA,EACT;AAER,EAAA,OAAOT,WAAAA,CAAYN,OAAAA,EAASc,UAAAA,EAAYC,cAAc,CAAA;AACxD;AAEO,MAAMC,eAAAA,GAAkB,CAAIC,KAAAA,KAA0C;AAC3E,EAAA,OAAOA,MAAM/B,MAAAA,GAAS,CAAA;AACxB;;;;"}
|
|
@@ -19,10 +19,7 @@ export declare function applySlippage({ srcAmount, destAmount, }: Pick<DeltaOrMa
|
|
|
19
19
|
* @param priceMode - The mode of the price, either "delta" or "market".
|
|
20
20
|
* @returns The destination amount after applying partner fee.
|
|
21
21
|
*/
|
|
22
|
-
export declare function getDestAmountAfterFee(
|
|
23
|
-
price: DeltaOrMarketPrice;
|
|
24
|
-
priceMode: "delta" | "market";
|
|
25
|
-
}): string;
|
|
22
|
+
export declare function getDestAmountAfterFee(price: DeltaOrMarketPrice): string;
|
|
26
23
|
/**
|
|
27
24
|
* Calculates the destination amount after applying partner fee and slippage.
|
|
28
25
|
*
|
|
@@ -31,9 +28,8 @@ export declare function getDestAmountAfterFee({ price, priceMode, }: {
|
|
|
31
28
|
* @param priceMode - The mode of the price, either "delta" or "market".
|
|
32
29
|
* @returns The destination amount after applying partner fee and slippage.
|
|
33
30
|
*/
|
|
34
|
-
export declare function getDestAmountAfterFeeAndSlippage({ price, slippagePercent,
|
|
31
|
+
export declare function getDestAmountAfterFeeAndSlippage({ price, slippagePercent, }: {
|
|
35
32
|
price: DeltaOrMarketPrice;
|
|
36
33
|
slippagePercent: number;
|
|
37
|
-
priceMode: "delta" | "market";
|
|
38
34
|
}): string;
|
|
39
35
|
//# sourceMappingURL=price.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"price.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/price.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"price.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/price.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAQpE;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,EACE,SAAS,EACT,UAAU,GACX,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,GAAG,YAAY,CAAC,EACvD,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,KAAK,GAAG,MAAM;;;EAyBrB;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,UAU9D;AAED;;;;;;;GAOG;AACH,wBAAgB,gCAAgC,CAAC,EAC/C,KAAK,EACL,eAAe,GAChB,EAAE;IACD,KAAK,EAAE,kBAAkB,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CACzB,UAGA"}
|
package/dist/lib/utils/price.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { subtractSlippage, amountAfterSlippage } from './slippage.js';
|
|
2
2
|
import { subtractFee } from './fee.js';
|
|
3
|
+
import { isDeltaPrice, isBridgePrice } from '../../hooks/swap/prices/delta/queries/useDeltaPriceQuery.js';
|
|
3
4
|
|
|
4
5
|
function applySlippage({
|
|
5
6
|
srcAmount,
|
|
@@ -18,25 +19,17 @@ function applySlippage({
|
|
|
18
19
|
destAmount: destAmountAfterSlippage
|
|
19
20
|
};
|
|
20
21
|
}
|
|
21
|
-
function getDestAmountAfterFee({
|
|
22
|
-
price
|
|
23
|
-
|
|
24
|
-
}) {
|
|
25
|
-
const isDelta = priceMode === "delta";
|
|
26
|
-
if (isDelta) {
|
|
27
|
-
return "destAmountAfterBridge" in price ? price.destAmountAfterBridge : price.destAmount;
|
|
22
|
+
function getDestAmountAfterFee(price) {
|
|
23
|
+
if (isDeltaPrice(price)) {
|
|
24
|
+
return isBridgePrice(price) ? price.bridgeInfo.destAmountAfterBridge : price.destAmount;
|
|
28
25
|
}
|
|
29
26
|
return subtractFee(price.destAmount, price.partnerFee);
|
|
30
27
|
}
|
|
31
28
|
function getDestAmountAfterFeeAndSlippage({
|
|
32
29
|
price,
|
|
33
|
-
slippagePercent
|
|
34
|
-
priceMode
|
|
30
|
+
slippagePercent
|
|
35
31
|
}) {
|
|
36
|
-
const destAmountAfterFee = getDestAmountAfterFee(
|
|
37
|
-
price,
|
|
38
|
-
priceMode
|
|
39
|
-
});
|
|
32
|
+
const destAmountAfterFee = getDestAmountAfterFee(price);
|
|
40
33
|
return subtractSlippage(destAmountAfterFee, slippagePercent);
|
|
41
34
|
}
|
|
42
35
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"price.js","sources":["../../../src/lib/utils/price.ts"],"sourcesContent":["import type { DeltaOrMarketPrice } from \"@/hooks/swap/prices/types\";\nimport { amountAfterSlippage, subtractSlippage } from \"./slippage\";\nimport { subtractFee } from \"./fee\";\n\n/**\n * Applies slippage to the srcAmount and destAmount of a DeltaOrMarketPrice.\n *\n * @param srcAmount - The source amount of the trade.\n * @param destAmount - The destination amount of the trade.\n * @param slippage - The slippage percentage to apply (e.g., 0.5 for 0.5%).\n * @param side - The side of the trade, either \"BUY\" or \"SELL\".\n * @returns An object containing the adjusted srcAmount and destAmount after applying slippage.\n */\nexport function applySlippage(\n {\n srcAmount,\n destAmount,\n }: Pick<DeltaOrMarketPrice, \"srcAmount\" | \"destAmount\">,\n slippage: number,\n side: \"BUY\" | \"SELL\"\n) {\n if (side === \"BUY\") {\n const srcAmountAfterSlippage = amountAfterSlippage(\n srcAmount,\n slippage,\n side\n ).toFixed(0);\n\n return {\n srcAmount: srcAmountAfterSlippage,\n destAmount,\n };\n }\n\n const destAmountAfterSlippage = amountAfterSlippage(\n destAmount,\n slippage,\n side\n ).toFixed(0);\n\n return {\n srcAmount,\n destAmount: destAmountAfterSlippage,\n };\n}\n\n/**\n * Calculates the destination amount after applying partner fee.\n *\n * @param price - The DeltaOrMarketPrice object containing destAmounts and partnerFee.\n * @param priceMode - The mode of the price, either \"delta\" or \"market\".\n * @returns The destination amount after applying partner fee.\n */\nexport function getDestAmountAfterFee(
|
|
1
|
+
{"version":3,"file":"price.js","sources":["../../../src/lib/utils/price.ts"],"sourcesContent":["import type { DeltaOrMarketPrice } from \"@/hooks/swap/prices/types\";\nimport { amountAfterSlippage, subtractSlippage } from \"./slippage\";\nimport { subtractFee } from \"./fee\";\nimport {\n isBridgePrice,\n isDeltaPrice,\n} from \"@/hooks/swap/prices/delta/queries/useDeltaPriceQuery\";\n\n/**\n * Applies slippage to the srcAmount and destAmount of a DeltaOrMarketPrice.\n *\n * @param srcAmount - The source amount of the trade.\n * @param destAmount - The destination amount of the trade.\n * @param slippage - The slippage percentage to apply (e.g., 0.5 for 0.5%).\n * @param side - The side of the trade, either \"BUY\" or \"SELL\".\n * @returns An object containing the adjusted srcAmount and destAmount after applying slippage.\n */\nexport function applySlippage(\n {\n srcAmount,\n destAmount,\n }: Pick<DeltaOrMarketPrice, \"srcAmount\" | \"destAmount\">,\n slippage: number,\n side: \"BUY\" | \"SELL\"\n) {\n if (side === \"BUY\") {\n const srcAmountAfterSlippage = amountAfterSlippage(\n srcAmount,\n slippage,\n side\n ).toFixed(0);\n\n return {\n srcAmount: srcAmountAfterSlippage,\n destAmount,\n };\n }\n\n const destAmountAfterSlippage = amountAfterSlippage(\n destAmount,\n slippage,\n side\n ).toFixed(0);\n\n return {\n srcAmount,\n destAmount: destAmountAfterSlippage,\n };\n}\n\n/**\n * Calculates the destination amount after applying partner fee.\n *\n * @param price - The DeltaOrMarketPrice object containing destAmounts and partnerFee.\n * @param priceMode - The mode of the price, either \"delta\" or \"market\".\n * @returns The destination amount after applying partner fee.\n */\nexport function getDestAmountAfterFee(price: DeltaOrMarketPrice) {\n if (isDeltaPrice(price)) {\n // For Delta: price.destAmount | price.bridgeInfo.destAmountAfterBridge are amounts after fee\n return isBridgePrice(price)\n ? price.bridgeInfo.destAmountAfterBridge\n : price.destAmount;\n }\n\n // For Market: price.destAmount is amount before fee\n return subtractFee(price.destAmount, price.partnerFee);\n}\n\n/**\n * Calculates the destination amount after applying partner fee and slippage.\n *\n * @param price - The DeltaOrMarketPrice object containing destAmounts and partnerFee.\n * @param slippagePercent - The slippage percentage to apply.\n * @param priceMode - The mode of the price, either \"delta\" or \"market\".\n * @returns The destination amount after applying partner fee and slippage.\n */\nexport function getDestAmountAfterFeeAndSlippage({\n price,\n slippagePercent,\n}: {\n price: DeltaOrMarketPrice;\n slippagePercent: number;\n}) {\n const destAmountAfterFee = getDestAmountAfterFee(price);\n return subtractSlippage(destAmountAfterFee, slippagePercent);\n}\n"],"names":["applySlippage","srcAmount","destAmount","slippage","side","srcAmountAfterSlippage","amountAfterSlippage","toFixed","destAmountAfterSlippage","getDestAmountAfterFee","price","isDeltaPrice","isBridgePrice","bridgeInfo","destAmountAfterBridge","subtractFee","partnerFee","getDestAmountAfterFeeAndSlippage","slippagePercent","destAmountAfterFee","subtractSlippage"],"mappings":";;;;AAiBO,SAASA,aAAAA,CACd;AAAA,EACEC,SAAAA;AAAAA,EACAC;AACoD,CAAA,EACtDC,UACAC,IAAAA,EACA;AACA,EAAA,IAAIA,SAAS,KAAA,EAAO;AAClB,IAAA,MAAMC,yBAAyBC,mBAAAA,CAC7BL,SAAAA,EACAE,UACAC,IACF,CAAA,CAAEG,QAAQ,CAAC,CAAA;AAEX,IAAA,OAAO;AAAA,MACLN,SAAAA,EAAWI,sBAAAA;AAAAA,MACXH;AAAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAMM,0BAA0BF,mBAAAA,CAC9BJ,UAAAA,EACAC,UACAC,IACF,CAAA,CAAEG,QAAQ,CAAC,CAAA;AAEX,EAAA,OAAO;AAAA,IACLN,SAAAA;AAAAA,IACAC,UAAAA,EAAYM;AAAAA,GACd;AACF;AASO,SAASC,sBAAsBC,KAAAA,EAA2B;AAC/D,EAAA,IAAIC,YAAAA,CAAaD,KAAK,CAAA,EAAG;AAEvB,IAAA,OAAOE,cAAcF,KAAK,CAAA,GACtBA,KAAAA,CAAMG,UAAAA,CAAWC,wBACjBJ,KAAAA,CAAMR,UAAAA;AAAAA,EACZ;AAGA,EAAA,OAAOa,WAAAA,CAAYL,KAAAA,CAAMR,UAAAA,EAAYQ,KAAAA,CAAMM,UAAU,CAAA;AACvD;AAUO,SAASC,gCAAAA,CAAiC;AAAA,EAC/CP,KAAAA;AAAAA,EACAQ;AAIF,CAAA,EAAG;AACD,EAAA,MAAMC,kBAAAA,GAAqBV,sBAAsBC,KAAK,CAAA;AACtD,EAAA,OAAOU,gBAAAA,CAAiBD,oBAAoBD,eAAe,CAAA;AAC7D;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"savedAmountUSD.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/savedAmountUSD.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAOnD,eAAO,MAAM,iBAAiB,GAC5B,YAAY,IAAI,CACd,WAAW,EACX,QAAQ,GAAG,SAAS,GAAG,YAAY,GAAG,YAAY,GAAG,YAAY,CAClE,KACA,MAAM,GAAG,SAkEX,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { isNonEmptyArray } from './index.js';
|
|
2
|
+
import { subtractFee } from './fee.js';
|
|
3
|
+
import Big from 'big.js';
|
|
4
|
+
|
|
5
|
+
const DEST_AMOUNT_THRESHOLD = 0.5;
|
|
6
|
+
const getSavedAmountUSD = (priceRoute) => {
|
|
7
|
+
const {
|
|
8
|
+
others,
|
|
9
|
+
destAmount,
|
|
10
|
+
destUSD,
|
|
11
|
+
gasCostUSD,
|
|
12
|
+
partnerFee
|
|
13
|
+
} = priceRoute;
|
|
14
|
+
if (!destUSD || !others || !isNonEmptyArray(others)) return;
|
|
15
|
+
const veloraDestAmount = new Big(destAmount);
|
|
16
|
+
if (veloraDestAmount.eq(0)) return;
|
|
17
|
+
const dollarsPerUnit = new Big(destUSD).div(veloraDestAmount);
|
|
18
|
+
const {
|
|
19
|
+
totalUSD: bestOthersDexTotalUsd,
|
|
20
|
+
destAmount: bestOthersDexDestAmount
|
|
21
|
+
} = others.reduce((maxTotal, exchange) => {
|
|
22
|
+
if (!exchange?.data?.gasUSD) return maxTotal;
|
|
23
|
+
const destAmount2 = subtractFee(exchange.destAmount, partnerFee);
|
|
24
|
+
const {
|
|
25
|
+
data: {
|
|
26
|
+
gasUSD
|
|
27
|
+
}
|
|
28
|
+
} = exchange;
|
|
29
|
+
const destAmountBN = new Big(destAmount2);
|
|
30
|
+
const destUSD2 = destAmountBN.mul(dollarsPerUnit);
|
|
31
|
+
const totalUSD = destUSD2.minus(gasUSD);
|
|
32
|
+
if (totalUSD.gt(maxTotal.totalUSD)) {
|
|
33
|
+
return {
|
|
34
|
+
totalUSD,
|
|
35
|
+
destAmount: destAmountBN
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
return maxTotal;
|
|
39
|
+
}, {
|
|
40
|
+
totalUSD: new Big(0),
|
|
41
|
+
destAmount: new Big(0)
|
|
42
|
+
});
|
|
43
|
+
if (bestOthersDexTotalUsd.eq(0)) return;
|
|
44
|
+
if (
|
|
45
|
+
// destAmount of the best Other DEX is < DEST_AMOUNT_THRESHOLD of Velora destAmount
|
|
46
|
+
// means that that DEX alone can't cover the whole srcAmount
|
|
47
|
+
// so You Save would be a large number not representative of reality
|
|
48
|
+
bestOthersDexDestAmount.div(veloraDestAmount).lte(DEST_AMOUNT_THRESHOLD)
|
|
49
|
+
) return;
|
|
50
|
+
const veloraTotalUsd = new Big(subtractFee(destUSD, partnerFee)).minus(gasCostUSD);
|
|
51
|
+
const youSaveUsd = veloraTotalUsd.minus(bestOthersDexTotalUsd);
|
|
52
|
+
if (youSaveUsd.lte(0.01)) return;
|
|
53
|
+
return youSaveUsd.toNumber();
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export { getSavedAmountUSD };
|
|
57
|
+
//# sourceMappingURL=savedAmountUSD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"savedAmountUSD.js","sources":["../../../src/lib/utils/savedAmountUSD.ts"],"sourcesContent":["import { isNonEmptyArray } from \"@/lib/utils\";\nimport { subtractFee } from \"@/lib/utils/fee\";\nimport type { OptimalRate } from \"@velora-dex/sdk\";\nimport Big from \"big.js\";\n\n// if other DEXs have less than destAmount\n// don't count in `You save`\nconst DEST_AMOUNT_THRESHOLD = 0.5; // 50%\n\nexport const getSavedAmountUSD = (\n priceRoute: Pick<\n OptimalRate,\n \"others\" | \"destUSD\" | \"gasCostUSD\" | \"destAmount\" | \"partnerFee\"\n >\n): number | undefined => {\n const { others, destAmount, destUSD, gasCostUSD, partnerFee } = priceRoute;\n\n // missing arguments required for calc - early return\n if (\n !destUSD ||\n !others ||\n !isNonEmptyArray(others) // others must have at least one dex to compare to\n )\n return;\n\n const veloraDestAmount = new Big(destAmount);\n\n if (veloraDestAmount.eq(0)) return;\n\n const dollarsPerUnit = new Big(destUSD).div(veloraDestAmount);\n\n const {\n totalUSD: bestOthersDexTotalUsd,\n destAmount: bestOthersDexDestAmount,\n } = others.reduce<Record<\"totalUSD\" | \"destAmount\", Big>>(\n (maxTotal, exchange) => {\n // don't have data for this exchange -> skip it from calculation of the best of others\n if (!exchange?.data?.gasUSD) return maxTotal;\n\n const destAmount = subtractFee(exchange.destAmount, partnerFee);\n const {\n data: { gasUSD },\n } = exchange;\n\n const destAmountBN = new Big(destAmount);\n const destUSD = destAmountBN.mul(dollarsPerUnit);\n const totalUSD = destUSD.minus(gasUSD);\n\n if (totalUSD.gt(maxTotal.totalUSD)) {\n return {\n totalUSD,\n destAmount: destAmountBN,\n };\n }\n\n return maxTotal;\n },\n { totalUSD: new Big(0), destAmount: new Big(0) }\n );\n\n // no exchange from priceRoute.others had `gasUSD`\n if (bestOthersDexTotalUsd.eq(0)) return;\n\n if (\n // destAmount of the best Other DEX is < DEST_AMOUNT_THRESHOLD of Velora destAmount\n // means that that DEX alone can't cover the whole srcAmount\n // so You Save would be a large number not representative of reality\n bestOthersDexDestAmount.div(veloraDestAmount).lte(DEST_AMOUNT_THRESHOLD)\n )\n return;\n\n const veloraTotalUsd = new Big(subtractFee(destUSD, partnerFee)).minus(\n gasCostUSD\n );\n\n const youSaveUsd = veloraTotalUsd.minus(bestOthersDexTotalUsd);\n // very small amount or negative\n if (youSaveUsd.lte(0.01)) return;\n\n return youSaveUsd.toNumber();\n};\n"],"names":["DEST_AMOUNT_THRESHOLD","getSavedAmountUSD","priceRoute","others","destAmount","destUSD","gasCostUSD","partnerFee","isNonEmptyArray","veloraDestAmount","Big","eq","dollarsPerUnit","div","totalUSD","bestOthersDexTotalUsd","bestOthersDexDestAmount","reduce","maxTotal","exchange","data","gasUSD","subtractFee","destAmountBN","mul","minus","gt","lte","veloraTotalUsd","youSaveUsd","toNumber"],"mappings":";;;;AAOA,MAAMA,qBAAAA,GAAwB,GAAA;AAEvB,MAAMC,iBAAAA,GAAoBA,CAC/BC,UAAAA,KAIuB;AACvB,EAAA,MAAM;AAAA,IAAEC,MAAAA;AAAAA,IAAQC,UAAAA;AAAAA,IAAYC,OAAAA;AAAAA,IAASC,UAAAA;AAAAA,IAAYC;AAAAA,GAAW,GAAIL,UAAAA;AAGhE,EAAA,IACE,CAACG,OAAAA,IACD,CAACF,UACD,CAACK,eAAAA,CAAgBL,MAAM,CAAA,EAEvB;AAEF,EAAA,MAAMM,gBAAAA,GAAmB,IAAIC,GAAAA,CAAIN,UAAU,CAAA;AAE3C,EAAA,IAAIK,gBAAAA,CAAiBE,EAAAA,CAAG,CAAC,CAAA,EAAG;AAE5B,EAAA,MAAMC,iBAAiB,IAAIF,GAAAA,CAAIL,OAAO,CAAA,CAAEQ,IAAIJ,gBAAgB,CAAA;AAE5D,EAAA,MAAM;AAAA,IACJK,QAAAA,EAAUC,qBAAAA;AAAAA,IACVX,UAAAA,EAAYY;AAAAA,GACd,GAAIb,MAAAA,CAAOc,MAAAA,CACT,CAACC,UAAUC,QAAAA,KAAa;AAEtB,IAAA,IAAI,CAACA,QAAAA,EAAUC,IAAAA,EAAMC,MAAAA,EAAQ,OAAOH,QAAAA;AAEpC,IAAA,MAAMd,WAAAA,GAAakB,WAAAA,CAAYH,QAAAA,CAASf,UAAAA,EAAYG,UAAU,CAAA;AAC9D,IAAA,MAAM;AAAA,MACJa,IAAAA,EAAM;AAAA,QAAEC;AAAAA;AAAO,KACjB,GAAIF,QAAAA;AAEJ,IAAA,MAAMI,YAAAA,GAAe,IAAIb,GAAAA,CAAIN,WAAU,CAAA;AACvC,IAAA,MAAMC,QAAAA,GAAUkB,YAAAA,CAAaC,GAAAA,CAAIZ,cAAc,CAAA;AAC/C,IAAA,MAAME,QAAAA,GAAWT,QAAAA,CAAQoB,KAAAA,CAAMJ,MAAM,CAAA;AAErC,IAAA,IAAIP,QAAAA,CAASY,EAAAA,CAAGR,QAAAA,CAASJ,QAAQ,CAAA,EAAG;AAClC,MAAA,OAAO;AAAA,QACLA,QAAAA;AAAAA,QACAV,UAAAA,EAAYmB;AAAAA,OACd;AAAA,IACF;AAEA,IAAA,OAAOL,QAAAA;AAAAA,EACT,CAAA,EACA;AAAA,IAAEJ,QAAAA,EAAU,IAAIJ,GAAAA,CAAI,CAAC,CAAA;AAAA,IAAGN,UAAAA,EAAY,IAAIM,GAAAA,CAAI,CAAC;AAAA,GAC/C,CAAA;AAGA,EAAA,IAAIK,qBAAAA,CAAsBJ,EAAAA,CAAG,CAAC,CAAA,EAAG;AAEjC,EAAA;AAAA;AAAA;AAAA;AAAA,IAIEK,uBAAAA,CAAwBH,GAAAA,CAAIJ,gBAAgB,CAAA,CAAEkB,IAAI3B,qBAAqB;AAAA,IAEvE;AAEF,EAAA,MAAM4B,cAAAA,GAAiB,IAAIlB,GAAAA,CAAIY,WAAAA,CAAYjB,SAASE,UAAU,CAAC,CAAA,CAAEkB,KAAAA,CAC/DnB,UACF,CAAA;AAEA,EAAA,MAAMuB,UAAAA,GAAaD,cAAAA,CAAeH,KAAAA,CAAMV,qBAAqB,CAAA;AAE7D,EAAA,IAAIc,UAAAA,CAAWF,GAAAA,CAAI,IAAI,CAAA,EAAG;AAE1B,EAAA,OAAOE,WAAWC,QAAAA,EAAS;AAC7B;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SubmittedDeltaOrderFromAPI } from '../../hooks/swap/prices/delta/queries/useDeltaOrders';
|
|
2
2
|
import { MaybeVeloraDeltaAuction } from '../../hooks/swap/prices/delta/queries/useWatchDeltaOrder';
|
|
3
3
|
import { Hash, TransactionReceipt } from 'viem';
|
|
4
4
|
import { SupportedChainId } from '../web3/wagmi/types';
|
|
@@ -9,7 +9,7 @@ export type TxSentObject = {
|
|
|
9
9
|
receiptPromise: Promise<TransactionReceipt>;
|
|
10
10
|
};
|
|
11
11
|
export type OrderSentObject = {
|
|
12
|
-
order:
|
|
12
|
+
order: SubmittedDeltaOrderFromAPI;
|
|
13
13
|
lastOrderState: Promise<MaybeVeloraDeltaAuction>;
|
|
14
14
|
};
|
|
15
15
|
export declare function handleTxSent(txSent: TxSentObject): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toasts.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/toasts.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"toasts.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/toasts.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kDAAkD,CAAC;AACnG,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sDAAsD,CAAC;AAEpG,OAAO,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAM5D,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,IAAI,CAAC;IACb,OAAO,EAAE,gBAAgB,CAAC;IAC1B,UAAU,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;IAC3C,cAAc,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,0BAA0B,CAAC;IAClC,cAAc,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAClD,CAAC;AAEF,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAmCvD;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,CA4BhE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toasts.js","sources":["../../../src/lib/utils/toasts.tsx"],"sourcesContent":["import { CustomToast } from \"@/components/widget/Toasts/CustomToast\";\nimport type {
|
|
1
|
+
{"version":3,"file":"toasts.js","sources":["../../../src/lib/utils/toasts.tsx"],"sourcesContent":["import { CustomToast } from \"@/components/widget/Toasts/CustomToast\";\nimport type { SubmittedDeltaOrderFromAPI } from \"@/hooks/swap/prices/delta/queries/useDeltaOrders\";\nimport type { MaybeVeloraDeltaAuction } from \"@/hooks/swap/prices/delta/queries/useWatchDeltaOrder\";\nimport { toast } from \"sonner\";\nimport type { Hash, TransactionReceipt } from \"viem\";\nimport type { SupportedChainId } from \"../web3/wagmi/types\";\nimport {\n constructExplorerOrderDetailsLink,\n constructTxLinkForChain,\n} from \"./explorer\";\n\nexport type TxSentObject = {\n txHash: Hash;\n chainId: SupportedChainId;\n actionType: \"approve\" | \"swap\" | \"wrapETH\"; // not used anymore\n receiptPromise: Promise<TransactionReceipt>;\n};\n\nexport type OrderSentObject = {\n order: SubmittedDeltaOrderFromAPI;\n lastOrderState: Promise<MaybeVeloraDeltaAuction>;\n};\n\nexport function handleTxSent(txSent: TxSentObject): void {\n const customToastProps = {\n toastId: crypto.randomUUID(),\n detailsLink: constructTxLinkForChain({\n chainId: txSent.chainId,\n txHash: txSent.txHash,\n }),\n };\n\n const toastOptions = {\n id: customToastProps.toastId,\n loading: (\n <CustomToast\n variant=\"loading\"\n label=\"Pending Transaction\"\n {...customToastProps}\n />\n ),\n success: (\n <CustomToast\n variant=\"success\"\n label=\"Transaction Confirmed\"\n {...customToastProps}\n />\n ),\n error: (\n <CustomToast\n variant=\"error\"\n label=\"Transaction Failed\"\n {...customToastProps}\n />\n ),\n };\n\n toast.promise(txSent.receiptPromise, toastOptions);\n}\n\nexport function handleOrderSent(orderSent: OrderSentObject): void {\n const customToastProps = {\n toastId: crypto.randomUUID(),\n detailsLink: constructExplorerOrderDetailsLink(orderSent.order.id),\n };\n\n const toastOptions = {\n id: customToastProps.toastId,\n loading: (\n <CustomToast\n variant=\"loading\"\n label=\"Pending Order\"\n {...customToastProps}\n />\n ),\n success: (\n <CustomToast\n variant=\"success\"\n label=\"Order Confirmed\"\n {...customToastProps}\n />\n ),\n error: (\n <CustomToast variant=\"error\" label=\"Order Failed\" {...customToastProps} />\n ),\n };\n\n toast.promise(orderSent.lastOrderState, toastOptions);\n}\n"],"names":["handleTxSent","txSent","customToastProps","toastId","crypto","randomUUID","detailsLink","constructTxLinkForChain","chainId","txHash","toastOptions","id","loading","success","error","toast","promise","receiptPromise","handleOrderSent","orderSent","constructExplorerOrderDetailsLink","order","lastOrderState"],"mappings":";;;;;AAuBO,SAASA,aAAaC,MAAAA,EAA4B;AACvD,EAAA,MAAMC,gBAAAA,GAAmB;AAAA,IACvBC,OAAAA,EAASC,OAAOC,UAAAA,EAAW;AAAA,IAC3BC,aAAaC,uBAAAA,CAAwB;AAAA,MACnCC,SAASP,MAAAA,CAAOO,OAAAA;AAAAA,MAChBC,QAAQR,MAAAA,CAAOQ;AAAAA,KAChB;AAAA,GACH;AAEA,EAAA,MAAMC,YAAAA,GAAe;AAAA,IACnBC,IAAIT,gBAAAA,CAAiBC,OAAAA;AAAAA,IACrBS,OAAAA,sBACG,WAAA,EAAA,EACC,OAAA,EAAQ,WACR,KAAA,EAAM,qBAAA,EACN,GAAIV,gBAAAA,EAAiB,CAAA;AAAA,IAGzBW,OAAAA,sBACG,WAAA,EAAA,EACC,OAAA,EAAQ,WACR,KAAA,EAAM,uBAAA,EACN,GAAIX,gBAAAA,EAAiB,CAAA;AAAA,IAGzBY,KAAAA,sBACG,WAAA,EAAA,EACC,OAAA,EAAQ,SACR,KAAA,EAAM,oBAAA,EACN,GAAIZ,gBAAAA,EAAiB;AAAA,GAG3B;AAEAa,EAAAA,KAAAA,CAAMC,OAAAA,CAAQf,MAAAA,CAAOgB,cAAAA,EAAgBP,YAAY,CAAA;AACnD;AAEO,SAASQ,gBAAgBC,SAAAA,EAAkC;AAChE,EAAA,MAAMjB,gBAAAA,GAAmB;AAAA,IACvBC,OAAAA,EAASC,OAAOC,UAAAA,EAAW;AAAA,IAC3BC,WAAAA,EAAac,iCAAAA,CAAkCD,SAAAA,CAAUE,KAAAA,CAAMV,EAAE;AAAA,GACnE;AAEA,EAAA,MAAMD,YAAAA,GAAe;AAAA,IACnBC,IAAIT,gBAAAA,CAAiBC,OAAAA;AAAAA,IACrBS,OAAAA,sBACG,WAAA,EAAA,EACC,OAAA,EAAQ,WACR,KAAA,EAAM,eAAA,EACN,GAAIV,gBAAAA,EAAiB,CAAA;AAAA,IAGzBW,OAAAA,sBACG,WAAA,EAAA,EACC,OAAA,EAAQ,WACR,KAAA,EAAM,iBAAA,EACN,GAAIX,gBAAAA,EAAiB,CAAA;AAAA,IAGzBY,KAAAA,sBACG,WAAA,EAAA,EAAY,OAAA,EAAQ,SAAQ,KAAA,EAAM,cAAA,EAAe,GAAIZ,gBAAAA,EAAiB;AAAA,GAE3E;AAEAa,EAAAA,KAAAA,CAAMC,OAAAA,CAAQG,SAAAA,CAAUG,cAAAA,EAAgBZ,YAAY,CAAA;AACtD;;;;"}
|
|
@@ -28,7 +28,7 @@ const privyConfig = {
|
|
|
28
28
|
},
|
|
29
29
|
// another option is to give an invalid ID,
|
|
30
30
|
// but then it retries indefinitely
|
|
31
|
-
walletConnectCloudProjectId: "
|
|
31
|
+
walletConnectCloudProjectId: "9796e40630a6bea7605ac281b0deb939",
|
|
32
32
|
// Privy doesn't accept const Chain[]
|
|
33
33
|
supportedChains: chains
|
|
34
34
|
// defaultChain: chains[0], @TODO set to App's selected chain
|
|
@@ -11,7 +11,7 @@ const connectors = [
|
|
|
11
11
|
// metaMask() as CreateConnectorFn, // injected() detects metamask already
|
|
12
12
|
coinbaseWallet(),
|
|
13
13
|
walletConnect({
|
|
14
|
-
projectId: "
|
|
14
|
+
projectId: "9796e40630a6bea7605ac281b0deb939"
|
|
15
15
|
})
|
|
16
16
|
// getPrivyWalletConnector(), // only CorssApp Privy connector is available, not our use case
|
|
17
17
|
];
|
package/dist/styles.css
CHANGED
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
|
-
|
|
70
|
+
:root, :host {
|
|
71
71
|
--font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
|
72
72
|
--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
|
73
73
|
--color-red-800: oklch(44.4% .177 26.899);
|
|
@@ -791,6 +791,9 @@
|
|
|
791
791
|
.velora-widget.velora-widget .min-w-\[160px\] {
|
|
792
792
|
min-width: 160px;
|
|
793
793
|
}
|
|
794
|
+
.velora-widget.velora-widget .min-w-\[200px\] {
|
|
795
|
+
min-width: 200px;
|
|
796
|
+
}
|
|
794
797
|
.velora-widget.velora-widget .min-w-\[220px\] {
|
|
795
798
|
min-width: 220px;
|
|
796
799
|
}
|
|
@@ -1009,9 +1012,6 @@
|
|
|
1009
1012
|
.velora-widget.velora-widget .rounded-\[4px\] {
|
|
1010
1013
|
border-radius: 4px;
|
|
1011
1014
|
}
|
|
1012
|
-
.velora-widget.velora-widget .rounded-\[10px\] {
|
|
1013
|
-
border-radius: 10px;
|
|
1014
|
-
}
|
|
1015
1015
|
.velora-widget.velora-widget .rounded-\[12px\] {
|
|
1016
1016
|
border-radius: 12px;
|
|
1017
1017
|
}
|
|
@@ -1344,6 +1344,9 @@
|
|
|
1344
1344
|
.velora-widget.velora-widget .pt-\[24px\] {
|
|
1345
1345
|
padding-top: 24px;
|
|
1346
1346
|
}
|
|
1347
|
+
.velora-widget.velora-widget .pr-0\.5 {
|
|
1348
|
+
padding-right: calc(var(--spacing) * .5);
|
|
1349
|
+
}
|
|
1347
1350
|
.velora-widget.velora-widget .pr-2 {
|
|
1348
1351
|
padding-right: calc(var(--spacing) * 2);
|
|
1349
1352
|
}
|
|
@@ -1410,6 +1413,9 @@
|
|
|
1410
1413
|
.velora-widget.velora-widget .text-center {
|
|
1411
1414
|
text-align: center;
|
|
1412
1415
|
}
|
|
1416
|
+
.velora-widget.velora-widget .text-end {
|
|
1417
|
+
text-align: end;
|
|
1418
|
+
}
|
|
1413
1419
|
.velora-widget.velora-widget .text-left {
|
|
1414
1420
|
text-align: left;
|
|
1415
1421
|
}
|
|
@@ -1448,6 +1454,9 @@
|
|
|
1448
1454
|
.velora-widget.velora-widget .text-\[10px\] {
|
|
1449
1455
|
font-size: 10px;
|
|
1450
1456
|
}
|
|
1457
|
+
.velora-widget.velora-widget .text-\[11px\] {
|
|
1458
|
+
font-size: 11px;
|
|
1459
|
+
}
|
|
1451
1460
|
.velora-widget.velora-widget .text-\[18px\] {
|
|
1452
1461
|
font-size: 18px;
|
|
1453
1462
|
}
|
|
@@ -1483,6 +1492,9 @@
|
|
|
1483
1492
|
.velora-widget.velora-widget .text-wrap {
|
|
1484
1493
|
text-wrap: wrap;
|
|
1485
1494
|
}
|
|
1495
|
+
.velora-widget.velora-widget .wrap-anywhere {
|
|
1496
|
+
overflow-wrap: anywhere;
|
|
1497
|
+
}
|
|
1486
1498
|
.velora-widget.velora-widget .text-ellipsis {
|
|
1487
1499
|
text-overflow: ellipsis;
|
|
1488
1500
|
}
|
|
@@ -2164,8 +2176,8 @@
|
|
|
2164
2176
|
.velora-widget.velora-widget .data-\[vaul-drawer-direction\=bottom\]\:mt-24[data-vaul-drawer-direction="bottom"] {
|
|
2165
2177
|
margin-top: calc(var(--spacing) * 24);
|
|
2166
2178
|
}
|
|
2167
|
-
.velora-widget.velora-widget .data-\[vaul-drawer-direction\=bottom\]\:max-h-\[
|
|
2168
|
-
max-height:
|
|
2179
|
+
.velora-widget.velora-widget .data-\[vaul-drawer-direction\=bottom\]\:max-h-\[100\%\][data-vaul-drawer-direction="bottom"] {
|
|
2180
|
+
max-height: 100%;
|
|
2169
2181
|
}
|
|
2170
2182
|
.velora-widget.velora-widget .data-\[vaul-drawer-direction\=bottom\]\:rounded-xxl[data-vaul-drawer-direction="bottom"] {
|
|
2171
2183
|
border-radius: calc(var(--radius) + 10px);
|
|
@@ -2209,8 +2221,8 @@
|
|
|
2209
2221
|
.velora-widget.velora-widget .data-\[vaul-drawer-direction\=top\]\:mb-24[data-vaul-drawer-direction="top"] {
|
|
2210
2222
|
margin-bottom: calc(var(--spacing) * 24);
|
|
2211
2223
|
}
|
|
2212
|
-
.velora-widget.velora-widget .data-\[vaul-drawer-direction\=top\]\:max-h-\[
|
|
2213
|
-
max-height:
|
|
2224
|
+
.velora-widget.velora-widget .data-\[vaul-drawer-direction\=top\]\:max-h-\[100\%\][data-vaul-drawer-direction="top"] {
|
|
2225
|
+
max-height: 100%;
|
|
2214
2226
|
}
|
|
2215
2227
|
.velora-widget.velora-widget .data-\[vaul-drawer-direction\=top\]\:rounded-b-lg[data-vaul-drawer-direction="top"] {
|
|
2216
2228
|
border-bottom-right-radius: calc(var(--radius) + 2px);
|
|
@@ -2328,6 +2340,9 @@
|
|
|
2328
2340
|
.velora-widget.velora-widget .dark\:stroke-contrast-7:is(.velora-widget.dark *) {
|
|
2329
2341
|
stroke: var(--contrast-7);
|
|
2330
2342
|
}
|
|
2343
|
+
.velora-widget.velora-widget .dark\:text-contrast-3:is(.velora-widget.dark *) {
|
|
2344
|
+
color: var(--contrast-3);
|
|
2345
|
+
}
|
|
2331
2346
|
.velora-widget.velora-widget .dark\:text-contrast-4:is(.velora-widget.dark *) {
|
|
2332
2347
|
color: var(--contrast-4);
|
|
2333
2348
|
}
|
|
@@ -10,7 +10,8 @@ declare const _default: [
|
|
|
10
10
|
"url": "https://tokens.coingecko.com/ethereum/all.json",
|
|
11
11
|
"filename": "coingecko",
|
|
12
12
|
"chainId": 1,
|
|
13
|
-
"listName": "CoinGecko"
|
|
13
|
+
"listName": "CoinGecko",
|
|
14
|
+
"onByDefault": true
|
|
14
15
|
},
|
|
15
16
|
{
|
|
16
17
|
"url": "https://tokens.uniswap.org",
|
|
@@ -84,7 +85,8 @@ declare const _default: [
|
|
|
84
85
|
"url": "https://tokens.coingecko.com/binance-smart-chain/all.json",
|
|
85
86
|
"filename": "coingecko_bsc",
|
|
86
87
|
"chainId": 56,
|
|
87
|
-
"listName": "Coingecko"
|
|
88
|
+
"listName": "Coingecko",
|
|
89
|
+
"onByDefault": true
|
|
88
90
|
},
|
|
89
91
|
{
|
|
90
92
|
"url": "https://raw.githubusercontent.com/bgd-labs/aave-address-book/main/tokenlist.json",
|
|
@@ -246,6 +248,86 @@ declare const _default: [
|
|
|
246
248
|
"chainId": 130,
|
|
247
249
|
"listName": "Coingecko",
|
|
248
250
|
"onByDefault": true
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
"url": "./crosschain_token_list.json",
|
|
254
|
+
"filename": "crosschain_token_list",
|
|
255
|
+
"chainId": 1,
|
|
256
|
+
"listName": "Crosschain Token List",
|
|
257
|
+
"onByDefault": false,
|
|
258
|
+
"tags": ["crosschain_swap"]
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
"url": "./crosschain_token_list.json",
|
|
262
|
+
"filename": "crosschain_token_list",
|
|
263
|
+
"chainId": 10,
|
|
264
|
+
"listName": "Crosschain Token List",
|
|
265
|
+
"onByDefault": false,
|
|
266
|
+
"tags": ["crosschain_swap"]
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"url": "./crosschain_token_list.json",
|
|
270
|
+
"filename": "crosschain_token_list",
|
|
271
|
+
"chainId": 137,
|
|
272
|
+
"listName": "Crosschain Token List",
|
|
273
|
+
"onByDefault": false,
|
|
274
|
+
"tags": ["crosschain_swap"]
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
"url": "./crosschain_token_list.json",
|
|
278
|
+
"filename": "crosschain_token_list",
|
|
279
|
+
"chainId": 56,
|
|
280
|
+
"listName": "Crosschain Token List",
|
|
281
|
+
"onByDefault": false,
|
|
282
|
+
"tags": ["crosschain_swap"]
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
"url": "./crosschain_token_list.json",
|
|
286
|
+
"filename": "crosschain_token_list",
|
|
287
|
+
"chainId": 43114,
|
|
288
|
+
"listName": "Crosschain Token List",
|
|
289
|
+
"onByDefault": false,
|
|
290
|
+
"tags": ["crosschain_swap"]
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
"url": "./crosschain_token_list.json",
|
|
294
|
+
"filename": "crosschain_token_list",
|
|
295
|
+
"chainId": 42161,
|
|
296
|
+
"listName": "Crosschain Token List",
|
|
297
|
+
"onByDefault": false,
|
|
298
|
+
"tags": ["crosschain_swap"]
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
"url": "./crosschain_token_list.json",
|
|
302
|
+
"filename": "crosschain_token_list",
|
|
303
|
+
"chainId": 100,
|
|
304
|
+
"listName": "Crosschain Token List",
|
|
305
|
+
"onByDefault": false,
|
|
306
|
+
"tags": ["crosschain_swap"]
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
"url": "./crosschain_token_list.json",
|
|
310
|
+
"filename": "crosschain_token_list",
|
|
311
|
+
"chainId": 130,
|
|
312
|
+
"listName": "Crosschain Token List",
|
|
313
|
+
"onByDefault": false,
|
|
314
|
+
"tags": ["crosschain_swap"]
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
"url": "./crosschain_token_list.json",
|
|
318
|
+
"filename": "crosschain_token_list",
|
|
319
|
+
"chainId": 146,
|
|
320
|
+
"listName": "Crosschain Token List",
|
|
321
|
+
"onByDefault": false,
|
|
322
|
+
"tags": ["crosschain_swap"]
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
"url": "./crosschain_token_list.json",
|
|
326
|
+
"filename": "crosschain_token_list",
|
|
327
|
+
"chainId": 8453,
|
|
328
|
+
"listName": "Crosschain Token List",
|
|
329
|
+
"onByDefault": false,
|
|
330
|
+
"tags": ["crosschain_swap"]
|
|
249
331
|
}
|
|
250
332
|
]
|
|
251
333
|
;
|