@velora-dex/widget 0.10.2-dev.0 → 0.10.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.
Files changed (89) hide show
  1. package/dist/components/widget/NetworkIcon/NetworkIconSquare.js +23 -23
  2. package/dist/core/Updaters.d.ts.map +1 -1
  3. package/dist/core/Updaters.js +11 -11
  4. package/dist/core/Updaters.js.map +1 -1
  5. package/dist/core/across/isCrosschainPossible.js +4 -4
  6. package/dist/core/inputs/state/selectedTokenActionsAtom.js +37 -37
  7. package/dist/core/inputs/state/setTokenByAddressAtom.d.ts.map +1 -1
  8. package/dist/core/inputs/state/setTokenByAddressAtom.js +68 -70
  9. package/dist/core/inputs/state/setTokenByAddressAtom.js.map +1 -1
  10. package/dist/core/limit/state/selectedTokenActionsAtom.js +27 -27
  11. package/dist/core/limit/state/selectedTokenAtom.js +7 -7
  12. package/dist/core/state/chainToAtom.js +14 -14
  13. package/dist/core/twap/state/selectedTokenActionsAtom.js +33 -33
  14. package/dist/hooks/tokens/data/useCombineTokensWithFetched.js +4 -4
  15. package/dist/hooks/tokens/useAllTokensWithFilter.js +15 -15
  16. package/dist/hooks/tokens/useTokensByAddress.js +6 -6
  17. package/dist/hooks/useSDK.d.ts +1 -3
  18. package/dist/hooks/useSDK.d.ts.map +1 -1
  19. package/dist/hooks/useSDK.js.map +1 -1
  20. package/dist/lib/constants/urls.d.ts +0 -1
  21. package/dist/lib/constants/urls.d.ts.map +1 -1
  22. package/dist/lib/constants/urls.js +1 -1
  23. package/dist/lib/constants/urls.js.map +1 -1
  24. package/dist/lib/utils/index.js +23 -15
  25. package/dist/lib/utils/index.js.map +1 -1
  26. package/dist/tokens/constructor.d.ts +8 -1
  27. package/dist/tokens/constructor.d.ts.map +1 -1
  28. package/dist/tokens/constructor.js +4 -2
  29. package/dist/tokens/constructor.js.map +1 -1
  30. package/dist/tokens/defaultTokens.d.ts.map +1 -1
  31. package/dist/tokens/defaultTokens.js +12 -5
  32. package/dist/tokens/defaultTokens.js.map +1 -1
  33. package/dist/tokens/lists/constants.d.ts +8 -0
  34. package/dist/tokens/lists/constants.d.ts.map +1 -1
  35. package/dist/tokens/lists/constants.js +13 -3
  36. package/dist/tokens/lists/constants.js.map +1 -1
  37. package/dist/tokens/lists/download.d.ts +1 -1
  38. package/dist/tokens/lists/download.d.ts.map +1 -1
  39. package/dist/tokens/lists/download.js +13 -5
  40. package/dist/tokens/lists/download.js.map +1 -1
  41. package/dist/tokens/lists/lists.js +22 -0
  42. package/dist/tokens/lists/lists.js.map +1 -0
  43. package/dist/tokens/lists/lists.json.d.ts +12 -0
  44. package/dist/tokens/lists/state/effects.d.ts.map +1 -1
  45. package/dist/tokens/lists/state/effects.js +21 -22
  46. package/dist/tokens/lists/state/effects.js.map +1 -1
  47. package/dist/tokens/lists/state/tokenListsStateAtom.d.ts +1 -1
  48. package/dist/tokens/lists/state/tokenListsStateAtom.d.ts.map +1 -1
  49. package/dist/tokens/lists/state/tokenListsStateAtom.js +21 -17
  50. package/dist/tokens/lists/state/tokenListsStateAtom.js.map +1 -1
  51. package/dist/tokens/lists/types.d.ts +6 -4
  52. package/dist/tokens/lists/types.d.ts.map +1 -1
  53. package/dist/tokens/lists/utils.d.ts +2 -1
  54. package/dist/tokens/lists/utils.d.ts.map +1 -1
  55. package/dist/tokens/lists/utils.js +6 -5
  56. package/dist/tokens/lists/utils.js.map +1 -1
  57. package/dist/tokens/queries.d.ts.map +1 -1
  58. package/dist/tokens/queries.js +32 -30
  59. package/dist/tokens/queries.js.map +1 -1
  60. package/dist/tokens/stabeCoins/hooks.d.ts +4 -1
  61. package/dist/tokens/stabeCoins/hooks.d.ts.map +1 -1
  62. package/dist/tokens/stabeCoins/hooks.js +7 -8
  63. package/dist/tokens/stabeCoins/hooks.js.map +1 -1
  64. package/dist/tokens/stabeCoins/index.d.ts +2 -0
  65. package/dist/tokens/stabeCoins/index.d.ts.map +1 -0
  66. package/dist/tokens/stabeCoins/index.js +6 -0
  67. package/dist/tokens/stabeCoins/index.js.map +1 -0
  68. package/dist/tokens/state/addImportedTokenAtom.d.ts +1 -0
  69. package/dist/tokens/state/addImportedTokenAtom.d.ts.map +1 -1
  70. package/dist/tokens/state/addImportedTokenAtom.js +4 -1
  71. package/dist/tokens/state/addImportedTokenAtom.js.map +1 -1
  72. package/dist/tokens/state/allTokensByChainAtom.d.ts.map +1 -1
  73. package/dist/tokens/state/allTokensByChainAtom.js +30 -20
  74. package/dist/tokens/state/allTokensByChainAtom.js.map +1 -1
  75. package/dist/tokens/state/fromListsAtom.js +1 -1
  76. package/dist/tokens/state/fromListsAtom.js.map +1 -1
  77. package/dist/tokens/types.d.ts +1 -0
  78. package/dist/tokens/types.d.ts.map +1 -1
  79. package/dist/tokens/utils/sets.d.ts +4 -0
  80. package/dist/tokens/utils/sets.d.ts.map +1 -0
  81. package/package.json +2 -2
  82. package/dist/core/state/tokenListsAtom.d.ts +0 -2
  83. package/dist/core/state/tokenListsAtom.d.ts.map +0 -1
  84. package/dist/core/state/tokenListsAtom.js +0 -9
  85. package/dist/core/state/tokenListsAtom.js.map +0 -1
  86. package/dist/tokens/state/apiTokensAtom.d.ts +0 -24
  87. package/dist/tokens/state/apiTokensAtom.d.ts.map +0 -1
  88. package/dist/tokens/state/apiTokensAtom.js +0 -53
  89. package/dist/tokens/state/apiTokensAtom.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useSDK.js","names":["axios","useMemo","constructAxiosFetcher","constructFetchFetcher","constructPartialSDK","constructGetSpender","constructGetAdapters","constructBuildTx","constructAllOTCOrdersHandlers","constructGetRate","constructPreSignDeltaOrder","constructPostDeltaOrder","constructCancelDeltaOrder","constructIsTokenSupportedInDelta","constructDeltaTokenModule","constructViemContractCaller","OTCOrderHandlers","GetRateFunctions","APIVersion","PreSignDeltaOrderFunctions","CancelDeltaOrderFunctions","IsTokenSupportedInDeltaFunctions","BuildTxFunctions","GetSpenderFunctions","GetAdaptersFunctions","MinViemClient","constructGetOTCOrders","constructBuildOTCOrder","constructPostOTCOrder","constructFillOTCOrder","GetOTCOrdersFunctions","BuildOTCOrderFunctions","PostOTCOrderFunctions","FillOTCOrderFunctions","ContractCallerFunctions","DeltaTokenModuleFunctions","constructPreSignTWAPDeltaOrder","PreSignTWAPDeltaOrderFunctions","constructPostTWAPDeltaOrder","GetBridgeRoutesFunctions","GetAgentsListFunctions","constructGetBridgeRoutes","constructGetAgentsList","GetDeltaPriceFunctions","GetDeltaOrdersFunctions","BuildDeltaOrderFunctions","PostDeltaOrderFunctions","BuildTWAPDeltaOrderFunctions","PostTWAPDeltaOrderFunctions","SignDeltaOrderFunctions","constructGetDeltaPrice","constructGetDeltaOrders","constructBuildDeltaOrder","constructBuildTWAPDeltaOrder","constructSignDeltaOrder","constructGetTokens","GetTokensFunctions","encodeFunctionData","Address","Hash","Hex","Prettify","getLogger","getApiURL","useApiConfig","useSDKFetcher","apiConfig","useKeepAliveSDKFetcher","window","fetch","keepalive","SDKCreateParams","chainId","apiURL","account","MarketSwapSDK","ConstructedSDKOutput","sdk","T","appVersion","useMarketSwapSDK","fetcher","SDKconfig","version","TokensSDK","useTokensSDK","OTCOrdersSDKCreateParams","client","ReadOnlyOTCOrdersSDK","OTCOrdersSDK","otcSDKLogger","useOTCOrdersSDK","once","log","contractCaller","CalldataContractCaller","constructCalldataContractCaller","transactCall","params","abi","contractMethod","functionName","args","calldata","staticCall","Error","signTypedDataCall","useFetchOnlySDK","Partial","calldataSDKLogger","useCalldataSDK","Omit","ReadOnlyDeltaSDK","DeltaSDK","DeltaSDKCreateParams","deltaSDKLogger","useDeltaSDK"],"sources":["../../src/hooks/useSDK.ts"],"sourcesContent":["import axios from \"axios\";\nimport { useMemo } from \"react\";\n\nimport {\n constructAxiosFetcher,\n constructFetchFetcher,\n constructPartialSDK,\n constructGetSpender,\n constructGetAdapters,\n constructBuildTx,\n constructAllOTCOrdersHandlers,\n constructGetRate,\n constructPreSignDeltaOrder,\n constructPostDeltaOrder,\n constructCancelDeltaOrder,\n constructIsTokenSupportedInDelta,\n constructDeltaTokenModule,\n constructViemContractCaller,\n type OTCOrderHandlers,\n type GetRateFunctions,\n type APIVersion,\n type PreSignDeltaOrderFunctions,\n type CancelDeltaOrderFunctions,\n type IsTokenSupportedInDeltaFunctions,\n type BuildTxFunctions,\n type GetSpenderFunctions,\n type GetAdaptersFunctions,\n type MinViemClient,\n constructGetOTCOrders,\n constructBuildOTCOrder,\n constructPostOTCOrder,\n constructFillOTCOrder,\n type GetOTCOrdersFunctions,\n type BuildOTCOrderFunctions,\n type PostOTCOrderFunctions,\n type FillOTCOrderFunctions,\n type ContractCallerFunctions,\n type DeltaTokenModuleFunctions,\n constructPreSignTWAPDeltaOrder,\n type PreSignTWAPDeltaOrderFunctions,\n constructPostTWAPDeltaOrder,\n type GetBridgeRoutesFunctions,\n type GetAgentsListFunctions,\n constructGetBridgeRoutes,\n constructGetAgentsList,\n type GetDeltaPriceFunctions,\n type GetDeltaOrdersFunctions,\n type BuildDeltaOrderFunctions,\n type PostDeltaOrderFunctions,\n type BuildTWAPDeltaOrderFunctions,\n type PostTWAPDeltaOrderFunctions,\n type SignDeltaOrderFunctions,\n constructGetDeltaPrice,\n constructGetDeltaOrders,\n constructBuildDeltaOrder,\n constructBuildTWAPDeltaOrder,\n constructSignDeltaOrder,\n constructGetTokens,\n type GetTokensFunctions,\n} from \"@velora-dex/sdk\";\nimport { encodeFunctionData, type Address, type Hash, type Hex } from \"viem\";\nimport type { Prettify } from \"ts-essentials\";\nimport { getLogger } from \"@/core/logger\";\nimport { getApiURL } from \"@/lib/constants/urls\";\nimport { useApiConfig } from \"@/core/state/apiConfigAtom\";\n\nfunction useSDKFetcher() {\n \"use no memo\";\n\n const apiConfig = useApiConfig();\n\n return useMemo(() => {\n return constructAxiosFetcher(axios, apiConfig);\n }, [apiConfig]);\n}\n\nfunction useKeepAliveSDKFetcher() {\n \"use no memo\";\n\n const apiConfig = useApiConfig();\n\n return useMemo(() => {\n if (typeof window === \"undefined\") return;\n return constructFetchFetcher(window.fetch, {\n ...apiConfig,\n keepalive: true,\n });\n }, [apiConfig]);\n}\n\ntype SDKCreateParams = {\n chainId: number;\n apiURL?: string;\n account?: Address;\n};\n\nexport type MarketSwapSDK = Prettify<\n GetSpenderFunctions &\n BuildTxFunctions &\n GetRateFunctions &\n GetAdaptersFunctions\n>;\n\ntype ConstructedSDKOutput<T> = {\n sdk: T;\n appVersion: APIVersion;\n chainId: number;\n apiURL: string;\n};\n\nexport function useMarketSwapSDK({\n chainId,\n apiURL,\n}: SDKCreateParams): ConstructedSDKOutput<MarketSwapSDK> {\n \"use no memo\";\n\n const fetcher = useSDKFetcher();\n\n const sdk = useMemo(() => {\n const SDKconfig = {\n apiURL: apiURL ?? getApiURL(),\n chainId,\n fetcher,\n };\n\n return constructPartialSDK(\n SDKconfig,\n constructGetRate,\n constructGetSpender,\n constructGetAdapters,\n constructBuildTx\n );\n }, [apiURL, chainId, fetcher]);\n\n return {\n appVersion: sdk.version,\n chainId: sdk.chainId,\n apiURL: sdk.apiURL,\n sdk,\n };\n}\nexport type TokensSDK = Prettify<GetTokensFunctions>;\n\nexport function useTokensSDK({\n chainId,\n apiURL,\n}: SDKCreateParams): ConstructedSDKOutput<TokensSDK> {\n \"use no memo\";\n\n const fetcher = useSDKFetcher();\n\n const sdk = useMemo(() => {\n const SDKconfig = {\n apiURL: apiURL ?? getApiURL(),\n chainId,\n fetcher,\n };\n\n return constructPartialSDK(SDKconfig, constructGetTokens);\n }, [apiURL, chainId, fetcher]);\n\n return {\n appVersion: sdk.version,\n chainId: sdk.chainId,\n apiURL: sdk.apiURL,\n sdk,\n };\n}\n\ntype OTCOrdersSDKCreateParams = SDKCreateParams & {\n client?: MinViemClient;\n};\n\ntype ReadOnlyOTCOrdersSDK = Prettify<\n GetOTCOrdersFunctions & BuildOTCOrderFunctions & PostOTCOrderFunctions\n>;\n\nexport type OTCOrdersSDK = Prettify<OTCOrderHandlers<Hash>>;\n\nconst otcSDKLogger = getLogger(\"OTCOrdersSDK\");\n\n// can paraswap.fillOrder from a taker address to simulate happy path\n// @TODO check that we always use correct SDK version\nexport function useOTCOrdersSDK({\n chainId,\n apiURL,\n account,\n client,\n}: OTCOrdersSDKCreateParams & {\n account?: undefined;\n client?: undefined;\n}): ConstructedSDKOutput<ReadOnlyOTCOrdersSDK>;\nexport function useOTCOrdersSDK({\n chainId,\n apiURL,\n account,\n client,\n}: OTCOrdersSDKCreateParams & {\n account: Address;\n client: MinViemClient;\n}): ConstructedSDKOutput<OTCOrdersSDK>;\nexport function useOTCOrdersSDK({\n chainId,\n apiURL,\n account,\n client,\n}: OTCOrdersSDKCreateParams): ConstructedSDKOutput<\n OTCOrdersSDK | ReadOnlyOTCOrdersSDK\n>;\nexport function useOTCOrdersSDK({\n chainId,\n apiURL,\n account,\n client,\n}: OTCOrdersSDKCreateParams): ConstructedSDKOutput<\n OTCOrdersSDK | ReadOnlyOTCOrdersSDK\n> {\n \"use no memo\";\n\n const fetcher = useSDKFetcher();\n\n const sdk = useMemo(() => {\n otcSDKLogger.once.log(\"init sdk\");\n const SDKconfig = {\n apiURL: apiURL ?? getApiURL(),\n chainId,\n fetcher,\n };\n\n if (!client || !account) {\n return constructPartialSDK(\n SDKconfig,\n constructGetOTCOrders,\n constructBuildOTCOrder,\n constructPostOTCOrder\n );\n }\n\n const contractCaller = constructViemContractCaller(client, account);\n\n return constructPartialSDK(\n { ...SDKconfig, contractCaller },\n constructAllOTCOrdersHandlers\n );\n }, [client, account, apiURL, chainId, fetcher]);\n\n return {\n appVersion: sdk.version,\n chainId: sdk.chainId,\n apiURL: sdk.apiURL,\n sdk,\n };\n}\n\n// ContractCaller that returns Contract[method](args) calldata instead of sending out a transaction\ntype CalldataContractCaller = ContractCallerFunctions<Hex>;\n\nconst constructCalldataContractCaller = (): CalldataContractCaller => {\n const transactCall: CalldataContractCaller[\"transactCall\"] = async (\n params\n ) => {\n const { abi, contractMethod: functionName, args } = params;\n const calldata = encodeFunctionData<typeof abi, string>({\n abi,\n functionName,\n args,\n });\n return calldata;\n };\n\n // won't be used, but needed for types\n const staticCall = () => {\n throw new Error(\"Not implemented\");\n };\n\n return {\n transactCall,\n staticCall,\n signTypedDataCall: staticCall,\n };\n};\n\n// can be used to POST final data before page is closed\nexport const useFetchOnlySDK = ({\n chainId,\n apiURL,\n}: SDKCreateParams): Partial<ConstructedSDKOutput<PostDeltaOrderFunctions>> => {\n \"use no memo\";\n\n // fetch, unlike axios allows for `keepalive` parameter,\n // so we can use it to keep the request alive a bit after the page is closed.\n // the alternative of using navigator.sendBeacon doesn't work with API because it includes credentials=always\n // which is incompatible with API CORS settings\n const fetcher = useKeepAliveSDKFetcher();\n\n const sdk = useMemo(() => {\n if (!fetcher) return;\n\n return constructPartialSDK(\n {\n apiURL: apiURL ?? getApiURL(),\n chainId,\n fetcher,\n },\n constructPostDeltaOrder\n );\n }, [apiURL, chainId, fetcher]);\n\n return {\n appVersion: sdk?.version,\n chainId: sdk?.chainId,\n apiURL: sdk?.apiURL,\n sdk,\n };\n};\n\nconst calldataSDKLogger = getLogger(\"CalldataSDK\");\n\nexport const useCalldataSDK = ({\n chainId,\n apiURL,\n client,\n}: Omit<OTCOrdersSDKCreateParams, \"account\">): Partial<\n ConstructedSDKOutput<\n FillOTCOrderFunctions<Hex> &\n PreSignDeltaOrderFunctions<Hex> &\n BuildDeltaOrderFunctions &\n PreSignTWAPDeltaOrderFunctions<Hex> &\n BuildTWAPDeltaOrderFunctions\n >\n> => {\n \"use no memo\";\n\n const fetcher = useSDKFetcher();\n\n const sdk = useMemo(() => {\n if (!client) return;\n calldataSDKLogger.once.log(\"init sdk\");\n\n const contractCaller = constructCalldataContractCaller();\n\n const SDKconfig = {\n apiURL: apiURL ?? getApiURL(),\n chainId,\n fetcher,\n contractCaller,\n };\n\n return constructPartialSDK(\n SDKconfig,\n constructFillOTCOrder,\n constructPreSignDeltaOrder,\n constructBuildDeltaOrder,\n constructPreSignTWAPDeltaOrder,\n constructBuildTWAPDeltaOrder\n );\n }, [apiURL, chainId, client, fetcher]);\n\n return {\n appVersion: sdk?.version,\n chainId: sdk?.chainId,\n apiURL: sdk?.apiURL,\n sdk,\n };\n};\n\ntype ReadOnlyDeltaSDK = Prettify<\n GetDeltaPriceFunctions &\n GetDeltaOrdersFunctions &\n BuildDeltaOrderFunctions &\n PostDeltaOrderFunctions &\n BuildTWAPDeltaOrderFunctions &\n PostTWAPDeltaOrderFunctions &\n GetBridgeRoutesFunctions &\n IsTokenSupportedInDeltaFunctions &\n GetAgentsListFunctions & { chainId: number }\n>;\n\nexport type DeltaSDK = Prettify<\n ReadOnlyDeltaSDK &\n SignDeltaOrderFunctions &\n CancelDeltaOrderFunctions &\n PreSignDeltaOrderFunctions<Hash> &\n DeltaTokenModuleFunctions<Hash> &\n PreSignTWAPDeltaOrderFunctions<Hash>\n>;\n\ntype DeltaSDKCreateParams = SDKCreateParams & {\n client?: MinViemClient;\n};\n\nconst deltaSDKLogger = getLogger(\"DeltaSDK\");\n\nexport function useDeltaSDK({\n chainId,\n apiURL,\n account,\n client,\n}: DeltaSDKCreateParams & {\n account?: undefined;\n client?: undefined;\n}): ConstructedSDKOutput<ReadOnlyDeltaSDK>;\nexport function useDeltaSDK({\n chainId,\n apiURL,\n account,\n client,\n}: DeltaSDKCreateParams & {\n account: Address;\n client: MinViemClient;\n}): ConstructedSDKOutput<DeltaSDK>;\nexport function useDeltaSDK({\n chainId,\n apiURL,\n account,\n client,\n}: DeltaSDKCreateParams): ConstructedSDKOutput<DeltaSDK | ReadOnlyDeltaSDK>;\nexport function useDeltaSDK({\n chainId,\n apiURL,\n account,\n client,\n}: DeltaSDKCreateParams): ConstructedSDKOutput<DeltaSDK | ReadOnlyDeltaSDK> {\n \"use no memo\";\n\n const fetcher = useSDKFetcher();\n\n const sdk = useMemo(() => {\n deltaSDKLogger.once.log(\"init sdk\");\n const SDKconfig = {\n apiURL: apiURL ?? getApiURL(),\n chainId,\n fetcher,\n };\n\n if (!client || !account) {\n return constructPartialSDK(\n SDKconfig,\n constructGetDeltaPrice,\n constructGetDeltaOrders,\n constructBuildDeltaOrder,\n constructPostDeltaOrder,\n constructBuildTWAPDeltaOrder,\n constructPostTWAPDeltaOrder,\n constructGetBridgeRoutes,\n constructIsTokenSupportedInDelta,\n constructGetAgentsList\n );\n }\n\n const contractCaller = constructViemContractCaller(client, account);\n\n return constructPartialSDK(\n { ...SDKconfig, contractCaller },\n constructGetDeltaPrice,\n constructGetDeltaOrders,\n constructBuildDeltaOrder,\n constructPostDeltaOrder,\n constructBuildTWAPDeltaOrder,\n constructPostTWAPDeltaOrder,\n constructGetBridgeRoutes,\n constructIsTokenSupportedInDelta,\n constructGetAgentsList,\n constructSignDeltaOrder,\n constructCancelDeltaOrder,\n constructPreSignDeltaOrder,\n constructPreSignTWAPDeltaOrder,\n constructDeltaTokenModule\n );\n }, [apiURL, chainId, client, account, fetcher]);\n\n return {\n appVersion: sdk.version,\n chainId: sdk.chainId,\n apiURL: sdk.apiURL,\n sdk,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useSDK.js","names":["axios","useMemo","constructAxiosFetcher","constructFetchFetcher","constructPartialSDK","constructGetSpender","constructGetAdapters","constructBuildTx","constructAllOTCOrdersHandlers","constructGetRate","constructPreSignDeltaOrder","constructPostDeltaOrder","constructCancelDeltaOrder","constructIsTokenSupportedInDelta","constructDeltaTokenModule","constructViemContractCaller","OTCOrderHandlers","GetRateFunctions","APIVersion","PreSignDeltaOrderFunctions","CancelDeltaOrderFunctions","IsTokenSupportedInDeltaFunctions","BuildTxFunctions","GetSpenderFunctions","GetAdaptersFunctions","MinViemClient","constructGetOTCOrders","constructBuildOTCOrder","constructPostOTCOrder","constructFillOTCOrder","GetOTCOrdersFunctions","BuildOTCOrderFunctions","PostOTCOrderFunctions","FillOTCOrderFunctions","ContractCallerFunctions","DeltaTokenModuleFunctions","constructPreSignTWAPDeltaOrder","PreSignTWAPDeltaOrderFunctions","constructPostTWAPDeltaOrder","GetBridgeRoutesFunctions","GetAgentsListFunctions","constructGetBridgeRoutes","constructGetAgentsList","GetDeltaPriceFunctions","GetDeltaOrdersFunctions","BuildDeltaOrderFunctions","PostDeltaOrderFunctions","BuildTWAPDeltaOrderFunctions","PostTWAPDeltaOrderFunctions","SignDeltaOrderFunctions","constructGetDeltaPrice","constructGetDeltaOrders","constructBuildDeltaOrder","constructBuildTWAPDeltaOrder","constructSignDeltaOrder","encodeFunctionData","Address","Hash","Hex","Prettify","getLogger","getApiURL","useApiConfig","useSDKFetcher","apiConfig","useKeepAliveSDKFetcher","window","fetch","keepalive","SDKCreateParams","chainId","apiURL","account","MarketSwapSDK","ConstructedSDKOutput","sdk","T","appVersion","useMarketSwapSDK","fetcher","SDKconfig","version","OTCOrdersSDKCreateParams","client","ReadOnlyOTCOrdersSDK","OTCOrdersSDK","otcSDKLogger","useOTCOrdersSDK","once","log","contractCaller","CalldataContractCaller","constructCalldataContractCaller","transactCall","params","abi","contractMethod","functionName","args","calldata","staticCall","Error","signTypedDataCall","useFetchOnlySDK","Partial","calldataSDKLogger","useCalldataSDK","Omit","ReadOnlyDeltaSDK","DeltaSDK","DeltaSDKCreateParams","deltaSDKLogger","useDeltaSDK"],"sources":["../../src/hooks/useSDK.ts"],"sourcesContent":["import axios from \"axios\";\nimport { useMemo } from \"react\";\n\nimport {\n constructAxiosFetcher,\n constructFetchFetcher,\n constructPartialSDK,\n constructGetSpender,\n constructGetAdapters,\n constructBuildTx,\n constructAllOTCOrdersHandlers,\n constructGetRate,\n constructPreSignDeltaOrder,\n constructPostDeltaOrder,\n constructCancelDeltaOrder,\n constructIsTokenSupportedInDelta,\n constructDeltaTokenModule,\n constructViemContractCaller,\n type OTCOrderHandlers,\n type GetRateFunctions,\n type APIVersion,\n type PreSignDeltaOrderFunctions,\n type CancelDeltaOrderFunctions,\n type IsTokenSupportedInDeltaFunctions,\n type BuildTxFunctions,\n type GetSpenderFunctions,\n type GetAdaptersFunctions,\n type MinViemClient,\n constructGetOTCOrders,\n constructBuildOTCOrder,\n constructPostOTCOrder,\n constructFillOTCOrder,\n type GetOTCOrdersFunctions,\n type BuildOTCOrderFunctions,\n type PostOTCOrderFunctions,\n type FillOTCOrderFunctions,\n type ContractCallerFunctions,\n type DeltaTokenModuleFunctions,\n constructPreSignTWAPDeltaOrder,\n type PreSignTWAPDeltaOrderFunctions,\n constructPostTWAPDeltaOrder,\n type GetBridgeRoutesFunctions,\n type GetAgentsListFunctions,\n constructGetBridgeRoutes,\n constructGetAgentsList,\n type GetDeltaPriceFunctions,\n type GetDeltaOrdersFunctions,\n type BuildDeltaOrderFunctions,\n type PostDeltaOrderFunctions,\n type BuildTWAPDeltaOrderFunctions,\n type PostTWAPDeltaOrderFunctions,\n type SignDeltaOrderFunctions,\n constructGetDeltaPrice,\n constructGetDeltaOrders,\n constructBuildDeltaOrder,\n constructBuildTWAPDeltaOrder,\n constructSignDeltaOrder,\n} from \"@velora-dex/sdk\";\nimport { encodeFunctionData, type Address, type Hash, type Hex } from \"viem\";\nimport type { Prettify } from \"ts-essentials\";\nimport { getLogger } from \"@/core/logger\";\nimport { getApiURL } from \"@/lib/constants/urls\";\nimport { useApiConfig } from \"@/core/state/apiConfigAtom\";\n\nfunction useSDKFetcher() {\n \"use no memo\";\n\n const apiConfig = useApiConfig();\n\n return useMemo(() => {\n return constructAxiosFetcher(axios, apiConfig);\n }, [apiConfig]);\n}\n\nfunction useKeepAliveSDKFetcher() {\n \"use no memo\";\n\n const apiConfig = useApiConfig();\n\n return useMemo(() => {\n if (typeof window === \"undefined\") return;\n return constructFetchFetcher(window.fetch, {\n ...apiConfig,\n keepalive: true,\n });\n }, [apiConfig]);\n}\n\ntype SDKCreateParams = {\n chainId: number;\n apiURL?: string;\n account?: Address;\n};\n\nexport type MarketSwapSDK = Prettify<\n GetSpenderFunctions &\n BuildTxFunctions &\n GetRateFunctions &\n GetAdaptersFunctions\n>;\n\ntype ConstructedSDKOutput<T> = {\n sdk: T;\n appVersion: APIVersion;\n chainId: number;\n apiURL: string;\n};\n\nexport function useMarketSwapSDK({\n chainId,\n apiURL,\n}: SDKCreateParams): ConstructedSDKOutput<MarketSwapSDK> {\n \"use no memo\";\n\n const fetcher = useSDKFetcher();\n\n const sdk = useMemo(() => {\n const SDKconfig = {\n apiURL: apiURL ?? getApiURL(),\n chainId,\n fetcher,\n };\n\n return constructPartialSDK(\n SDKconfig,\n constructGetRate,\n constructGetSpender,\n constructGetAdapters,\n constructBuildTx\n );\n }, [apiURL, chainId, fetcher]);\n\n return {\n appVersion: sdk.version,\n chainId: sdk.chainId,\n apiURL: sdk.apiURL,\n sdk,\n };\n}\ntype OTCOrdersSDKCreateParams = SDKCreateParams & {\n client?: MinViemClient;\n};\n\ntype ReadOnlyOTCOrdersSDK = Prettify<\n GetOTCOrdersFunctions & BuildOTCOrderFunctions & PostOTCOrderFunctions\n>;\n\nexport type OTCOrdersSDK = Prettify<OTCOrderHandlers<Hash>>;\n\nconst otcSDKLogger = getLogger(\"OTCOrdersSDK\");\n\n// can paraswap.fillOrder from a taker address to simulate happy path\n// @TODO check that we always use correct SDK version\nexport function useOTCOrdersSDK({\n chainId,\n apiURL,\n account,\n client,\n}: OTCOrdersSDKCreateParams & {\n account?: undefined;\n client?: undefined;\n}): ConstructedSDKOutput<ReadOnlyOTCOrdersSDK>;\nexport function useOTCOrdersSDK({\n chainId,\n apiURL,\n account,\n client,\n}: OTCOrdersSDKCreateParams & {\n account: Address;\n client: MinViemClient;\n}): ConstructedSDKOutput<OTCOrdersSDK>;\nexport function useOTCOrdersSDK({\n chainId,\n apiURL,\n account,\n client,\n}: OTCOrdersSDKCreateParams): ConstructedSDKOutput<\n OTCOrdersSDK | ReadOnlyOTCOrdersSDK\n>;\nexport function useOTCOrdersSDK({\n chainId,\n apiURL,\n account,\n client,\n}: OTCOrdersSDKCreateParams): ConstructedSDKOutput<\n OTCOrdersSDK | ReadOnlyOTCOrdersSDK\n> {\n \"use no memo\";\n\n const fetcher = useSDKFetcher();\n\n const sdk = useMemo(() => {\n otcSDKLogger.once.log(\"init sdk\");\n const SDKconfig = {\n apiURL: apiURL ?? getApiURL(),\n chainId,\n fetcher,\n };\n\n if (!client || !account) {\n return constructPartialSDK(\n SDKconfig,\n constructGetOTCOrders,\n constructBuildOTCOrder,\n constructPostOTCOrder\n );\n }\n\n const contractCaller = constructViemContractCaller(client, account);\n\n return constructPartialSDK(\n { ...SDKconfig, contractCaller },\n constructAllOTCOrdersHandlers\n );\n }, [client, account, apiURL, chainId, fetcher]);\n\n return {\n appVersion: sdk.version,\n chainId: sdk.chainId,\n apiURL: sdk.apiURL,\n sdk,\n };\n}\n\n// ContractCaller that returns Contract[method](args) calldata instead of sending out a transaction\ntype CalldataContractCaller = ContractCallerFunctions<Hex>;\n\nconst constructCalldataContractCaller = (): CalldataContractCaller => {\n const transactCall: CalldataContractCaller[\"transactCall\"] = async (\n params\n ) => {\n const { abi, contractMethod: functionName, args } = params;\n const calldata = encodeFunctionData<typeof abi, string>({\n abi,\n functionName,\n args,\n });\n return calldata;\n };\n\n // won't be used, but needed for types\n const staticCall = () => {\n throw new Error(\"Not implemented\");\n };\n\n return {\n transactCall,\n staticCall,\n signTypedDataCall: staticCall,\n };\n};\n\n// can be used to POST final data before page is closed\nexport const useFetchOnlySDK = ({\n chainId,\n apiURL,\n}: SDKCreateParams): Partial<ConstructedSDKOutput<PostDeltaOrderFunctions>> => {\n \"use no memo\";\n\n // fetch, unlike axios allows for `keepalive` parameter,\n // so we can use it to keep the request alive a bit after the page is closed.\n // the alternative of using navigator.sendBeacon doesn't work with API because it includes credentials=always\n // which is incompatible with API CORS settings\n const fetcher = useKeepAliveSDKFetcher();\n\n const sdk = useMemo(() => {\n if (!fetcher) return;\n\n return constructPartialSDK(\n {\n apiURL: apiURL ?? getApiURL(),\n chainId,\n fetcher,\n },\n constructPostDeltaOrder\n );\n }, [apiURL, chainId, fetcher]);\n\n return {\n appVersion: sdk?.version,\n chainId: sdk?.chainId,\n apiURL: sdk?.apiURL,\n sdk,\n };\n};\n\nconst calldataSDKLogger = getLogger(\"CalldataSDK\");\n\nexport const useCalldataSDK = ({\n chainId,\n apiURL,\n client,\n}: Omit<OTCOrdersSDKCreateParams, \"account\">): Partial<\n ConstructedSDKOutput<\n FillOTCOrderFunctions<Hex> &\n PreSignDeltaOrderFunctions<Hex> &\n BuildDeltaOrderFunctions &\n PreSignTWAPDeltaOrderFunctions<Hex> &\n BuildTWAPDeltaOrderFunctions\n >\n> => {\n \"use no memo\";\n\n const fetcher = useSDKFetcher();\n\n const sdk = useMemo(() => {\n if (!client) return;\n calldataSDKLogger.once.log(\"init sdk\");\n\n const contractCaller = constructCalldataContractCaller();\n\n const SDKconfig = {\n apiURL: apiURL ?? getApiURL(),\n chainId,\n fetcher,\n contractCaller,\n };\n\n return constructPartialSDK(\n SDKconfig,\n constructFillOTCOrder,\n constructPreSignDeltaOrder,\n constructBuildDeltaOrder,\n constructPreSignTWAPDeltaOrder,\n constructBuildTWAPDeltaOrder\n );\n }, [apiURL, chainId, client, fetcher]);\n\n return {\n appVersion: sdk?.version,\n chainId: sdk?.chainId,\n apiURL: sdk?.apiURL,\n sdk,\n };\n};\n\ntype ReadOnlyDeltaSDK = Prettify<\n GetDeltaPriceFunctions &\n GetDeltaOrdersFunctions &\n BuildDeltaOrderFunctions &\n PostDeltaOrderFunctions &\n BuildTWAPDeltaOrderFunctions &\n PostTWAPDeltaOrderFunctions &\n GetBridgeRoutesFunctions &\n IsTokenSupportedInDeltaFunctions &\n GetAgentsListFunctions & { chainId: number }\n>;\n\nexport type DeltaSDK = Prettify<\n ReadOnlyDeltaSDK &\n SignDeltaOrderFunctions &\n CancelDeltaOrderFunctions &\n PreSignDeltaOrderFunctions<Hash> &\n DeltaTokenModuleFunctions<Hash> &\n PreSignTWAPDeltaOrderFunctions<Hash>\n>;\n\ntype DeltaSDKCreateParams = SDKCreateParams & {\n client?: MinViemClient;\n};\n\nconst deltaSDKLogger = getLogger(\"DeltaSDK\");\n\nexport function useDeltaSDK({\n chainId,\n apiURL,\n account,\n client,\n}: DeltaSDKCreateParams & {\n account?: undefined;\n client?: undefined;\n}): ConstructedSDKOutput<ReadOnlyDeltaSDK>;\nexport function useDeltaSDK({\n chainId,\n apiURL,\n account,\n client,\n}: DeltaSDKCreateParams & {\n account: Address;\n client: MinViemClient;\n}): ConstructedSDKOutput<DeltaSDK>;\nexport function useDeltaSDK({\n chainId,\n apiURL,\n account,\n client,\n}: DeltaSDKCreateParams): ConstructedSDKOutput<DeltaSDK | ReadOnlyDeltaSDK>;\nexport function useDeltaSDK({\n chainId,\n apiURL,\n account,\n client,\n}: DeltaSDKCreateParams): ConstructedSDKOutput<DeltaSDK | ReadOnlyDeltaSDK> {\n \"use no memo\";\n\n const fetcher = useSDKFetcher();\n\n const sdk = useMemo(() => {\n deltaSDKLogger.once.log(\"init sdk\");\n const SDKconfig = {\n apiURL: apiURL ?? getApiURL(),\n chainId,\n fetcher,\n };\n\n if (!client || !account) {\n return constructPartialSDK(\n SDKconfig,\n constructGetDeltaPrice,\n constructGetDeltaOrders,\n constructBuildDeltaOrder,\n constructPostDeltaOrder,\n constructBuildTWAPDeltaOrder,\n constructPostTWAPDeltaOrder,\n constructGetBridgeRoutes,\n constructIsTokenSupportedInDelta,\n constructGetAgentsList\n );\n }\n\n const contractCaller = constructViemContractCaller(client, account);\n\n return constructPartialSDK(\n { ...SDKconfig, contractCaller },\n constructGetDeltaPrice,\n constructGetDeltaOrders,\n constructBuildDeltaOrder,\n constructPostDeltaOrder,\n constructBuildTWAPDeltaOrder,\n constructPostTWAPDeltaOrder,\n constructGetBridgeRoutes,\n constructIsTokenSupportedInDelta,\n constructGetAgentsList,\n constructSignDeltaOrder,\n constructCancelDeltaOrder,\n constructPreSignDeltaOrder,\n constructPreSignTWAPDeltaOrder,\n constructDeltaTokenModule\n );\n }, [apiURL, chainId, client, account, fetcher]);\n\n return {\n appVersion: sdk.version,\n chainId: sdk.chainId,\n apiURL: sdk.apiURL,\n sdk,\n };\n}\n"],"mappings":";;;;;;;;AAgEA,SAAS+D,IAAgB;AACvB;CAEA,IAAMC,IAAYF,GAAc;CAEhC,OAAO7D,QACEC,EAAsBF,GAAOgE,EAAU,EAC7C,CAACA,EAAU,CAAC;;AAqCjB,SAAgBc,EAAiB,EAC/BR,YACAC,aACuD;AACvD;CAEA,IAAMQ,IAAUhB,GAAe,EAEzBY,IAAM1E,QAOHG,EACL4E;EANAT,QAAQA,KAAUV,GAAW;EAC7BS;EACAS;EAIAC,EACAvE,GACAJ,GACAC,GACAC,EACD,EACA;EAACgE;EAAQD;EAASS;EAAQ,CAAC;CAE9B,OAAO;EACLF,YAAYF,EAAIM;EAChBX,SAASK,EAAIL;EACbC,QAAQI,EAAIJ;EACZI;EACD;;AAYH,IAAMW,IAAe1B,EAAU,eAAe;AA8B9C,SAAgB2B,EAAgB,EAC9BjB,YACAC,WACAC,YACAW,aAGA;AACA;CAEA,IAAMJ,IAAUhB,GAAe,EAEzBY,IAAM1E,QAAc;EACxBqF,EAAaE,KAAKC,IAAI,WAAW;EACjC,IAAMT,IAAY;GAChBT,QAAQA,KAAUV,GAAW;GAC7BS;GACAS;GACD;EAED,IAAI,CAACI,KAAU,CAACX,GACd,OAAOpE,EACL4E,GACAtD,GACAC,GACAC,EACD;EAGH,IAAM8D,IAAiB3E,EAA4BoE,GAAQX,EAAQ;EAEnE,OAAOpE,EACL;GAAE,GAAG4E;GAAWU;GAAgB,EAChClF,EACD;IACA;EAAC2E;EAAQX;EAASD;EAAQD;EAASS;EAAQ,CAAC;CAE/C,OAAO;EACLF,YAAYF,EAAIM;EAChBX,SAASK,EAAIL;EACbC,QAAQI,EAAIJ;EACZI;EACD;;AAMH,IAAMiB,UAAgE;CACpE,IAAMC,IAAuD,OAC3DC,MACG;EACH,IAAM,EAAEC,QAAKC,gBAAgBC,GAAcC,YAASJ;EAMpD,OALiBvC,EAAuC;GACtDwC;GACAE;GACAC;GACD,CACMC;IAIHC,UAAmB;EACvB,MAAUC,MAAM,kBAAkB;;CAGpC,OAAO;EACLR;EACAO;EACAE,mBAAmBF;EACpB;GAqCGK,IAAoB7C,EAAU,cAAc,EAErC8C,KAAkB,EAC7BpC,YACAC,WACAY,gBASG;AACH;CAEA,IAAMJ,IAAUhB,GAAe,EAEzBY,IAAM1E,QAAc;EACxB,IAAI,CAACkF,GAAQ;EACbsB,EAAkBjB,KAAKC,IAAI,WAAW;EAEtC,IAAMC,IAAiBE,GAAiC;EASxD,OAAOxF,EACL4E;GAPAT,QAAQA,KAAUV,GAAW;GAC7BS;GACAS;GACAW;GAIAV,EACAnD,GACAnB,GACA0C,GACAhB,GACAiB,EACD;IACA;EAACkB;EAAQD;EAASa;EAAQJ;EAAQ,CAAC;CAEtC,OAAO;EACLF,YAAYF,GAAKM;EACjBX,SAASK,GAAKL;EACdC,QAAQI,GAAKJ;EACbI;EACD;GA4BGoC,IAAiBnD,EAAU,WAAW;AA0B5C,SAAgBoD,EAAY,EAC1B1C,YACAC,WACAC,YACAW,aAC0E;AAC1E;CAEA,IAAMJ,IAAUhB,GAAe,EAEzBY,IAAM1E,QAAc;EACxB8G,EAAevB,KAAKC,IAAI,WAAW;EACnC,IAAMT,IAAY;GAChBT,QAAQA,KAAUV,GAAW;GAC7BS;GACAS;GACD;EAED,IAAI,CAACI,KAAU,CAACX,GACd,OAAOpE,EACL4E,GACA9B,GACAC,GACAC,GACAzC,GACA0C,GACAf,GACAG,GACA5B,GACA6B,EACD;EAGH,IAAMgD,IAAiB3E,EAA4BoE,GAAQX,EAAQ;EAEnE,OAAOpE,EACL;GAAE,GAAG4E;GAAWU;GAAgB,EAChCxC,GACAC,GACAC,GACAzC,GACA0C,GACAf,GACAG,GACA5B,GACA6B,GACAY,GACA1C,GACAF,GACA0B,GACAtB,EACD;IACA;EAACyD;EAAQD;EAASa;EAAQX;EAASO;EAAQ,CAAC;CAE/C,OAAO;EACLF,YAAYF,EAAIM;EAChBX,SAASK,EAAIL;EACbC,QAAQI,EAAIJ;EACZI;EACD"}
@@ -1,4 +1,3 @@
1
- export declare const PROD_API_URL = "https://api.velora.xyz";
2
1
  export declare function getApiURL(): string;
3
2
  export declare function getApiProxyURL(): string;
4
3
  export declare function getExplorerURL(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"urls.d.ts","sourceRoot":"","sources":["../../../src/lib/constants/urls.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,2BAA2B,CAAC;AAIrD,wBAAgB,SAAS,IAAI,MAAM,CAKlC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAKvC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAIvC"}
1
+ {"version":3,"file":"urls.d.ts","sourceRoot":"","sources":["../../../src/lib/constants/urls.ts"],"names":[],"mappings":"AAOA,wBAAgB,SAAS,IAAI,MAAM,CAKlC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAKvC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAIvC"}
@@ -15,6 +15,6 @@ function s() {
15
15
  return n || i;
16
16
  }
17
17
  //#endregion
18
- export { n as PROD_API_URL, o as getApiProxyURL, a as getApiURL, s as getExplorerURL };
18
+ export { o as getApiProxyURL, a as getApiURL, s as getExplorerURL };
19
19
 
20
20
  //# sourceMappingURL=urls.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"urls.js","names":["jotaiStore","devURLsAtom","PROD_API_URL","PROD_PROXY_API_URL","PROD_EXPLORER_URL","getApiURL","apiURL","get","getApiProxyURL","apiProxyURL","getExplorerURL","explorerURL"],"sources":["../../../src/lib/constants/urls.ts"],"sourcesContent":["import { jotaiStore } from \"@/core/store\";\nimport { devURLsAtom } from \"@/core/state/configAtom\";\n\nexport const PROD_API_URL = \"https://api.velora.xyz\";\nconst PROD_PROXY_API_URL = \"https://proxy.paraswap.io\";\nconst PROD_EXPLORER_URL = \"https://explorer.velora.xyz\";\n\nexport function getApiURL(): string {\n const { apiURL } = jotaiStore.get(devURLsAtom);\n if (apiURL) return apiURL;\n\n return PROD_API_URL;\n}\n\nexport function getApiProxyURL(): string {\n const { apiProxyURL } = jotaiStore.get(devURLsAtom);\n if (apiProxyURL) return apiProxyURL;\n\n return PROD_PROXY_API_URL;\n}\n\nexport function getExplorerURL(): string {\n const { explorerURL } = jotaiStore.get(devURLsAtom);\n if (explorerURL) return explorerURL;\n return PROD_EXPLORER_URL;\n}\n"],"mappings":";;;AAGA,IAAaE,IAAe,0BACtBC,IAAqB,6BACrBC,IAAoB;AAE1B,SAAgBC,IAAoB;CAClC,IAAM,EAAEC,cAAWN,EAAWO,IAAIN,EAAY;CAG9C,OAFIK,KAEGJ;;AAGT,SAAgBM,IAAyB;CACvC,IAAM,EAAEC,mBAAgBT,EAAWO,IAAIN,EAAY;CAGnD,OAFIQ,KAEGN;;AAGT,SAAgBO,IAAyB;CACvC,IAAM,EAAEC,mBAAgBX,EAAWO,IAAIN,EAAY;CAEnD,OADIU,KACGP"}
1
+ {"version":3,"file":"urls.js","names":["jotaiStore","devURLsAtom","PROD_API_URL","PROD_PROXY_API_URL","PROD_EXPLORER_URL","getApiURL","apiURL","get","getApiProxyURL","apiProxyURL","getExplorerURL","explorerURL"],"sources":["../../../src/lib/constants/urls.ts"],"sourcesContent":["import { jotaiStore } from \"@/core/store\";\nimport { devURLsAtom } from \"@/core/state/configAtom\";\n\nconst PROD_API_URL = \"https://api.velora.xyz\";\nconst PROD_PROXY_API_URL = \"https://proxy.paraswap.io\";\nconst PROD_EXPLORER_URL = \"https://explorer.velora.xyz\";\n\nexport function getApiURL(): string {\n const { apiURL } = jotaiStore.get(devURLsAtom);\n if (apiURL) return apiURL;\n\n return PROD_API_URL;\n}\n\nexport function getApiProxyURL(): string {\n const { apiProxyURL } = jotaiStore.get(devURLsAtom);\n if (apiProxyURL) return apiProxyURL;\n\n return PROD_PROXY_API_URL;\n}\n\nexport function getExplorerURL(): string {\n const { explorerURL } = jotaiStore.get(devURLsAtom);\n if (explorerURL) return explorerURL;\n return PROD_EXPLORER_URL;\n}\n"],"mappings":";;;AAGA,IAAME,IAAe,0BACfC,IAAqB,6BACrBC,IAAoB;AAE1B,SAAgBC,IAAoB;CAClC,IAAM,EAAEC,cAAWN,EAAWO,IAAIN,EAAY;CAG9C,OAFIK,KAEGJ;;AAGT,SAAgBM,IAAyB;CACvC,IAAM,EAAEC,mBAAgBT,EAAWO,IAAIN,EAAY;CAGnD,OAFIQ,KAEGN;;AAGT,SAAgBO,IAAyB;CACvC,IAAM,EAAEC,mBAAgBX,EAAWO,IAAIN,EAAY;CAEnD,OADIU,KACGP"}
@@ -20,52 +20,60 @@ function a(...e) {
20
20
  }
21
21
  return t;
22
22
  }
23
- var o = (e) => !!e;
24
- function s(e) {
23
+ function o(e, t) {
24
+ if (e.length <= 1) return e;
25
+ let n = /* @__PURE__ */ new Set();
26
+ return e.filter((e) => {
27
+ let r = t(e);
28
+ return r.some((e) => n.has(e)) ? !1 : (r.forEach((e) => n.add(e)), !0);
29
+ });
30
+ }
31
+ var s = (e) => !!e;
32
+ function c(e) {
25
33
  return e[1] !== null && e[1] !== void 0;
26
34
  }
27
- function c(e, t) {
28
- n(o(e[t]), `${String(t)} is required`);
35
+ function l(e, t) {
36
+ n(s(e[t]), `${String(t)} is required`);
29
37
  }
30
- function l(e) {
38
+ function u(e) {
31
39
  return e.length === 42;
32
40
  }
33
- var u = ({ address: e }) => l(e), d = (e, t) => e.toLowerCase().includes(t.toLowerCase()), f = (e, t, n = 0) => {
41
+ var d = ({ address: e }) => u(e), f = (e, t) => e.toLowerCase().includes(t.toLowerCase()), p = (e, t, n = 0) => {
34
42
  let r = RegExp(`(.{${t}}).{3,}(.{${n}})`);
35
43
  return e.replace(r, "$1...$2");
36
44
  };
37
- function p(e, t = 6, n = 4) {
38
- return f(e, t, n);
45
+ function m(e, t = 6, n = 4) {
46
+ return p(e, t, n);
39
47
  }
40
- function m(e) {
48
+ function h(e) {
41
49
  return e.replace(/_/g, " ");
42
50
  }
43
- function h(e) {
51
+ function g(e) {
44
52
  try {
45
53
  return new URL(e), !0;
46
54
  } catch {
47
55
  return !1;
48
56
  }
49
57
  }
50
- function g(e, t) {
58
+ function _(e, t) {
51
59
  if (e.length !== t.length) return !1;
52
60
  let n = new Set(e);
53
61
  for (let e of t) if (!n.has(e)) return !1;
54
62
  return !0;
55
63
  }
56
- function _(e) {
64
+ function v(e) {
57
65
  return (t, n) => e.every((e) => t[e] === n[e]);
58
66
  }
59
- function v(e, t) {
67
+ function y(e, t) {
60
68
  if (e === t) return !0;
61
69
  if (typeof e != "object" || typeof t != "object" || !e || !t) return !1;
62
70
  let n = Object.keys(e), r = Object.keys(t);
63
71
  return n.length === r.length ? n.every((n) => Object.prototype.hasOwnProperty.call(t, n) && e[n] === t[n]) : !1;
64
72
  }
65
- function y(e, t, n) {
73
+ function b(e, t, n) {
66
74
  return Math.min(Math.max(e, t), n);
67
75
  }
68
76
  //#endregion
69
- export { c as assertProp, r as cn, a as concatClassNamesMaps, _ as constructPropertiesEqual, u as filterInvalidTokenAddress, i as gatherObjectsByProp, y as getNumberWithinRange, s as isNonNullableEntry, o as isTruthy, h as isValidUrl, m as replaceUnderscoresWithSpaces, v as shallowEqual, p as shortenAddress, d as stringIncludes, g as unorderedShallowEqual };
77
+ export { l as assertProp, r as cn, a as concatClassNamesMaps, v as constructPropertiesEqual, d as filterInvalidTokenAddress, o as filterUnique, i as gatherObjectsByProp, b as getNumberWithinRange, c as isNonNullableEntry, s as isTruthy, g as isValidUrl, h as replaceUnderscoresWithSpaces, y as shallowEqual, m as shortenAddress, f as stringIncludes, _ as unorderedShallowEqual };
70
78
 
71
79
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Token","clsx","ClassValue","twMerge","assert","Prettify","cn","inputs","gatherObjectsByProp","elements","T","pickProp","elem","Record","transform","accumElem","U","reduce","accum","element","key","transformedElement","RemoveNullableElements","Head","Tail","MergeRecordsWithStrings","R1","R2","K","ConcatString","_ConcatString","Parts","Delim","RecordOfStrings","_MergeNStrings","Tuple","Result","MergeNStrings","MergeWithoutNullable","concatClassNamesMaps","maps","length","gathered","map","value","undefined","filterUnique","constructUniqueKeys","hasSeen","Set","filter","keys","some","has","forEach","add","isTruthy","x","isNonNullableEntry","entry","ReturnIfTruthy","assertProp","obj","prop","P","String","hasCorrectAddressLength","maybeAddress","filterInvalidTokenAddress","address","Pick","stringIncludes","a","b","toLowerCase","includes","shortenText","str","start","end","regexp","RegExp","replace","shortenAddress","slashIndex","rightCutLength","replaceUnderscoresWithSpaces","isValidUrl","url","URL","unorderedShallowEqual","setA","item","constructPropertiesEqual","properties","Partial","every","shallowEqual","aKeys","Object","bKeys","prototype","hasOwnProperty","call","getNumberWithinRange","num","min","max","Math"],"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 { assert, type Prettify } 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\ntype RemoveNullableElements<T extends readonly unknown[]> = T extends readonly [\n infer Head,\n ...infer Tail,\n]\n ? Head extends undefined | null\n ? RemoveNullableElements<Tail>\n : [Head, ...RemoveNullableElements<Tail>]\n : [];\n\ntype MergeRecordsWithStrings<\n R1 extends Record<string, string>,\n R2 extends Record<string, string>,\n> = {\n [K in keyof R1 | keyof R2]: K extends keyof R1\n ? K extends keyof R2\n ? ConcatString<\" \", [R1[K], R2[K]]>\n : R1[K]\n : K extends keyof R2\n ? R2[K]\n : never;\n};\n\ntype _ConcatString<\n Delim extends string,\n Parts extends readonly string[],\n> = Parts extends readonly []\n ? \"\"\n : Parts extends readonly [\n infer Head extends string,\n ...infer Tail extends readonly string[],\n ]\n ? Tail extends readonly []\n ? Head\n : `${Head}${Delim}${_ConcatString<Delim, Tail>}`\n : never;\n\nexport type ConcatString<\n Delim extends string = \"\",\n Parts extends readonly string[] = [],\n> = _ConcatString<Delim, Parts>;\n\ntype RecordOfStrings = Record<string, string>;\n\ntype _MergeNStrings<\n Tuple extends readonly RecordOfStrings[],\n Result extends RecordOfStrings,\n> = Tuple extends readonly [\n infer Head extends RecordOfStrings,\n ...infer Tail extends readonly RecordOfStrings[],\n]\n ? _MergeNStrings<Tail, MergeRecordsWithStrings<Result, Head>>\n : Result;\ntype MergeNStrings<Tuple extends readonly RecordOfStrings[]> = _MergeNStrings<\n Tuple,\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n {}\n>;\n\ntype MergeWithoutNullable<\n Tuple extends readonly (RecordOfStrings | undefined | null)[],\n> = MergeNStrings<RemoveNullableElements<Tuple>>;\n\nexport function concatClassNamesMaps<\n T extends readonly (RecordOfStrings | undefined | null)[],\n>(...maps: T): Prettify<MergeWithoutNullable<T>> {\n if (maps.length <= 1)\n return (maps[0] || {}) as Prettify<MergeWithoutNullable<T>>;\n\n const gathered: Record<string, string> = {};\n\n for (const map of maps) {\n if (!map) continue;\n\n for (const key in map) {\n const value = map[key];\n if (value !== undefined) {\n gathered[key] = cn(gathered[key], value);\n }\n }\n }\n\n return gathered as Prettify<MergeWithoutNullable<T>>;\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>(\n x: T | false | 0 | 0n | \"\" | null | undefined\n): x is T => !!x;\n\nexport function isNonNullableEntry<T>(\n entry: [key: string, value: T | null | undefined]\n): entry is [string, T] {\n return entry[1] !== null && entry[1] !== undefined;\n}\n\ntype ReturnIfTruthy<T> = typeof isTruthy<T>;\n\nexport function assertProp<\n T extends Record<string, unknown>,\n K extends keyof T,\n>(obj: T, prop: K): asserts obj is T & { [P in K]-?: ReturnIfTruthy<T[P]> } {\n assert(isTruthy(obj[prop]), `${String(prop)} is required`);\n}\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 function replaceUnderscoresWithSpaces(str: string): string {\n return str.replace(/_/g, \" \");\n}\n\nexport function isValidUrl(url: string): boolean {\n try {\n new URL(url);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function unorderedShallowEqual<T>(a: T[], b: T[]): boolean {\n if (a.length !== b.length) return false;\n const setA = new Set(a);\n for (const item of b) {\n if (!setA.has(item)) return false;\n }\n return true;\n}\n\nexport function constructPropertiesEqual<K extends string>(\n properties: readonly K[]\n): (a: Partial<Record<K, unknown>>, b: Partial<Record<K, unknown>>) => boolean {\n return (a, b) => {\n return properties.every((key) => a[key] === b[key]);\n };\n}\n\nexport function shallowEqual<T>(a: T, b: T): boolean {\n // both the same value, check would pass for primitive values\n if (a === b) {\n return true;\n }\n\n // not an object, and checks for primitive have already been made\n if (typeof a !== \"object\" || typeof b !== \"object\" || !a || !b) {\n return false;\n }\n // both objects, check if they have the same keys\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n // different number of keys\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n return aKeys.every(\n (key) =>\n // b[key] exists, and not a[key] === undefined && b[key] doesn't exist\n Object.prototype.hasOwnProperty.call(b, key) &&\n a[key as keyof typeof a] === b[key as keyof typeof b]\n );\n}\n\nexport function getNumberWithinRange(\n num: number,\n min: number,\n max: number\n): number {\n return Math.min(Math.max(num, min), max);\n}\n"],"mappings":";;;;AAKA,SAAgBM,EAAG,GAAGC,GAAsB;CAC1C,OAAOJ,EAAQF,EAAKM,EAAO,CAAC;;AAe9B,SAAgBC,EACdC,GACAE,GACAG,GACuC;CACvC,OAAOL,EAASQ,QACbC,GAAOC,MAAY;EAClB,IAAMC,IAAMT,EAASQ,EAAQ,EAEvBJ,IAA+BG,EAAME;EAQ3C,OAFAF,EAAME,KALqBN,IAEvBA,EAAUK,GAASJ,EAA2B,GAC9CI,GAIGD;IAET,EACF,CAAC;;AAiEH,SAAgBqB,EAEd,GAAGC,GAA4C;CAC/C,IAAIA,EAAKC,UAAU,GACjB,OAAQD,EAAK,MAAM,EAAE;CAEvB,IAAME,IAAmC,EAAE;CAE3C,KAAK,IAAMC,KAAOH,GACXG,OAEL,KAAK,IAAMvB,KAAOuB,GAAK;EACrB,IAAMC,IAAQD,EAAIvB;EAClB,AAAIwB,MAAUC,KAAAA,MACZH,EAAStB,KAAOd,EAAGoC,EAAStB,IAAMwB,EAAM;;CAK9C,OAAOF;;AAoBT,IAAac,KACXC,MACW,CAAC,CAACA;AAEf,SAAgBC,EACdC,GACsB;CACtB,OAAOA,EAAM,OAAO,QAAQA,EAAM,OAAOd,KAAAA;;AAK3C,SAAgBgB,EAGdC,GAAQC,GAAkE;CAC1E3D,EAAOoD,EAASM,EAAIC,GAAM,EAAE,GAAGE,OAAOF,EAAK,CAAA,cAAe;;AAG5D,SAAgBG,EAAwBC,GAA+B;CACrE,OAAOA,EAAa1B,WAAW;;AAGjC,IAAa2B,KAA6B,EACxCC,iBAC4BH,EAAwBG,EAAQ,EAEjDE,KAAkBC,GAAWC,MACjCD,EAAEE,aAAa,CAACC,SAASF,EAAEC,aAAa,CAAC,EAWrCE,KACXC,GACAC,GACAC,IAAc,MACH;CACX,IAAMC,IAAaC,OAAO,MAAMH,EAAK,YAAaC,EAAG,IAAK;CAC1D,OAAOF,EAAIK,QAAQF,GAAQ,UAAU;;AAGvC,SAAgBG,EACdd,GACAe,IAAa,GACbC,IAAiB,GACT;CAER,OAAOT,EAAYP,GAASe,GAAYC,EAAe;;AAGzD,SAAgBC,EAA6BT,GAAqB;CAChE,OAAOA,EAAIK,QAAQ,MAAM,IAAI;;AAG/B,SAAgBK,EAAWC,GAAsB;CAC/C,IAAI;EAEF,OADA,IAAIC,IAAID,EAAI,EACL;SACD;EACN,OAAO;;;AAIX,SAAgBE,EAAyBlB,GAAQC,GAAiB;CAChE,IAAID,EAAE/B,WAAWgC,EAAEhC,QAAQ,OAAO;CAClC,IAAMkD,IAAO,IAAI1C,IAAIuB,EAAE;CACvB,KAAK,IAAMoB,KAAQnB,GACjB,IAAI,CAACkB,EAAKtC,IAAIuC,EAAK,EAAE,OAAO;CAE9B,OAAO;;AAGT,SAAgBC,EACdC,GAC6E;CAC7E,QAAQtB,GAAGC,MACFqB,EAAWE,OAAO5E,MAAQoD,EAAEpD,OAASqD,EAAErD,GAAK;;AAIvD,SAAgB6E,EAAgBzB,GAAMC,GAAe;CAEnD,IAAID,MAAMC,GACR,OAAO;CAIT,IAAI,OAAOD,KAAM,YAAY,OAAOC,KAAM,YAAY,CAACD,KAAK,CAACC,GAC3D,OAAO;CAGT,IAAMyB,IAAQC,OAAOhD,KAAKqB,EAAE,EACtB4B,IAAQD,OAAOhD,KAAKsB,EAAE;CAK5B,OAHIyB,EAAMzD,WAAW2D,EAAM3D,SAGpByD,EAAMF,OACV5E,MAEC+E,OAAOE,UAAUC,eAAeC,KAAK9B,GAAGrD,EAAI,IAC5CoD,EAAEpD,OAA2BqD,EAAErD,GAClC,GAPQ;;AAUX,SAAgBoF,EACdC,GACAC,GACAC,GACQ;CACR,OAAOC,KAAKF,IAAIE,KAAKD,IAAIF,GAAKC,EAAI,EAAEC,EAAI"}
1
+ {"version":3,"file":"index.js","names":["Token","clsx","ClassValue","twMerge","assert","Prettify","cn","inputs","gatherObjectsByProp","elements","T","pickProp","elem","Record","transform","accumElem","U","reduce","accum","element","key","transformedElement","RemoveNullableElements","Head","Tail","MergeRecordsWithStrings","R1","R2","K","ConcatString","_ConcatString","Parts","Delim","RecordOfStrings","_MergeNStrings","Tuple","Result","MergeNStrings","MergeWithoutNullable","concatClassNamesMaps","maps","length","gathered","map","value","undefined","filterUnique","constructUniqueKeys","hasSeen","Set","filter","keys","some","has","forEach","add","isTruthy","x","isNonNullableEntry","entry","ReturnIfTruthy","assertProp","obj","prop","P","String","hasCorrectAddressLength","maybeAddress","filterInvalidTokenAddress","address","Pick","stringIncludes","a","b","toLowerCase","includes","shortenText","str","start","end","regexp","RegExp","replace","shortenAddress","slashIndex","rightCutLength","replaceUnderscoresWithSpaces","isValidUrl","url","URL","unorderedShallowEqual","setA","item","constructPropertiesEqual","properties","Partial","every","shallowEqual","aKeys","Object","bKeys","prototype","hasOwnProperty","call","getNumberWithinRange","num","min","max","Math"],"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 { assert, type Prettify } 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\ntype RemoveNullableElements<T extends readonly unknown[]> = T extends readonly [\n infer Head,\n ...infer Tail,\n]\n ? Head extends undefined | null\n ? RemoveNullableElements<Tail>\n : [Head, ...RemoveNullableElements<Tail>]\n : [];\n\ntype MergeRecordsWithStrings<\n R1 extends Record<string, string>,\n R2 extends Record<string, string>,\n> = {\n [K in keyof R1 | keyof R2]: K extends keyof R1\n ? K extends keyof R2\n ? ConcatString<\" \", [R1[K], R2[K]]>\n : R1[K]\n : K extends keyof R2\n ? R2[K]\n : never;\n};\n\ntype _ConcatString<\n Delim extends string,\n Parts extends readonly string[],\n> = Parts extends readonly []\n ? \"\"\n : Parts extends readonly [\n infer Head extends string,\n ...infer Tail extends readonly string[],\n ]\n ? Tail extends readonly []\n ? Head\n : `${Head}${Delim}${_ConcatString<Delim, Tail>}`\n : never;\n\nexport type ConcatString<\n Delim extends string = \"\",\n Parts extends readonly string[] = [],\n> = _ConcatString<Delim, Parts>;\n\ntype RecordOfStrings = Record<string, string>;\n\ntype _MergeNStrings<\n Tuple extends readonly RecordOfStrings[],\n Result extends RecordOfStrings,\n> = Tuple extends readonly [\n infer Head extends RecordOfStrings,\n ...infer Tail extends readonly RecordOfStrings[],\n]\n ? _MergeNStrings<Tail, MergeRecordsWithStrings<Result, Head>>\n : Result;\ntype MergeNStrings<Tuple extends readonly RecordOfStrings[]> = _MergeNStrings<\n Tuple,\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n {}\n>;\n\ntype MergeWithoutNullable<\n Tuple extends readonly (RecordOfStrings | undefined | null)[],\n> = MergeNStrings<RemoveNullableElements<Tuple>>;\n\nexport function concatClassNamesMaps<\n T extends readonly (RecordOfStrings | undefined | null)[],\n>(...maps: T): Prettify<MergeWithoutNullable<T>> {\n if (maps.length <= 1)\n return (maps[0] || {}) as Prettify<MergeWithoutNullable<T>>;\n\n const gathered: Record<string, string> = {};\n\n for (const map of maps) {\n if (!map) continue;\n\n for (const key in map) {\n const value = map[key];\n if (value !== undefined) {\n gathered[key] = cn(gathered[key], value);\n }\n }\n }\n\n return gathered as Prettify<MergeWithoutNullable<T>>;\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>(\n x: T | false | 0 | 0n | \"\" | null | undefined\n): x is T => !!x;\n\nexport function isNonNullableEntry<T>(\n entry: [key: string, value: T | null | undefined]\n): entry is [string, T] {\n return entry[1] !== null && entry[1] !== undefined;\n}\n\ntype ReturnIfTruthy<T> = typeof isTruthy<T>;\n\nexport function assertProp<\n T extends Record<string, unknown>,\n K extends keyof T,\n>(obj: T, prop: K): asserts obj is T & { [P in K]-?: ReturnIfTruthy<T[P]> } {\n assert(isTruthy(obj[prop]), `${String(prop)} is required`);\n}\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 function replaceUnderscoresWithSpaces(str: string): string {\n return str.replace(/_/g, \" \");\n}\n\nexport function isValidUrl(url: string): boolean {\n try {\n new URL(url);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function unorderedShallowEqual<T>(a: T[], b: T[]): boolean {\n if (a.length !== b.length) return false;\n const setA = new Set(a);\n for (const item of b) {\n if (!setA.has(item)) return false;\n }\n return true;\n}\n\nexport function constructPropertiesEqual<K extends string>(\n properties: readonly K[]\n): (a: Partial<Record<K, unknown>>, b: Partial<Record<K, unknown>>) => boolean {\n return (a, b) => {\n return properties.every((key) => a[key] === b[key]);\n };\n}\n\nexport function shallowEqual<T>(a: T, b: T): boolean {\n // both the same value, check would pass for primitive values\n if (a === b) {\n return true;\n }\n\n // not an object, and checks for primitive have already been made\n if (typeof a !== \"object\" || typeof b !== \"object\" || !a || !b) {\n return false;\n }\n // both objects, check if they have the same keys\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n // different number of keys\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n return aKeys.every(\n (key) =>\n // b[key] exists, and not a[key] === undefined && b[key] doesn't exist\n Object.prototype.hasOwnProperty.call(b, key) &&\n a[key as keyof typeof a] === b[key as keyof typeof b]\n );\n}\n\nexport function getNumberWithinRange(\n num: number,\n min: number,\n max: number\n): number {\n return Math.min(Math.max(num, min), max);\n}\n"],"mappings":"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"}
@@ -2,7 +2,11 @@ import { MinErc20Token, Token, TokenFromList } from './state/types';
2
2
  import { TokenInfoWithSupportedChainId, TokenListCompiled } from './types';
3
3
  import { SupportedChainId } from '../lib/web3/wagmi/types';
4
4
  import { Chain } from 'viem';
5
- export declare const constructTokenFromTokenInfoFactory: <N extends Pick<TokenListCompiled, "name" | "url"> = Pick<TokenListCompiled, "name" | "url">>(listInfo: N) => <I extends TokenInfoWithSupportedChainId = TokenInfoWithSupportedChainId>({ address, decimals, symbol, chainId, logoURI, name, }: I) => TokenFromList & {
5
+ type TokenInfoInput = TokenInfoWithSupportedChainId & {
6
+ sources?: string[];
7
+ categories?: string[];
8
+ };
9
+ export declare const constructTokenFromTokenInfoFactory: <N extends Pick<TokenListCompiled, "name" | "url"> = Pick<TokenListCompiled, "name" | "url">>(listInfo: N) => <I extends TokenInfoInput = TokenInfoInput>({ address, decimals, symbol, chainId, logoURI, name, sources, categories, }: I) => TokenFromList & {
6
10
  fromList: N["name"];
7
11
  fromListURL: N["url"];
8
12
  address: I["address"];
@@ -10,6 +14,8 @@ export declare const constructTokenFromTokenInfoFactory: <N extends Pick<TokenLi
10
14
  symbol: I["symbol"];
11
15
  name: I["name"];
12
16
  network: I["chainId"];
17
+ sources?: I["sources"];
18
+ categories?: I["categories"];
13
19
  };
14
20
  export declare const constructTokenFromFetchedTokenInfo: (minTokenInfo: MinErc20Token) => Token;
15
21
  export declare function constructNativeToken(chainConfig: Chain & {
@@ -22,4 +28,5 @@ export declare const nativeTokensAllChains: Token[];
22
28
  export declare const nativeTokensByChainId: Record<SupportedChainId, Token>;
23
29
  export declare const wrappedNativeTokensAllChains: Token[];
24
30
  export declare const wrappedNativeTokensByChainId: Record<SupportedChainId, Token>;
31
+ export {};
25
32
  //# sourceMappingURL=constructor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constructor.d.ts","sourceRoot":"","sources":["../../src/tokens/constructor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EACL,KAAK,6BAA6B,EAClC,KAAK,iBAAiB,EACvB,MAAM,SAAS,CAAC;AAKjB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAKlC,eAAO,MAAM,kCAAkC,GAE3C,CAAC,SAAS,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,IAAI,CACtD,iBAAiB,EACjB,MAAM,GAAG,KAAK,CACf,EAED,UAAU,CAAC,MAEZ,CAAC,SAAS,6BAA6B,GAAG,6BAA6B,EAAE,wDAOvE,CAAC,KAAG,aAAa,GAAG;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACpB,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACtB,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;IACtB,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;IACxB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;IACpB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IAChB,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;CAkBvB,CAAC;AAEJ,eAAO,MAAM,kCAAkC,GAC7C,cAAc,aAAa,KAC1B,KAGF,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,KAAK,GAAG;IACnB,EAAE,EAAE,gBAAgB,CAAC;CACtB,GACA,KAAK,CAcP;AAED,eAAO,MAAM,2BAA2B,GACtC,aAAa,KAAK,GAAG;IACnB,EAAE,EAAE,gBAAgB,CAAC;CACtB,KACA,KAcF,CAAC;AAEF,eAAO,MAAM,qBAAqB,SAEhC,CAAC;AAEH,eAAO,MAAM,qBAAqB,EAG7B,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAErC,eAAO,MAAM,4BAA4B,SAEvC,CAAC;AAEH,eAAO,MAAM,4BAA4B,EAGpC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"constructor.d.ts","sourceRoot":"","sources":["../../src/tokens/constructor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EACL,KAAK,6BAA6B,EAClC,KAAK,iBAAiB,EACvB,MAAM,SAAS,CAAC;AAKjB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAKlC,KAAK,cAAc,GAAG,6BAA6B,GAAG;IACpD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,kCAAkC,GAE3C,CAAC,SAAS,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,IAAI,CACtD,iBAAiB,EACjB,MAAM,GAAG,KAAK,CACf,EAED,UAAU,CAAC,MAEZ,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,6EASzC,CAAC,KAAG,aAAa,GAAG;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACpB,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACtB,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;IACtB,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;IACxB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;IACpB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IAChB,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;IACtB,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;IACvB,UAAU,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;CAoB9B,CAAC;AAEJ,eAAO,MAAM,kCAAkC,GAC7C,cAAc,aAAa,KAC1B,KAGF,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,KAAK,GAAG;IACnB,EAAE,EAAE,gBAAgB,CAAC;CACtB,GACA,KAAK,CAcP;AAED,eAAO,MAAM,2BAA2B,GACtC,aAAa,KAAK,GAAG;IACnB,EAAE,EAAE,gBAAgB,CAAC;CACtB,KACA,KAcF,CAAC;AAEF,eAAO,MAAM,qBAAqB,SAEhC,CAAC;AAEH,eAAO,MAAM,qBAAqB,EAG7B,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAErC,eAAO,MAAM,4BAA4B,SAEvC,CAAC;AAEH,eAAO,MAAM,4BAA4B,EAGpC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC"}
@@ -5,13 +5,15 @@ import { wrappedNativeCurrency as r, wrappedNativeCurrencyLogo as i } from "../l
5
5
  import { ETH_ADDRESS as a, NATIVE_CURRENCY_ICON as o } from "./constants.js";
6
6
  import { constructToken as s } from "@velora-dex/sdk";
7
7
  //#region src/tokens/constructor.ts
8
- var c = (e) => ({ address: t, decimals: r, symbol: i, chainId: a, logoURI: o, name: c }) => ({
8
+ var c = (e) => ({ address: t, decimals: r, symbol: i, chainId: a, logoURI: o, name: c, sources: l = [], categories: u = [] }) => ({
9
9
  ...s({
10
10
  address: t,
11
11
  decimals: r,
12
12
  symbol: i,
13
13
  network: a,
14
- img: o && n(o)
14
+ img: o && n(o),
15
+ sources: l,
16
+ categories: u
15
17
  }),
16
18
  name: c,
17
19
  symbol: i,
@@ -1 +1 @@
1
- {"version":3,"file":"constructor.js","names":["uriToHttpURL","constructToken","MinErc20Token","Token","TokenFromList","TokenInfoWithSupportedChainId","TokenListCompiled","wrappedNativeCurrency","wrappedNativeCurrencyLogo","SupportedChainId","Chain","ETH_ADDRESS","NATIVE_CURRENCY_ICON","chains","gatherObjectsByProp","constructTokenFromTokenInfoFactory","Pick","listInfo","N","address","decimals","symbol","chainId","logoURI","name","I","fromList","fromListURL","network","token","img","url","constructTokenFromFetchedTokenInfo","minTokenInfo","constructNativeToken","chainConfig","id","sdkToken","nativeCurrency","constructWrappedNativeToken","string","nativeTokensAllChains","map","nativeTokensByChainId","String","Record","wrappedNativeTokensAllChains","wrappedNativeTokensByChainId"],"sources":["../../src/tokens/constructor.ts"],"sourcesContent":["import { uriToHttpURL } from \"@/lib/ipfs\";\nimport { constructToken } from \"@velora-dex/sdk\";\n\nimport type { MinErc20Token, Token, TokenFromList } from \"./state/types\";\nimport {\n type TokenInfoWithSupportedChainId,\n type TokenListCompiled,\n} from \"./types\";\nimport {\n wrappedNativeCurrency,\n wrappedNativeCurrencyLogo,\n} from \"@/lib/constants/weth\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Chain } from \"viem\";\nimport { ETH_ADDRESS, NATIVE_CURRENCY_ICON } from \"./constants\";\nimport { chains } from \"@/lib/web3/wagmi/constants\";\nimport { gatherObjectsByProp } from \"@/lib/utils\";\n\nexport const constructTokenFromTokenInfoFactory =\n <\n N extends Pick<TokenListCompiled, \"name\" | \"url\"> = Pick<\n TokenListCompiled,\n \"name\" | \"url\"\n >,\n >(\n listInfo: N\n ) =>\n <I extends TokenInfoWithSupportedChainId = TokenInfoWithSupportedChainId>({\n address,\n decimals,\n symbol,\n chainId,\n logoURI,\n name,\n }: I): TokenFromList & {\n fromList: N[\"name\"];\n fromListURL: N[\"url\"];\n address: I[\"address\"];\n decimals: I[\"decimals\"];\n symbol: I[\"symbol\"];\n name: I[\"name\"];\n network: I[\"chainId\"];\n } => {\n const token = constructToken({\n address,\n decimals,\n symbol,\n network: chainId,\n img: logoURI && uriToHttpURL(logoURI),\n });\n\n return {\n ...token,\n name,\n symbol,\n network: chainId,\n fromList: listInfo.name,\n fromListURL: listInfo.url,\n };\n };\n\nexport const constructTokenFromFetchedTokenInfo = (\n minTokenInfo: MinErc20Token\n): Token => {\n const token = constructToken(minTokenInfo);\n return { ...token, network: minTokenInfo.network };\n};\n\nexport function constructNativeToken(\n chainConfig: Chain & {\n id: SupportedChainId;\n }\n): Token {\n const sdkToken = constructToken({\n address: ETH_ADDRESS,\n symbol: chainConfig.nativeCurrency.symbol,\n decimals: chainConfig.nativeCurrency.decimals,\n network: chainConfig.id,\n img: NATIVE_CURRENCY_ICON[chainConfig.id],\n });\n\n return {\n ...sdkToken,\n name: chainConfig.nativeCurrency.name,\n network: chainConfig.id,\n };\n}\n\nexport const constructWrappedNativeToken = (\n chainConfig: Chain & {\n id: SupportedChainId;\n }\n): Token => {\n const sdkToken = constructToken({\n address: wrappedNativeCurrency[chainConfig.id],\n symbol: `W${chainConfig.nativeCurrency.symbol}`,\n decimals: chainConfig.nativeCurrency.decimals,\n network: chainConfig.id,\n img: wrappedNativeCurrencyLogo[chainConfig.id].string,\n });\n\n return {\n ...sdkToken,\n name: `Wrapped ${chainConfig.nativeCurrency.name}`,\n network: chainConfig.id,\n };\n};\n\nexport const nativeTokensAllChains = chains.map((chainConfig) => {\n return constructNativeToken(chainConfig);\n});\n\nexport const nativeTokensByChainId = gatherObjectsByProp(\n nativeTokensAllChains,\n (token) => String(token.network)\n) as Record<SupportedChainId, Token>;\n\nexport const wrappedNativeTokensAllChains = chains.map((chainConfig) => {\n return constructWrappedNativeToken(chainConfig);\n});\n\nexport const wrappedNativeTokensByChainId = gatherObjectsByProp(\n wrappedNativeTokensAllChains,\n (token) => String(token.network)\n) as Record<SupportedChainId, Token>;\n"],"mappings":";;;;;;;AAkBA,IAAae,KAOTE,OAEwE,EACxEE,YACAC,aACAC,WACAC,YACAC,YACAC,eAkBO;CACL,GATYvB,EAAe;EAC3BkB;EACAC;EACAC;EACAO,SAASN;EACTQ,KAAKP,KAAWvB,EAAauB,EAAO;EACrC,CAGIM;CACHL;CACAH;CACAO,SAASN;CACTI,UAAUT,EAASO;CACnBG,aAAaV,EAASc;CACvB,GAGQC,KACXC,OAGO;CAAE,GADKhC,EAAegC,EACjBJ;CAAOD,SAASK,EAAaL;CAAS;AAGpD,SAAgBM,EACdC,GAGO;CASP,OAAO;EACL,GATelC,EAAe;GAC9BkB,SAASR;GACTU,QAAQc,EAAYG,eAAejB;GACnCD,UAAUe,EAAYG,eAAelB;GACrCQ,SAASO,EAAYC;GACrBN,KAAKlB,EAAqBuB,EAAYC;GACvC,CAGIC;EACHb,MAAMW,EAAYG,eAAed;EACjCI,SAASO,EAAYC;EACtB;;AAGH,IAAaG,KACXJ,OAYO;CACL,GATelC,EAAe;EAC9BkB,SAASZ,EAAsB4B,EAAYC;EAC3Cf,QAAQ,IAAIc,EAAYG,eAAejB;EACvCD,UAAUe,EAAYG,eAAelB;EACrCQ,SAASO,EAAYC;EACrBN,KAAKtB,EAA0B2B,EAAYC,IAAII;EAChD,CAGIH;CACHb,MAAM,WAAWW,EAAYG,eAAed;CAC5CI,SAASO,EAAYC;CACtB,GAGUK,IAAwB5B,EAAO6B,KAAKP,MACxCD,EAAqBC,EAAY,CACxC,EAEWQ,IAAwB7B,EACnC2B,IACCZ,MAAUe,OAAOf,EAAMD,QAC1B,CAAC,EAMYmB,IAA+BjC,EAJAD,EAAO6B,KAAKP,MAC/CI,EAA4BJ,EAAY,CAI/CW,GACCjB,MAAUe,OAAOf,EAAMD,QAC1B,CAAC"}
1
+ {"version":3,"file":"constructor.js","names":["uriToHttpURL","constructToken","MinErc20Token","Token","TokenFromList","TokenInfoWithSupportedChainId","TokenListCompiled","wrappedNativeCurrency","wrappedNativeCurrencyLogo","SupportedChainId","Chain","ETH_ADDRESS","NATIVE_CURRENCY_ICON","chains","gatherObjectsByProp","TokenInfoInput","sources","categories","constructTokenFromTokenInfoFactory","Pick","listInfo","N","address","decimals","symbol","chainId","logoURI","name","I","fromList","fromListURL","network","token","img","url","constructTokenFromFetchedTokenInfo","minTokenInfo","constructNativeToken","chainConfig","id","sdkToken","nativeCurrency","constructWrappedNativeToken","string","nativeTokensAllChains","map","nativeTokensByChainId","String","Record","wrappedNativeTokensAllChains","wrappedNativeTokensByChainId"],"sources":["../../src/tokens/constructor.ts"],"sourcesContent":["import { uriToHttpURL } from \"@/lib/ipfs\";\nimport { constructToken } from \"@velora-dex/sdk\";\n\nimport type { MinErc20Token, Token, TokenFromList } from \"./state/types\";\nimport {\n type TokenInfoWithSupportedChainId,\n type TokenListCompiled,\n} from \"./types\";\nimport {\n wrappedNativeCurrency,\n wrappedNativeCurrencyLogo,\n} from \"@/lib/constants/weth\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Chain } from \"viem\";\nimport { ETH_ADDRESS, NATIVE_CURRENCY_ICON } from \"./constants\";\nimport { chains } from \"@/lib/web3/wagmi/constants\";\nimport { gatherObjectsByProp } from \"@/lib/utils\";\n\ntype TokenInfoInput = TokenInfoWithSupportedChainId & {\n sources?: string[];\n categories?: string[];\n};\n\nexport const constructTokenFromTokenInfoFactory =\n <\n N extends Pick<TokenListCompiled, \"name\" | \"url\"> = Pick<\n TokenListCompiled,\n \"name\" | \"url\"\n >,\n >(\n listInfo: N\n ) =>\n <I extends TokenInfoInput = TokenInfoInput>({\n address,\n decimals,\n symbol,\n chainId,\n logoURI,\n name,\n sources = [],\n categories = [],\n }: I): TokenFromList & {\n fromList: N[\"name\"];\n fromListURL: N[\"url\"];\n address: I[\"address\"];\n decimals: I[\"decimals\"];\n symbol: I[\"symbol\"];\n name: I[\"name\"];\n network: I[\"chainId\"];\n sources?: I[\"sources\"];\n categories?: I[\"categories\"];\n } => {\n const token = constructToken({\n address,\n decimals,\n symbol,\n network: chainId,\n img: logoURI && uriToHttpURL(logoURI),\n sources,\n categories,\n });\n\n return {\n ...token,\n name,\n symbol,\n network: chainId,\n fromList: listInfo.name,\n fromListURL: listInfo.url,\n };\n };\n\nexport const constructTokenFromFetchedTokenInfo = (\n minTokenInfo: MinErc20Token\n): Token => {\n const token = constructToken(minTokenInfo);\n return { ...token, network: minTokenInfo.network };\n};\n\nexport function constructNativeToken(\n chainConfig: Chain & {\n id: SupportedChainId;\n }\n): Token {\n const sdkToken = constructToken({\n address: ETH_ADDRESS,\n symbol: chainConfig.nativeCurrency.symbol,\n decimals: chainConfig.nativeCurrency.decimals,\n network: chainConfig.id,\n img: NATIVE_CURRENCY_ICON[chainConfig.id],\n });\n\n return {\n ...sdkToken,\n name: chainConfig.nativeCurrency.name,\n network: chainConfig.id,\n };\n}\n\nexport const constructWrappedNativeToken = (\n chainConfig: Chain & {\n id: SupportedChainId;\n }\n): Token => {\n const sdkToken = constructToken({\n address: wrappedNativeCurrency[chainConfig.id],\n symbol: `W${chainConfig.nativeCurrency.symbol}`,\n decimals: chainConfig.nativeCurrency.decimals,\n network: chainConfig.id,\n img: wrappedNativeCurrencyLogo[chainConfig.id].string,\n });\n\n return {\n ...sdkToken,\n name: `Wrapped ${chainConfig.nativeCurrency.name}`,\n network: chainConfig.id,\n };\n};\n\nexport const nativeTokensAllChains = chains.map((chainConfig) => {\n return constructNativeToken(chainConfig);\n});\n\nexport const nativeTokensByChainId = gatherObjectsByProp(\n nativeTokensAllChains,\n (token) => String(token.network)\n) as Record<SupportedChainId, Token>;\n\nexport const wrappedNativeTokensAllChains = chains.map((chainConfig) => {\n return constructWrappedNativeToken(chainConfig);\n});\n\nexport const wrappedNativeTokensByChainId = gatherObjectsByProp(\n wrappedNativeTokensAllChains,\n (token) => String(token.network)\n) as Record<SupportedChainId, Token>;\n"],"mappings":";;;;;;;AAuBA,IAAakB,KAOTE,OAE0C,EAC1CE,YACAC,aACAC,WACAC,YACAC,YACAC,SACAX,aAAU,EAAE,EACZC,gBAAa,EAAA,QAsBN;CACL,GAXYhB,EAAe;EAC3BqB;EACAC;EACAC;EACAO,SAASN;EACTQ,KAAKP,KAAW1B,EAAa0B,EAAQ;EACrCV;EACAC;EACD,CAGIe;CACHL;CACAH;CACAO,SAASN;CACTI,UAAUT,EAASO;CACnBG,aAAaV,EAASc;CACvB,GAGQC,KACXC,OAGO;CAAE,GADKnC,EAAemC,EACjBJ;CAAOD,SAASK,EAAaL;CAAS;AAGpD,SAAgBM,EACdC,GAGO;CASP,OAAO;EACL,GATerC,EAAe;GAC9BqB,SAASX;GACTa,QAAQc,EAAYG,eAAejB;GACnCD,UAAUe,EAAYG,eAAelB;GACrCQ,SAASO,EAAYC;GACrBN,KAAKrB,EAAqB0B,EAAYC;GACvC,CAGIC;EACHb,MAAMW,EAAYG,eAAed;EACjCI,SAASO,EAAYC;EACtB;;AAGH,IAAaG,KACXJ,OAYO;CACL,GATerC,EAAe;EAC9BqB,SAASf,EAAsB+B,EAAYC;EAC3Cf,QAAQ,IAAIc,EAAYG,eAAejB;EACvCD,UAAUe,EAAYG,eAAelB;EACrCQ,SAASO,EAAYC;EACrBN,KAAKzB,EAA0B8B,EAAYC,IAAII;EAChD,CAGIH;CACHb,MAAM,WAAWW,EAAYG,eAAed;CAC5CI,SAASO,EAAYC;CACtB,GAGUK,IAAwB/B,EAAOgC,KAAKP,MACxCD,EAAqBC,EAAY,CACxC,EAEWQ,IAAwBhC,EACnC8B,IACCZ,MAAUe,OAAOf,EAAMD,QAC1B,CAAC,EAMYmB,IAA+BpC,EAJAD,EAAOgC,KAAKP,MAC/CI,EAA4BJ,EAAY,CAI/CW,GACCjB,MAAUe,OAAOf,EAAMD,QAC1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"defaultTokens.d.ts","sourceRoot":"","sources":["../../src/tokens/defaultTokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAclD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAwM5D,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,gBAAgB,EACzB,SAAS,EAAE,SAAS,GACnB,CAAC,KAAK,EAAE,KAAK,CAAC,CAUhB"}
1
+ {"version":3,"file":"defaultTokens.d.ts","sourceRoot":"","sources":["../../src/tokens/defaultTokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAclD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AA4M5D,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,gBAAgB,EACzB,SAAS,EAAE,SAAS,GACnB,CAAC,KAAK,EAAE,KAAK,CAAC,CAgBhB"}
@@ -1,8 +1,9 @@
1
1
  import { arbitrum as e, avalanche as t, base as n, bsc as r, gnosis as i, mainnet as a, optimism as o, polygon as s, unichain as c } from "../lib/web3/wagmi/supportedChains.js";
2
2
  import { wrappedNativeTokensByChainId as l } from "./constructor.js";
3
3
  import { isETH as u } from "./utils/eth.js";
4
+ import { constructToken as d } from "@velora-dex/sdk";
4
5
  //#region src/tokens/defaultTokens.ts
5
- var d = {
6
+ var f = {
6
7
  [a.id]: {
7
8
  symbol: "USDC",
8
9
  address: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
@@ -102,7 +103,7 @@ var d = {
102
103
  img: "https://cdn.velora.xyz/token/USDC.png",
103
104
  name: "USDC"
104
105
  }
105
- }, f = {
106
+ }, p = {
106
107
  [a.id]: {
107
108
  address: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
108
109
  decimals: 18,
@@ -196,11 +197,17 @@ var d = {
196
197
  name: "Unichain ETH"
197
198
  }
198
199
  };
199
- function p(e, t) {
200
- let n = d[e], r = f[e];
200
+ function m(e, t) {
201
+ let n = {
202
+ ...d(f[e]),
203
+ network: e
204
+ }, r = {
205
+ ...d(p[e]),
206
+ network: e
207
+ };
201
208
  return t === "otc" && u(r) && (r = l[e]), [n, r];
202
209
  }
203
210
  //#endregion
204
- export { p as pickDefaultTokenPair };
211
+ export { m as pickDefaultTokenPair };
205
212
 
206
213
  //# sourceMappingURL=defaultTokens.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaultTokens.js","names":["SupportedChainId","Token","arbitrum","avalanche","base","bsc","gnosis","mainnet","optimism","polygon","unichain","wrappedNativeTokensByChainId","TradeMode","isETH","tokenFrom","Record","id","symbol","address","decimals","network","tokenType","mainConnector","connectors","img","name","tokenTo","pickDefaultTokenPair","chainId","tradeMode","from","to"],"sources":["../../src/tokens/defaultTokens.ts"],"sourcesContent":["import type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Token } from \"@/tokens/state/types\";\n\nimport {\n arbitrum,\n avalanche,\n base,\n bsc,\n gnosis,\n mainnet,\n optimism,\n polygon,\n unichain,\n} from \"@/lib/web3/wagmi/supportedChains\";\nimport { wrappedNativeTokensByChainId } from \"./constructor\";\nimport type { TradeMode } from \"@/core/state/tradeModeAtom\";\nimport { isETH } from \"./utils/eth\";\n\nconst tokenFrom: Record<SupportedChainId, Token> = {\n [mainnet.id]: {\n symbol: \"USDC\",\n address: \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n decimals: 6,\n network: mainnet.id,\n tokenType: \"ERC20\",\n mainConnector: \"ETH\",\n connectors: [\"ETH\"],\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USD Coin\",\n },\n [polygon.id]: {\n address: \"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: polygon.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n [bsc.id]: {\n address: \"0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d\",\n decimals: 18,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: bsc.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"Binance Pegged USD Coin\",\n },\n [avalanche.id]: {\n address: \"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: avalanche.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USD Coin\",\n },\n [arbitrum.id]: {\n address: \"0xaf88d065e77c8cc2239327c5edb3a432268e5831\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: arbitrum.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n [optimism.id]: {\n address: \"0x0b2c639c533813f4aa9d7837caf62653d097ff85\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: optimism.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USD Coin\",\n },\n [base.id]: {\n address: \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: base.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n [gnosis.id]: {\n address: \"0xddafbb505ad214d7b80b1f830fccc89b60fb7a83\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"XDAI\", \"USDT\"],\n network: gnosis.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n [unichain.id]: {\n address: \"0x078D782b760474a361dDA0AF3839290b0EF57AD6\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: unichain.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n};\n\nconst tokenTo: Record<SupportedChainId, Token> = {\n [mainnet.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"DAI\", \"USDC\"],\n network: mainnet.id,\n img: \"https://cdn.velora.xyz/token/ETH.svg\",\n },\n [polygon.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"POL\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: polygon.id,\n img: \"https://cdn.velora.xyz/token/MATIC.svg\",\n },\n [bsc.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"BNB\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: bsc.id,\n img: \"https://cdn.velora.xyz/token/BNB.svg\",\n },\n [avalanche.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"AVAX\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: avalanche.id,\n img: \"https://cdn.velora.xyz/token/AVAX.svg\",\n },\n [arbitrum.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"DAI\", \"USDC\"],\n network: arbitrum.id,\n img: \"https://cdn.velora.xyz/token/ETH.svg\",\n },\n [optimism.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"DAI\", \"USDC\"],\n network: optimism.id,\n img: \"https://cdn.velora.xyz/token/ETH.svg\",\n },\n [base.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"DAI\", \"USDC\"],\n network: base.id,\n img: \"https://cdn.velora.xyz/token/ETH.svg\",\n },\n [gnosis.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"XDAI\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"USDC\"],\n network: gnosis.id,\n img: \"https://assets.coingecko.com/coins/images/11062/thumb/Identity-Primary-DarkBG.png\",\n name: \"XDAI\",\n },\n [unichain.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: unichain.id,\n img: \"https://cdn.velora.xyz/token/ETH.png\",\n name: \"Unichain ETH\",\n },\n};\n\nexport function pickDefaultTokenPair(\n chainId: SupportedChainId,\n tradeMode: TradeMode\n): [Token, Token] {\n const from = tokenFrom[chainId];\n let to = tokenTo[chainId];\n\n // otc doesn't support destToken=ETH\n if (tradeMode === \"otc\" && isETH(to)) {\n to = wrappedNativeTokensByChainId[chainId];\n }\n\n return [from, to];\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"defaultTokens.js","names":["SupportedChainId","Token","arbitrum","avalanche","base","bsc","gnosis","mainnet","optimism","polygon","unichain","wrappedNativeTokensByChainId","TradeMode","isETH","constructToken","MarkOptional","LocalToken","tokenFrom","Record","id","symbol","address","decimals","network","tokenType","mainConnector","connectors","img","name","tokenTo","pickDefaultTokenPair","chainId","tradeMode","from","to"],"sources":["../../src/tokens/defaultTokens.ts"],"sourcesContent":["import type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Token } from \"@/tokens/state/types\";\n\nimport {\n arbitrum,\n avalanche,\n base,\n bsc,\n gnosis,\n mainnet,\n optimism,\n polygon,\n unichain,\n} from \"@/lib/web3/wagmi/supportedChains\";\nimport { wrappedNativeTokensByChainId } from \"./constructor\";\nimport type { TradeMode } from \"@/core/state/tradeModeAtom\";\nimport { isETH } from \"./utils/eth\";\nimport { constructToken } from \"@velora-dex/sdk\";\nimport type { MarkOptional } from \"ts-essentials\";\n\ntype LocalToken = MarkOptional<Token, \"tags\" | \"categories\" | \"sources\">;\n\nconst tokenFrom: Record<SupportedChainId, LocalToken> = {\n [mainnet.id]: {\n symbol: \"USDC\",\n address: \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n decimals: 6,\n network: mainnet.id,\n tokenType: \"ERC20\",\n mainConnector: \"ETH\",\n connectors: [\"ETH\"],\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USD Coin\",\n },\n [polygon.id]: {\n address: \"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: polygon.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n [bsc.id]: {\n address: \"0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d\",\n decimals: 18,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: bsc.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"Binance Pegged USD Coin\",\n },\n [avalanche.id]: {\n address: \"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: avalanche.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USD Coin\",\n },\n [arbitrum.id]: {\n address: \"0xaf88d065e77c8cc2239327c5edb3a432268e5831\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: arbitrum.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n [optimism.id]: {\n address: \"0x0b2c639c533813f4aa9d7837caf62653d097ff85\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: optimism.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USD Coin\",\n },\n [base.id]: {\n address: \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: base.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n [gnosis.id]: {\n address: \"0xddafbb505ad214d7b80b1f830fccc89b60fb7a83\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"XDAI\", \"USDT\"],\n network: gnosis.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n [unichain.id]: {\n address: \"0x078D782b760474a361dDA0AF3839290b0EF57AD6\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: unichain.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n};\n\nconst tokenTo: Record<SupportedChainId, LocalToken> = {\n [mainnet.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"DAI\", \"USDC\"],\n network: mainnet.id,\n img: \"https://cdn.velora.xyz/token/ETH.svg\",\n },\n [polygon.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"POL\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: polygon.id,\n img: \"https://cdn.velora.xyz/token/MATIC.svg\",\n },\n [bsc.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"BNB\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: bsc.id,\n img: \"https://cdn.velora.xyz/token/BNB.svg\",\n },\n [avalanche.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"AVAX\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: avalanche.id,\n img: \"https://cdn.velora.xyz/token/AVAX.svg\",\n },\n [arbitrum.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"DAI\", \"USDC\"],\n network: arbitrum.id,\n img: \"https://cdn.velora.xyz/token/ETH.svg\",\n },\n [optimism.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"DAI\", \"USDC\"],\n network: optimism.id,\n img: \"https://cdn.velora.xyz/token/ETH.svg\",\n },\n [base.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"DAI\", \"USDC\"],\n network: base.id,\n img: \"https://cdn.velora.xyz/token/ETH.svg\",\n },\n [gnosis.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"XDAI\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"USDC\"],\n network: gnosis.id,\n img: \"https://assets.coingecko.com/coins/images/11062/thumb/Identity-Primary-DarkBG.png\",\n name: \"XDAI\",\n },\n [unichain.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: unichain.id,\n img: \"https://cdn.velora.xyz/token/ETH.png\",\n name: \"Unichain ETH\",\n },\n};\n\nexport function pickDefaultTokenPair(\n chainId: SupportedChainId,\n tradeMode: TradeMode\n): [Token, Token] {\n const from: Token = {\n ...constructToken(tokenFrom[chainId]),\n network: chainId,\n };\n let to: Token = {\n ...constructToken(tokenTo[chainId]),\n network: chainId,\n };\n\n // otc doesn't support destToken=ETH\n if (tradeMode === \"otc\" && isETH(to)) {\n to = wrappedNativeTokensByChainId[chainId];\n }\n\n return [from, to];\n}\n"],"mappings":"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"}
@@ -1,2 +1,10 @@
1
+ import { TokenListDownloadData } from './types';
1
2
  export declare const defaultTokenLists: string[];
3
+ export declare const url2TokenList: Record<string, TokenListDownloadData>;
4
+ export declare const urlChain2TokenList: Record<string, TokenListDownloadData>;
5
+ export declare const chainId2TokenListURLs: Record<string, {
6
+ all: string[];
7
+ enabled: string[];
8
+ }>;
9
+ export declare const FALLBACK_CDN_URL = "https://cdn.velora.xyz/web/token-lists";
2
10
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/tokens/lists/constants.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,iBAAiB,EAAE,MAAM,EAA0B,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/tokens/lists/constants.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAiBrD,eAAO,MAAM,iBAAiB,UAEV,CAAC;AACrB,eAAO,MAAM,aAAa,uCAGzB,CAAC;AAEF,eAAO,MAAM,kBAAkB,uCAG9B,CAAC;AAEF,eAAO,MAAM,qBAAqB;SAEzB,MAAM,EAAE;aAAW,MAAM,EAAE;EAenC,CAAC;AAEF,eAAO,MAAM,gBAAgB,2CAA2C,CAAC"}
@@ -1,7 +1,17 @@
1
- import { API_TOKENS_LIST_URL as e } from "../state/apiTokensAtom.js";
1
+ import { filterUnique as e, gatherObjectsByProp as t, isValidUrl as n } from "../../lib/utils/index.js";
2
+ import r from "./lists.js";
2
3
  //#region src/tokens/lists/constants.ts
3
- var t = [e];
4
+ var i = e(r.flatMap(({ chainIds: e, ...t }) => e.map((e) => ({
5
+ ...t,
6
+ chainId: e
7
+ }))), (e) => [e.url + e.chainId, e.filename + e.chainId]), a = Array.from(new Set(i.map((e) => e.url))).filter(n), o = t(i, (e) => e.url), s = t(i, (e) => `${e.url}@${e.chainId}`), c = t(i, (e) => String(e.chainId), (e, t) => {
8
+ let n = t || {
9
+ all: [],
10
+ enabled: []
11
+ };
12
+ return n.all.push(e.url), e.onByDefault && n.enabled.push(e.url), n;
13
+ }), l = "https://cdn.velora.xyz/web/token-lists";
4
14
  //#endregion
5
- export { t as defaultTokenLists };
15
+ export { l as FALLBACK_CDN_URL, c as chainId2TokenListURLs, a as defaultTokenLists, o as url2TokenList, s as urlChain2TokenList };
6
16
 
7
17
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","names":["API_TOKENS_LIST_URL","defaultTokenLists"],"sources":["../../../src/tokens/lists/constants.ts"],"sourcesContent":["// Default tokens now come from the Velora API (getAllTokens), which the API serves\n// at this endpoint. Exposed publicly via `defaults.tokenLists`.\n\nimport { API_TOKENS_LIST_URL } from \"../state/apiTokensAtom\";\n\n// User-provided token lists (WidgetProps.tokenLists) still download and construct as before.\nexport const defaultTokenLists: string[] = [API_TOKENS_LIST_URL];\n"],"mappings":";;AAMA,IAAaC,IAA8B,CAACD,EAAoB"}
1
+ {"version":3,"file":"constants.js","names":["filterUnique","gatherObjectsByProp","isValidUrl","TokenListDownloadData","TokenLists","UniqueTokenLists","flatMap","chainIds","list","map","chainId","url","filename","defaultTokenLists","Array","from","Set","filter","url2TokenList","urlChain2TokenList","chainId2TokenListURLs","all","enabled","String","accumElem","acc","push","onByDefault","FALLBACK_CDN_URL"],"sources":["../../../src/tokens/lists/constants.ts"],"sourcesContent":["import { filterUnique, gatherObjectsByProp, isValidUrl } from \"@/lib/utils\";\nimport type { TokenListDownloadData } from \"./types\";\n\nimport TokenLists from \"./lists.json\";\n\n// filter out lists with duplicate `url` or `filename` so we don't load or fallback to potentially wrong list\n// which shouldn't happen as long as we keep `lists.json` lists unique.\n\n// In UI it makes sense to skip such malformed duplicate lists, rather than hard break\nconst UniqueTokenLists: TokenListDownloadData[] = filterUnique(\n // one entry per list+chain, so lookups by a single chainId stay simple\n TokenLists.flatMap(({ chainIds, ...list }) =>\n chainIds.map((chainId) => ({ ...list, chainId }))\n ),\n // account for one list being used on multiple chains\n (list) => [list.url + list.chainId, list.filename + list.chainId]\n);\n\nexport const defaultTokenLists = Array.from(\n new Set(UniqueTokenLists.map((list) => list.url)) // URLs only\n).filter(isValidUrl); // validate just in case\nexport const url2TokenList = gatherObjectsByProp<TokenListDownloadData>(\n UniqueTokenLists,\n (list) => list.url\n);\n\nexport const urlChain2TokenList = gatherObjectsByProp<TokenListDownloadData>(\n UniqueTokenLists,\n (list) => `${list.url}@${list.chainId}`\n);\n\nexport const chainId2TokenListURLs = gatherObjectsByProp<\n TokenListDownloadData,\n { all: string[]; enabled: string[] }\n>(\n UniqueTokenLists,\n (list) => String(list.chainId),\n (list, accumElem) => {\n const acc = accumElem || { all: [], enabled: [] };\n\n acc.all.push(list.url);\n\n if (list.onByDefault) {\n acc.enabled.push(list.url);\n }\n\n return acc;\n }\n);\n\nexport const FALLBACK_CDN_URL = \"https://cdn.velora.xyz/web/token-lists\";\n"],"mappings":";;;AASA,IAAMK,IAA4CL,EAEhDI,EAAWE,SAAS,EAAEC,aAAU,GAAGC,QACjCD,EAASE,KAAKC,OAAa;CAAE,GAAGF;CAAME;CAAS,EACjD,CAAC,GAEAF,MAAS,CAACA,EAAKG,MAAMH,EAAKE,SAASF,EAAKI,WAAWJ,EAAKE,QAC3D,CAAC,EAEYG,IAAoBC,MAAMC,KACrC,IAAIC,IAAIX,EAAiBI,KAAKD,MAASA,EAAKG,IAAI,CAAC,CAClD,CAACM,OAAOf,EAAW,EACPgB,IAAgBjB,EAC3BI,IACCG,MAASA,EAAKG,IAChB,EAEYQ,IAAqBlB,EAChCI,IACCG,MAAS,GAAGA,EAAKG,IAAG,GAAIH,EAAKE,UAC/B,EAEYU,IAAwBnB,EAInCI,IACCG,MAASe,OAAOf,EAAKE,QAAQ,GAC7BF,GAAMgB,MAAc;CACnB,IAAMC,IAAMD,KAAa;EAAEH,KAAK,EAAE;EAAEC,SAAS,EAAA;EAAI;CAQjD,OANAG,EAAIJ,IAAIK,KAAKlB,EAAKG,IAAI,EAElBH,EAAKmB,eACPF,EAAIH,QAAQI,KAAKlB,EAAKG,IAAI,EAGrBc;EAEV,EAEYG,IAAmB"}
@@ -1,3 +1,3 @@
1
1
  import { TokenList } from '@uniswap/token-lists';
2
- export declare const downloadTokenListData: (listURL: string, signal?: AbortSignal) => Promise<TokenList>;
2
+ export declare const downloadTokenListDataWithFallback: (listURL: string, signal?: AbortSignal) => Promise<TokenList>;
3
3
  //# sourceMappingURL=download.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../src/tokens/lists/download.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,eAAO,MAAM,qBAAqB,GAChC,SAAS,MAAM,EACf,SAAS,WAAW,KACnB,OAAO,CAAC,SAAS,CAWnB,CAAC"}
1
+ {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../src/tokens/lists/download.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAItD,eAAO,MAAM,iCAAiC,GAC5C,SAAS,MAAM,EACf,SAAS,WAAW,KACnB,OAAO,CAAC,SAAS,CA2BnB,CAAC"}
@@ -1,10 +1,18 @@
1
- import e from "axios";
1
+ import { FALLBACK_CDN_URL as e, url2TokenList as t } from "./constants.js";
2
+ import n from "axios";
2
3
  //#region src/tokens/lists/download.ts
3
- var t = async (t, n) => {
4
- let { data: r } = await e.get(t, { signal: n });
5
- return r.version.major === null && (r.version.major = 0), r.version.minor === null && (r.version.minor = 0), r.version.patch === null && (r.version.patch = 0), r;
4
+ var r = async (r, i) => {
5
+ try {
6
+ let { data: e } = await n.get(r, { signal: i });
7
+ return e.version.major === null && (e.version.major = 0), e.version.minor === null && (e.version.minor = 0), e.version.patch === null && (e.version.patch = 0), e;
8
+ } catch (a) {
9
+ let { filename: o } = t[r] || {};
10
+ if (!o) throw a;
11
+ let s = `${e}/${o}.json`, { data: c } = await n.get(s, { signal: i });
12
+ return c;
13
+ }
6
14
  };
7
15
  //#endregion
8
- export { t as downloadTokenListData };
16
+ export { r as downloadTokenListDataWithFallback };
9
17
 
10
18
  //# sourceMappingURL=download.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"download.js","names":["axios","TokenList","downloadTokenListData","listURL","signal","AbortSignal","Promise","data","get","version","major","minor","patch"],"sources":["../../../src/tokens/lists/download.ts"],"sourcesContent":["import axios from \"axios\";\nimport type { TokenList } from \"@uniswap/token-lists\";\n\nexport const downloadTokenListData = async (\n listURL: string,\n signal?: AbortSignal\n): Promise<TokenList> => {\n const { data } = await axios.get<TokenList>(listURL, {\n signal,\n });\n // @ts-expect-error malformed tokenList.version\n if (data.version.major === null) data.version.major = 0; // https://tokens.coingecko.com/xdai/all.json has `null`\n // @ts-expect-error malformed tokenList.version\n if (data.version.minor === null) data.version.minor = 0;\n // @ts-expect-error malformed tokenList.version\n if (data.version.patch === null) data.version.patch = 0;\n return data;\n};\n"],"mappings":";;AAGA,IAAaE,IAAwB,OACnCC,GACAC,MACuB;CACvB,IAAM,EAAEG,YAAS,MAAMP,EAAMQ,IAAeL,GAAS,EACnDC,WACD,CAAC;CAOF,OALIG,EAAKE,QAAQC,UAAU,SAAMH,EAAKE,QAAQC,QAAQ,IAElDH,EAAKE,QAAQE,UAAU,SAAMJ,EAAKE,QAAQE,QAAQ,IAElDJ,EAAKE,QAAQG,UAAU,SAAML,EAAKE,QAAQG,QAAQ,IAC/CL"}
1
+ {"version":3,"file":"download.js","names":["axios","TokenList","url2TokenList","FALLBACK_CDN_URL","downloadTokenListDataWithFallback","listURL","signal","AbortSignal","Promise","data","get","version","major","minor","patch","error","filename","url"],"sources":["../../../src/tokens/lists/download.ts"],"sourcesContent":["import axios from \"axios\";\nimport type { TokenList } from \"@uniswap/token-lists\";\n\nimport { url2TokenList, FALLBACK_CDN_URL } from \"./constants\";\n\nexport const downloadTokenListDataWithFallback = async (\n listURL: string,\n signal?: AbortSignal\n): Promise<TokenList> => {\n try {\n // from the direct url\n const { data } = await axios.get<TokenList>(listURL, {\n signal,\n });\n // @ts-expect-error malformed tokenList.version\n if (data.version.major === null) data.version.major = 0; // https://tokens.coingecko.com/xdai/all.json has `null`\n // @ts-expect-error malformed tokenList.version\n if (data.version.minor === null) data.version.minor = 0;\n // @ts-expect-error malformed tokenList.version\n if (data.version.patch === null) data.version.patch = 0;\n return data;\n } catch (error) {\n const { filename } = url2TokenList[listURL] || {};\n\n if (!filename) throw error;\n\n const url = `${FALLBACK_CDN_URL}/${filename}.json`;\n\n // from fallback on CDN\n const { data } = await axios.get<TokenList>(url, {\n signal,\n });\n\n return data;\n }\n};\n"],"mappings":";;;AAKA,IAAaI,IAAoC,OAC/CC,GACAC,MACuB;CACvB,IAAI;EAEF,IAAM,EAAEG,YAAS,MAAMT,EAAMU,IAAeL,GAAS,EACnDC,WACD,CAAC;EAOF,OALIG,EAAKE,QAAQC,UAAU,SAAMH,EAAKE,QAAQC,QAAQ,IAElDH,EAAKE,QAAQE,UAAU,SAAMJ,EAAKE,QAAQE,QAAQ,IAElDJ,EAAKE,QAAQG,UAAU,SAAML,EAAKE,QAAQG,QAAQ,IAC/CL;UACAM,GAAO;EACd,IAAM,EAAEC,gBAAad,EAAcG,MAAY,EAAE;EAEjD,IAAI,CAACW,GAAU,MAAMD;EAErB,IAAME,IAAM,GAAGd,EAAgB,GAAIa,EAAQ,QAGrC,EAAEP,YAAS,MAAMT,EAAMU,IAAeO,GAAK,EAC/CX,WACD,CAAC;EAEF,OAAOG"}
@@ -0,0 +1,22 @@
1
+ //#region src/tokens/lists/lists.json
2
+ var e = [{
3
+ url: "https://cdn.velora.xyz/web/token-lists/curated_token_list.json",
4
+ filename: "curated_token_list",
5
+ chainIds: [
6
+ 1,
7
+ 10,
8
+ 137,
9
+ 56,
10
+ 43114,
11
+ 42161,
12
+ 8453,
13
+ 130,
14
+ 100
15
+ ],
16
+ listName: "Curated Token List",
17
+ onByDefault: !0
18
+ }];
19
+ //#endregion
20
+ export { e as default };
21
+
22
+ //# sourceMappingURL=lists.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lists.js","names":[],"sources":["../../../src/tokens/lists/lists.json"],"sourcesContent":["[\n {\n \"url\": \"https://cdn.velora.xyz/web/token-lists/curated_token_list.json\",\n \"filename\": \"curated_token_list\",\n \"chainIds\": [1, 10, 137, 56, 43114, 42161, 8453, 130, 100],\n \"listName\": \"Curated Token List\",\n \"onByDefault\": true\n }\n]\n"],"mappings":""}
@@ -0,0 +1,12 @@
1
+ declare const _default: [
2
+ {
3
+ "url": "https://cdn.velora.xyz/web/token-lists/curated_token_list.json",
4
+ "filename": "curated_token_list",
5
+ "chainIds": [1, 10, 137, 56, 43114, 42161, 8453, 130, 100],
6
+ "listName": "Curated Token List",
7
+ "onByDefault": true
8
+ }
9
+ ]
10
+ ;
11
+
12
+ export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"effects.d.ts","sourceRoot":"","sources":["../../../../src/tokens/lists/state/effects.ts"],"names":[],"mappings":"AAkCA,wBAAgB,kBAAkB,SAEjC;AAYD,eAAO,MAAM,wBAAwB,eAEpC,CAAC"}
1
+ {"version":3,"file":"effects.d.ts","sourceRoot":"","sources":["../../../../src/tokens/lists/state/effects.ts"],"names":[],"mappings":"AAiCA,wBAAgB,kBAAkB,SAEjC;AAWD,eAAO,MAAM,wBAAwB,eAEpC,CAAC"}