@swapkit/core 3.2.24 → 4.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs ADDED
@@ -0,0 +1,3 @@
1
+ var l=Object.create;var{getPrototypeOf:a,defineProperty:P,getOwnPropertyNames:f,getOwnPropertyDescriptor:e}=Object,O=Object.prototype.hasOwnProperty,Z=(_,D,j)=>{for(let U of f(D))if(!O.call(_,U)&&U!=="default")P(_,U,{get:()=>D[U],enumerable:!0});if(j){for(let U of f(D))if(!O.call(j,U)&&U!=="default")P(j,U,{get:()=>D[U],enumerable:!0});return j}},H=(_,D,j)=>{j=_!=null?l(a(_)):{};let U=D||!_||!_.__esModule?P(j,"default",{value:_,enumerable:!0}):j;for(let k of f(_))if(!O.call(U,k))P(U,k,{get:()=>_[k],enumerable:!0});return U},N=new WeakMap,$$=(_)=>{var D=N.get(_),j;if(D)return D;if(D=P({},"__esModule",{value:!0}),_&&typeof _==="object"||typeof _==="function")f(_).map((U)=>!O.call(D,U)&&P(D,U,{get:()=>_[U],enumerable:!(j=e(_,U))||j.enumerable}));return N.set(_,D),D};var S=(_,D)=>{for(var j in D)P(_,j,{get:D[j],enumerable:!0,configurable:!0,set:(U)=>D[j]=()=>U})};var Y={};S(Y,{getAddressValidator:()=>d,SwapKit:()=>o});module.exports=$$(Y);Z(Y,require("@swapkit/helpers/api"),module.exports);Z(Y,require("@swapkit/helpers"),module.exports);var m={};S(m,{SwapKit:()=>o});var R=require("@swapkit/helpers");var q=require("@swapkit/helpers");function y({chain:_,txHash:D}){let j=q.ChainToExplorerUrl[_];switch(_){case q.Chain.Maya:case q.Chain.Kujira:case q.Chain.Cosmos:case q.Chain.THORChain:case q.Chain.Solana:return`${j}/tx/${D.startsWith("0x")?D.slice(2):D}`;case q.Chain.Arbitrum:case q.Chain.Avalanche:case q.Chain.BinanceSmartChain:case q.Chain.Base:case q.Chain.Ethereum:case q.Chain.Optimism:case q.Chain.Polkadot:case q.Chain.Polygon:return`${j}/tx/${D.startsWith("0x")?D:`0x${D}`}`;case q.Chain.Litecoin:case q.Chain.Bitcoin:case q.Chain.BitcoinCash:case q.Chain.Dogecoin:case q.Chain.Radix:return`${j}/transaction/${D.toLowerCase()}`;default:throw new q.SwapKitError({errorKey:"core_explorer_unsupported_chain",info:{chain:_}})}}function K({chain:_,address:D}){let j=q.ChainToExplorerUrl[_];switch(_){case q.Chain.Solana:case q.Chain.Radix:return`${j}/account/${D}`;default:return`${j}/address/${D}`}}function o({config:_,plugins:D,wallets:j={}}={}){if(_)R.SKConfig.set(_);let U={},k=Object.entries(D||{}).reduce(($,[B,L])=>{let z=L({getWallet:J});return $[B]=z,$},{}),b=Object.entries(j||{}).reduce(($,[B,L])=>{let z=L.connectWallet({addChain:x});return $[B]=z,$},{});function v($){let B=k[$]||Object.values(k)[0];if(!B)throw new R.SwapKitError("core_plugin_not_found");return B}function E($){let B=Object.values(k).find((L)=>L.supportedSwapkitProviders?.includes($));if(!B)throw new R.SwapKitError("core_plugin_not_found");return B}function x($){let B=J($.chain);U[$.chain]={...B,...$}}function T({assetValue:$,type:B="checkOnly",contractAddress:L}){let z=k[L];if(z){if(B===R.ApproveMode.CheckOnly&&"isAssetValueApproved"in z)return z.isAssetValueApproved({assetValue:$});if(B===R.ApproveMode.Approve&&"approveAssetValue"in z)return z.approveAssetValue({assetValue:$});throw new R.SwapKitError({errorKey:"core_approve_asset_target_invalid",info:{message:`Target ${String(L)} cannot be used for approve operation`}})}let Q=$.chain,M=R.EVMChains.includes(Q);if(M&&$.isGasAsset||!M||$.isSynthetic)return Promise.resolve(B==="checkOnly"?!0:"approved");let X=J(Q),F=B==="checkOnly"?X.isApproved:X.approve;if(!F)throw new R.SwapKitError("core_wallet_connection_not_found");if(!($.address&&X.address&&typeof L==="string"))throw new R.SwapKitError("core_approve_asset_address_or_from_not_found");return F({amount:$.getBaseValue("bigint"),assetAddress:$.address,from:X.address,spenderAddress:L})}function J($){return U[$]}function W(){return{...U}}function w($){return J($)?.address||""}function r($,B){return T({assetValue:$,contractAddress:B,type:R.ApproveMode.Approve})}function u($,B){return T({assetValue:$,contractAddress:B,type:R.ApproveMode.CheckOnly})}function A($){J($)?.disconnect?.(),delete U[$]}function c(){for(let $ of Object.keys(U))A($)}function h($,B){return B?C($).then(({balance:L})=>L):J($)?.balance||[]}async function C($,B=!0){if($===R.Chain.Fiat||!J($))throw new R.SwapKitError("core_wallet_connection_not_found");let L=J($),z=[R.AssetValue.from({chain:$})];if("getBalance"in L){let Q=await L.getBalance(L.address,B);L.balance=Q?.length?Q:z}return L}function g({route:$,pluginName:B,...L}){let z=B&&v(B)||E($.providers[0]);if(!z)throw new R.SwapKitError("core_swap_route_not_complete");if("swap"in z)return z.swap({...L,route:$});throw new R.SwapKitError("core_plugin_swap_not_found")}function i({assetValue:$,...B}){let L=$.chain;if([R.Chain.Fiat,R.Chain.Radix].includes(L)||!J(L))throw new R.SwapKitError("core_wallet_connection_not_found");return J(L).transfer({...B,assetValue:$})}function p({chain:$,message:B}){let L=J($);if(!L)throw new R.SwapKitError("core_wallet_connection_not_found");if("signMessage"in L)return L.signMessage?.(B);throw new R.SwapKitError({errorKey:"core_wallet_sign_message_not_supported",info:{chain:$,wallet:L.walletType}})}async function s({address:$,chain:B,message:L,signature:z}){switch(B){case R.Chain.THORChain:{let{getToolboxByChain:Q}=await import("@swapkit/toolboxes/cosmos");return Q(B)().verifySignature({signature:z,message:L,address:$})}default:throw new R.SwapKitError({errorKey:"core_verify_message_not_supported",info:{chain:B}})}}async function n({type:$,feeOptionKey:B,params:L}){let{assetValue:z}=L,{chain:Q}=z;if(!J(Q))throw new R.SwapKitError("core_wallet_connection_not_found");let M=R.AssetValue.from({chain:Q});switch(Q){case R.Chain.Arbitrum:case R.Chain.Avalanche:case R.Chain.Ethereum:case R.Chain.BinanceSmartChain:case R.Chain.Polygon:{let I=J(Q);if($==="transfer"){let X=await I.createTransferTx(L);return I.estimateTransactionFee(X,B)}if($==="approve"&&!z.isGasAsset){let X=await I.createApprovalTx({assetAddress:z.address,spenderAddress:L.contractAddress,amount:z.getBaseValue("bigint"),from:I.address});return I.estimateTransactionFee(X,B)}if($==="swap"){let X=L.route.providers[0];if([R.ProviderName.CHAINFLIP,R.ProviderName.CHAINFLIP_STREAMING].includes(X)){let t=await I.createTransferTx({from:I.address,recipient:I.address,assetValue:z});return I.estimateTransactionFee(t,B)}let{tx:F}=L.route;if(!F)return;return I.estimateTransactionFee({...F,value:BigInt(F.value)},B)}return R.AssetValue.from({chain:Q})}case R.Chain.Bitcoin:case R.Chain.BitcoinCash:case R.Chain.Dogecoin:case R.Chain.Dash:case R.Chain.Litecoin:{let{estimateTransactionFee:I,address:X}=J(Q);return I({...L,feeOptionKey:B,from:X,recipient:X})}case R.Chain.THORChain:case R.Chain.Maya:case R.Chain.Kujira:case R.Chain.Cosmos:{let{estimateTransactionFee:I}=await import("@swapkit/toolboxes/cosmos");return I(L)}case R.Chain.Polkadot:{let{address:I,estimateTransactionFee:X}=J(Q);return X({...L,recipient:I})}default:return M}}return{...k,...b,disconnectAll:c,disconnectChain:A,estimateTransactionFee:n,getAddress:w,getAllWallets:W,getBalance:h,getExplorerAddressUrl:K,getExplorerTxUrl:y,getWallet:J,getWalletWithBalance:C,approveAssetValue:r,isAssetValueApproved:u,signMessage:p,swap:g,transfer:i,verifyMessage:s}}var V={};S(V,{getAddressValidator:()=>d});var G=require("@swapkit/helpers");async function d(){let{cosmosValidateAddress:_}=await import("@swapkit/toolboxes/cosmos"),{evmValidateAddress:D}=await import("@swapkit/toolboxes/evm"),{substrateValidateAddress:j}=await import("@swapkit/toolboxes/substrate"),{utxoValidateAddress:U}=await import("@swapkit/toolboxes/utxo"),{getAddressValidator:k}=await import("@swapkit/toolboxes/solana"),{validateAddress:b}=await import("@swapkit/toolboxes/radix"),v=await k();return function E({address:x,chain:T}){switch(T){case G.Chain.Arbitrum:case G.Chain.Avalanche:case G.Chain.Optimism:case G.Chain.BinanceSmartChain:case G.Chain.Base:case G.Chain.Polygon:case G.Chain.Ethereum:return D({address:x});case G.Chain.Litecoin:case G.Chain.Dash:case G.Chain.Dogecoin:case G.Chain.BitcoinCash:case G.Chain.Bitcoin:return U({address:x,chain:T});case G.Chain.Cosmos:case G.Chain.Kujira:case G.Chain.Maya:case G.Chain.THORChain:return _({address:x,chain:T});case G.Chain.Polkadot:return j({address:x,chain:T});case G.Chain.Radix:return b(x);case G.Chain.Solana:return v(x);default:return!1}}}
2
+
3
+ //# debugId=0CC9B5CEB4068C0B64756E2164756E21
@@ -0,0 +1,13 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/index.ts", "../src/client.ts", "../src/helpers/explorerUrls.ts", "../src/helpers/walletAddressValidator.ts"],
4
+ "sourcesContent": [
5
+ "export * from \"@swapkit/helpers/api\";\nexport * from \"@swapkit/helpers\";\nexport * from \"./client\";\nexport * from \"./helpers/walletAddressValidator\";\n",
6
+ "import type { EVMTransaction, QuoteResponseRoute } from \"@swapkit/helpers/api\";\n\nimport {\n ApproveMode,\n type ApproveReturnType,\n AssetValue,\n Chain,\n type ChainWallet,\n type ConditionalAssetValueReturn,\n type EVMChain,\n EVMChains,\n type FeeOption,\n type FullWallet,\n ProviderName as PluginNameEnum,\n SKConfig,\n type SKConfigState,\n SwapKitError,\n type SwapParams,\n type createPlugin,\n type createWallet,\n} from \"@swapkit/helpers\";\nimport type { TransferParams as CosmosTransferParams } from \"@swapkit/toolboxes/cosmos\";\nimport type { TransferParams as EVMTransferParams } from \"@swapkit/toolboxes/evm\";\nimport type { UTXOTransferParams } from \"@swapkit/toolboxes/utxo\";\n\nimport {\n getExplorerAddressUrl as getAddressUrl,\n getExplorerTxUrl as getTxUrl,\n} from \"./helpers/explorerUrls\";\n\nexport type SwapKitParams<P, W> = {\n config?: SKConfigState;\n plugins?: P;\n wallets?: W;\n};\n\nexport function SwapKit<\n Plugins extends ReturnType<typeof createPlugin>,\n Wallets extends ReturnType<typeof createWallet>,\n>({ config, plugins, wallets = {} as Wallets }: SwapKitParams<Plugins, Wallets> = {}) {\n if (config) {\n SKConfig.set(config);\n }\n\n type PluginName = keyof Plugins;\n const connectedWallets = {} as FullWallet;\n\n const availablePlugins = Object.entries(plugins || {}).reduce(\n (acc, [pluginName, plugin]) => {\n const methods = plugin({ getWallet });\n\n // @ts-expect-error key is generic and cannot be indexed\n acc[pluginName] = methods;\n return acc;\n },\n {} as { [key in PluginName]: ReturnType<Plugins[key]> },\n );\n\n const connectWalletMethods = Object.entries(wallets || {}).reduce(\n (acc, [walletName, wallet]) => {\n const connectWallet = wallet.connectWallet({ addChain });\n\n // @ts-expect-error key is generic and cannot be indexed\n acc[walletName] = connectWallet;\n return acc;\n },\n {} as {\n [key in keyof typeof wallets]: ReturnType<(typeof wallets)[key][\"connectWallet\"]>;\n },\n );\n\n function getSwapKitPlugin<T extends PluginName>(pluginName: T) {\n const plugin = availablePlugins[pluginName] || Object.values(availablePlugins)[0];\n\n if (!plugin) {\n throw new SwapKitError(\"core_plugin_not_found\");\n }\n\n return plugin;\n }\n\n function getSwapKitPluginForSKProvider(pluginName: PluginNameEnum) {\n const plugin = Object.values(availablePlugins).find((plugin) =>\n plugin.supportedSwapkitProviders?.includes(pluginName),\n );\n\n if (!plugin) {\n throw new SwapKitError(\"core_plugin_not_found\");\n }\n\n return plugin;\n }\n\n function addChain<T extends Chain>(connectWallet: ChainWallet<T>) {\n const currentWallet = getWallet(connectWallet.chain);\n\n connectedWallets[connectWallet.chain] = { ...currentWallet, ...connectWallet };\n }\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: <explanation>\n function approve<T extends ApproveMode>({\n assetValue,\n type = \"checkOnly\" as T,\n contractAddress: spenderAddress,\n }: {\n type: T;\n assetValue: AssetValue;\n contractAddress: string | PluginName;\n }) {\n const plugin = availablePlugins[spenderAddress];\n\n if (plugin) {\n if (type === ApproveMode.CheckOnly && \"isAssetValueApproved\" in plugin) {\n // @ts-expect-error TODO: add optional approve for plugin\n return plugin.isAssetValueApproved({ assetValue }) as ApproveReturnType<T>;\n }\n if (type === ApproveMode.Approve && \"approveAssetValue\" in plugin) {\n // @ts-expect-error TODO: add optional approve for plugin\n return plugin.approveAssetValue({ assetValue }) as ApproveReturnType<T>;\n }\n\n throw new SwapKitError({\n errorKey: \"core_approve_asset_target_invalid\",\n info: { message: `Target ${String(spenderAddress)} cannot be used for approve operation` },\n });\n }\n\n const chain = assetValue.chain as EVMChain;\n const isEVMChain = EVMChains.includes(chain);\n const isNativeEVM = isEVMChain && assetValue.isGasAsset;\n\n if (isNativeEVM || !isEVMChain || assetValue.isSynthetic) {\n return Promise.resolve(type === \"checkOnly\" ? true : \"approved\") as ApproveReturnType<T>;\n }\n\n const wallet = getWallet(chain);\n const walletAction = type === \"checkOnly\" ? wallet.isApproved : wallet.approve;\n if (!walletAction) throw new SwapKitError(\"core_wallet_connection_not_found\");\n\n if (!(assetValue.address && wallet.address && typeof spenderAddress === \"string\")) {\n throw new SwapKitError(\"core_approve_asset_address_or_from_not_found\");\n }\n\n return walletAction({\n amount: assetValue.getBaseValue(\"bigint\"),\n assetAddress: assetValue.address,\n from: wallet.address,\n spenderAddress,\n }) as ApproveReturnType<T>;\n }\n\n /**\n * @Public\n */\n function getWallet<T extends Chain>(chain: T) {\n return connectedWallets[chain];\n }\n\n function getAllWallets() {\n return { ...connectedWallets };\n }\n\n function getAddress<T extends Chain>(chain: T) {\n return getWallet(chain)?.address || \"\";\n }\n\n function approveAssetValue(assetValue: AssetValue, contractAddress: string | PluginName) {\n return approve({ assetValue, contractAddress, type: ApproveMode.Approve });\n }\n\n function isAssetValueApproved(assetValue: AssetValue, contractAddress: string | PluginName) {\n return approve({ assetValue, contractAddress, type: ApproveMode.CheckOnly });\n }\n\n function disconnectChain<T extends Chain>(chain: T) {\n const wallet = getWallet(chain);\n wallet?.disconnect?.();\n delete connectedWallets[chain];\n }\n\n function disconnectAll() {\n for (const chain of Object.keys(connectedWallets) as (keyof typeof connectedWallets)[]) {\n disconnectChain(chain);\n }\n }\n\n function getBalance<T extends Chain, R extends boolean>(\n chain: T,\n refresh?: R,\n ): ConditionalAssetValueReturn<R> {\n return (\n refresh\n ? getWalletWithBalance(chain).then(({ balance }) => balance)\n : getWallet(chain)?.balance || []\n ) as ConditionalAssetValueReturn<R>;\n }\n\n async function getWalletWithBalance<T extends Chain>(chain: T, potentialScamFilter = true) {\n if (chain === Chain.Fiat || !getWallet(chain)) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n const wallet = getWallet(chain as Exclude<Chain, Chain.Fiat>);\n const defaultBalance = [AssetValue.from({ chain })];\n\n if (\"getBalance\" in wallet) {\n const balance = await wallet.getBalance(wallet.address, potentialScamFilter);\n wallet.balance = balance?.length ? balance : defaultBalance;\n }\n\n return wallet;\n }\n\n function swap<T extends PluginName>({\n route,\n pluginName,\n ...rest\n }: SwapParams<T, QuoteResponseRoute>) {\n const plugin =\n (pluginName && getSwapKitPlugin(pluginName)) ||\n getSwapKitPluginForSKProvider(route.providers[0] as PluginNameEnum);\n\n if (!plugin) throw new SwapKitError(\"core_swap_route_not_complete\");\n\n if (\"swap\" in plugin) {\n return plugin.swap({ ...rest, route });\n }\n\n throw new SwapKitError(\"core_plugin_swap_not_found\");\n }\n\n function transfer({\n assetValue,\n ...params\n }: UTXOTransferParams | EVMTransferParams | CosmosTransferParams) {\n const chain = assetValue.chain;\n if ([Chain.Fiat, Chain.Radix].includes(chain) || !getWallet(chain)) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n const wallet = getWallet(chain as Exclude<Chain, Chain.Fiat | Chain.Radix>);\n\n // @ts-expect-error TODO: right now it's inferred from toolboxes\n // we need to simplify this to one object params\n return wallet.transfer({ ...params, assetValue });\n }\n\n function signMessage({ chain, message }: { chain: Chain; message: string }) {\n const wallet = getWallet(chain);\n if (!wallet) throw new SwapKitError(\"core_wallet_connection_not_found\");\n\n if (\"signMessage\" in wallet) {\n return wallet.signMessage?.(message);\n }\n\n throw new SwapKitError({\n errorKey: \"core_wallet_sign_message_not_supported\",\n info: { chain, wallet: wallet.walletType },\n });\n }\n\n async function verifyMessage({\n address,\n chain,\n message,\n signature,\n }: { chain: Chain; signature: string; message: string; address: string }) {\n switch (chain) {\n case Chain.THORChain: {\n const { getToolboxByChain } = await import(\"@swapkit/toolboxes/cosmos\");\n const toolbox = getToolboxByChain(chain);\n return toolbox().verifySignature({ signature, message, address });\n }\n\n default:\n throw new SwapKitError({ errorKey: \"core_verify_message_not_supported\", info: { chain } });\n }\n }\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: TODO clean this up\n async function estimateTransactionFee<T extends PluginName>({\n type,\n feeOptionKey,\n params,\n }: (\n | { type: \"swap\"; params: SwapParams<T, QuoteResponseRoute> & { assetValue: AssetValue } }\n | { type: \"transfer\"; params: UTXOTransferParams | EVMTransferParams | CosmosTransferParams }\n | {\n type: \"approve\";\n params: {\n assetValue: AssetValue;\n contractAddress: string | PluginName;\n feeOptionKey?: FeeOption;\n };\n }\n ) & {\n feeOptionKey: FeeOption;\n }): Promise<AssetValue | undefined> {\n const { assetValue } = params;\n const { chain } = assetValue;\n\n if (!getWallet(chain as Chain)) throw new SwapKitError(\"core_wallet_connection_not_found\");\n\n const baseValue = AssetValue.from({ chain });\n\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Avalanche:\n case Chain.Ethereum:\n case Chain.BinanceSmartChain:\n case Chain.Polygon: {\n const wallet = getWallet(chain);\n if (type === \"transfer\") {\n const txObject = await wallet.createTransferTx(params);\n return wallet.estimateTransactionFee(txObject, feeOptionKey);\n }\n\n if (type === \"approve\" && !assetValue.isGasAsset) {\n const approvalTx = await wallet.createApprovalTx({\n assetAddress: assetValue.address as string,\n spenderAddress: params.contractAddress as string,\n amount: assetValue.getBaseValue(\"bigint\"),\n from: wallet.address,\n });\n\n return wallet.estimateTransactionFee(approvalTx, feeOptionKey);\n }\n\n if (type === \"swap\") {\n const plugin = params.route.providers[0] as PluginNameEnum;\n if ([PluginNameEnum.CHAINFLIP, PluginNameEnum.CHAINFLIP_STREAMING].includes(plugin)) {\n const txObject = await wallet.createTransferTx({\n from: wallet.address,\n recipient: wallet.address,\n assetValue,\n });\n\n return wallet.estimateTransactionFee(txObject, feeOptionKey);\n }\n\n const { tx } = params.route;\n if (!tx) {\n return undefined;\n }\n\n return wallet.estimateTransactionFee(\n { ...(tx as EVMTransaction), value: BigInt((tx as EVMTransaction).value) },\n feeOptionKey,\n );\n }\n\n return AssetValue.from({ chain });\n }\n\n case Chain.Bitcoin:\n case Chain.BitcoinCash:\n case Chain.Dogecoin:\n case Chain.Dash:\n case Chain.Litecoin: {\n const { estimateTransactionFee, address } = getWallet(chain);\n\n return estimateTransactionFee({\n ...params,\n feeOptionKey,\n from: address,\n recipient: address,\n });\n }\n\n case Chain.THORChain:\n case Chain.Maya:\n case Chain.Kujira:\n case Chain.Cosmos: {\n const { estimateTransactionFee } = await import(\"@swapkit/toolboxes/cosmos\");\n return estimateTransactionFee(params);\n }\n\n case Chain.Polkadot: {\n const { address, estimateTransactionFee } = getWallet(chain);\n\n return estimateTransactionFee({ ...params, recipient: address });\n }\n\n default:\n return baseValue;\n }\n }\n\n return {\n ...availablePlugins,\n ...connectWalletMethods,\n\n disconnectAll,\n disconnectChain,\n estimateTransactionFee,\n getAddress,\n getAllWallets,\n getBalance,\n getExplorerAddressUrl: getAddressUrl,\n getExplorerTxUrl: getTxUrl,\n getWallet,\n getWalletWithBalance,\n\n approveAssetValue,\n isAssetValueApproved,\n signMessage,\n swap,\n transfer,\n verifyMessage,\n };\n}\n",
7
+ "import { Chain, ChainToExplorerUrl, SwapKitError } from \"@swapkit/helpers\";\n\nexport function getExplorerTxUrl({ chain, txHash }: { txHash: string; chain: Chain }) {\n const baseUrl = ChainToExplorerUrl[chain];\n\n switch (chain) {\n case Chain.Maya:\n case Chain.Kujira:\n case Chain.Cosmos:\n case Chain.THORChain:\n case Chain.Solana:\n return `${baseUrl}/tx/${txHash.startsWith(\"0x\") ? txHash.slice(2) : txHash}`;\n\n case Chain.Arbitrum:\n case Chain.Avalanche:\n case Chain.BinanceSmartChain:\n case Chain.Base:\n case Chain.Ethereum:\n case Chain.Optimism:\n case Chain.Polkadot:\n case Chain.Polygon:\n return `${baseUrl}/tx/${txHash.startsWith(\"0x\") ? txHash : `0x${txHash}`}`;\n\n case Chain.Litecoin:\n case Chain.Bitcoin:\n case Chain.BitcoinCash:\n case Chain.Dogecoin:\n case Chain.Radix:\n return `${baseUrl}/transaction/${txHash.toLowerCase()}`;\n\n default:\n throw new SwapKitError({ errorKey: \"core_explorer_unsupported_chain\", info: { chain } });\n }\n}\n\nexport function getExplorerAddressUrl({ chain, address }: { address: string; chain: Chain }) {\n const baseUrl = ChainToExplorerUrl[chain];\n\n switch (chain) {\n case Chain.Solana:\n case Chain.Radix:\n return `${baseUrl}/account/${address}`;\n\n default:\n return `${baseUrl}/address/${address}`;\n }\n}\n",
8
+ "import { Chain } from \"@swapkit/helpers\";\n\nexport async function getAddressValidator() {\n const { cosmosValidateAddress } = await import(\"@swapkit/toolboxes/cosmos\");\n const { evmValidateAddress } = await import(\"@swapkit/toolboxes/evm\");\n const { substrateValidateAddress } = await import(\"@swapkit/toolboxes/substrate\");\n const { utxoValidateAddress } = await import(\"@swapkit/toolboxes/utxo\");\n const { getAddressValidator: getSolValidator } = await import(\"@swapkit/toolboxes/solana\");\n const { validateAddress: validateRadixAddress } = await import(\"@swapkit/toolboxes/radix\");\n\n const solanaValidateAddress = await getSolValidator();\n\n return function validateAddress({ address, chain }: { address: string; chain: Chain }) {\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Avalanche:\n case Chain.Optimism:\n case Chain.BinanceSmartChain:\n case Chain.Base:\n case Chain.Polygon:\n case Chain.Ethereum:\n return evmValidateAddress({ address });\n\n case Chain.Litecoin:\n case Chain.Dash:\n case Chain.Dogecoin:\n case Chain.BitcoinCash:\n case Chain.Bitcoin:\n return utxoValidateAddress({ address, chain });\n\n case Chain.Cosmos:\n case Chain.Kujira:\n case Chain.Maya:\n case Chain.THORChain: {\n return cosmosValidateAddress({ address, chain });\n }\n\n case Chain.Polkadot: {\n return substrateValidateAddress({ address, chain });\n }\n\n case Chain.Radix: {\n return validateRadixAddress(address);\n }\n\n case Chain.Solana: {\n return solanaValidateAddress(address);\n }\n\n default:\n return false;\n }\n };\n}\n"
9
+ ],
10
+ "mappings": "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",
11
+ "debugId": "0CC9B5CEB4068C0B64756E2164756E21",
12
+ "names": []
13
+ }
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- var B$=Object.create;var{getPrototypeOf:L$,defineProperty:y,getOwnPropertyNames:_$}=Object;var j$=Object.prototype.hasOwnProperty;var D=(_,j,J)=>{J=_!=null?B$(L$(_)):{};let T=j||!_||!_.__esModule?y(J,"default",{value:_,enumerable:!0}):J;for(let P of _$(_))if(!j$.call(T,P))y(T,P,{get:()=>_[P],enumerable:!0});return T};var H=((_)=>typeof require!=="undefined"?require:typeof Proxy!=="undefined"?new Proxy(_,{get:(j,J)=>(typeof require!=="undefined"?require:j)[J]}):_)(function(_){if(typeof require!=="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+_+'" is not supported')});export*from"@swapkit/api";export*from"@swapkit/helpers";import{SwapKitApi as M}from"@swapkit/api";import{ApproveMode as N,AssetValue as S,Chain as x,EVMChains as x$,ProviderName as d,SwapKitError as U}from"@swapkit/helpers";import{Chain as q,ChainToExplorerUrl as V,SwapKitError as q$}from"@swapkit/helpers";function W({chain:_,txHash:j}){let J=V[_];switch(_){case q.Maya:case q.Kujira:case q.Cosmos:case q.THORChain:case q.Solana:return`${J}/tx/${j.startsWith("0x")?j.slice(2):j}`;case q.Arbitrum:case q.Avalanche:case q.BinanceSmartChain:case q.Base:case q.Ethereum:case q.Optimism:case q.Polkadot:case q.Polygon:return`${J}/tx/${j.startsWith("0x")?j:`0x${j}`}`;case q.Litecoin:case q.Bitcoin:case q.BitcoinCash:case q.Dogecoin:case q.Radix:return`${J}/transaction/${j.toLowerCase()}`;default:throw new q$({errorKey:"core_explorer_unsupported_chain",info:{chain:_}})}}function K({chain:_,address:j}){let J=V[_];switch(_){case q.Solana:case q.Radix:return`${J}/account/${j}`;default:return`${J}/address/${j}`}}function Y$({apis:_={},config:j={},plugins:J,rpcUrls:T={},wallets:P={}}={}){let C=j.stagenet,O=j.swapkitConfig?.isDev,Y={},Z=Object.entries(J||{}).reduce(($,[R,{plugin:B,config:L}])=>{let G=B({getWallet:Q,stagenet:C,config:L??j});return $[R]=G,$},{}),o=Object.entries(P).reduce(($,[R,B])=>{let L=B({addChain:h,config:j,apis:_,rpcUrls:T});return $[R]=L,$},{});function u($){let R=Z[$]||Object.values(Z)[0];if(!R)throw new U("core_plugin_not_found");return R}function w($){let R=Object.values(Z).find((B)=>B.supportedSwapkitProviders?.includes($));if(!R)throw new U("core_plugin_not_found");return R}function h($){let R=Q($.chain);Y[$.chain]={...R,...$}}function f({assetValue:$,type:R="checkOnly",contractAddress:B}){let L=Z[B];if(L){if(R===N.CheckOnly&&"isAssetValueApproved"in L)return L.isAssetValueApproved({assetValue:$});if(R===N.Approve&&"approveAssetValue"in L)return L.approveAssetValue({assetValue:$});throw new U({errorKey:"core_approve_asset_target_invalid",info:{message:`Target ${String(B)} cannot be used for approve operation`}})}let G=$.chain,E=x$.includes(G);if(E&&$.isGasAsset||!E||$.isSynthetic)return Promise.resolve(R==="checkOnly"?!0:"approved");let X=Q(G),b=R==="checkOnly"?X.isApproved:X.approve;if(!b)throw new U("core_wallet_connection_not_found");if(!($.address&&X.address&&typeof B==="string"))throw new U("core_approve_asset_address_or_from_not_found");return b({amount:$.getBaseValue("bigint"),assetAddress:$.address,from:X.address,spenderAddress:B})}function Q($){return Y[$]}function c(){return{...Y}}function r($){return Q($)?.address||""}function g($,R){return f({assetValue:$,contractAddress:R,type:N.Approve})}function s($,R){return f({assetValue:$,contractAddress:R,type:N.CheckOnly})}function m($){Q($)?.disconnect?.(),delete Y[$]}function n(){for(let $ of Object.keys(Y))m($)}function p($,R){return R?A($).then(({balance:B})=>B):Q($)?.balance||[]}function i($){throw new U("not_implemented",{message:"validateAddress is deprecated - use toolbox directly or import { getAddressValidator } from '@swapkit/core'"})}async function A($,R=!0){if($===x.Fiat||!Q($))throw new U("core_wallet_connection_not_found");let B=Q($),L=[S.from({chain:$})];if("getBalance"in B){let G=await B.getBalance(B.address,R);B.balance=G?.length?G:L}return B}function t({route:$,pluginName:R,...B}){let L=R&&u(R)||w($.providers[0]);if(!L)throw new U("core_swap_route_not_complete");if("swap"in L)return L.swap({...B,route:$});throw new U("core_plugin_swap_not_found")}function l({assetValue:$,...R}){let B=$.chain;if([x.Fiat,x.Radix].includes(B)||!Q(B))throw new U("core_wallet_connection_not_found");return Q(B).transfer({...R,assetValue:$})}function a({chain:$,message:R}){let B=Q($);if(!B)throw new U("core_wallet_connection_not_found");if("signMessage"in B)return B.signMessage?.(R);throw new U({errorKey:"core_wallet_sign_message_not_supported",info:{chain:$,wallet:B.walletType}})}async function e({address:$,chain:R,message:B,signature:L}){switch(R){case x.THORChain:{let{getToolboxByChain:G}=await import("@swapkit/toolbox-cosmos");return G(R)().verifySignature({signature:L,message:B,address:$})}default:throw new U({errorKey:"core_verify_message_not_supported",info:{chain:R}})}}async function $$({type:$,feeOptionKey:R,params:B}){let{assetValue:L}=B,{chain:G}=L;if(!Q(G))throw new U("core_wallet_connection_not_found");let E=S.from({chain:G});switch(G){case x.Arbitrum:case x.Avalanche:case x.Ethereum:case x.BinanceSmartChain:case x.Polygon:{let I=Q(G);if($==="transfer"){let X=await I.createTransferTx(B);return I.estimateTransactionFee(X,R)}if($==="approve"&&!L.isGasAsset)return I.estimateTransactionFee(await I.createApprovalTx({assetAddress:L.address,spenderAddress:B.contractAddress,amount:L.getBaseValue("bigint"),from:I.address}),R);if($==="swap"){let X=B.route.providers[0];if([d.CHAINFLIP,d.CHAINFLIP_STREAMING].includes(X)){let R$=await I.createTransferTx({from:I.address,recipient:I.address,assetValue:L});return I.estimateTransactionFee(R$,R)}let{tx:b}=B.route;if(!b)return;return I.estimateTransactionFee({...b,value:BigInt(b.value)},R)}return S.from({chain:G})}case x.Bitcoin:case x.BitcoinCash:case x.Dogecoin:case x.Dash:case x.Litecoin:{let{estimateTransactionFee:I,address:X}=Q(G);return I({...B,feeOptionKey:R,from:X,recipient:X})}case x.THORChain:case x.Maya:case x.Kujira:case x.Cosmos:{let{estimateTransactionFee:I}=await import("@swapkit/toolbox-cosmos");return I(B)}case x.Polkadot:{let{address:I,estimateTransactionFee:X}=Q(G);return X({...B,recipient:I})}default:return E}}let v=j.swapkitConfig||{},F=v?.swapkitApiKey||j?.swapkitApiKey,k=v.useHashedApiKey?v.referer:void 0;return{...Z,...o,disconnectAll:n,disconnectChain:m,estimateTransactionFee:$$,getAddress:r,getAllWallets:c,getBalance:p,getExplorerAddressUrl:K,getExplorerTxUrl:W,getWallet:Q,getWalletWithBalance:A,approveAssetValue:g,isAssetValueApproved:s,signMessage:a,swap:t,transfer:l,validateAddress:i,verifyMessage:e,api:F?{getGasRate:()=>M.getGasRate(O,F,k),getPrice:($)=>M.getPrice($,O,F,k),getSwapQuote:($)=>M.getSwapQuote($,O,F,k),getTokenList:($)=>M.getTokenList($),getTokenListProviders:()=>M.getTokenListProvidersV2(O,F,k),getTokenTradingPairs:($)=>M.getTokenTradingPairs($,O,F,k),getTrackerDetails:($)=>M.getTrackerDetails($,F,k)}:{undefined:void 0}}}import{Chain as z}from"@swapkit/helpers";async function H$(){let{cosmosValidateAddress:_}=await import("@swapkit/toolbox-cosmos"),{evmValidateAddress:j}=await import("@swapkit/toolbox-evm"),{substrateValidateAddress:J}=await import("@swapkit/toolbox-substrate"),{utxoValidateAddress:T}=await import("@swapkit/toolbox-utxo"),{validateAddress:P}=await import("@swapkit/toolbox-solana"),{validateAddress:C}=await import("@swapkit/toolbox-radix");return function O({address:Y,chain:Z}){switch(Z){case z.Arbitrum:case z.Avalanche:case z.Optimism:case z.BinanceSmartChain:case z.Base:case z.Polygon:case z.Ethereum:return j({address:Y});case z.Litecoin:case z.Dash:case z.Dogecoin:case z.BitcoinCash:case z.Bitcoin:return T({address:Y,chain:Z});case z.Cosmos:case z.Kujira:case z.Maya:case z.THORChain:return _({address:Y,chain:Z});case z.Polkadot:return J({address:Y,chain:Z});case z.Radix:return C(Y);case z.Solana:return P(Y);default:return!1}}}export{H$ as getAddressValidator,Y$ as SwapKit};
1
+ var p=Object.create;var{getPrototypeOf:s,defineProperty:A,getOwnPropertyNames:n}=Object;var t=Object.prototype.hasOwnProperty;var x=(L,q,G)=>{G=L!=null?p(s(L)):{};let Y=q||!L||!L.__esModule?A(G,"default",{value:L,enumerable:!0}):G;for(let Z of n(L))if(!t.call(Y,Z))A(Y,Z,{get:()=>L[Z],enumerable:!0});return Y};var H=((L)=>typeof require!=="undefined"?require:typeof Proxy!=="undefined"?new Proxy(L,{get:(q,G)=>(typeof require!=="undefined"?require:q)[G]}):L)(function(L){if(typeof require!=="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+L+'" is not supported')});export*from"@swapkit/helpers/api";export*from"@swapkit/helpers";import{ApproveMode as M,AssetValue as b,Chain as U,EVMChains as a,ProviderName as K,SKConfig as e,SwapKitError as X}from"@swapkit/helpers";import{Chain as D,ChainToExplorerUrl as C,SwapKitError as l}from"@swapkit/helpers";function N({chain:L,txHash:q}){let G=C[L];switch(L){case D.Maya:case D.Kujira:case D.Cosmos:case D.THORChain:case D.Solana:return`${G}/tx/${q.startsWith("0x")?q.slice(2):q}`;case D.Arbitrum:case D.Avalanche:case D.BinanceSmartChain:case D.Base:case D.Ethereum:case D.Optimism:case D.Polkadot:case D.Polygon:return`${G}/tx/${q.startsWith("0x")?q:`0x${q}`}`;case D.Litecoin:case D.Bitcoin:case D.BitcoinCash:case D.Dogecoin:case D.Radix:return`${G}/transaction/${q.toLowerCase()}`;default:throw new l({errorKey:"core_explorer_unsupported_chain",info:{chain:L}})}}function y({chain:L,address:q}){let G=C[L];switch(L){case D.Solana:case D.Radix:return`${G}/account/${q}`;default:return`${G}/address/${q}`}}function D$({config:L,plugins:q,wallets:G={}}={}){if(L)e.set(L);let Y={},Z=Object.entries(q||{}).reduce(($,[R,B])=>{let _=B({getWallet:I});return $[R]=_,$},{}),f=Object.entries(G||{}).reduce(($,[R,B])=>{let _=B.connectWallet({addChain:k});return $[R]=_,$},{});function O($){let R=Z[$]||Object.values(Z)[0];if(!R)throw new X("core_plugin_not_found");return R}function v($){let R=Object.values(Z).find((B)=>B.supportedSwapkitProviders?.includes($));if(!R)throw new X("core_plugin_not_found");return R}function k($){let R=I($.chain);Y[$.chain]={...R,...$}}function T({assetValue:$,type:R="checkOnly",contractAddress:B}){let _=Z[B];if(_){if(R===M.CheckOnly&&"isAssetValueApproved"in _)return _.isAssetValueApproved({assetValue:$});if(R===M.Approve&&"approveAssetValue"in _)return _.approveAssetValue({assetValue:$});throw new X({errorKey:"core_approve_asset_target_invalid",info:{message:`Target ${String(B)} cannot be used for approve operation`}})}let J=$.chain,F=a.includes(J);if(F&&$.isGasAsset||!F||$.isSynthetic)return Promise.resolve(R==="checkOnly"?!0:"approved");let Q=I(J),P=R==="checkOnly"?Q.isApproved:Q.approve;if(!P)throw new X("core_wallet_connection_not_found");if(!($.address&&Q.address&&typeof B==="string"))throw new X("core_approve_asset_address_or_from_not_found");return P({amount:$.getBaseValue("bigint"),assetAddress:$.address,from:Q.address,spenderAddress:B})}function I($){return Y[$]}function o(){return{...Y}}function m($){return I($)?.address||""}function d($,R){return T({assetValue:$,contractAddress:R,type:M.Approve})}function V($,R){return T({assetValue:$,contractAddress:R,type:M.CheckOnly})}function S($){I($)?.disconnect?.(),delete Y[$]}function W(){for(let $ of Object.keys(Y))S($)}function w($,R){return R?E($).then(({balance:B})=>B):I($)?.balance||[]}async function E($,R=!0){if($===U.Fiat||!I($))throw new X("core_wallet_connection_not_found");let B=I($),_=[b.from({chain:$})];if("getBalance"in B){let J=await B.getBalance(B.address,R);B.balance=J?.length?J:_}return B}function r({route:$,pluginName:R,...B}){let _=R&&O(R)||v($.providers[0]);if(!_)throw new X("core_swap_route_not_complete");if("swap"in _)return _.swap({...B,route:$});throw new X("core_plugin_swap_not_found")}function u({assetValue:$,...R}){let B=$.chain;if([U.Fiat,U.Radix].includes(B)||!I(B))throw new X("core_wallet_connection_not_found");return I(B).transfer({...R,assetValue:$})}function c({chain:$,message:R}){let B=I($);if(!B)throw new X("core_wallet_connection_not_found");if("signMessage"in B)return B.signMessage?.(R);throw new X({errorKey:"core_wallet_sign_message_not_supported",info:{chain:$,wallet:B.walletType}})}async function h({address:$,chain:R,message:B,signature:_}){switch(R){case U.THORChain:{let{getToolboxByChain:J}=await import("@swapkit/toolboxes/cosmos");return J(R)().verifySignature({signature:_,message:B,address:$})}default:throw new X({errorKey:"core_verify_message_not_supported",info:{chain:R}})}}async function g({type:$,feeOptionKey:R,params:B}){let{assetValue:_}=B,{chain:J}=_;if(!I(J))throw new X("core_wallet_connection_not_found");let F=b.from({chain:J});switch(J){case U.Arbitrum:case U.Avalanche:case U.Ethereum:case U.BinanceSmartChain:case U.Polygon:{let z=I(J);if($==="transfer"){let Q=await z.createTransferTx(B);return z.estimateTransactionFee(Q,R)}if($==="approve"&&!_.isGasAsset){let Q=await z.createApprovalTx({assetAddress:_.address,spenderAddress:B.contractAddress,amount:_.getBaseValue("bigint"),from:z.address});return z.estimateTransactionFee(Q,R)}if($==="swap"){let Q=B.route.providers[0];if([K.CHAINFLIP,K.CHAINFLIP_STREAMING].includes(Q)){let i=await z.createTransferTx({from:z.address,recipient:z.address,assetValue:_});return z.estimateTransactionFee(i,R)}let{tx:P}=B.route;if(!P)return;return z.estimateTransactionFee({...P,value:BigInt(P.value)},R)}return b.from({chain:J})}case U.Bitcoin:case U.BitcoinCash:case U.Dogecoin:case U.Dash:case U.Litecoin:{let{estimateTransactionFee:z,address:Q}=I(J);return z({...B,feeOptionKey:R,from:Q,recipient:Q})}case U.THORChain:case U.Maya:case U.Kujira:case U.Cosmos:{let{estimateTransactionFee:z}=await import("@swapkit/toolboxes/cosmos");return z(B)}case U.Polkadot:{let{address:z,estimateTransactionFee:Q}=I(J);return Q({...B,recipient:z})}default:return F}}return{...Z,...f,disconnectAll:W,disconnectChain:S,estimateTransactionFee:g,getAddress:m,getAllWallets:o,getBalance:w,getExplorerAddressUrl:y,getExplorerTxUrl:N,getWallet:I,getWalletWithBalance:E,approveAssetValue:d,isAssetValueApproved:V,signMessage:c,swap:r,transfer:u,verifyMessage:h}}import{Chain as j}from"@swapkit/helpers";async function q$(){let{cosmosValidateAddress:L}=await import("@swapkit/toolboxes/cosmos"),{evmValidateAddress:q}=await import("@swapkit/toolboxes/evm"),{substrateValidateAddress:G}=await import("@swapkit/toolboxes/substrate"),{utxoValidateAddress:Y}=await import("@swapkit/toolboxes/utxo"),{getAddressValidator:Z}=await import("@swapkit/toolboxes/solana"),{validateAddress:f}=await import("@swapkit/toolboxes/radix"),O=await Z();return function v({address:k,chain:T}){switch(T){case j.Arbitrum:case j.Avalanche:case j.Optimism:case j.BinanceSmartChain:case j.Base:case j.Polygon:case j.Ethereum:return q({address:k});case j.Litecoin:case j.Dash:case j.Dogecoin:case j.BitcoinCash:case j.Bitcoin:return Y({address:k,chain:T});case j.Cosmos:case j.Kujira:case j.Maya:case j.THORChain:return L({address:k,chain:T});case j.Polkadot:return G({address:k,chain:T});case j.Radix:return f(k);case j.Solana:return O(k);default:return!1}}}export{q$ as getAddressValidator,D$ as SwapKit};
2
2
 
3
- //# debugId=D1A504E9AFF2E6E164756E2164756E21
3
+ //# debugId=2A42EE8D75A4550964756E2164756E21
package/dist/index.js.map CHANGED
@@ -2,12 +2,12 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts", "../src/client.ts", "../src/helpers/explorerUrls.ts", "../src/helpers/walletAddressValidator.ts"],
4
4
  "sourcesContent": [
5
- "export * from \"@swapkit/api\";\nexport * from \"@swapkit/helpers\";\nexport * from \"./client\";\nexport * from \"./helpers/walletAddressValidator\";\n",
6
- "import type {\n EVMTransaction,\n PriceRequest,\n QuoteRequest,\n QuoteResponseRoute,\n TrackerParams,\n} from \"@swapkit/api\";\nimport { SwapKitApi } from \"@swapkit/api\";\n\nimport {\n ApproveMode,\n type ApproveReturnType,\n AssetValue,\n Chain,\n type ChainApis,\n type ChainWallet,\n type ConditionalAssetValueReturn,\n type ConnectConfig,\n type CryptoChain,\n type EVMChain,\n EVMChains,\n type FeeOption,\n type FullWallet,\n ProviderName as PluginNameEnum,\n SwapKitError,\n type SwapKitPluginParams,\n type SwapKitWallet,\n type SwapParams,\n} from \"@swapkit/helpers\";\nimport type { TransferParams as CosmosTransferParams } from \"@swapkit/toolbox-cosmos\";\nimport type { TransferParams as EVMTransferParams } from \"@swapkit/toolbox-evm\";\nimport type { UTXOTransferParams } from \"@swapkit/toolbox-utxo\";\n\nimport {\n getExplorerAddressUrl as getAddressUrl,\n getExplorerTxUrl as getTxUrl,\n} from \"./helpers/explorerUrls\";\n\nexport type PluginsType = {\n [key in string]: {\n plugin: (params: SwapKitPluginParams<any>) => any;\n config?: any;\n };\n};\n\nexport type WalletsType = {\n [key in string]: SwapKitWallet<any[]>;\n};\n\nexport type SwapKitParams<P, W> = {\n apis?: ChainApis;\n config?: ConnectConfig;\n plugins?: P;\n rpcUrls?: { [key in CryptoChain]?: string };\n wallets?: W;\n};\n\nexport function SwapKit<Plugins extends PluginsType, Wallets extends WalletsType>({\n apis = {},\n config = {},\n plugins,\n rpcUrls = {},\n wallets = {} as Wallets,\n}: SwapKitParams<Plugins, Wallets> = {}) {\n const stagenet = config.stagenet;\n const isDev = config.swapkitConfig?.isDev;\n type PluginName = keyof Plugins;\n const connectedWallets = {} as FullWallet;\n\n const availablePlugins = Object.entries(plugins || {}).reduce(\n (acc, [pluginName, { plugin, config: pluginConfig }]) => {\n const methods = plugin({ getWallet, stagenet, config: pluginConfig ?? config });\n\n // @ts-expect-error key is generic and cannot be indexed\n acc[pluginName] = methods;\n return acc;\n },\n {} as { [key in PluginName]: ReturnType<Plugins[key][\"plugin\"]> },\n );\n\n const connectWalletMethods = Object.entries(wallets).reduce(\n (acc, [walletName, wallet]) => {\n const connectWallet = wallet({ addChain, config, apis, rpcUrls });\n\n // @ts-expect-error walletName is generic and cannot be indexed\n acc[walletName] = connectWallet;\n return acc;\n },\n {} as { [key in keyof Wallets]: ReturnType<Wallets[key]> },\n );\n\n function getSwapKitPlugin<T extends PluginName>(pluginName: T) {\n const plugin = availablePlugins[pluginName] || Object.values(availablePlugins)[0];\n\n if (!plugin) {\n throw new SwapKitError(\"core_plugin_not_found\");\n }\n\n return plugin;\n }\n\n function getSwapKitPluginForSKProvider(pluginName: PluginNameEnum): Plugins[keyof Plugins] {\n const plugin = Object.values(availablePlugins).find((plugin) =>\n plugin.supportedSwapkitProviders?.includes(pluginName),\n );\n\n if (!plugin) {\n throw new SwapKitError(\"core_plugin_not_found\");\n }\n\n return plugin;\n }\n\n function addChain<T extends CryptoChain>(connectWallet: ChainWallet<T>) {\n const currentWallet = getWallet(connectWallet.chain);\n\n connectedWallets[connectWallet.chain] = { ...currentWallet, ...connectWallet };\n }\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: <explanation>\n function approve<T extends ApproveMode>({\n assetValue,\n type = \"checkOnly\" as T,\n contractAddress: spenderAddress,\n }: {\n type: T;\n assetValue: AssetValue;\n contractAddress: string | PluginName;\n }) {\n const plugin = availablePlugins[spenderAddress];\n\n if (plugin) {\n if (type === ApproveMode.CheckOnly && \"isAssetValueApproved\" in plugin) {\n return plugin.isAssetValueApproved({ assetValue }) as ApproveReturnType<T>;\n }\n if (type === ApproveMode.Approve && \"approveAssetValue\" in plugin) {\n return plugin.approveAssetValue({ assetValue }) as ApproveReturnType<T>;\n }\n\n throw new SwapKitError({\n errorKey: \"core_approve_asset_target_invalid\",\n info: { message: `Target ${String(spenderAddress)} cannot be used for approve operation` },\n });\n }\n\n const chain = assetValue.chain as EVMChain;\n const isEVMChain = EVMChains.includes(chain);\n const isNativeEVM = isEVMChain && assetValue.isGasAsset;\n\n if (isNativeEVM || !isEVMChain || assetValue.isSynthetic) {\n return Promise.resolve(type === \"checkOnly\" ? true : \"approved\") as ApproveReturnType<T>;\n }\n\n const wallet = getWallet(chain);\n const walletAction = type === \"checkOnly\" ? wallet.isApproved : wallet.approve;\n if (!walletAction) throw new SwapKitError(\"core_wallet_connection_not_found\");\n\n if (!(assetValue.address && wallet.address && typeof spenderAddress === \"string\")) {\n throw new SwapKitError(\"core_approve_asset_address_or_from_not_found\");\n }\n\n return walletAction({\n amount: assetValue.getBaseValue(\"bigint\"),\n assetAddress: assetValue.address,\n from: wallet.address,\n spenderAddress,\n }) as ApproveReturnType<T>;\n }\n\n /**\n * @Public\n */\n function getWallet<T extends Chain>(chain: T) {\n return connectedWallets[chain];\n }\n\n function getAllWallets() {\n return { ...connectedWallets };\n }\n\n function getAddress<T extends Chain>(chain: T) {\n return getWallet(chain)?.address || \"\";\n }\n\n function approveAssetValue(assetValue: AssetValue, contractAddress: string | PluginName) {\n return approve({ assetValue, contractAddress, type: ApproveMode.Approve });\n }\n\n function isAssetValueApproved(assetValue: AssetValue, contractAddress: string | PluginName) {\n return approve({ assetValue, contractAddress, type: ApproveMode.CheckOnly });\n }\n\n function disconnectChain<T extends Chain>(chain: T) {\n const wallet = getWallet(chain);\n wallet?.disconnect?.();\n delete connectedWallets[chain];\n }\n\n function disconnectAll() {\n for (const chain of Object.keys(connectedWallets) as (keyof typeof connectedWallets)[]) {\n disconnectChain(chain);\n }\n }\n\n function getBalance<T extends Chain, R extends boolean>(\n chain: T,\n refresh?: R,\n ): ConditionalAssetValueReturn<R> {\n return (\n refresh\n ? getWalletWithBalance(chain).then(({ balance }) => balance)\n : getWallet(chain)?.balance || []\n ) as ConditionalAssetValueReturn<R>;\n }\n\n /**\n * @deprecated - use toolbox directly or use getAddressValidator() function\n */\n function validateAddress(_: { address: string; chain: Chain }) {\n throw new SwapKitError(\"not_implemented\", {\n message:\n \"validateAddress is deprecated - use toolbox directly or import { getAddressValidator } from '@swapkit/core'\",\n });\n }\n\n async function getWalletWithBalance<T extends Chain>(chain: T, potentialScamFilter = true) {\n if (chain === Chain.Fiat || !getWallet(chain)) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n const wallet = getWallet(chain as Exclude<Chain, Chain.Fiat>);\n const defaultBalance = [AssetValue.from({ chain })];\n\n if (\"getBalance\" in wallet) {\n const balance = await wallet.getBalance(wallet.address, potentialScamFilter);\n wallet.balance = balance?.length ? balance : defaultBalance;\n }\n\n return wallet;\n }\n\n function swap<T extends PluginName>({\n route,\n pluginName,\n ...rest\n }: SwapParams<T, QuoteResponseRoute>) {\n const plugin =\n (pluginName && getSwapKitPlugin(pluginName)) ||\n getSwapKitPluginForSKProvider(route.providers[0] as PluginNameEnum);\n\n if (!plugin) throw new SwapKitError(\"core_swap_route_not_complete\");\n\n if (\"swap\" in plugin) {\n return plugin.swap({ ...rest, route });\n }\n\n throw new SwapKitError(\"core_plugin_swap_not_found\");\n }\n\n function transfer({\n assetValue,\n ...params\n }: UTXOTransferParams | EVMTransferParams | CosmosTransferParams) {\n const chain = assetValue.chain;\n if ([Chain.Fiat, Chain.Radix].includes(chain) || !getWallet(chain)) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n const wallet = getWallet(chain as Exclude<Chain, Chain.Fiat | Chain.Radix>);\n\n return wallet.transfer({ ...params, assetValue });\n }\n\n function signMessage({ chain, message }: { chain: Chain; message: string }) {\n const wallet = getWallet(chain);\n if (!wallet) throw new SwapKitError(\"core_wallet_connection_not_found\");\n\n if (\"signMessage\" in wallet) {\n return wallet.signMessage?.(message);\n }\n\n throw new SwapKitError({\n errorKey: \"core_wallet_sign_message_not_supported\",\n info: { chain, wallet: wallet.walletType },\n });\n }\n\n async function verifyMessage({\n address,\n chain,\n message,\n signature,\n }: { chain: Chain; signature: string; message: string; address: string }) {\n switch (chain) {\n case Chain.THORChain: {\n const { getToolboxByChain } = await import(\"@swapkit/toolbox-cosmos\");\n const toolbox = getToolboxByChain(chain);\n return toolbox().verifySignature({ signature, message, address });\n }\n\n default:\n throw new SwapKitError({ errorKey: \"core_verify_message_not_supported\", info: { chain } });\n }\n }\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: TODO clean this up\n async function estimateTransactionFee<T extends PluginName>({\n type,\n feeOptionKey,\n params,\n }: (\n | { type: \"swap\"; params: SwapParams<T, QuoteResponseRoute> & { assetValue: AssetValue } }\n | { type: \"transfer\"; params: UTXOTransferParams | EVMTransferParams | CosmosTransferParams }\n | {\n type: \"approve\";\n params: {\n assetValue: AssetValue;\n contractAddress: string | PluginName;\n feeOptionKey?: FeeOption;\n };\n }\n ) & {\n feeOptionKey: FeeOption;\n }): Promise<AssetValue | undefined> {\n const { assetValue } = params;\n const { chain } = assetValue;\n\n if (!getWallet(chain as Chain)) throw new SwapKitError(\"core_wallet_connection_not_found\");\n\n const baseValue = AssetValue.from({ chain });\n\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Avalanche:\n case Chain.Ethereum:\n case Chain.BinanceSmartChain:\n case Chain.Polygon: {\n const wallet = getWallet(chain);\n if (type === \"transfer\") {\n const txObject = await wallet.createTransferTx(params);\n return wallet.estimateTransactionFee(txObject, feeOptionKey);\n }\n\n if (type === \"approve\" && !assetValue.isGasAsset) {\n return wallet.estimateTransactionFee(\n await wallet.createApprovalTx({\n assetAddress: assetValue.address as string,\n spenderAddress: params.contractAddress as string,\n amount: assetValue.getBaseValue(\"bigint\"),\n from: wallet.address,\n }),\n feeOptionKey,\n );\n }\n\n if (type === \"swap\") {\n const plugin = params.route.providers[0] as PluginNameEnum;\n if ([PluginNameEnum.CHAINFLIP, PluginNameEnum.CHAINFLIP_STREAMING].includes(plugin)) {\n const txObject = await wallet.createTransferTx({\n from: wallet.address,\n recipient: wallet.address,\n assetValue,\n });\n return wallet.estimateTransactionFee(txObject, feeOptionKey);\n }\n\n const { tx } = params.route;\n if (!tx) {\n return undefined;\n }\n\n return wallet.estimateTransactionFee(\n { ...(tx as EVMTransaction), value: BigInt((tx as EVMTransaction).value) },\n feeOptionKey,\n );\n }\n\n return AssetValue.from({ chain });\n }\n\n case Chain.Bitcoin:\n case Chain.BitcoinCash:\n case Chain.Dogecoin:\n case Chain.Dash:\n case Chain.Litecoin: {\n const { estimateTransactionFee, address } = getWallet(chain);\n\n return estimateTransactionFee({\n ...params,\n feeOptionKey,\n from: address,\n recipient: address,\n });\n }\n\n case Chain.THORChain:\n case Chain.Maya:\n case Chain.Kujira:\n case Chain.Cosmos: {\n const { estimateTransactionFee } = await import(\"@swapkit/toolbox-cosmos\");\n return estimateTransactionFee(params);\n }\n\n case Chain.Polkadot: {\n const { address, estimateTransactionFee } = getWallet(chain);\n\n return estimateTransactionFee({ ...params, recipient: address });\n }\n\n default:\n return baseValue;\n }\n }\n\n const swapkitConfig = config.swapkitConfig || {};\n const swapkitApiKey = swapkitConfig?.swapkitApiKey || config?.swapkitApiKey;\n const referer = swapkitConfig.useHashedApiKey ? swapkitConfig.referer : undefined;\n\n const api = swapkitApiKey\n ? {\n getGasRate: () => SwapKitApi.getGasRate(isDev, swapkitApiKey, referer),\n getPrice: (body: PriceRequest) => SwapKitApi.getPrice(body, isDev, swapkitApiKey, referer),\n getSwapQuote: (params: QuoteRequest) =>\n SwapKitApi.getSwapQuote(params, isDev, swapkitApiKey, referer),\n getTokenList: (provider: string) => SwapKitApi.getTokenList(provider),\n getTokenListProviders: () =>\n SwapKitApi.getTokenListProvidersV2(isDev, swapkitApiKey, referer),\n getTokenTradingPairs: (providers: PluginNameEnum[]) =>\n SwapKitApi.getTokenTradingPairs(providers, isDev, swapkitApiKey, referer),\n getTrackerDetails: (payload: TrackerParams) =>\n SwapKitApi.getTrackerDetails(payload, swapkitApiKey, referer),\n }\n : { undefined };\n\n return {\n ...availablePlugins,\n ...connectWalletMethods,\n\n disconnectAll,\n disconnectChain,\n estimateTransactionFee,\n getAddress,\n getAllWallets,\n getBalance,\n getExplorerAddressUrl: getAddressUrl,\n getExplorerTxUrl: getTxUrl,\n getWallet,\n getWalletWithBalance,\n\n approveAssetValue,\n isAssetValueApproved,\n signMessage,\n swap,\n transfer,\n validateAddress,\n verifyMessage,\n api,\n };\n}\n",
5
+ "export * from \"@swapkit/helpers/api\";\nexport * from \"@swapkit/helpers\";\nexport * from \"./client\";\nexport * from \"./helpers/walletAddressValidator\";\n",
6
+ "import type { EVMTransaction, QuoteResponseRoute } from \"@swapkit/helpers/api\";\n\nimport {\n ApproveMode,\n type ApproveReturnType,\n AssetValue,\n Chain,\n type ChainWallet,\n type ConditionalAssetValueReturn,\n type EVMChain,\n EVMChains,\n type FeeOption,\n type FullWallet,\n ProviderName as PluginNameEnum,\n SKConfig,\n type SKConfigState,\n SwapKitError,\n type SwapParams,\n type createPlugin,\n type createWallet,\n} from \"@swapkit/helpers\";\nimport type { TransferParams as CosmosTransferParams } from \"@swapkit/toolboxes/cosmos\";\nimport type { TransferParams as EVMTransferParams } from \"@swapkit/toolboxes/evm\";\nimport type { UTXOTransferParams } from \"@swapkit/toolboxes/utxo\";\n\nimport {\n getExplorerAddressUrl as getAddressUrl,\n getExplorerTxUrl as getTxUrl,\n} from \"./helpers/explorerUrls\";\n\nexport type SwapKitParams<P, W> = {\n config?: SKConfigState;\n plugins?: P;\n wallets?: W;\n};\n\nexport function SwapKit<\n Plugins extends ReturnType<typeof createPlugin>,\n Wallets extends ReturnType<typeof createWallet>,\n>({ config, plugins, wallets = {} as Wallets }: SwapKitParams<Plugins, Wallets> = {}) {\n if (config) {\n SKConfig.set(config);\n }\n\n type PluginName = keyof Plugins;\n const connectedWallets = {} as FullWallet;\n\n const availablePlugins = Object.entries(plugins || {}).reduce(\n (acc, [pluginName, plugin]) => {\n const methods = plugin({ getWallet });\n\n // @ts-expect-error key is generic and cannot be indexed\n acc[pluginName] = methods;\n return acc;\n },\n {} as { [key in PluginName]: ReturnType<Plugins[key]> },\n );\n\n const connectWalletMethods = Object.entries(wallets || {}).reduce(\n (acc, [walletName, wallet]) => {\n const connectWallet = wallet.connectWallet({ addChain });\n\n // @ts-expect-error key is generic and cannot be indexed\n acc[walletName] = connectWallet;\n return acc;\n },\n {} as {\n [key in keyof typeof wallets]: ReturnType<(typeof wallets)[key][\"connectWallet\"]>;\n },\n );\n\n function getSwapKitPlugin<T extends PluginName>(pluginName: T) {\n const plugin = availablePlugins[pluginName] || Object.values(availablePlugins)[0];\n\n if (!plugin) {\n throw new SwapKitError(\"core_plugin_not_found\");\n }\n\n return plugin;\n }\n\n function getSwapKitPluginForSKProvider(pluginName: PluginNameEnum) {\n const plugin = Object.values(availablePlugins).find((plugin) =>\n plugin.supportedSwapkitProviders?.includes(pluginName),\n );\n\n if (!plugin) {\n throw new SwapKitError(\"core_plugin_not_found\");\n }\n\n return plugin;\n }\n\n function addChain<T extends Chain>(connectWallet: ChainWallet<T>) {\n const currentWallet = getWallet(connectWallet.chain);\n\n connectedWallets[connectWallet.chain] = { ...currentWallet, ...connectWallet };\n }\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: <explanation>\n function approve<T extends ApproveMode>({\n assetValue,\n type = \"checkOnly\" as T,\n contractAddress: spenderAddress,\n }: {\n type: T;\n assetValue: AssetValue;\n contractAddress: string | PluginName;\n }) {\n const plugin = availablePlugins[spenderAddress];\n\n if (plugin) {\n if (type === ApproveMode.CheckOnly && \"isAssetValueApproved\" in plugin) {\n // @ts-expect-error TODO: add optional approve for plugin\n return plugin.isAssetValueApproved({ assetValue }) as ApproveReturnType<T>;\n }\n if (type === ApproveMode.Approve && \"approveAssetValue\" in plugin) {\n // @ts-expect-error TODO: add optional approve for plugin\n return plugin.approveAssetValue({ assetValue }) as ApproveReturnType<T>;\n }\n\n throw new SwapKitError({\n errorKey: \"core_approve_asset_target_invalid\",\n info: { message: `Target ${String(spenderAddress)} cannot be used for approve operation` },\n });\n }\n\n const chain = assetValue.chain as EVMChain;\n const isEVMChain = EVMChains.includes(chain);\n const isNativeEVM = isEVMChain && assetValue.isGasAsset;\n\n if (isNativeEVM || !isEVMChain || assetValue.isSynthetic) {\n return Promise.resolve(type === \"checkOnly\" ? true : \"approved\") as ApproveReturnType<T>;\n }\n\n const wallet = getWallet(chain);\n const walletAction = type === \"checkOnly\" ? wallet.isApproved : wallet.approve;\n if (!walletAction) throw new SwapKitError(\"core_wallet_connection_not_found\");\n\n if (!(assetValue.address && wallet.address && typeof spenderAddress === \"string\")) {\n throw new SwapKitError(\"core_approve_asset_address_or_from_not_found\");\n }\n\n return walletAction({\n amount: assetValue.getBaseValue(\"bigint\"),\n assetAddress: assetValue.address,\n from: wallet.address,\n spenderAddress,\n }) as ApproveReturnType<T>;\n }\n\n /**\n * @Public\n */\n function getWallet<T extends Chain>(chain: T) {\n return connectedWallets[chain];\n }\n\n function getAllWallets() {\n return { ...connectedWallets };\n }\n\n function getAddress<T extends Chain>(chain: T) {\n return getWallet(chain)?.address || \"\";\n }\n\n function approveAssetValue(assetValue: AssetValue, contractAddress: string | PluginName) {\n return approve({ assetValue, contractAddress, type: ApproveMode.Approve });\n }\n\n function isAssetValueApproved(assetValue: AssetValue, contractAddress: string | PluginName) {\n return approve({ assetValue, contractAddress, type: ApproveMode.CheckOnly });\n }\n\n function disconnectChain<T extends Chain>(chain: T) {\n const wallet = getWallet(chain);\n wallet?.disconnect?.();\n delete connectedWallets[chain];\n }\n\n function disconnectAll() {\n for (const chain of Object.keys(connectedWallets) as (keyof typeof connectedWallets)[]) {\n disconnectChain(chain);\n }\n }\n\n function getBalance<T extends Chain, R extends boolean>(\n chain: T,\n refresh?: R,\n ): ConditionalAssetValueReturn<R> {\n return (\n refresh\n ? getWalletWithBalance(chain).then(({ balance }) => balance)\n : getWallet(chain)?.balance || []\n ) as ConditionalAssetValueReturn<R>;\n }\n\n async function getWalletWithBalance<T extends Chain>(chain: T, potentialScamFilter = true) {\n if (chain === Chain.Fiat || !getWallet(chain)) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n const wallet = getWallet(chain as Exclude<Chain, Chain.Fiat>);\n const defaultBalance = [AssetValue.from({ chain })];\n\n if (\"getBalance\" in wallet) {\n const balance = await wallet.getBalance(wallet.address, potentialScamFilter);\n wallet.balance = balance?.length ? balance : defaultBalance;\n }\n\n return wallet;\n }\n\n function swap<T extends PluginName>({\n route,\n pluginName,\n ...rest\n }: SwapParams<T, QuoteResponseRoute>) {\n const plugin =\n (pluginName && getSwapKitPlugin(pluginName)) ||\n getSwapKitPluginForSKProvider(route.providers[0] as PluginNameEnum);\n\n if (!plugin) throw new SwapKitError(\"core_swap_route_not_complete\");\n\n if (\"swap\" in plugin) {\n return plugin.swap({ ...rest, route });\n }\n\n throw new SwapKitError(\"core_plugin_swap_not_found\");\n }\n\n function transfer({\n assetValue,\n ...params\n }: UTXOTransferParams | EVMTransferParams | CosmosTransferParams) {\n const chain = assetValue.chain;\n if ([Chain.Fiat, Chain.Radix].includes(chain) || !getWallet(chain)) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n const wallet = getWallet(chain as Exclude<Chain, Chain.Fiat | Chain.Radix>);\n\n // @ts-expect-error TODO: right now it's inferred from toolboxes\n // we need to simplify this to one object params\n return wallet.transfer({ ...params, assetValue });\n }\n\n function signMessage({ chain, message }: { chain: Chain; message: string }) {\n const wallet = getWallet(chain);\n if (!wallet) throw new SwapKitError(\"core_wallet_connection_not_found\");\n\n if (\"signMessage\" in wallet) {\n return wallet.signMessage?.(message);\n }\n\n throw new SwapKitError({\n errorKey: \"core_wallet_sign_message_not_supported\",\n info: { chain, wallet: wallet.walletType },\n });\n }\n\n async function verifyMessage({\n address,\n chain,\n message,\n signature,\n }: { chain: Chain; signature: string; message: string; address: string }) {\n switch (chain) {\n case Chain.THORChain: {\n const { getToolboxByChain } = await import(\"@swapkit/toolboxes/cosmos\");\n const toolbox = getToolboxByChain(chain);\n return toolbox().verifySignature({ signature, message, address });\n }\n\n default:\n throw new SwapKitError({ errorKey: \"core_verify_message_not_supported\", info: { chain } });\n }\n }\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: TODO clean this up\n async function estimateTransactionFee<T extends PluginName>({\n type,\n feeOptionKey,\n params,\n }: (\n | { type: \"swap\"; params: SwapParams<T, QuoteResponseRoute> & { assetValue: AssetValue } }\n | { type: \"transfer\"; params: UTXOTransferParams | EVMTransferParams | CosmosTransferParams }\n | {\n type: \"approve\";\n params: {\n assetValue: AssetValue;\n contractAddress: string | PluginName;\n feeOptionKey?: FeeOption;\n };\n }\n ) & {\n feeOptionKey: FeeOption;\n }): Promise<AssetValue | undefined> {\n const { assetValue } = params;\n const { chain } = assetValue;\n\n if (!getWallet(chain as Chain)) throw new SwapKitError(\"core_wallet_connection_not_found\");\n\n const baseValue = AssetValue.from({ chain });\n\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Avalanche:\n case Chain.Ethereum:\n case Chain.BinanceSmartChain:\n case Chain.Polygon: {\n const wallet = getWallet(chain);\n if (type === \"transfer\") {\n const txObject = await wallet.createTransferTx(params);\n return wallet.estimateTransactionFee(txObject, feeOptionKey);\n }\n\n if (type === \"approve\" && !assetValue.isGasAsset) {\n const approvalTx = await wallet.createApprovalTx({\n assetAddress: assetValue.address as string,\n spenderAddress: params.contractAddress as string,\n amount: assetValue.getBaseValue(\"bigint\"),\n from: wallet.address,\n });\n\n return wallet.estimateTransactionFee(approvalTx, feeOptionKey);\n }\n\n if (type === \"swap\") {\n const plugin = params.route.providers[0] as PluginNameEnum;\n if ([PluginNameEnum.CHAINFLIP, PluginNameEnum.CHAINFLIP_STREAMING].includes(plugin)) {\n const txObject = await wallet.createTransferTx({\n from: wallet.address,\n recipient: wallet.address,\n assetValue,\n });\n\n return wallet.estimateTransactionFee(txObject, feeOptionKey);\n }\n\n const { tx } = params.route;\n if (!tx) {\n return undefined;\n }\n\n return wallet.estimateTransactionFee(\n { ...(tx as EVMTransaction), value: BigInt((tx as EVMTransaction).value) },\n feeOptionKey,\n );\n }\n\n return AssetValue.from({ chain });\n }\n\n case Chain.Bitcoin:\n case Chain.BitcoinCash:\n case Chain.Dogecoin:\n case Chain.Dash:\n case Chain.Litecoin: {\n const { estimateTransactionFee, address } = getWallet(chain);\n\n return estimateTransactionFee({\n ...params,\n feeOptionKey,\n from: address,\n recipient: address,\n });\n }\n\n case Chain.THORChain:\n case Chain.Maya:\n case Chain.Kujira:\n case Chain.Cosmos: {\n const { estimateTransactionFee } = await import(\"@swapkit/toolboxes/cosmos\");\n return estimateTransactionFee(params);\n }\n\n case Chain.Polkadot: {\n const { address, estimateTransactionFee } = getWallet(chain);\n\n return estimateTransactionFee({ ...params, recipient: address });\n }\n\n default:\n return baseValue;\n }\n }\n\n return {\n ...availablePlugins,\n ...connectWalletMethods,\n\n disconnectAll,\n disconnectChain,\n estimateTransactionFee,\n getAddress,\n getAllWallets,\n getBalance,\n getExplorerAddressUrl: getAddressUrl,\n getExplorerTxUrl: getTxUrl,\n getWallet,\n getWalletWithBalance,\n\n approveAssetValue,\n isAssetValueApproved,\n signMessage,\n swap,\n transfer,\n verifyMessage,\n };\n}\n",
7
7
  "import { Chain, ChainToExplorerUrl, SwapKitError } from \"@swapkit/helpers\";\n\nexport function getExplorerTxUrl({ chain, txHash }: { txHash: string; chain: Chain }) {\n const baseUrl = ChainToExplorerUrl[chain];\n\n switch (chain) {\n case Chain.Maya:\n case Chain.Kujira:\n case Chain.Cosmos:\n case Chain.THORChain:\n case Chain.Solana:\n return `${baseUrl}/tx/${txHash.startsWith(\"0x\") ? txHash.slice(2) : txHash}`;\n\n case Chain.Arbitrum:\n case Chain.Avalanche:\n case Chain.BinanceSmartChain:\n case Chain.Base:\n case Chain.Ethereum:\n case Chain.Optimism:\n case Chain.Polkadot:\n case Chain.Polygon:\n return `${baseUrl}/tx/${txHash.startsWith(\"0x\") ? txHash : `0x${txHash}`}`;\n\n case Chain.Litecoin:\n case Chain.Bitcoin:\n case Chain.BitcoinCash:\n case Chain.Dogecoin:\n case Chain.Radix:\n return `${baseUrl}/transaction/${txHash.toLowerCase()}`;\n\n default:\n throw new SwapKitError({ errorKey: \"core_explorer_unsupported_chain\", info: { chain } });\n }\n}\n\nexport function getExplorerAddressUrl({ chain, address }: { address: string; chain: Chain }) {\n const baseUrl = ChainToExplorerUrl[chain];\n\n switch (chain) {\n case Chain.Solana:\n case Chain.Radix:\n return `${baseUrl}/account/${address}`;\n\n default:\n return `${baseUrl}/address/${address}`;\n }\n}\n",
8
- "import { Chain } from \"@swapkit/helpers\";\n\nexport async function getAddressValidator() {\n const { cosmosValidateAddress } = await import(\"@swapkit/toolbox-cosmos\");\n const { evmValidateAddress } = await import(\"@swapkit/toolbox-evm\");\n const { substrateValidateAddress } = await import(\"@swapkit/toolbox-substrate\");\n const { utxoValidateAddress } = await import(\"@swapkit/toolbox-utxo\");\n const { validateAddress: solanaValidateAddress } = await import(\"@swapkit/toolbox-solana\");\n const { validateAddress: validateRadixAddress } = await import(\"@swapkit/toolbox-radix\");\n\n return function validateAddress({ address, chain }: { address: string; chain: Chain }) {\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Avalanche:\n case Chain.Optimism:\n case Chain.BinanceSmartChain:\n case Chain.Base:\n case Chain.Polygon:\n case Chain.Ethereum:\n return evmValidateAddress({ address });\n\n case Chain.Litecoin:\n case Chain.Dash:\n case Chain.Dogecoin:\n case Chain.BitcoinCash:\n case Chain.Bitcoin:\n return utxoValidateAddress({ address, chain });\n\n case Chain.Cosmos:\n case Chain.Kujira:\n case Chain.Maya:\n case Chain.THORChain: {\n return cosmosValidateAddress({ address, chain });\n }\n\n case Chain.Polkadot: {\n return substrateValidateAddress({ address, chain });\n }\n\n case Chain.Radix: {\n return validateRadixAddress(address);\n }\n\n case Chain.Solana: {\n return solanaValidateAddress(address);\n }\n\n default:\n return false;\n }\n };\n}\n"
8
+ "import { Chain } from \"@swapkit/helpers\";\n\nexport async function getAddressValidator() {\n const { cosmosValidateAddress } = await import(\"@swapkit/toolboxes/cosmos\");\n const { evmValidateAddress } = await import(\"@swapkit/toolboxes/evm\");\n const { substrateValidateAddress } = await import(\"@swapkit/toolboxes/substrate\");\n const { utxoValidateAddress } = await import(\"@swapkit/toolboxes/utxo\");\n const { getAddressValidator: getSolValidator } = await import(\"@swapkit/toolboxes/solana\");\n const { validateAddress: validateRadixAddress } = await import(\"@swapkit/toolboxes/radix\");\n\n const solanaValidateAddress = await getSolValidator();\n\n return function validateAddress({ address, chain }: { address: string; chain: Chain }) {\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Avalanche:\n case Chain.Optimism:\n case Chain.BinanceSmartChain:\n case Chain.Base:\n case Chain.Polygon:\n case Chain.Ethereum:\n return evmValidateAddress({ address });\n\n case Chain.Litecoin:\n case Chain.Dash:\n case Chain.Dogecoin:\n case Chain.BitcoinCash:\n case Chain.Bitcoin:\n return utxoValidateAddress({ address, chain });\n\n case Chain.Cosmos:\n case Chain.Kujira:\n case Chain.Maya:\n case Chain.THORChain: {\n return cosmosValidateAddress({ address, chain });\n }\n\n case Chain.Polkadot: {\n return substrateValidateAddress({ address, chain });\n }\n\n case Chain.Radix: {\n return validateRadixAddress(address);\n }\n\n case Chain.Solana: {\n return solanaValidateAddress(address);\n }\n\n default:\n return false;\n }\n };\n}\n"
9
9
  ],
10
- "mappings": "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",
11
- "debugId": "D1A504E9AFF2E6E164756E2164756E21",
10
+ "mappings": "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",
11
+ "debugId": "2A42EE8D75A4550964756E2164756E21",
12
12
  "names": []
13
13
  }
package/package.json CHANGED
@@ -1,15 +1,8 @@
1
1
  {
2
2
  "author": "swapkit-oss",
3
3
  "dependencies": {
4
- "@swapkit/api": "2.4.0",
5
- "@swapkit/helpers": "2.5.0",
6
- "@swapkit/plugin-evm": "1.3.22",
7
- "@swapkit/toolbox-cosmos": "1.10.1",
8
- "@swapkit/toolbox-evm": "1.9.0",
9
- "@swapkit/toolbox-radix": "1.2.34",
10
- "@swapkit/toolbox-solana": "1.4.6",
11
- "@swapkit/toolbox-substrate": "1.3.19",
12
- "@swapkit/toolbox-utxo": "1.3.0"
4
+ "@swapkit/helpers": "3.0.0-beta.0",
5
+ "@swapkit/toolboxes": "1.0.0-beta.0"
13
6
  },
14
7
  "description": "SwapKit - Core",
15
8
  "files": [
@@ -27,12 +20,12 @@
27
20
  "scripts": {
28
21
  "build": "bun run ./build.ts",
29
22
  "clean": "rm -rf dist node_modules *.tsbuildinfo",
30
- "lint": "biome check --diagnostic-level=error --write ./src",
23
+ "lint": "biome check --write ./src",
31
24
  "test": "echo 'bun test'",
32
- "test:coverage": "bun test --coverage",
25
+ "test:ci": "bun test --coverage",
33
26
  "type-check": "tsc --noEmit"
34
27
  },
35
28
  "type": "module",
36
29
  "types": "./src/index.ts",
37
- "version": "3.2.24"
38
- }
30
+ "version": "4.0.0-beta.0"
31
+ }
package/src/client.ts CHANGED
@@ -1,92 +1,72 @@
1
- import type {
2
- EVMTransaction,
3
- PriceRequest,
4
- QuoteRequest,
5
- QuoteResponseRoute,
6
- TrackerParams,
7
- } from "@swapkit/api";
8
- import { SwapKitApi } from "@swapkit/api";
1
+ import type { EVMTransaction, QuoteResponseRoute } from "@swapkit/helpers/api";
9
2
 
10
3
  import {
11
4
  ApproveMode,
12
5
  type ApproveReturnType,
13
6
  AssetValue,
14
7
  Chain,
15
- type ChainApis,
16
8
  type ChainWallet,
17
9
  type ConditionalAssetValueReturn,
18
- type ConnectConfig,
19
- type CryptoChain,
20
10
  type EVMChain,
21
11
  EVMChains,
22
12
  type FeeOption,
23
13
  type FullWallet,
24
14
  ProviderName as PluginNameEnum,
15
+ SKConfig,
16
+ type SKConfigState,
25
17
  SwapKitError,
26
- type SwapKitPluginParams,
27
- type SwapKitWallet,
28
18
  type SwapParams,
19
+ type createPlugin,
20
+ type createWallet,
29
21
  } from "@swapkit/helpers";
30
- import type { TransferParams as CosmosTransferParams } from "@swapkit/toolbox-cosmos";
31
- import type { TransferParams as EVMTransferParams } from "@swapkit/toolbox-evm";
32
- import type { UTXOTransferParams } from "@swapkit/toolbox-utxo";
22
+ import type { TransferParams as CosmosTransferParams } from "@swapkit/toolboxes/cosmos";
23
+ import type { TransferParams as EVMTransferParams } from "@swapkit/toolboxes/evm";
24
+ import type { UTXOTransferParams } from "@swapkit/toolboxes/utxo";
33
25
 
34
26
  import {
35
27
  getExplorerAddressUrl as getAddressUrl,
36
28
  getExplorerTxUrl as getTxUrl,
37
29
  } from "./helpers/explorerUrls";
38
30
 
39
- export type PluginsType = {
40
- [key in string]: {
41
- plugin: (params: SwapKitPluginParams<any>) => any;
42
- config?: any;
43
- };
44
- };
45
-
46
- export type WalletsType = {
47
- [key in string]: SwapKitWallet<any[]>;
48
- };
49
-
50
31
  export type SwapKitParams<P, W> = {
51
- apis?: ChainApis;
52
- config?: ConnectConfig;
32
+ config?: SKConfigState;
53
33
  plugins?: P;
54
- rpcUrls?: { [key in CryptoChain]?: string };
55
34
  wallets?: W;
56
35
  };
57
36
 
58
- export function SwapKit<Plugins extends PluginsType, Wallets extends WalletsType>({
59
- apis = {},
60
- config = {},
61
- plugins,
62
- rpcUrls = {},
63
- wallets = {} as Wallets,
64
- }: SwapKitParams<Plugins, Wallets> = {}) {
65
- const stagenet = config.stagenet;
66
- const isDev = config.swapkitConfig?.isDev;
37
+ export function SwapKit<
38
+ Plugins extends ReturnType<typeof createPlugin>,
39
+ Wallets extends ReturnType<typeof createWallet>,
40
+ >({ config, plugins, wallets = {} as Wallets }: SwapKitParams<Plugins, Wallets> = {}) {
41
+ if (config) {
42
+ SKConfig.set(config);
43
+ }
44
+
67
45
  type PluginName = keyof Plugins;
68
46
  const connectedWallets = {} as FullWallet;
69
47
 
70
48
  const availablePlugins = Object.entries(plugins || {}).reduce(
71
- (acc, [pluginName, { plugin, config: pluginConfig }]) => {
72
- const methods = plugin({ getWallet, stagenet, config: pluginConfig ?? config });
49
+ (acc, [pluginName, plugin]) => {
50
+ const methods = plugin({ getWallet });
73
51
 
74
52
  // @ts-expect-error key is generic and cannot be indexed
75
53
  acc[pluginName] = methods;
76
54
  return acc;
77
55
  },
78
- {} as { [key in PluginName]: ReturnType<Plugins[key]["plugin"]> },
56
+ {} as { [key in PluginName]: ReturnType<Plugins[key]> },
79
57
  );
80
58
 
81
- const connectWalletMethods = Object.entries(wallets).reduce(
59
+ const connectWalletMethods = Object.entries(wallets || {}).reduce(
82
60
  (acc, [walletName, wallet]) => {
83
- const connectWallet = wallet({ addChain, config, apis, rpcUrls });
61
+ const connectWallet = wallet.connectWallet({ addChain });
84
62
 
85
- // @ts-expect-error walletName is generic and cannot be indexed
63
+ // @ts-expect-error key is generic and cannot be indexed
86
64
  acc[walletName] = connectWallet;
87
65
  return acc;
88
66
  },
89
- {} as { [key in keyof Wallets]: ReturnType<Wallets[key]> },
67
+ {} as {
68
+ [key in keyof typeof wallets]: ReturnType<(typeof wallets)[key]["connectWallet"]>;
69
+ },
90
70
  );
91
71
 
92
72
  function getSwapKitPlugin<T extends PluginName>(pluginName: T) {
@@ -99,7 +79,7 @@ export function SwapKit<Plugins extends PluginsType, Wallets extends WalletsType
99
79
  return plugin;
100
80
  }
101
81
 
102
- function getSwapKitPluginForSKProvider(pluginName: PluginNameEnum): Plugins[keyof Plugins] {
82
+ function getSwapKitPluginForSKProvider(pluginName: PluginNameEnum) {
103
83
  const plugin = Object.values(availablePlugins).find((plugin) =>
104
84
  plugin.supportedSwapkitProviders?.includes(pluginName),
105
85
  );
@@ -111,7 +91,7 @@ export function SwapKit<Plugins extends PluginsType, Wallets extends WalletsType
111
91
  return plugin;
112
92
  }
113
93
 
114
- function addChain<T extends CryptoChain>(connectWallet: ChainWallet<T>) {
94
+ function addChain<T extends Chain>(connectWallet: ChainWallet<T>) {
115
95
  const currentWallet = getWallet(connectWallet.chain);
116
96
 
117
97
  connectedWallets[connectWallet.chain] = { ...currentWallet, ...connectWallet };
@@ -131,9 +111,11 @@ export function SwapKit<Plugins extends PluginsType, Wallets extends WalletsType
131
111
 
132
112
  if (plugin) {
133
113
  if (type === ApproveMode.CheckOnly && "isAssetValueApproved" in plugin) {
114
+ // @ts-expect-error TODO: add optional approve for plugin
134
115
  return plugin.isAssetValueApproved({ assetValue }) as ApproveReturnType<T>;
135
116
  }
136
117
  if (type === ApproveMode.Approve && "approveAssetValue" in plugin) {
118
+ // @ts-expect-error TODO: add optional approve for plugin
137
119
  return plugin.approveAssetValue({ assetValue }) as ApproveReturnType<T>;
138
120
  }
139
121
 
@@ -213,16 +195,6 @@ export function SwapKit<Plugins extends PluginsType, Wallets extends WalletsType
213
195
  ) as ConditionalAssetValueReturn<R>;
214
196
  }
215
197
 
216
- /**
217
- * @deprecated - use toolbox directly or use getAddressValidator() function
218
- */
219
- function validateAddress(_: { address: string; chain: Chain }) {
220
- throw new SwapKitError("not_implemented", {
221
- message:
222
- "validateAddress is deprecated - use toolbox directly or import { getAddressValidator } from '@swapkit/core'",
223
- });
224
- }
225
-
226
198
  async function getWalletWithBalance<T extends Chain>(chain: T, potentialScamFilter = true) {
227
199
  if (chain === Chain.Fiat || !getWallet(chain)) {
228
200
  throw new SwapKitError("core_wallet_connection_not_found");
@@ -266,6 +238,8 @@ export function SwapKit<Plugins extends PluginsType, Wallets extends WalletsType
266
238
  }
267
239
  const wallet = getWallet(chain as Exclude<Chain, Chain.Fiat | Chain.Radix>);
268
240
 
241
+ // @ts-expect-error TODO: right now it's inferred from toolboxes
242
+ // we need to simplify this to one object params
269
243
  return wallet.transfer({ ...params, assetValue });
270
244
  }
271
245
 
@@ -291,7 +265,7 @@ export function SwapKit<Plugins extends PluginsType, Wallets extends WalletsType
291
265
  }: { chain: Chain; signature: string; message: string; address: string }) {
292
266
  switch (chain) {
293
267
  case Chain.THORChain: {
294
- const { getToolboxByChain } = await import("@swapkit/toolbox-cosmos");
268
+ const { getToolboxByChain } = await import("@swapkit/toolboxes/cosmos");
295
269
  const toolbox = getToolboxByChain(chain);
296
270
  return toolbox().verifySignature({ signature, message, address });
297
271
  }
@@ -340,15 +314,14 @@ export function SwapKit<Plugins extends PluginsType, Wallets extends WalletsType
340
314
  }
341
315
 
342
316
  if (type === "approve" && !assetValue.isGasAsset) {
343
- return wallet.estimateTransactionFee(
344
- await wallet.createApprovalTx({
345
- assetAddress: assetValue.address as string,
346
- spenderAddress: params.contractAddress as string,
347
- amount: assetValue.getBaseValue("bigint"),
348
- from: wallet.address,
349
- }),
350
- feeOptionKey,
351
- );
317
+ const approvalTx = await wallet.createApprovalTx({
318
+ assetAddress: assetValue.address as string,
319
+ spenderAddress: params.contractAddress as string,
320
+ amount: assetValue.getBaseValue("bigint"),
321
+ from: wallet.address,
322
+ });
323
+
324
+ return wallet.estimateTransactionFee(approvalTx, feeOptionKey);
352
325
  }
353
326
 
354
327
  if (type === "swap") {
@@ -359,6 +332,7 @@ export function SwapKit<Plugins extends PluginsType, Wallets extends WalletsType
359
332
  recipient: wallet.address,
360
333
  assetValue,
361
334
  });
335
+
362
336
  return wallet.estimateTransactionFee(txObject, feeOptionKey);
363
337
  }
364
338
 
@@ -395,7 +369,7 @@ export function SwapKit<Plugins extends PluginsType, Wallets extends WalletsType
395
369
  case Chain.Maya:
396
370
  case Chain.Kujira:
397
371
  case Chain.Cosmos: {
398
- const { estimateTransactionFee } = await import("@swapkit/toolbox-cosmos");
372
+ const { estimateTransactionFee } = await import("@swapkit/toolboxes/cosmos");
399
373
  return estimateTransactionFee(params);
400
374
  }
401
375
 
@@ -410,26 +384,6 @@ export function SwapKit<Plugins extends PluginsType, Wallets extends WalletsType
410
384
  }
411
385
  }
412
386
 
413
- const swapkitConfig = config.swapkitConfig || {};
414
- const swapkitApiKey = swapkitConfig?.swapkitApiKey || config?.swapkitApiKey;
415
- const referer = swapkitConfig.useHashedApiKey ? swapkitConfig.referer : undefined;
416
-
417
- const api = swapkitApiKey
418
- ? {
419
- getGasRate: () => SwapKitApi.getGasRate(isDev, swapkitApiKey, referer),
420
- getPrice: (body: PriceRequest) => SwapKitApi.getPrice(body, isDev, swapkitApiKey, referer),
421
- getSwapQuote: (params: QuoteRequest) =>
422
- SwapKitApi.getSwapQuote(params, isDev, swapkitApiKey, referer),
423
- getTokenList: (provider: string) => SwapKitApi.getTokenList(provider),
424
- getTokenListProviders: () =>
425
- SwapKitApi.getTokenListProvidersV2(isDev, swapkitApiKey, referer),
426
- getTokenTradingPairs: (providers: PluginNameEnum[]) =>
427
- SwapKitApi.getTokenTradingPairs(providers, isDev, swapkitApiKey, referer),
428
- getTrackerDetails: (payload: TrackerParams) =>
429
- SwapKitApi.getTrackerDetails(payload, swapkitApiKey, referer),
430
- }
431
- : { undefined };
432
-
433
387
  return {
434
388
  ...availablePlugins,
435
389
  ...connectWalletMethods,
@@ -450,8 +404,6 @@ export function SwapKit<Plugins extends PluginsType, Wallets extends WalletsType
450
404
  signMessage,
451
405
  swap,
452
406
  transfer,
453
- validateAddress,
454
407
  verifyMessage,
455
- api,
456
408
  };
457
409
  }
@@ -1,12 +1,14 @@
1
1
  import { Chain } from "@swapkit/helpers";
2
2
 
3
3
  export async function getAddressValidator() {
4
- const { cosmosValidateAddress } = await import("@swapkit/toolbox-cosmos");
5
- const { evmValidateAddress } = await import("@swapkit/toolbox-evm");
6
- const { substrateValidateAddress } = await import("@swapkit/toolbox-substrate");
7
- const { utxoValidateAddress } = await import("@swapkit/toolbox-utxo");
8
- const { validateAddress: solanaValidateAddress } = await import("@swapkit/toolbox-solana");
9
- const { validateAddress: validateRadixAddress } = await import("@swapkit/toolbox-radix");
4
+ const { cosmosValidateAddress } = await import("@swapkit/toolboxes/cosmos");
5
+ const { evmValidateAddress } = await import("@swapkit/toolboxes/evm");
6
+ const { substrateValidateAddress } = await import("@swapkit/toolboxes/substrate");
7
+ const { utxoValidateAddress } = await import("@swapkit/toolboxes/utxo");
8
+ const { getAddressValidator: getSolValidator } = await import("@swapkit/toolboxes/solana");
9
+ const { validateAddress: validateRadixAddress } = await import("@swapkit/toolboxes/radix");
10
+
11
+ const solanaValidateAddress = await getSolValidator();
10
12
 
11
13
  return function validateAddress({ address, chain }: { address: string; chain: Chain }) {
12
14
  switch (chain) {
package/src/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- export * from "@swapkit/api";
1
+ export * from "@swapkit/helpers/api";
2
2
  export * from "@swapkit/helpers";
3
3
  export * from "./client";
4
4
  export * from "./helpers/walletAddressValidator";