@velora-dex/widget 0.10.1 → 0.10.2-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) 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 +32 -32
  7. package/dist/core/inputs/state/setTokenByAddressAtom.d.ts.map +1 -1
  8. package/dist/core/inputs/state/setTokenByAddressAtom.js +69 -67
  9. package/dist/core/inputs/state/setTokenByAddressAtom.js.map +1 -1
  10. package/dist/core/limit/state/selectedTokenActionsAtom.js +29 -29
  11. package/dist/core/limit/state/selectedTokenAtom.js +5 -5
  12. package/dist/core/state/configAtom.js +2 -2
  13. package/dist/core/state/configAtom.js.map +1 -1
  14. package/dist/core/state/tokenListsAtom.d.ts +2 -0
  15. package/dist/core/state/tokenListsAtom.d.ts.map +1 -0
  16. package/dist/core/state/tokenListsAtom.js +9 -0
  17. package/dist/core/state/tokenListsAtom.js.map +1 -0
  18. package/dist/core/twap/state/selectedTokenActionsAtom.js +29 -29
  19. package/dist/hooks/tokens/data/useCombineTokensWithFetched.js +4 -4
  20. package/dist/hooks/useSDK.d.ts +3 -1
  21. package/dist/hooks/useSDK.d.ts.map +1 -1
  22. package/dist/hooks/useSDK.js.map +1 -1
  23. package/dist/lib/constants/urls.d.ts +1 -0
  24. package/dist/lib/constants/urls.d.ts.map +1 -1
  25. package/dist/lib/constants/urls.js +1 -1
  26. package/dist/lib/constants/urls.js.map +1 -1
  27. package/dist/lib/utils/index.js +15 -23
  28. package/dist/lib/utils/index.js.map +1 -1
  29. package/dist/tokens/lists/constants.d.ts +0 -8
  30. package/dist/tokens/lists/constants.d.ts.map +1 -1
  31. package/dist/tokens/lists/constants.js +3 -10
  32. package/dist/tokens/lists/constants.js.map +1 -1
  33. package/dist/tokens/lists/download.d.ts +1 -1
  34. package/dist/tokens/lists/download.d.ts.map +1 -1
  35. package/dist/tokens/lists/download.js +5 -13
  36. package/dist/tokens/lists/download.js.map +1 -1
  37. package/dist/tokens/lists/state/effects.d.ts.map +1 -1
  38. package/dist/tokens/lists/state/effects.js +22 -21
  39. package/dist/tokens/lists/state/effects.js.map +1 -1
  40. package/dist/tokens/lists/state/tokenListsStateAtom.d.ts +1 -1
  41. package/dist/tokens/lists/state/tokenListsStateAtom.d.ts.map +1 -1
  42. package/dist/tokens/lists/state/tokenListsStateAtom.js +17 -21
  43. package/dist/tokens/lists/state/tokenListsStateAtom.js.map +1 -1
  44. package/dist/tokens/lists/utils.d.ts +1 -2
  45. package/dist/tokens/lists/utils.d.ts.map +1 -1
  46. package/dist/tokens/lists/utils.js +5 -6
  47. package/dist/tokens/lists/utils.js.map +1 -1
  48. package/dist/tokens/queries.d.ts.map +1 -1
  49. package/dist/tokens/queries.js +30 -32
  50. package/dist/tokens/queries.js.map +1 -1
  51. package/dist/tokens/stabeCoins/hooks.d.ts +2 -4
  52. package/dist/tokens/stabeCoins/hooks.d.ts.map +1 -1
  53. package/dist/tokens/stabeCoins/hooks.js +14 -16
  54. package/dist/tokens/stabeCoins/hooks.js.map +1 -1
  55. package/dist/tokens/state/addImportedTokenAtom.d.ts +0 -1
  56. package/dist/tokens/state/addImportedTokenAtom.d.ts.map +1 -1
  57. package/dist/tokens/state/addImportedTokenAtom.js.map +1 -1
  58. package/dist/tokens/state/allTokensByChainAtom.d.ts.map +1 -1
  59. package/dist/tokens/state/allTokensByChainAtom.js +20 -30
  60. package/dist/tokens/state/allTokensByChainAtom.js.map +1 -1
  61. package/dist/tokens/state/apiTokensAtom.d.ts +24 -0
  62. package/dist/tokens/state/apiTokensAtom.d.ts.map +1 -0
  63. package/dist/tokens/state/apiTokensAtom.js +53 -0
  64. package/dist/tokens/state/apiTokensAtom.js.map +1 -0
  65. package/dist/tokens/state/fromListsAtom.js +1 -1
  66. package/dist/tokens/state/fromListsAtom.js.map +1 -1
  67. package/dist/tokens/types.d.ts +0 -1
  68. package/dist/tokens/types.d.ts.map +1 -1
  69. package/package.json +2 -2
  70. package/dist/tokens/lists/lists.js +0 -6
  71. package/dist/tokens/lists/lists.js.map +0 -1
  72. package/dist/tokens/lists/lists.json.d.ts +0 -362
  73. package/dist/tokens/stabeCoins/index.d.ts +0 -2
  74. package/dist/tokens/stabeCoins/index.d.ts.map +0 -1
  75. package/dist/tokens/stabeCoins/index.js +0 -6
  76. package/dist/tokens/stabeCoins/index.js.map +0 -1
  77. package/dist/tokens/utils/sets.d.ts +0 -4
  78. package/dist/tokens/utils/sets.d.ts.map +0 -1
  79. package/dist/tokens/utils/sets.js +0 -16
  80. package/dist/tokens/utils/sets.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"setTokenByAddressAtom.js","names":["atom","Setter","useAtom","useSetAtom","atomEffect","Effect","isAddress","Address","isETHaddress","nativeTokensByChainId","fromListsAtom","autoImportedTokensAtom","importedTokensAtom","Token","useLayoutEffect","isSupportedChainId","areTokensSame","SupportedChainId","pickDefaultTokenPair","tradeModeAtom","userTradeModeAtom","sideToInputType","tradeModeToCurrentInputAtom","tradeModeToPayAmountUnitAtom","tradeModeToReceiveAmountUnitAtom","tradeModeToSetTokenAtoms","tradeModeToSideAtom","tradeModeToTimeUnitAtom","tradeModeToTokenAtoms","wrappedNativeCurrency","autoAddImportedTokenAtom","getLogger","assert","bridgeInfosLoadedAtom","isTradeMode","tradeModesWithCrosschain","tradeModesWithSide","availableTradeModesAtom","enabledTradeModesFromConfigAtom","FormInputProps","SwapSideUnion","getClosestTimeUnit","formInputPropsAtom","RelaxedFormInputProps","NonNullable","K","logger","GetterWithPeek","Parameters","FindTokenAtomsInput","tokenToFind","address","network","get","set","findTokenInAtoms","tokenFromAddress","chainId","nativeToken","tokenFromLowercase","toLowerCase","tokensMap","listByChainId","addressMap","tokenFromLists","importedTokens","peek","importedToken","find","token","autoImportedTokens","autoImportedToken","info","isValidSide","side","formInputPropsEffectAtom","availableTradeModes","formInputProps","sendAmount","undefined","String","receiveAmount","srcChainId","Number","log","destChainId","currentTradeMode","tokenToAddress","selectedForm","includes","warn","formAtoms","currentTokenFrom","tokenFromAtom","currentTokenTo","tokenToAtom","newTokenFrom","newTokenTo","defaultChainId","has","wethMapping","Record","getTokenToFind","tokenFromProps","currentToken","defaultTokenFrom","defaultTokenTo","selectTokenFromAtom","selectTokenToAtom","currentSideAtom","currentInputAtom","isTradeModeWithSide","isTradeModeWithoutSide","isSell","isBuy","isValidSendAmount","isValidReceiveAmount","formPayAmountAtom","currentSendAmount","read","write","formReceiveAmountAtom","currentReceiveAmount","orderDeadline","isNaN","timeUnitAtom","currentTimeUnit","timestamp","useActivateFormInputEffects","useSetFormInputFromProps","t0","$","_c","t1","setFormInputProps","t2","t3"],"sources":["../../../../src/core/inputs/state/setTokenByAddressAtom.ts"],"sourcesContent":["import { atom, type Setter } from \"jotai\";\nimport { useAtom, useSetAtom } from \"@/core/store\";\nimport { atomEffect, type Effect } from \"jotai-effect\";\nimport { isAddress, type Address } from \"viem\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { nativeTokensByChainId } from \"@/tokens/constructor\";\nimport { fromListsAtom } from \"@/tokens/state/fromListsAtom\";\nimport {\n autoImportedTokensAtom,\n importedTokensAtom,\n} from \"@/tokens/state/importedTokensAtom\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useLayoutEffect } from \"react\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\nimport { areTokensSame } from \"@/tokens/utils/areTokensSame\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport { tradeModeAtom, userTradeModeAtom } from \"@/core/state/tradeModeAtom\";\nimport {\n sideToInputType,\n tradeModeToCurrentInputAtom,\n tradeModeToPayAmountUnitAtom,\n tradeModeToReceiveAmountUnitAtom,\n tradeModeToSetTokenAtoms,\n tradeModeToSideAtom,\n tradeModeToTimeUnitAtom,\n tradeModeToTokenAtoms,\n} from \"./common\";\nimport { wrappedNativeCurrency } from \"@/lib/constants/weth\";\nimport { autoAddImportedTokenAtom } from \"@/tokens/state/addImportedTokenAtom\";\nimport { getLogger } from \"@/core/logger\";\nimport { assert } from \"ts-essentials\";\nimport { bridgeInfosLoadedAtom } from \"@/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom\";\nimport {\n isTradeMode,\n tradeModesWithCrosschain,\n tradeModesWithSide,\n} from \"@/lib/tradeMode\";\nimport {\n availableTradeModesAtom,\n enabledTradeModesFromConfigAtom,\n} from \"@/core/state/enabledTradeModesAtom\";\nimport type { FormInputProps } from \"./types\";\nimport type { SwapSideUnion } from \"@velora-dex/sdk\";\nimport { getClosestTimeUnit } from \"@/core/limit/state/utils\";\n\nexport const formInputPropsAtom = atom<FormInputProps>({});\n\n// in case formInputPros passed to Widget are not exactly expected types\ntype RelaxedFormInputProps = {\n [K in keyof FormInputProps]?: NonNullable<FormInputProps[K]> extends string\n ? string\n : NonNullable<FormInputProps[K]> extends number\n ? number\n : FormInputProps[K];\n};\n\nconst logger = getLogger(\"FormInputProps\");\n\ntype GetterWithPeek = Parameters<Effect>[0];\n\ntype FindTokenAtomsInput = {\n tokenToFind: { address: Address; network: SupportedChainId };\n get: GetterWithPeek;\n set: Setter;\n};\n\nfunction findTokenInAtoms({\n get,\n set,\n tokenToFind,\n}: FindTokenAtomsInput): Token | undefined {\n const tokenFromAddress = tokenToFind.address;\n const chainId = tokenToFind.network;\n\n if (isETHaddress(tokenFromAddress)) {\n // if tokenFrom is ETH, set the native token for tokenFrom Input\n const nativeToken = nativeTokensByChainId[chainId];\n return nativeToken;\n }\n\n const tokenFromLowercase = tokenFromAddress.toLowerCase();\n\n // find the token from the token Lists for the srcChainId,\n // and retry to find the token when allTokens are updated (token lists loaded)\n const tokensMap = get(fromListsAtom).listByChainId[chainId]?.addressMap;\n const tokenFromLists = tokensMap?.[tokenFromLowercase];\n if (tokenFromLists) {\n return tokenFromLists;\n }\n\n // find the token from the imported tokens,\n // don't retry if user imports more tokens during the session\n const importedTokens = get.peek(importedTokensAtom);\n const importedToken = importedTokens[chainId]?.find(\n (token) => token.address.toLowerCase() === tokenFromLowercase\n );\n if (importedToken) {\n return importedToken;\n }\n\n // subscribe to auto-imported tokens, which will be added to only when tokenAddress prop is supplied from outside the widget\n const autoImportedTokens = get(autoImportedTokensAtom);\n // looking through auto-imported tokens isn't strictly necessary because importedTokens atom is updated together with autoImportedTokens atom,\n // except for consistency, and so that we don't have to subscribe to importedTokens atom that would retrigger formProps matching on manual token import\n const autoImportedToken = autoImportedTokens.find(\n (token) =>\n token.address.toLowerCase() === tokenFromLowercase &&\n token.network === chainId\n );\n if (autoImportedToken) {\n return autoImportedToken;\n }\n\n logger.info(\n \"token not available in widget. Will attempt to import from chain\",\n {\n address: tokenFromAddress,\n chainId,\n }\n );\n\n // trigger Token fetch and eventual import when tokenFromAddress is not found in available token lists and atoms\n set(autoAddImportedTokenAtom, { address: tokenFromAddress, chainId });\n}\n\nfunction isValidSide(side: string | undefined): side is SwapSideUnion {\n return side === \"BUY\" || side === \"SELL\";\n}\n\nconst formInputPropsEffectAtom = atomEffect((get, set) => {\n // subscribe to bridgeInfosLoadedAtom to have up-to-date available crosses\n // and retry token finding each time when bridgeInfo changes\n get(bridgeInfosLoadedAtom);\n\n // subscribe to enabledTradeModesFromConfigAtom to react to changes in enabled trade modes\n get(enabledTradeModesFromConfigAtom);\n // and use availableTradeModesAtom as final source of truth (it derrives from enabledTradeModesFromConfigAtom)\n const availableTradeModes = get.peek(availableTradeModesAtom);\n\n const formInputProps: RelaxedFormInputProps = get(formInputPropsAtom);\n const { tokenFromAddress } = formInputProps;\n\n // guard against amounts passed as numbers when props are supplied from outside the Widget and types are ignored\n const sendAmount =\n formInputProps.sendAmount !== undefined\n ? String(formInputProps.sendAmount)\n : undefined;\n const receiveAmount =\n formInputProps.receiveAmount !== undefined\n ? String(formInputProps.receiveAmount)\n : undefined;\n\n // guard against chainId passed as string when props are supplied from outside the Widget and types are ignored\n const srcChainId =\n formInputProps.srcChainId !== undefined\n ? Number(formInputProps.srcChainId)\n : undefined;\n\n logger.log(\"using external props to set Widget form input\", formInputProps);\n\n let destChainId =\n formInputProps.destChainId !== undefined\n ? Number(formInputProps.destChainId)\n : undefined;\n\n const currentTradeMode = get.peek(tradeModeAtom);\n\n let tokenToAddress = formInputProps.tokenToAddress;\n let selectedForm = formInputProps.selectedForm || currentTradeMode;\n if (\n !isTradeMode(selectedForm) ||\n !availableTradeModes.includes(selectedForm)\n ) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid, disabled or unavailable selectedForm provided\", {\n selectedForm,\n });\n // fallback to first available trade mode\n selectedForm = availableTradeModes[0];\n }\n\n // necessary for type safety\n assert(isTradeMode(selectedForm), \"selectedForm must be a valid trade mode\");\n\n const formAtoms = tradeModeToTokenAtoms[selectedForm];\n const currentTokenFrom = get.peek(formAtoms.tokenFromAtom);\n const currentTokenTo = get.peek(formAtoms.tokenToAtom);\n\n if (currentTradeMode !== selectedForm) {\n set(userTradeModeAtom, selectedForm);\n }\n\n let newTokenFrom: Token | undefined;\n let newTokenTo: Token | undefined;\n\n // if chain isn't given in props, match current srcChainId\n const defaultChainId = currentTokenFrom.network;\n\n if (!tradeModesWithCrosschain.has(selectedForm)) {\n // force destChainId = srcChainId for trade modes that don't support crosschain\n destChainId = srcChainId;\n }\n\n if (\n selectedForm === \"otc\" &&\n tokenToAddress &&\n isETHaddress(tokenToAddress)\n ) {\n const wethMapping: Record<number, Address> = wrappedNativeCurrency;\n // OTC Orders don't support ETH as tokenTo=takerAsset,\n // more logical to use WETH instead of no token at all\n tokenToAddress = wethMapping[destChainId || defaultChainId];\n }\n\n {\n // match tokenFromAddress and srcChainId to a new tokenFrom to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenFromAddress, network: srcChainId },\n currentToken: currentTokenFrom,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenFrom = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n {\n // match tokenToAddress and destChainId to a new tokenTo to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenToAddress, network: destChainId },\n currentToken: currentTokenTo,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenTo = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n if (newTokenFrom && newTokenTo && areTokensSame(newTokenFrom, newTokenTo)) {\n // if tokens are the same, skip tokenTo\n newTokenTo = undefined;\n }\n\n if (\n !newTokenFrom &&\n !tokenFromAddress &&\n srcChainId &&\n isSupportedChainId(srcChainId) &&\n srcChainId !== currentTokenFrom.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [defaultTokenFrom] = pickDefaultTokenPair(srcChainId, selectedForm);\n // set default token for the chain\n newTokenFrom = defaultTokenFrom;\n }\n\n if (\n !newTokenTo &&\n !tokenToAddress &&\n destChainId &&\n isSupportedChainId(destChainId) &&\n destChainId !== currentTokenTo?.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [, defaultTokenTo] = pickDefaultTokenPair(destChainId, selectedForm);\n // set default token for the chain\n newTokenTo = defaultTokenTo;\n }\n\n if (newTokenFrom) {\n const selectTokenFromAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenFromAtom;\n set(selectTokenFromAtom, newTokenFrom);\n }\n if (newTokenTo) {\n const selectTokenToAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenToAtom;\n set(selectTokenToAtom, newTokenTo);\n }\n\n const currentSideAtom = tradeModeToSideAtom[selectedForm];\n const currentInputAtom = tradeModeToCurrentInputAtom[selectedForm];\n\n let side = formInputProps.side;\n\n if (tradeModesWithSide.has(selectedForm)) {\n if (isValidSide(side)) {\n set(currentInputAtom, sideToInputType[side]);\n } else {\n if (side) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid side provided, must be BUY or SELL\", { side });\n }\n\n if (sendAmount && !receiveAmount) {\n side = \"SELL\"; // sendAmount is given and receiveAmount isn't -> SELL\n } else if (receiveAmount && !sendAmount) {\n side = \"BUY\"; // receiveAmount is given and sendAmount isn't -> BUY\n } else {\n // fallback to current side if both or none amounts are given\n side = get.peek(currentSideAtom);\n }\n }\n } else {\n side = get.peek(currentSideAtom);\n }\n\n // necessary for type safety\n assert(isValidSide(side), \"side must be BUY or SELL\");\n\n const isTradeModeWithSide = tradeModesWithSide.has(selectedForm);\n const isTradeModeWithoutSide = !isTradeModeWithSide;\n\n const isSell =\n isTradeModeWithoutSide || (isTradeModeWithSide && side === \"SELL\");\n const isBuy =\n isTradeModeWithoutSide || (isTradeModeWithSide && side === \"BUY\");\n\n const isValidSendAmount = sendAmount && Number(sendAmount) >= 0;\n const isValidReceiveAmount = receiveAmount && Number(receiveAmount) >= 0;\n\n // given a valid sendAmount\n // and the form with side=sell or without side\n if (isValidSendAmount && isSell) {\n // update the send amount\n const formPayAmountAtom = tradeModeToPayAmountUnitAtom[selectedForm];\n const currentSendAmount = get.peek(formPayAmountAtom.read);\n if (currentSendAmount !== sendAmount) {\n set(formPayAmountAtom.write, sendAmount);\n }\n }\n\n // given a valid receiveAmount\n // and the form with side=buy or without side\n if (isValidReceiveAmount && isBuy) {\n // update the receive amount\n const formReceiveAmountAtom =\n tradeModeToReceiveAmountUnitAtom[selectedForm];\n const currentReceiveAmount = get.peek(formReceiveAmountAtom.read);\n if (currentReceiveAmount !== receiveAmount) {\n set(formReceiveAmountAtom.write, receiveAmount);\n }\n }\n\n if (selectedForm === \"limit\" || selectedForm === \"otc\") {\n // OTC and Limit forms support order deadline param\n const orderDeadline = Number(formInputProps.orderDeadline);\n if (orderDeadline !== undefined && !isNaN(orderDeadline)) {\n const timeUnitAtom = tradeModeToTimeUnitAtom[selectedForm];\n const currentTimeUnit = get.peek(timeUnitAtom);\n\n if (currentTimeUnit.timestamp !== orderDeadline) {\n set(timeUnitAtom, {\n // set closest time unit for better UX\n ...getClosestTimeUnit(orderDeadline),\n // set exact timestamp\n timestamp: orderDeadline,\n });\n }\n }\n }\n});\n\nfunction getTokenToFind({\n tokenFromProps,\n currentToken,\n defaultChainId,\n}: {\n tokenFromProps: { address?: string; network?: number };\n currentToken?: Token;\n defaultChainId: SupportedChainId;\n}): { address: Address; network: SupportedChainId } | undefined {\n if (!tokenFromProps.address) return;\n // guard against malformed addresses passed through props\n if (!isAddress(tokenFromProps.address)) {\n logger.warn(\"malformed token address provided\", {\n address: tokenFromProps.address,\n });\n return;\n }\n\n const network = tokenFromProps.network || defaultChainId;\n\n // unsupported chainId provided, can't select this Token\n if (!isSupportedChainId(network)) {\n logger.warn(\"unsupported chainId provided\", { network });\n return;\n }\n\n if (\n currentToken &&\n areTokensSame(currentToken, {\n address: tokenFromProps.address,\n network,\n })\n ) {\n // same token already there\n return;\n }\n\n return { address: tokenFromProps.address, network };\n}\n\nexport function useActivateFormInputEffects() {\n useAtom(formInputPropsEffectAtom);\n}\n\nexport function useSetFormInputFromProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n orderDeadline,\n}: FormInputProps = {}) {\n const setFormInputProps = useSetAtom(formInputPropsAtom);\n\n // match props together as they are supplied together from outside the Widget,\n // on any one prop change, the whole form input props are updated as long as they are passed together to the Widget\n useLayoutEffect(() => {\n setFormInputProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n orderDeadline,\n });\n }, [\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n setFormInputProps,\n receiveAmount,\n side,\n orderDeadline,\n ]);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA8CA,IAAa0C,IAAqB1C,EAAqB,EAAE,CAAC,EAWpD8C,IAASf,EAAU,iBAAiB;AAU1C,SAASwB,EAAiB,EACxBF,QACAC,QACAJ,kBACyC;CACzC,IAAMM,IAAmBN,EAAYC,SAC/BM,IAAUP,EAAYE;CAE5B,IAAI5C,EAAagD,EAAiB,EAGhC,OADoB/C,EAAsBgD;CAI5C,IAAME,IAAqBH,EAAiBI,aAAa,EAKnDI,IADYX,EAAI3C,EAAc,CAACoD,cAAcL,IAAUM,aAC1BJ;CACnC,IAAIK,GACF,OAAOA;CAMT,IAAMG,IADiBd,EAAIa,KAAKtD,EACVqD,CAAeR,IAAUW,MAC5CC,MAAUA,EAAMlB,QAAQS,aAAa,KAAKD,EAC5C;CACD,IAAIQ,GACF,OAAOA;CAOT,IAAMI,IAHqBlB,EAAI1C,EAGL2D,CAAmBF,MAC1CC,MACCA,EAAMlB,QAAQS,aAAa,KAAKD,KAChCU,EAAMjB,YAAYK,EACrB;CACD,IAAIc,GACF,OAAOA;CAYTjB,AATAR,EAAO0B,KACL,oEACA;EACErB,SAASK;EACTC;EAEJ,CAAC,EAGDH,EAAIxB,GAA0B;EAAEqB,SAASK;EAAkBC;EAAS,CAAC;;AAGvE,SAASgB,EAAYC,GAAiD;CACpE,OAAOA,MAAS,SAASA,MAAS;;AAGpC,IAAMC,IAA2BvE,GAAYiD,GAAKC,MAAQ;CAMxDD,AAHAA,EAAIpB,EAAsB,EAG1BoB,EAAIf,EAAgC;CAEpC,IAAMsC,IAAsBvB,EAAIa,KAAK7B,EAAwB,EAEvDwC,IAAwCxB,EAAIX,EAAmB,EAC/D,EAAEc,wBAAqBqB,GAGvBC,IACJD,EAAeC,eAAeC,KAAAA,IAE1BA,KAAAA,IADAC,OAAOH,EAAeC,WAAW,EAEjCG,IACJJ,EAAeI,kBAAkBF,KAAAA,IAE7BA,KAAAA,IADAC,OAAOH,EAAeI,cAAc,EAIpCC,IACJL,EAAeK,eAAeH,KAAAA,IAE1BA,KAAAA,IADAI,OAAON,EAAeK,WAAW;CAGvCpC,EAAOsC,IAAI,iDAAiDP,EAAe;CAE3E,IAAIQ,IACFR,EAAeQ,gBAAgBN,KAAAA,IAE3BA,KAAAA,IADAI,OAAON,EAAeQ,YAAY,EAGlCC,IAAmBjC,EAAIa,KAAK/C,EAAc,EAE5CoE,IAAiBV,EAAeU,gBAChCC,IAAeX,EAAeW,gBAAgBF;CAclDtD,CAZE,CAACE,EAAYsD,EAAa,IAC1B,CAACZ,EAAoBa,SAASD,EAAa,MAG3C1C,EAAO4C,KAAK,0DAA0D,EACpEF,iBACD,CAAC,EAEFA,IAAeZ,EAAoB,KAIrC5C,EAAOE,EAAYsD,EAAa,EAAE,0CAA0C;CAE5E,IAAMG,IAAY/D,EAAsB4D,IAClCI,IAAmBvC,EAAIa,KAAKyB,EAAUE,cAAc,EACpDC,IAAiBzC,EAAIa,KAAKyB,EAAUI,YAAY;CAEtD,AAAIT,MAAqBE,KACvBlC,EAAIlC,GAAmBoE,EAAa;CAGtC,IAAIQ,GACAC,GAGEC,IAAiBN,EAAiBxC;CAOxC,AALKjB,EAAyBgE,IAAIX,EAAa,KAE7CH,IAAcH,IAIdM,MAAiB,SACjBD,KACA/E,EAAa+E,EAAe,KAK5BA,IAAiBa,EAAYf,KAAea;CAG9C;EAEE,IAAMhD,IAAcoD,EAAe;GACjCC,gBAAgB;IAAEpD,SAASK;IAAkBJ,SAAS8B;IAAY;GAClEsB,cAAcZ;GACdM;GACD,CAAC;EACF,AAAIhD,MACF8C,IAAezC,EAAiB;GAC9BF;GACAH;GACAI;GACD,CAAC;;CAIN;EAEE,IAAMJ,IAAcoD,EAAe;GACjCC,gBAAgB;IAAEpD,SAASoC;IAAgBnC,SAASiC;IAAa;GACjEmB,cAAcV;GACdI;GACD,CAAC;EACF,AAAIhD,MACF+C,IAAa1C,EAAiB;GAC5BF;GACAH;GACAI;GACD,CAAC;;CASN,IALI0C,KAAgBC,KAAcjF,EAAcgF,GAAcC,EAAW,KAEvEA,IAAalB,KAAAA,IAIb,CAACiB,KACD,CAACxC,KACD0B,KACAnE,EAAmBmE,EAAW,IAC9BA,MAAeU,EAAiBxC,SAChC;EAEA,IAAM,CAACqD,KAAoBvF,EAAqBgE,GAAYM,EAAa;EAEzEQ,IAAeS;;CAGjB,IACE,CAACR,KACD,CAACV,KACDF,KACAtE,EAAmBsE,EAAY,IAC/BA,MAAgBS,GAAgB1C,SAChC;EAEA,IAAM,GAAGsD,KAAkBxF,EAAqBmE,GAAaG,EAAa;EAE1ES,IAAaS;;CAGf,IAAIV,GAAc;EAChB,IAAMW,IACJlF,EAAyB+D,GAAcK;EACzCvC,EAAIqD,GAAqBX,EAAa;;CAExC,IAAIC,GAAY;EACd,IAAMW,IACJnF,EAAyB+D,GAAcO;EACzCzC,EAAIsD,GAAmBX,EAAW;;CAGpC,IAAMY,IAAkBnF,EAAoB8D,IACtCsB,IAAmBxF,EAA4BkE,IAEjDd,IAAOG,EAAeH;CAyB1B1C,AAvBII,EAAmB+D,IAAIX,EAAa,GAClCf,EAAYC,EAAK,GACnBpB,EAAIwD,GAAkBzF,EAAgBqD,GAAM,IAExCA,KAEF5B,EAAO4C,KAAK,8CAA8C,EAAEhB,SAAM,CAAC,EAGrE,AAMEA,IANEI,KAAc,CAACG,IACV,SACEA,KAAiB,CAACH,IACpB,QAGAzB,EAAIa,KAAK2C,EAAgB,IAIpCnC,IAAOrB,EAAIa,KAAK2C,EAAgB,EAIlC7E,EAAOyC,EAAYC,EAAK,EAAE,2BAA2B;CAErD,IAAMqC,IAAsB3E,EAAmB+D,IAAIX,EAAa,EAC1DwB,IAAyB,CAACD,GAE1BE,IACJD,KAA2BD,KAAuBrC,MAAS,QACvDwC,IACJF,KAA2BD,KAAuBrC,MAAS,OAEvDyC,IAAoBrC,KAAcK,OAAOL,EAAW,IAAI,GACxDsC,KAAuBnC,KAAiBE,OAAOF,EAAc,IAAI;CAIvE,IAAIkC,KAAqBF,GAAQ;EAE/B,IAAMI,IAAoB9F,EAA6BiE;EAEvD,AAD0BnC,EAAIa,KAAKmD,EAAkBE,KACjDD,KAAsBxC,KACxBxB,EAAI+D,EAAkBG,OAAO1C,EAAW;;CAM5C,IAAIsC,MAAwBF,GAAO;EAEjC,IAAMO,IACJjG,EAAiCgE;EAEnC,AAD6BnC,EAAIa,KAAKuD,EAAsBF,KACxDG,KAAyBzC,KAC3B3B,EAAImE,EAAsBD,OAAOvC,EAAc;;CAInD,IAAIO,MAAiB,WAAWA,MAAiB,OAAO;EAEtD,IAAMmC,IAAgBxC,OAAON,EAAe8C,cAAc;EAC1D,IAAIA,MAAkB5C,KAAAA,KAAa,CAAC6C,MAAMD,EAAc,EAAE;GACxD,IAAME,IAAelG,EAAwB6D;GAG7C,AAFwBnC,EAAIa,KAAK2D,EAE7BC,CAAgBC,cAAcJ,KAChCrE,EAAIuE,GAAc;IAEhB,GAAGpF,EAAmBkF,EAAc;IAEpCI,WAAWJ;IACZ,CAAC;;;EAIR;AAEF,SAASrB,EAAe,EACtBC,mBACAC,iBACAN,qBAK8D;CAC9D,IAAI,CAACK,EAAepD,SAAS;CAE7B,IAAI,CAAC7C,EAAUiG,EAAepD,QAAQ,EAAE;EACtCL,EAAO4C,KAAK,oCAAoC,EAC9CvC,SAASoD,EAAepD,SACzB,CAAC;EACF;;CAGF,IAAMC,IAAUmD,EAAenD,WAAW8C;CAG1C,IAAI,CAACnF,EAAmBqC,EAAQ,EAAE;EAChCN,EAAO4C,KAAK,gCAAgC,EAAEtC,YAAS,CAAC;EACxD;;CAIAoD,WACAxF,EAAcwF,GAAc;EAC1BrD,SAASoD,EAAepD;EACxBC;EACD,CAAC,GAMJ,OAAO;EAAED,SAASoD,EAAepD;EAASC;EAAS;;AAGrD,SAAO4E,IAAA;CACL9H,EAAQyE,EAAyB;;AAGnC,SAAOsD,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAAC;CAAA,AAAAF,EAAA,OAAAD,IAUeG,IAAAF,EAAA,MAVmBE,IAAAH,MAAAnD,KAAAA,IAAA,EAUnB,GAVmBmD,GAUnBC,EAAA,KAAAD,GAAAC,EAAA,KAAAE;CAVmB,IAAA,EAAA7C,iBAAAhC,qBAAA0B,eAAAK,mBAAAF,gBAAAP,eAAAG,kBAAAP,SAAAiD,qBAAAU,GAWvCC,IAA0BnI,EAAWuC,EAAmB,EAAC6F,GAAAC;CAIzD1H,AAJyDqH,EAAA,OAAA9C,KAAA8C,EAAA,OAAAR,KAAAQ,EAAA,OAAAlD,KAAAkD,EAAA,OAAA3C,KAAA2C,EAAA,OAAArD,KAAAqD,EAAA,OAAAG,KAAAH,EAAA,OAAAzD,KAAAyD,EAAA,OAAAjD,KAAAiD,EAAA,QAAA3E,KAAA2E,EAAA,QAAA5C,KAIzCgD,UAAA;EACdD,EAAkB;GAAA9C;GAAAhC;GAAA0B;GAAAK;GAAAF;GAAAP;GAAAG;GAAAP;GAAAiD;GAUjB,CAAC;IACDa,IAAA;EACDhD;EACAhC;EACA0B;EACAK;EACAF;EACAP;EACAwD;EACArD;EACAP;EACAiD;EACD,EAAAQ,EAAA,KAAA9C,GAAA8C,EAAA,KAAAR,GAAAQ,EAAA,KAAAlD,GAAAkD,EAAA,KAAA3C,GAAA2C,EAAA,KAAArD,GAAAqD,EAAA,KAAAG,GAAAH,EAAA,KAAAzD,GAAAyD,EAAA,KAAAjD,GAAAiD,EAAA,MAAA3E,GAAA2E,EAAA,MAAA5C,GAAA4C,EAAA,MAAAI,GAAAJ,EAAA,MAAAK,MAAAD,IAAAJ,EAAA,KAAAK,IAAAL,EAAA,MAvBDrH,EAAgByH,GAYbC,EAWD"}
1
+ {"version":3,"file":"setTokenByAddressAtom.js","names":["atom","Setter","useAtom","useSetAtom","atomEffect","Effect","isAddress","Address","isETHaddress","nativeTokensByChainId","fromListsAtom","apiTokensByChainAtom","autoImportedTokensAtom","importedTokensAtom","Token","useLayoutEffect","isSupportedChainId","areTokensSame","SupportedChainId","pickDefaultTokenPair","tradeModeAtom","userTradeModeAtom","sideToInputType","tradeModeToCurrentInputAtom","tradeModeToPayAmountUnitAtom","tradeModeToReceiveAmountUnitAtom","tradeModeToSetTokenAtoms","tradeModeToSideAtom","tradeModeToTimeUnitAtom","tradeModeToTokenAtoms","wrappedNativeCurrency","autoAddImportedTokenAtom","getLogger","assert","bridgeInfosLoadedAtom","isTradeMode","tradeModesWithCrosschain","tradeModesWithSide","availableTradeModesAtom","enabledTradeModesFromConfigAtom","FormInputProps","SwapSideUnion","getClosestTimeUnit","enabledTokenListsAtom","formInputPropsAtom","RelaxedFormInputProps","NonNullable","K","logger","GetterWithPeek","Parameters","FindTokenAtomsInput","tokenToFind","address","network","get","set","findTokenInAtoms","tokenFromAddress","chainId","nativeToken","tokenFromLowercase","toLowerCase","configuredLists","tokensMap","length","listByChainId","addressMap","tokenFromLists","importedTokens","peek","importedToken","find","token","autoImportedTokens","autoImportedToken","info","isValidSide","side","formInputPropsEffectAtom","availableTradeModes","formInputProps","sendAmount","undefined","String","receiveAmount","srcChainId","Number","log","destChainId","currentTradeMode","tokenToAddress","selectedForm","includes","warn","formAtoms","currentTokenFrom","tokenFromAtom","currentTokenTo","tokenToAtom","newTokenFrom","newTokenTo","defaultChainId","has","wethMapping","Record","getTokenToFind","tokenFromProps","currentToken","defaultTokenFrom","defaultTokenTo","selectTokenFromAtom","selectTokenToAtom","currentSideAtom","currentInputAtom","isTradeModeWithSide","isTradeModeWithoutSide","isSell","isBuy","isValidSendAmount","isValidReceiveAmount","formPayAmountAtom","currentSendAmount","read","write","formReceiveAmountAtom","currentReceiveAmount","orderDeadline","isNaN","timeUnitAtom","currentTimeUnit","timestamp","useActivateFormInputEffects","useSetFormInputFromProps","t0","$","_c","t1","setFormInputProps","t2","t3"],"sources":["../../../../src/core/inputs/state/setTokenByAddressAtom.ts"],"sourcesContent":["import { atom, type Setter } from \"jotai\";\nimport { useAtom, useSetAtom } from \"@/core/store\";\nimport { atomEffect, type Effect } from \"jotai-effect\";\nimport { isAddress, type Address } from \"viem\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { nativeTokensByChainId } from \"@/tokens/constructor\";\nimport { fromListsAtom } from \"@/tokens/state/fromListsAtom\";\nimport { apiTokensByChainAtom } from \"@/tokens/state/apiTokensAtom\";\nimport {\n autoImportedTokensAtom,\n importedTokensAtom,\n} from \"@/tokens/state/importedTokensAtom\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useLayoutEffect } from \"react\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\nimport { areTokensSame } from \"@/tokens/utils/areTokensSame\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport { tradeModeAtom, userTradeModeAtom } from \"@/core/state/tradeModeAtom\";\nimport {\n sideToInputType,\n tradeModeToCurrentInputAtom,\n tradeModeToPayAmountUnitAtom,\n tradeModeToReceiveAmountUnitAtom,\n tradeModeToSetTokenAtoms,\n tradeModeToSideAtom,\n tradeModeToTimeUnitAtom,\n tradeModeToTokenAtoms,\n} from \"./common\";\nimport { wrappedNativeCurrency } from \"@/lib/constants/weth\";\nimport { autoAddImportedTokenAtom } from \"@/tokens/state/addImportedTokenAtom\";\nimport { getLogger } from \"@/core/logger\";\nimport { assert } from \"ts-essentials\";\nimport { bridgeInfosLoadedAtom } from \"@/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom\";\nimport {\n isTradeMode,\n tradeModesWithCrosschain,\n tradeModesWithSide,\n} from \"@/lib/tradeMode\";\nimport {\n availableTradeModesAtom,\n enabledTradeModesFromConfigAtom,\n} from \"@/core/state/enabledTradeModesAtom\";\nimport type { FormInputProps } from \"./types\";\nimport type { SwapSideUnion } from \"@velora-dex/sdk\";\nimport { getClosestTimeUnit } from \"@/core/limit/state/utils\";\nimport { enabledTokenListsAtom } from \"@/core/state/tokenListsAtom\";\n\nexport const formInputPropsAtom = atom<FormInputProps>({});\n\n// in case formInputPros passed to Widget are not exactly expected types\ntype RelaxedFormInputProps = {\n [K in keyof FormInputProps]?: NonNullable<FormInputProps[K]> extends string\n ? string\n : NonNullable<FormInputProps[K]> extends number\n ? number\n : FormInputProps[K];\n};\n\nconst logger = getLogger(\"FormInputProps\");\n\ntype GetterWithPeek = Parameters<Effect>[0];\n\ntype FindTokenAtomsInput = {\n tokenToFind: { address: Address; network: SupportedChainId };\n get: GetterWithPeek;\n set: Setter;\n};\n\nfunction findTokenInAtoms({\n get,\n set,\n tokenToFind,\n}: FindTokenAtomsInput): Token | undefined {\n const tokenFromAddress = tokenToFind.address;\n const chainId = tokenToFind.network;\n\n if (isETHaddress(tokenFromAddress)) {\n // if tokenFrom is ETH, set the native token for tokenFrom Input\n const nativeToken = nativeTokensByChainId[chainId];\n return nativeToken;\n }\n\n const tokenFromLowercase = tokenFromAddress.toLowerCase();\n\n // find the token in the active token set for the chain, retrying when it loads:\n // user-provided lists if configured, otherwise the API default token set.\n const configuredLists = get(enabledTokenListsAtom);\n const tokensMap =\n configuredLists.length > 0\n ? get(fromListsAtom).listByChainId[chainId]?.addressMap\n : get(apiTokensByChainAtom)[chainId]?.addressMap;\n const tokenFromLists = tokensMap?.[tokenFromLowercase];\n if (tokenFromLists) {\n return tokenFromLists;\n }\n\n // find the token from the imported tokens,\n // don't retry if user imports more tokens during the session\n const importedTokens = get.peek(importedTokensAtom);\n const importedToken = importedTokens[chainId]?.find(\n (token) => token.address.toLowerCase() === tokenFromLowercase\n );\n if (importedToken) {\n return importedToken;\n }\n\n // subscribe to auto-imported tokens, which will be added to only when tokenAddress prop is supplied from outside the widget\n const autoImportedTokens = get(autoImportedTokensAtom);\n // looking through auto-imported tokens isn't strictly necessary because importedTokens atom is updated together with autoImportedTokens atom,\n // except for consistency, and so that we don't have to subscribe to importedTokens atom that would retrigger formProps matching on manual token import\n const autoImportedToken = autoImportedTokens.find(\n (token) =>\n token.address.toLowerCase() === tokenFromLowercase &&\n token.network === chainId\n );\n if (autoImportedToken) {\n return autoImportedToken;\n }\n\n logger.info(\n \"token not available in widget. Will attempt to import from chain\",\n {\n address: tokenFromAddress,\n chainId,\n }\n );\n\n // trigger Token fetch and eventual import when tokenFromAddress is not found in available token lists and atoms\n set(autoAddImportedTokenAtom, { address: tokenFromAddress, chainId });\n}\n\nfunction isValidSide(side: string | undefined): side is SwapSideUnion {\n return side === \"BUY\" || side === \"SELL\";\n}\n\nconst formInputPropsEffectAtom = atomEffect((get, set) => {\n // subscribe to bridgeInfosLoadedAtom to have up-to-date available crosses\n // and retry token finding each time when bridgeInfo changes\n get(bridgeInfosLoadedAtom);\n\n // subscribe to enabledTradeModesFromConfigAtom to react to changes in enabled trade modes\n get(enabledTradeModesFromConfigAtom);\n // and use availableTradeModesAtom as final source of truth (it derrives from enabledTradeModesFromConfigAtom)\n const availableTradeModes = get.peek(availableTradeModesAtom);\n\n const formInputProps: RelaxedFormInputProps = get(formInputPropsAtom);\n const { tokenFromAddress } = formInputProps;\n\n // guard against amounts passed as numbers when props are supplied from outside the Widget and types are ignored\n const sendAmount =\n formInputProps.sendAmount !== undefined\n ? String(formInputProps.sendAmount)\n : undefined;\n const receiveAmount =\n formInputProps.receiveAmount !== undefined\n ? String(formInputProps.receiveAmount)\n : undefined;\n\n // guard against chainId passed as string when props are supplied from outside the Widget and types are ignored\n const srcChainId =\n formInputProps.srcChainId !== undefined\n ? Number(formInputProps.srcChainId)\n : undefined;\n\n logger.log(\"using external props to set Widget form input\", formInputProps);\n\n let destChainId =\n formInputProps.destChainId !== undefined\n ? Number(formInputProps.destChainId)\n : undefined;\n\n const currentTradeMode = get.peek(tradeModeAtom);\n\n let tokenToAddress = formInputProps.tokenToAddress;\n let selectedForm = formInputProps.selectedForm || currentTradeMode;\n if (\n !isTradeMode(selectedForm) ||\n !availableTradeModes.includes(selectedForm)\n ) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid, disabled or unavailable selectedForm provided\", {\n selectedForm,\n });\n // fallback to first available trade mode\n selectedForm = availableTradeModes[0];\n }\n\n // necessary for type safety\n assert(isTradeMode(selectedForm), \"selectedForm must be a valid trade mode\");\n\n const formAtoms = tradeModeToTokenAtoms[selectedForm];\n const currentTokenFrom = get.peek(formAtoms.tokenFromAtom);\n const currentTokenTo = get.peek(formAtoms.tokenToAtom);\n\n if (currentTradeMode !== selectedForm) {\n set(userTradeModeAtom, selectedForm);\n }\n\n let newTokenFrom: Token | undefined;\n let newTokenTo: Token | undefined;\n\n // if chain isn't given in props, match current srcChainId\n const defaultChainId = currentTokenFrom.network;\n\n if (!tradeModesWithCrosschain.has(selectedForm)) {\n // force destChainId = srcChainId for trade modes that don't support crosschain\n destChainId = srcChainId;\n }\n\n if (\n selectedForm === \"otc\" &&\n tokenToAddress &&\n isETHaddress(tokenToAddress)\n ) {\n const wethMapping: Record<number, Address> = wrappedNativeCurrency;\n // OTC Orders don't support ETH as tokenTo=takerAsset,\n // more logical to use WETH instead of no token at all\n tokenToAddress = wethMapping[destChainId || defaultChainId];\n }\n\n {\n // match tokenFromAddress and srcChainId to a new tokenFrom to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenFromAddress, network: srcChainId },\n currentToken: currentTokenFrom,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenFrom = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n {\n // match tokenToAddress and destChainId to a new tokenTo to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenToAddress, network: destChainId },\n currentToken: currentTokenTo,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenTo = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n if (newTokenFrom && newTokenTo && areTokensSame(newTokenFrom, newTokenTo)) {\n // if tokens are the same, skip tokenTo\n newTokenTo = undefined;\n }\n\n if (\n !newTokenFrom &&\n !tokenFromAddress &&\n srcChainId &&\n isSupportedChainId(srcChainId) &&\n srcChainId !== currentTokenFrom.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [defaultTokenFrom] = pickDefaultTokenPair(srcChainId, selectedForm);\n // set default token for the chain\n newTokenFrom = defaultTokenFrom;\n }\n\n if (\n !newTokenTo &&\n !tokenToAddress &&\n destChainId &&\n isSupportedChainId(destChainId) &&\n destChainId !== currentTokenTo?.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [, defaultTokenTo] = pickDefaultTokenPair(destChainId, selectedForm);\n // set default token for the chain\n newTokenTo = defaultTokenTo;\n }\n\n if (newTokenFrom) {\n const selectTokenFromAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenFromAtom;\n set(selectTokenFromAtom, newTokenFrom);\n }\n if (newTokenTo) {\n const selectTokenToAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenToAtom;\n set(selectTokenToAtom, newTokenTo);\n }\n\n const currentSideAtom = tradeModeToSideAtom[selectedForm];\n const currentInputAtom = tradeModeToCurrentInputAtom[selectedForm];\n\n let side = formInputProps.side;\n\n if (tradeModesWithSide.has(selectedForm)) {\n if (isValidSide(side)) {\n set(currentInputAtom, sideToInputType[side]);\n } else {\n if (side) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid side provided, must be BUY or SELL\", { side });\n }\n\n if (sendAmount && !receiveAmount) {\n side = \"SELL\"; // sendAmount is given and receiveAmount isn't -> SELL\n } else if (receiveAmount && !sendAmount) {\n side = \"BUY\"; // receiveAmount is given and sendAmount isn't -> BUY\n } else {\n // fallback to current side if both or none amounts are given\n side = get.peek(currentSideAtom);\n }\n }\n } else {\n side = get.peek(currentSideAtom);\n }\n\n // necessary for type safety\n assert(isValidSide(side), \"side must be BUY or SELL\");\n\n const isTradeModeWithSide = tradeModesWithSide.has(selectedForm);\n const isTradeModeWithoutSide = !isTradeModeWithSide;\n\n const isSell =\n isTradeModeWithoutSide || (isTradeModeWithSide && side === \"SELL\");\n const isBuy =\n isTradeModeWithoutSide || (isTradeModeWithSide && side === \"BUY\");\n\n const isValidSendAmount = sendAmount && Number(sendAmount) >= 0;\n const isValidReceiveAmount = receiveAmount && Number(receiveAmount) >= 0;\n\n // given a valid sendAmount\n // and the form with side=sell or without side\n if (isValidSendAmount && isSell) {\n // update the send amount\n const formPayAmountAtom = tradeModeToPayAmountUnitAtom[selectedForm];\n const currentSendAmount = get.peek(formPayAmountAtom.read);\n if (currentSendAmount !== sendAmount) {\n set(formPayAmountAtom.write, sendAmount);\n }\n }\n\n // given a valid receiveAmount\n // and the form with side=buy or without side\n if (isValidReceiveAmount && isBuy) {\n // update the receive amount\n const formReceiveAmountAtom =\n tradeModeToReceiveAmountUnitAtom[selectedForm];\n const currentReceiveAmount = get.peek(formReceiveAmountAtom.read);\n if (currentReceiveAmount !== receiveAmount) {\n set(formReceiveAmountAtom.write, receiveAmount);\n }\n }\n\n if (selectedForm === \"limit\" || selectedForm === \"otc\") {\n // OTC and Limit forms support order deadline param\n const orderDeadline = Number(formInputProps.orderDeadline);\n if (orderDeadline !== undefined && !isNaN(orderDeadline)) {\n const timeUnitAtom = tradeModeToTimeUnitAtom[selectedForm];\n const currentTimeUnit = get.peek(timeUnitAtom);\n\n if (currentTimeUnit.timestamp !== orderDeadline) {\n set(timeUnitAtom, {\n // set closest time unit for better UX\n ...getClosestTimeUnit(orderDeadline),\n // set exact timestamp\n timestamp: orderDeadline,\n });\n }\n }\n }\n});\n\nfunction getTokenToFind({\n tokenFromProps,\n currentToken,\n defaultChainId,\n}: {\n tokenFromProps: { address?: string; network?: number };\n currentToken?: Token;\n defaultChainId: SupportedChainId;\n}): { address: Address; network: SupportedChainId } | undefined {\n if (!tokenFromProps.address) return;\n // guard against malformed addresses passed through props\n if (!isAddress(tokenFromProps.address)) {\n logger.warn(\"malformed token address provided\", {\n address: tokenFromProps.address,\n });\n return;\n }\n\n const network = tokenFromProps.network || defaultChainId;\n\n // unsupported chainId provided, can't select this Token\n if (!isSupportedChainId(network)) {\n logger.warn(\"unsupported chainId provided\", { network });\n return;\n }\n\n if (\n currentToken &&\n areTokensSame(currentToken, {\n address: tokenFromProps.address,\n network,\n })\n ) {\n // same token already there\n return;\n }\n\n return { address: tokenFromProps.address, network };\n}\n\nexport function useActivateFormInputEffects() {\n useAtom(formInputPropsEffectAtom);\n}\n\nexport function useSetFormInputFromProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n orderDeadline,\n}: FormInputProps = {}) {\n const setFormInputProps = useSetAtom(formInputPropsAtom);\n\n // match props together as they are supplied together from outside the Widget,\n // on any one prop change, the whole form input props are updated as long as they are passed together to the Widget\n useLayoutEffect(() => {\n setFormInputProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n orderDeadline,\n });\n }, [\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n setFormInputProps,\n receiveAmount,\n side,\n orderDeadline,\n ]);\n}\n"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { wagmiConfig as e } from "../../../lib/web3/wagmi/config.js";
2
2
  import { pickDefaultTokenPair as t } from "../../../tokens/defaultTokens.js";
3
3
  import { limitTokenFromAtom as n, limitTokenToAtom as r } from "./limitTokenAtoms.js";
4
- import { enabledSrcChainsAtom as i } from "../../state/enabledChainsAtom.js";
5
- import { areTokensSame as a } from "../../../tokens/utils/areTokensSame.js";
6
- import { findFirstTokenFromAcross as o, isTokenFromAcross as s } from "../../across/utils.js";
4
+ import { areTokensSame as i } from "../../../tokens/utils/areTokensSame.js";
5
+ import { findFirstTokenFromAcross as a, isTokenFromAcross as o } from "../../across/utils.js";
6
+ import { enabledSrcChainsAtom as s } from "../../state/enabledChainsAtom.js";
7
7
  import { allTokensByChainAtom as c } from "../../../tokens/state/allTokensByChainAtom.js";
8
8
  import { switchChain as l } from "../../../lib/web3/wagmi/switchChain.js";
9
9
  import { getSelectableDestChains as u } from "../../state/getSelectableDestChains.js";
@@ -12,63 +12,63 @@ import { unlockLimitPriceAtom as f } from "./limitInputActionsAtom.js";
12
12
  import { atom as p } from "jotai";
13
13
  //#region src/core/limit/state/selectedTokenActionsAtom.ts
14
14
  var m = p(null, async (e, t) => {
15
- let a = e(r);
16
- if (!a || !e(i).includes(a.network)) return;
17
- let o = e(n), s = o.network;
18
- t(n, a), t(g, o), t(f);
15
+ let i = e(r);
16
+ if (!i || !e(s).includes(i.network)) return;
17
+ let a = e(n), o = a.network;
18
+ t(n, i), t(g, a), t(f);
19
19
  let c = e(n);
20
- c.network !== s && l({ chainId: c.network });
21
- }), h = p(null, async (i, u, p) => {
22
- let m = i(n), h = i(r), g = m;
23
- if (u(n, p), m = p, a(m, g) || u(f), m.network !== e.state.chainId && l({ chainId: m.network }), h) if (d({
24
- get: i,
20
+ c.network !== o && l({ chainId: c.network });
21
+ }), h = p(null, async (s, u, p) => {
22
+ let m = s(n), h = s(r), g = m;
23
+ if (u(n, p), m = p, i(m, g) || u(f), m.network !== e.state.chainId && l({ chainId: m.network }), h) if (d({
24
+ get: s,
25
25
  chainIdFrom: m.network,
26
26
  chainIdTo: h.network,
27
27
  mode: "limit"
28
- })) s({
28
+ })) o({
29
29
  token: h,
30
30
  fromChainId: m.network,
31
31
  toChainId: h.network,
32
32
  mode: "limit"
33
- }) || u(r, o({
33
+ }) || u(r, a({
34
34
  fromChainId: m.network,
35
35
  toChainId: h.network,
36
- listByChainId: i(c).listByChainId,
36
+ listByChainId: s(c).listByChainId,
37
37
  mode: "limit"
38
38
  }));
39
39
  else if (m.network !== h.network) {
40
40
  let [e, n] = t(m.network, "limit");
41
- h = a(m, n) ? e : n, u(r, h);
42
- } else a(m, h) && (h = g, u(r, h));
43
- }), g = p(null, async (o, c, p) => {
44
- let m = o(n);
45
- if (!u(o, {
41
+ h = i(m, n) ? e : n, u(r, h);
42
+ } else i(m, h) && (h = g, u(r, h));
43
+ }), g = p(null, async (a, c, p) => {
44
+ let m = a(n);
45
+ if (!u(a, {
46
46
  fromChainId: m.network,
47
47
  mode: "limit"
48
48
  }).includes(p.network)) return;
49
- let h = o(r), g = h;
50
- if (c(r, p), h = p, a(h, m)) {
51
- let [e, r] = t(h.network, "limit"), i = a(m, e) ? r : e, o = g && m.network !== g.network ? i : g ?? i;
49
+ let h = a(r), g = h;
50
+ if (c(r, p), h = p, i(h, m)) {
51
+ let [e, r] = t(h.network, "limit"), a = i(m, e) ? r : e, o = g && m.network !== g.network ? a : g ?? a;
52
52
  c(n, o), m = o;
53
53
  }
54
54
  let _ = !1, v = d({
55
- get: o,
55
+ get: a,
56
56
  chainIdFrom: m.network,
57
57
  chainIdTo: h.network,
58
58
  mode: "limit"
59
59
  });
60
- v && (s({
60
+ v && (o({
61
61
  token: h,
62
62
  fromChainId: m.network,
63
63
  toChainId: h.network,
64
64
  mode: "limit"
65
65
  }) || (_ = !0)), m.network !== h.network && !v && (_ = !0);
66
- let y = o(i);
66
+ let y = a(s);
67
67
  if (_) {
68
68
  let e = h.network;
69
69
  if (!y.includes(h.network)) {
70
70
  for (let t of y) if (d({
71
- get: o,
71
+ get: a,
72
72
  chainIdFrom: t,
73
73
  chainIdTo: h.network,
74
74
  mode: "limit"
@@ -77,10 +77,10 @@ var m = p(null, async (e, t) => {
77
77
  break;
78
78
  }
79
79
  }
80
- let [r, i] = t(e, "limit"), s = a(h, r) ? i : r;
80
+ let [r, o] = t(e, "limit"), s = i(h, r) ? o : r;
81
81
  c(n, s), m = s;
82
82
  }
83
- h && g && !a(h, g) && c(f), m.network !== e.state.chainId && l({ chainId: m.network });
83
+ h && g && !i(h, g) && c(f), m.network !== e.state.chainId && l({ chainId: m.network });
84
84
  });
85
85
  //#endregion
86
86
  export { h as selectLimitTokenFromAtom, g as selectLimitTokenToAtom, m as switchLimitTokensAtom };
@@ -1,14 +1,14 @@
1
1
  import { jotaiStore as e } from "../../store.js";
2
2
  import { pickDefaultTokenPair as t } from "../../../tokens/defaultTokens.js";
3
3
  import { limitTokenFromAtom as n, limitTokenToAtom as r } from "./limitTokenAtoms.js";
4
- import { enabledSrcChainsAtom as i } from "../../state/enabledChainsAtom.js";
5
- import { findFirstTokenFromAcross as a, isTokenFromAcross as o } from "../../across/utils.js";
4
+ import { findFirstTokenFromAcross as i, isTokenFromAcross as a } from "../../across/utils.js";
5
+ import { enabledSrcChainsAtom as o } from "../../state/enabledChainsAtom.js";
6
6
  import { allTokensByChainAtom as s } from "../../../tokens/state/allTokensByChainAtom.js";
7
7
  import { getSelectableDestChains as c } from "../../state/getSelectableDestChains.js";
8
8
  import { isCrosschainPossible as l } from "../../across/isCrosschainPossible.js";
9
9
  //#region src/core/limit/state/selectedTokenAtom.ts
10
10
  var u = (u) => {
11
- if (!e.get(i).includes(u)) return;
11
+ if (!e.get(o).includes(u)) return;
12
12
  let d = e.get(n);
13
13
  if (d.network === u) return;
14
14
  let [f, p] = t(u, "limit");
@@ -19,12 +19,12 @@ var u = (u) => {
19
19
  chainIdFrom: u,
20
20
  chainIdTo: m.network,
21
21
  mode: "limit"
22
- }) ? o({
22
+ }) ? a({
23
23
  token: m,
24
24
  fromChainId: u,
25
25
  toChainId: m.network,
26
26
  mode: "limit"
27
- }) || (m = a({
27
+ }) || (m = i({
28
28
  fromChainId: u,
29
29
  toChainId: m.network,
30
30
  listByChainId: e.get(s).listByChainId,
@@ -9,8 +9,8 @@ var c = {
9
9
  theme: o(),
10
10
  enableDelta: !0,
11
11
  enableCrossChain: !0,
12
- privyAppId: "cmb549ngz00omi90lifm9ifv5",
13
- privyClientId: "client-WY6LzDz2oxeGCDsUEdenrY8z7Qf7WHMmUKVbxSXZ31RqT",
12
+ privyAppId: void 0,
13
+ privyClientId: void 0,
14
14
  debug: !1,
15
15
  widgetMode: "standalone",
16
16
  enableDegenMode: !0
@@ -1 +1 @@
1
- {"version":3,"file":"configAtom.js","names":["atom","useAtomValue","WidgetElements","WidgetConfig","DevURLs","PartnerConfig","ReferrerConfig","MarkRequired","SupportedChainId","emptyArray","emptyObject","atomWithCompare","constructPropertiesEqual","unorderedShallowEqual","TradeMode","getDefaultTheme","PrimitiveConfig","Pick","IterableConfig","PrimitiveConfigState","defaultWidgetConfig","theme","enableDelta","enableCrossChain","privyAppId","import","meta","env","VITE_PRIVY_APP_ID","privyClientId","VITE_PRIVY_CLIENT_ID","debug","widgetMode","enableDegenMode","const","widgetConfigAtom","useWidgetConfig","defaultSubConfig","tokenLists","srcChains","destChains","tradeModes","excludeUI","devURLs","partnerConfig","referrerConfig","tokenListsAtom","srcChainsAtom","destChainsAtom","tradeModesAtom","excludeUIAtom","devURLsAtom","partnerConfigAtom","debugLabel","referrerConfigAtom"],"sources":["../../../src/core/state/configAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport { useAtomValue } from \"@/core/store\";\nimport type {\n WidgetElements,\n WidgetConfig,\n DevURLs,\n PartnerConfig,\n ReferrerConfig,\n} from \"../types\";\nimport type { MarkRequired } from \"ts-essentials\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { emptyArray, emptyObject } from \"@/lib/constants\";\nimport { atomWithCompare } from \"@/lib/utils/atomWithCompare\";\nimport { constructPropertiesEqual, unorderedShallowEqual } from \"@/lib/utils\";\nimport { type TradeMode } from \"./tradeModeAtom\";\nimport { getDefaultTheme } from \"@/lib/utils/theme\";\n\nexport type PrimitiveConfig = Pick<\n WidgetConfig,\n | \"theme\"\n | \"enableDelta\"\n | \"enableCrossChain\"\n | \"privyAppId\"\n | \"privyClientId\"\n | \"debug\"\n | \"widgetMode\"\n | \"enableDegenMode\"\n>;\n\nexport type IterableConfig = Pick<\n WidgetConfig,\n | \"srcChains\"\n | \"destChains\"\n | \"tokenLists\"\n | \"tradeModes\"\n | \"excludeUI\"\n | \"devURLs\"\n | \"partnerConfig\"\n | \"referrerConfig\"\n>;\n\ntype PrimitiveConfigState = MarkRequired<\n PrimitiveConfig,\n | \"theme\"\n | \"enableDelta\"\n | \"enableCrossChain\"\n | \"privyAppId\"\n | \"privyClientId\"\n | \"debug\"\n | \"widgetMode\"\n | \"enableDegenMode\"\n>;\n\nexport const defaultWidgetConfig = {\n theme: getDefaultTheme(),\n enableDelta: true,\n enableCrossChain: true,\n privyAppId: import.meta.env.VITE_PRIVY_APP_ID,\n privyClientId: import.meta.env.VITE_PRIVY_CLIENT_ID,\n debug: false,\n widgetMode: \"standalone\",\n enableDegenMode: true,\n} as const satisfies PrimitiveConfig;\n\nexport const widgetConfigAtom = atom<PrimitiveConfigState>(defaultWidgetConfig);\n\nexport const useWidgetConfig = () => {\n return useAtomValue(widgetConfigAtom);\n};\n\nexport const defaultSubConfig = {\n tokenLists: emptyArray,\n srcChains: emptyArray,\n destChains: emptyArray,\n tradeModes: emptyArray,\n excludeUI: emptyArray,\n devURLs: emptyObject,\n partnerConfig: emptyObject,\n referrerConfig: emptyObject,\n} as const satisfies IterableConfig;\n\n// independent atoms for each iterable config property\n// with comparison to avoid unnecessary re-renders\nexport const tokenListsAtom = atomWithCompare<string[]>(\n defaultSubConfig.tokenLists,\n unorderedShallowEqual\n);\nexport const srcChainsAtom = atomWithCompare<SupportedChainId[]>(\n defaultSubConfig.srcChains,\n unorderedShallowEqual\n);\nexport const destChainsAtom = atomWithCompare<SupportedChainId[]>(\n defaultSubConfig.destChains,\n unorderedShallowEqual\n);\n\nexport const tradeModesAtom = atomWithCompare<TradeMode[]>(\n defaultSubConfig.tradeModes,\n unorderedShallowEqual\n);\n\nexport const excludeUIAtom = atomWithCompare<WidgetElements[]>(\n defaultSubConfig.excludeUI,\n unorderedShallowEqual\n);\n\nexport const devURLsAtom = atomWithCompare<DevURLs>(\n defaultSubConfig.devURLs,\n // known properties only comparison\n constructPropertiesEqual([\"apiProxyURL\", \"apiURL\", \"explorerURL\"])\n);\n\nexport const partnerConfigAtom = atomWithCompare<PartnerConfig>(\n defaultSubConfig.partnerConfig,\n constructPropertiesEqual([\n \"partner\",\n \"partnerAddress\",\n \"partnerFeeBps\",\n \"partnerTakesSurplus\",\n ])\n);\n\npartnerConfigAtom.debugLabel = \"partnerConfigAtom\";\n\nexport const referrerConfigAtom = atomWithCompare<ReferrerConfig>(\n defaultSubConfig.referrerConfig,\n constructPropertiesEqual([\"referrerAddress\"])\n);\n\nreferrerConfigAtom.debugLabel = \"referrerConfigAtom\";\n"],"mappings":";;;;;;;AAqDA,IAAaoB,IAAsB;CACjCC,OAAON,GAAiB;CACxBO,aAAa;CACbC,kBAAkB;CAClBC,YAAAA;CACAK,eAAAA;CACAE,OAAO;CACPC,YAAY;CACZC,iBAAiB;CAClB,EAEYE,IAAmBnC,EAA2BoB,EAAoB,EAElEgB,UACJnC,EAAakC,EAAiB,EAG1BE,IAAmB;CAC9BC,YAAY7B;CACZ8B,WAAW9B;CACX+B,YAAY/B;CACZgC,YAAYhC;CACZiC,WAAWjC;CACXkC,SAASjC;CACTkC,eAAelC;CACfmC,gBAAgBnC;CACjB,EAIYoC,IAAiBnC,EAC5B0B,EAAiBC,YACjBzB,EACD,EACYkC,IAAgBpC,EAC3B0B,EAAiBE,WACjB1B,EACD,EACYmC,IAAiBrC,EAC5B0B,EAAiBG,YACjB3B,EACD,EAEYoC,IAAiBtC,EAC5B0B,EAAiBI,YACjB5B,EACD,EAEYqC,IAAgBvC,EAC3B0B,EAAiBK,WACjB7B,EACD,EAEYsC,IAAcxC,EACzB0B,EAAiBM,SAEjB/B,EAAyB;CAAC;CAAe;CAAU;CAAc,CACnE,CAAC,EAEYwC,IAAoBzC,EAC/B0B,EAAiBO,eACjBhC,EAAyB;CACvB;CACA;CACA;CACA;CACD,CACH,CAAC;AAEDwC,EAAkBC,aAAa;AAE/B,IAAaC,IAAqB3C,EAChC0B,EAAiBQ,gBACjBjC,EAAyB,CAAC,kBAAkB,CAC9C,CAAC;AAED0C,EAAmBD,aAAa"}
1
+ {"version":3,"file":"configAtom.js","names":["atom","useAtomValue","WidgetElements","WidgetConfig","DevURLs","PartnerConfig","ReferrerConfig","MarkRequired","SupportedChainId","emptyArray","emptyObject","atomWithCompare","constructPropertiesEqual","unorderedShallowEqual","TradeMode","getDefaultTheme","PrimitiveConfig","Pick","IterableConfig","PrimitiveConfigState","defaultWidgetConfig","theme","enableDelta","enableCrossChain","privyAppId","import","meta","env","VITE_PRIVY_APP_ID","privyClientId","VITE_PRIVY_CLIENT_ID","debug","widgetMode","enableDegenMode","const","widgetConfigAtom","useWidgetConfig","defaultSubConfig","tokenLists","srcChains","destChains","tradeModes","excludeUI","devURLs","partnerConfig","referrerConfig","tokenListsAtom","srcChainsAtom","destChainsAtom","tradeModesAtom","excludeUIAtom","devURLsAtom","partnerConfigAtom","debugLabel","referrerConfigAtom"],"sources":["../../../src/core/state/configAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport { useAtomValue } from \"@/core/store\";\nimport type {\n WidgetElements,\n WidgetConfig,\n DevURLs,\n PartnerConfig,\n ReferrerConfig,\n} from \"../types\";\nimport type { MarkRequired } from \"ts-essentials\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { emptyArray, emptyObject } from \"@/lib/constants\";\nimport { atomWithCompare } from \"@/lib/utils/atomWithCompare\";\nimport { constructPropertiesEqual, unorderedShallowEqual } from \"@/lib/utils\";\nimport { type TradeMode } from \"./tradeModeAtom\";\nimport { getDefaultTheme } from \"@/lib/utils/theme\";\n\nexport type PrimitiveConfig = Pick<\n WidgetConfig,\n | \"theme\"\n | \"enableDelta\"\n | \"enableCrossChain\"\n | \"privyAppId\"\n | \"privyClientId\"\n | \"debug\"\n | \"widgetMode\"\n | \"enableDegenMode\"\n>;\n\nexport type IterableConfig = Pick<\n WidgetConfig,\n | \"srcChains\"\n | \"destChains\"\n | \"tokenLists\"\n | \"tradeModes\"\n | \"excludeUI\"\n | \"devURLs\"\n | \"partnerConfig\"\n | \"referrerConfig\"\n>;\n\ntype PrimitiveConfigState = MarkRequired<\n PrimitiveConfig,\n | \"theme\"\n | \"enableDelta\"\n | \"enableCrossChain\"\n | \"privyAppId\"\n | \"privyClientId\"\n | \"debug\"\n | \"widgetMode\"\n | \"enableDegenMode\"\n>;\n\nexport const defaultWidgetConfig = {\n theme: getDefaultTheme(),\n enableDelta: true,\n enableCrossChain: true,\n privyAppId: import.meta.env.VITE_PRIVY_APP_ID,\n privyClientId: import.meta.env.VITE_PRIVY_CLIENT_ID,\n debug: false,\n widgetMode: \"standalone\",\n enableDegenMode: true,\n} as const satisfies PrimitiveConfig;\n\nexport const widgetConfigAtom = atom<PrimitiveConfigState>(defaultWidgetConfig);\n\nexport const useWidgetConfig = () => {\n return useAtomValue(widgetConfigAtom);\n};\n\nexport const defaultSubConfig = {\n tokenLists: emptyArray,\n srcChains: emptyArray,\n destChains: emptyArray,\n tradeModes: emptyArray,\n excludeUI: emptyArray,\n devURLs: emptyObject,\n partnerConfig: emptyObject,\n referrerConfig: emptyObject,\n} as const satisfies IterableConfig;\n\n// independent atoms for each iterable config property\n// with comparison to avoid unnecessary re-renders\nexport const tokenListsAtom = atomWithCompare<string[]>(\n defaultSubConfig.tokenLists,\n unorderedShallowEqual\n);\nexport const srcChainsAtom = atomWithCompare<SupportedChainId[]>(\n defaultSubConfig.srcChains,\n unorderedShallowEqual\n);\nexport const destChainsAtom = atomWithCompare<SupportedChainId[]>(\n defaultSubConfig.destChains,\n unorderedShallowEqual\n);\n\nexport const tradeModesAtom = atomWithCompare<TradeMode[]>(\n defaultSubConfig.tradeModes,\n unorderedShallowEqual\n);\n\nexport const excludeUIAtom = atomWithCompare<WidgetElements[]>(\n defaultSubConfig.excludeUI,\n unorderedShallowEqual\n);\n\nexport const devURLsAtom = atomWithCompare<DevURLs>(\n defaultSubConfig.devURLs,\n // known properties only comparison\n constructPropertiesEqual([\"apiProxyURL\", \"apiURL\", \"explorerURL\"])\n);\n\nexport const partnerConfigAtom = atomWithCompare<PartnerConfig>(\n defaultSubConfig.partnerConfig,\n constructPropertiesEqual([\n \"partner\",\n \"partnerAddress\",\n \"partnerFeeBps\",\n \"partnerTakesSurplus\",\n ])\n);\n\npartnerConfigAtom.debugLabel = \"partnerConfigAtom\";\n\nexport const referrerConfigAtom = atomWithCompare<ReferrerConfig>(\n defaultSubConfig.referrerConfig,\n constructPropertiesEqual([\"referrerAddress\"])\n);\n\nreferrerConfigAtom.debugLabel = \"referrerConfigAtom\";\n"],"mappings":";;;;;;;AAqDA,IAAaoB,IAAsB;CACjCC,OAAON,GAAiB;CACxBO,aAAa;CACbC,kBAAkB;CAClBC,YAAAA,KAAAA;CACAK,eAAAA,KAAAA;CACAE,OAAO;CACPC,YAAY;CACZC,iBAAiB;CAClB,EAEYE,IAAmBnC,EAA2BoB,EAAoB,EAElEgB,UACJnC,EAAakC,EAAiB,EAG1BE,IAAmB;CAC9BC,YAAY7B;CACZ8B,WAAW9B;CACX+B,YAAY/B;CACZgC,YAAYhC;CACZiC,WAAWjC;CACXkC,SAASjC;CACTkC,eAAelC;CACfmC,gBAAgBnC;CACjB,EAIYoC,IAAiBnC,EAC5B0B,EAAiBC,YACjBzB,EACD,EACYkC,IAAgBpC,EAC3B0B,EAAiBE,WACjB1B,EACD,EACYmC,IAAiBrC,EAC5B0B,EAAiBG,YACjB3B,EACD,EAEYoC,IAAiBtC,EAC5B0B,EAAiBI,YACjB5B,EACD,EAEYqC,IAAgBvC,EAC3B0B,EAAiBK,WACjB7B,EACD,EAEYsC,IAAcxC,EACzB0B,EAAiBM,SAEjB/B,EAAyB;CAAC;CAAe;CAAU;CAAc,CACnE,CAAC,EAEYwC,IAAoBzC,EAC/B0B,EAAiBO,eACjBhC,EAAyB;CACvB;CACA;CACA;CACA;CACD,CACH,CAAC;AAEDwC,EAAkBC,aAAa;AAE/B,IAAaC,IAAqB3C,EAChC0B,EAAiBQ,gBACjBjC,EAAyB,CAAC,kBAAkB,CAC9C,CAAC;AAED0C,EAAmBD,aAAa"}
@@ -0,0 +1,2 @@
1
+ export declare const enabledTokenListsAtom: import('jotai').Atom<string[]>;
2
+ //# sourceMappingURL=tokenListsAtom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenListsAtom.d.ts","sourceRoot":"","sources":["../../../src/core/state/tokenListsAtom.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,qBAAqB,gCAEjC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { tokenListsAtom as e } from "./configAtom.js";
2
+ import { defaultTokenLists as t } from "../../tokens/lists/constants.js";
3
+ import { atom as n } from "jotai";
4
+ //#region src/core/state/tokenListsAtom.ts
5
+ var r = n((n) => n(e).filter((e) => !t.includes(e)));
6
+ //#endregion
7
+ export { r as enabledTokenListsAtom };
8
+
9
+ //# sourceMappingURL=tokenListsAtom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenListsAtom.js","names":[],"sources":["../../../src/core/state/tokenListsAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport { tokenListsAtom } from \"./configAtom\";\nimport { defaultTokenLists } from \"@/tokens/lists/constants\";\n\nexport const enabledTokenListsAtom = atom<string[]>((get) =>\n get(tokenListsAtom).filter((url) => !defaultTokenLists.includes(url))\n);\n"],"mappings":";;;;AAIA,IAAa,IAAwB,GAAgB,MACnD,EAAI,EAAe,CAAC,QAAQ,MAAQ,CAAC,EAAkB,SAAS,EAAI,CAAC,CACtE"}
@@ -2,9 +2,9 @@ import { jotaiStore as e } from "../../store.js";
2
2
  import { wagmiConfig as t } from "../../../lib/web3/wagmi/config.js";
3
3
  import { pickDefaultTokenPair as n } from "../../../tokens/defaultTokens.js";
4
4
  import { twapTokenFromAtom as r, twapTokenToAtom as i } from "./twapTokenAtoms.js";
5
- import { enabledSrcChainsAtom as a } from "../../state/enabledChainsAtom.js";
6
- import { areTokensSame as o } from "../../../tokens/utils/areTokensSame.js";
7
- import { findFirstTokenFromAcross as s, isTokenFromAcross as c } from "../../across/utils.js";
5
+ import { areTokensSame as a } from "../../../tokens/utils/areTokensSame.js";
6
+ import { findFirstTokenFromAcross as o, isTokenFromAcross as s } from "../../across/utils.js";
7
+ import { enabledSrcChainsAtom as c } from "../../state/enabledChainsAtom.js";
8
8
  import { allTokensByChainAtom as l } from "../../../tokens/state/allTokensByChainAtom.js";
9
9
  import { switchChain as u } from "../../../lib/web3/wagmi/switchChain.js";
10
10
  import { getSelectableDestChains as d } from "../../state/getSelectableDestChains.js";
@@ -13,24 +13,24 @@ import { atom as p } from "jotai";
13
13
  //#region src/core/twap/state/selectedTokenActionsAtom.ts
14
14
  var m = p(null, async (e, t) => {
15
15
  let n = e(i);
16
- if (!n || !e(a).includes(n.network)) return;
17
- let o = e(r), s = o.network;
18
- t(r, n), t(g, o);
19
- let c = e(r);
20
- c.network !== s && u({ chainId: c.network });
21
- }), h = p(null, async (e, a, d) => {
16
+ if (!n || !e(c).includes(n.network)) return;
17
+ let a = e(r), o = a.network;
18
+ t(r, n), t(g, a);
19
+ let s = e(r);
20
+ s.network !== o && u({ chainId: s.network });
21
+ }), h = p(null, async (e, c, d) => {
22
22
  let p = e(r), m = e(i), h = p;
23
- if (a(r, d), p = d, p.network !== t.state.chainId && u({ chainId: p.network }), m) if (f({
23
+ if (c(r, d), p = d, p.network !== t.state.chainId && u({ chainId: p.network }), m) if (f({
24
24
  get: e,
25
25
  chainIdFrom: p.network,
26
26
  chainIdTo: m.network,
27
27
  mode: "twap"
28
- })) c({
28
+ })) s({
29
29
  token: m,
30
30
  fromChainId: p.network,
31
31
  toChainId: m.network,
32
32
  mode: "twap"
33
- }) || a(i, s({
33
+ }) || c(i, o({
34
34
  fromChainId: p.network,
35
35
  toChainId: m.network,
36
36
  listByChainId: e(l).listByChainId,
@@ -38,18 +38,18 @@ var m = p(null, async (e, t) => {
38
38
  }));
39
39
  else if (p.network !== m.network) {
40
40
  let [e, t] = n(p.network, "twap");
41
- m = o(p, t) ? e : t, a(i, m);
42
- } else o(p, m) && (m = h, a(i, m));
43
- }), g = p(null, async (e, s, l) => {
41
+ m = a(p, t) ? e : t, c(i, m);
42
+ } else a(p, m) && (m = h, c(i, m));
43
+ }), g = p(null, async (e, o, l) => {
44
44
  let p = e(r);
45
45
  if (l.network !== p.network || !d(e, {
46
46
  fromChainId: p.network,
47
47
  mode: "twap"
48
48
  }).includes(l.network)) return;
49
49
  let m = e(i), h = m;
50
- if (s(i, l), m = l, o(m, p)) {
51
- let [e, t] = n(m.network, "twap"), i = o(p, e) ? t : e, a = h && p.network !== h.network ? i : h ?? i;
52
- s(r, a), p = a;
50
+ if (o(i, l), m = l, a(m, p)) {
51
+ let [e, t] = n(m.network, "twap"), i = a(p, e) ? t : e, s = h && p.network !== h.network ? i : h ?? i;
52
+ o(r, s), p = s;
53
53
  }
54
54
  let g = !1, _ = f({
55
55
  get: e,
@@ -57,13 +57,13 @@ var m = p(null, async (e, t) => {
57
57
  chainIdTo: m.network,
58
58
  mode: "twap"
59
59
  });
60
- _ && (c({
60
+ _ && (s({
61
61
  token: m,
62
62
  fromChainId: p.network,
63
63
  toChainId: m.network,
64
64
  mode: "twap"
65
65
  }) || (g = !0)), p.network !== m.network && !_ && (g = !0);
66
- let v = e(a);
66
+ let v = e(c);
67
67
  if (g) {
68
68
  let t = m.network;
69
69
  if (!v.includes(m.network)) {
@@ -77,34 +77,34 @@ var m = p(null, async (e, t) => {
77
77
  break;
78
78
  }
79
79
  }
80
- let [i, a] = n(t, "twap"), c = o(m, i) ? a : i;
81
- s(r, c), p = c;
80
+ let [i, s] = n(t, "twap"), c = a(m, i) ? s : i;
81
+ o(r, c), p = c;
82
82
  }
83
83
  p.network !== t.state.chainId && u({ chainId: p.network });
84
84
  }), _ = (t) => {
85
- if (!e.get(a).includes(t)) return;
86
- let o = e.get(r);
87
- if (o.network === t) return;
85
+ if (!e.get(c).includes(t)) return;
86
+ let a = e.get(r);
87
+ if (a.network === t) return;
88
88
  let [u, p] = n(t, "twap");
89
- e.set(r, u), o = u;
89
+ e.set(r, u), a = u;
90
90
  let m = e.get(i);
91
91
  m && (f({
92
92
  get: e.get,
93
93
  chainIdFrom: t,
94
94
  chainIdTo: m.network,
95
95
  mode: "twap"
96
- }) ? c({
96
+ }) ? s({
97
97
  token: m,
98
98
  fromChainId: t,
99
99
  toChainId: m.network,
100
100
  mode: "twap"
101
- }) || (m = s({
101
+ }) || (m = o({
102
102
  fromChainId: t,
103
103
  toChainId: m.network,
104
104
  listByChainId: e.get(l).listByChainId,
105
105
  mode: "twap"
106
106
  }), e.set(i, m)) : d(e.get, {
107
- fromChainId: o.network,
107
+ fromChainId: a.network,
108
108
  mode: "twap"
109
109
  }).includes(t) ? (m = p, e.set(i, m)) : (m = void 0, e.set(i, m)));
110
110
  };
@@ -1,5 +1,5 @@
1
- import { useAllEnabledChains as e } from "../../../core/state/enabledChainsAtom.js";
2
- import { isBlacklistedToken as t } from "../../../tokens/blacklist.js";
1
+ import { isBlacklistedToken as e } from "../../../tokens/blacklist.js";
2
+ import { useAllEnabledChains as t } from "../../../core/state/enabledChainsAtom.js";
3
3
  import { useAttachTokenBalanceMultichain as n } from "../balances/useAttachTokenBalanceMultichain.js";
4
4
  import { useFetchTokens as r } from "./useFetchTokens.js";
5
5
  import { c as i } from "react-compiler-runtime";
@@ -8,8 +8,8 @@ import { isAddress as o } from "viem";
8
8
  //#region src/hooks/tokens/data/useCombineTokensWithFetched.ts
9
9
  var s = (s) => {
10
10
  let d = i(19), { allTokenRows: f, tokenFilter: p, selectableChains: m } = s, h;
11
- d[0] === p ? h = d[1] : (h = o(p) && !t({ address: p }), d[0] = p, d[1] = h);
12
- let g = h, _ = e(), v = m || _;
11
+ d[0] === p ? h = d[1] : (h = o(p) && !e({ address: p }), d[0] = p, d[1] = h);
12
+ let g = h, _ = t(), v = m || _;
13
13
  if (g) {
14
14
  let e;
15
15
  d[2] === f ? e = d[3] : (e = new Set(f.map(c)), d[2] = f, d[3] = e);
@@ -1,4 +1,4 @@
1
- import { OTCOrderHandlers, GetRateFunctions, APIVersion, PreSignDeltaOrderFunctions, CancelDeltaOrderFunctions, IsTokenSupportedInDeltaFunctions, BuildTxFunctions, GetSpenderFunctions, GetAdaptersFunctions, MinViemClient, GetOTCOrdersFunctions, BuildOTCOrderFunctions, PostOTCOrderFunctions, FillOTCOrderFunctions, DeltaTokenModuleFunctions, PreSignTWAPDeltaOrderFunctions, GetBridgeRoutesFunctions, GetAgentsListFunctions, GetDeltaPriceFunctions, GetDeltaOrdersFunctions, BuildDeltaOrderFunctions, PostDeltaOrderFunctions, BuildTWAPDeltaOrderFunctions, PostTWAPDeltaOrderFunctions, SignDeltaOrderFunctions } from '@velora-dex/sdk';
1
+ import { OTCOrderHandlers, GetRateFunctions, APIVersion, PreSignDeltaOrderFunctions, CancelDeltaOrderFunctions, IsTokenSupportedInDeltaFunctions, BuildTxFunctions, GetSpenderFunctions, GetAdaptersFunctions, MinViemClient, GetOTCOrdersFunctions, BuildOTCOrderFunctions, PostOTCOrderFunctions, FillOTCOrderFunctions, DeltaTokenModuleFunctions, PreSignTWAPDeltaOrderFunctions, GetBridgeRoutesFunctions, GetAgentsListFunctions, GetDeltaPriceFunctions, GetDeltaOrdersFunctions, BuildDeltaOrderFunctions, PostDeltaOrderFunctions, BuildTWAPDeltaOrderFunctions, PostTWAPDeltaOrderFunctions, SignDeltaOrderFunctions, GetTokensFunctions } from '@velora-dex/sdk';
2
2
  import { Address, Hash, Hex } from 'viem';
3
3
  import { Prettify } from 'ts-essentials';
4
4
  type SDKCreateParams = {
@@ -14,6 +14,8 @@ type ConstructedSDKOutput<T> = {
14
14
  apiURL: string;
15
15
  };
16
16
  export declare function useMarketSwapSDK({ chainId, apiURL, }: SDKCreateParams): ConstructedSDKOutput<MarketSwapSDK>;
17
+ export type TokensSDK = Prettify<GetTokensFunctions>;
18
+ export declare function useTokensSDK({ chainId, apiURL, }: SDKCreateParams): ConstructedSDKOutput<TokensSDK>;
17
19
  type OTCOrdersSDKCreateParams = SDKCreateParams & {
18
20
  client?: MinViemClient;
19
21
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useSDK.d.ts","sourceRoot":"","sources":["../../src/hooks/useSDK.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useSDK.d.ts","sourceRoot":"","sources":["../../src/hooks/useSDK.ts"],"names":[],"mappings":"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"}
@@ -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","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":"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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","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,3 +1,4 @@
1
+ export declare const PROD_API_URL = "https://api.velora.xyz";
1
2
  export declare function getApiURL(): string;
2
3
  export declare function getApiProxyURL(): string;
3
4
  export declare function getExplorerURL(): string;