@tcswap/core 4.1.16

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,4 @@
1
+ var t=Object.create;var{getPrototypeOf:l,defineProperty:X,getOwnPropertyNames:O,getOwnPropertyDescriptor:e}=Object,b=Object.prototype.hasOwnProperty,T=(H,L,R)=>{for(let J of O(L))if(!b.call(H,J)&&J!=="default")X(H,J,{get:()=>L[J],enumerable:!0});if(R){for(let J of O(L))if(!b.call(R,J)&&J!=="default")X(R,J,{get:()=>L[J],enumerable:!0});return R}},U=(H,L,R)=>{R=H!=null?t(l(H)):{};let J=L||!H||!H.__esModule?X(R,"default",{value:H,enumerable:!0}):R;for(let $ of O(H))if(!b.call(J,$))X(J,$,{get:()=>H[$],enumerable:!0});return J},B=new WeakMap,a=(H)=>{var L=B.get(H),R;if(L)return L;if(L=X({},"__esModule",{value:!0}),H&&typeof H==="object"||typeof H==="function")O(H).map((J)=>!b.call(L,J)&&X(L,J,{get:()=>H[J],enumerable:!(R=e(H,J))||R.enumerable}));return B.set(H,L),L};var kk=(H,L)=>{for(var R in L)X(H,R,{get:L[R],enumerable:!0,configurable:!0,set:(J)=>L[R]=()=>J})};var F={};kk(F,{USwap:()=>qk});module.exports=a(F);var D=require("@tcswap/helpers");T(F,require("@tcswap/helpers"),module.exports);function qk({config:H,plugins:L,wallets:R,getActiveWallet:J}={}){if(H)D.USwapConfig.set(H);let $={},K=new Map,x=Object.entries(L||{}).reduce((k,[z,q])=>{let G=q({getWallet:m});return k[z]=G,k},{}),V=Object.entries(R||{}).reduce((k,[z,q])=>{let G=q.connectWallet({addChain:y});return k[z]=G,k},{});function C(k){let z=k&&x[k],q=Object.values(x).find((Y)=>Y.supportedUSwapProviders?.includes(k)),G=z||q;if(!G)throw new D.USwapError("core_plugin_not_found");return G}function y(k){let z=Q(k.chain),q=k?.balance||z?.balance||[D.AssetValue.from({chain:k.chain})],G={...z,...k,balance:q};$[k.chain]=G;let Y=k.walletType,_=K.get(Y);if(!_)_=new Map,K.set(Y,_);return _.set(k.chain,G),G}function f({assetValue:k,type:z="checkOnly",contractAddress:q}){let G=x[q];if(G){if(z===D.ApproveMode.CheckOnly&&"isAssetValueApproved"in G)return G.isAssetValueApproved({assetValue:k});if(z===D.ApproveMode.Approve&&"approveAssetValue"in G)return G.approveAssetValue({assetValue:k});throw new D.USwapError({errorKey:"core_approve_asset_target_invalid",info:{message:`Target ${String(q)} cannot be used for approve operation`}})}let Y=k.chain,_=D.EVMChains.includes(Y);if(_&&k.isGasAsset||!_||k.isSynthetic)return Promise.resolve(z==="checkOnly"?!0:"approved");let I=Q(Y),Z=z==="checkOnly"?I.isApproved:I.approve;if(!Z)throw new D.USwapError("core_wallet_connection_not_found");if(!(k.address&&I.address&&typeof q==="string"))throw new D.USwapError("core_approve_asset_address_or_from_not_found");return Z({amount:k.getBaseValue("bigint"),assetAddress:k.address,from:I.address,spenderAddress:q})}function N(k,z){return K.get(k)?.get(z)}function Q(k){return $[k]}function m(k){let z=J?.();if(!z)throw Error(`Unknown connected chain: ${k}`);return N(z,k)}function w(){return{...$}}function W(k){return Q(k)?.address||""}function g(k,z){return f({assetValue:k,contractAddress:z,type:D.ApproveMode.Approve})}function d(k,z){return f({assetValue:k,contractAddress:z,type:D.ApproveMode.CheckOnly})}function E(k){let z=Q(k);if(z?.walletType){let q=K.get(z.walletType);if(q){if(q.delete(k),q.size===0)K.delete(z.walletType)}}z?.disconnect?.(),delete $[k]}function u(){for(let k of Object.keys($))E(k)}function o(k,z){return z?v(k).then(({balance:q})=>q):Q(k)?.balance||[]}async function v(k,z=!0){let q=Q(k);if(!q)throw new D.USwapError("core_wallet_connection_not_found");let G=[D.AssetValue.from({chain:k})];if(q.balance=G,"getBalance"in q){let Y=await q.getBalance(q.address,z);q.balance=Y}return q}function p({route:k,pluginName:z,...q}){let G=C(z||k.providers[0]);if("swap"in G)return G.swap({...q,route:k});throw new D.USwapError("core_plugin_swap_not_found")}function h({assetValue:k,...z}){let q=k.chain;if([D.Chain.Radix].includes(q)||!Q(q))throw new D.USwapError("core_wallet_connection_not_found");return Q(q).transfer({...z,assetValue:k})}function r({chain:k,message:z}){let q=Q(k);if(!q)throw new D.USwapError("core_wallet_connection_not_found");if("signMessage"in q)return q.signMessage?.(z);throw new D.USwapError({errorKey:"core_wallet_sign_message_not_supported",info:{chain:k,wallet:q.walletType}})}async function c({address:k,chain:z,message:q,signature:G}){if(z!==D.Chain.THORChain)throw new D.USwapError({errorKey:"core_verify_message_not_supported",info:{chain:z}});let{getCosmosToolbox:Y}=await import("@tcswap/toolboxes/cosmos");return(await Y(z)).verifySignature({address:k,message:q,signature:G})}async function i({type:k,feeOptionKey:z,params:q}){let{assetValue:G}=q,{chain:Y}=G;if(!Q(Y))throw new D.USwapError("core_wallet_connection_not_found");let _=D.AssetValue.from({chain:Y}),{match:S}=await import("ts-pattern");return S(Y).returnType().with(...D.EVMChains,(I)=>{let{address:Z,...j}=Q(I),M=S(k).with("transfer",()=>j.createTransferTx(q)).with("approve",(s)=>{let{contractAddress:P}=q;return j.createApprovalTx({amount:G.getBaseValue("bigint"),assetAddress:G.address,from:Z,spenderAddress:P})}).with("swap",(s)=>{let{route:{providers:[P],tx:n}}=q;if(P&&[D.ProviderName.CHAINFLIP,D.ProviderName.CHAINFLIP_STREAMING].includes(P))return j.createTransferTx({assetValue:G,recipient:Z,sender:Z});let A=n;return{...A,value:BigInt(A.value)}}).otherwise(()=>{return});if(!M)return _;return j.estimateTransactionFee({...M,chain:I,feeOption:z})}).with(...D.UTXOChains,(I)=>{let{address:Z,...j}=Q(I);return j.estimateTransactionFee({...q,feeOptionKey:z,recipient:Z,sender:Z})}).with(...D.CosmosChains,async()=>{let{estimateTransactionFee:I}=await import("@tcswap/toolboxes/cosmos");return I(q)}).with(D.Chain.Polkadot,(I)=>{let Z=Q(I);return Z.estimateTransactionFee({...q,recipient:Z.address})}).with(D.Chain.Tron,(I)=>{let{address:Z,...j}=Q(I);return j.estimateTransactionFee({...q,recipient:Z,sender:Z})}).with(D.Chain.Ripple,(I)=>Q(I).estimateTransactionFee()).with(D.Chain.Ton,(I)=>Q(I).estimateTransactionFee()).with(D.Chain.Cardano,(I)=>Q(I).estimateTransactionFee()).with(D.Chain.Sui,(I)=>Q(I).estimateTransactionFee()).otherwise(async()=>_)}return{...x,...V,approveAssetValue:g,disconnectAll:u,disconnectChain:E,estimateTransactionFee:i,getAddress:W,getAllWallets:w,getBalance:o,getWallet:N,getWalletByChain:Q,getWalletWithBalance:v,isAssetValueApproved:d,signMessage:r,swap:p,transfer:h,verifyMessage:c}}
2
+
3
+ //# debugId=F32557C2C3D25F9164756E2164756E21
4
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/index.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * Modifications © 2025 Horizontal Systems.\n */\n\nimport {\n ApproveMode,\n type ApproveReturnType,\n AssetValue,\n Chain,\n type ChainWallet,\n type ConditionalAssetValueReturn,\n CosmosChains,\n type EVMChain,\n EVMChains,\n type FeeOption,\n type GenericTransferParams,\n ProviderName as PluginNameEnum,\n type SwapParams,\n USwapConfig,\n type USwapConfigState,\n USwapError,\n UTXOChains,\n type WalletOption,\n} from \"@tcswap/helpers\";\nimport type { EVMTransaction, QuoteResponseRoute } from \"@tcswap/helpers/api\";\nimport type { createPlugin } from \"@tcswap/plugins\";\nimport type { FullWallet } from \"@tcswap/toolboxes\";\nimport type { EVMCreateTransactionParams, EVMTransferParams } from \"@tcswap/toolboxes/evm\";\nimport type { createWallet } from \"@tcswap/wallets\";\n\nexport type USwapParams<P, W> = { config?: USwapConfigState; plugins?: P; wallets?: W };\n\nexport function USwap<\n Plugins extends ReturnType<typeof createPlugin>,\n Wallets extends ReturnType<typeof createWallet>,\n>({\n config,\n plugins,\n wallets,\n getActiveWallet,\n}: {\n config?: USwapConfigState;\n plugins?: Plugins;\n wallets?: Wallets;\n getActiveWallet?: () => WalletOption | undefined;\n} = {}) {\n if (config) {\n USwapConfig.set(config);\n }\n\n type PluginName = keyof Plugins;\n const connectedWalletsByChain = {} as FullWallet;\n const connectedWalletsByWallet = new Map<WalletOption, Map<Chain, FullWallet[Chain]>>();\n type ConnectedChains = keyof typeof connectedWalletsByChain;\n type ActionType = \"transfer\" | \"approve\" | \"swap\";\n\n type ActionParams<P extends PluginName> = {\n transfer: EVMTransferParams | (GenericTransferParams & { sender?: string });\n approve: { assetValue: AssetValue; contractAddress: string; feeOptionKey?: FeeOption };\n swap: SwapParams<P, QuoteResponseRoute> & { assetValue: AssetValue };\n };\n\n const availablePlugins = Object.entries(plugins || {}).reduce(\n (acc, [pluginName, plugin]) => {\n const methods = plugin({ getWallet: getSelectedWallet });\n\n acc[pluginName as PluginName] = methods as ReturnType<Plugins[keyof Plugins]>;\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 acc[walletName as keyof Wallets] = connectWallet as ReturnType<Wallets[keyof Wallets][\"connectWallet\"]>;\n return acc;\n },\n {} as {\n [key in keyof Wallets]: ReturnType<Wallets[key][\"connectWallet\"]>;\n },\n );\n\n function getUSwapPlugin<T extends PluginName>(pluginName?: T) {\n const pluginByName = pluginName && availablePlugins[pluginName];\n const pluginByProvider = Object.values(availablePlugins).find((plugin) =>\n plugin.supportedUSwapProviders?.includes(pluginName),\n );\n const plugin = pluginByName || pluginByProvider;\n\n if (!plugin) {\n throw new USwapError(\"core_plugin_not_found\");\n }\n\n return plugin as ReturnType<Plugins[T]>;\n }\n\n function addChain<T extends Chain>(connectWallet: Omit<ChainWallet<T>, \"balance\"> & { balance?: AssetValue[] }) {\n const currentWallet = getWalletByChain(connectWallet.chain);\n\n const balance = connectWallet?.balance ||\n currentWallet?.balance || [AssetValue.from({ chain: connectWallet.chain })];\n\n const wallet = { ...currentWallet, ...connectWallet, balance };\n connectedWalletsByChain[connectWallet.chain] = wallet as FullWallet[T];\n\n const walletOption = connectWallet.walletType as WalletOption;\n let chainMap = connectedWalletsByWallet.get(walletOption);\n if (!chainMap) {\n chainMap = new Map<Chain, any>();\n connectedWalletsByWallet.set(walletOption, chainMap);\n }\n\n chainMap.set(connectWallet.chain, wallet as FullWallet[T]);\n\n return wallet;\n }\n\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 USwapError({\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 = getWalletByChain(chain);\n const walletAction = type === \"checkOnly\" ? wallet.isApproved : wallet.approve;\n if (!walletAction) throw new USwapError(\"core_wallet_connection_not_found\");\n\n if (!(assetValue.address && wallet.address && typeof spenderAddress === \"string\")) {\n throw new USwapError(\"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>(walletOption: WalletOption, chain: T): FullWallet[T] {\n return connectedWalletsByWallet.get(walletOption)?.get(chain) as FullWallet[T];\n }\n\n function getWalletByChain<T extends ConnectedChains>(chain: T) {\n return connectedWalletsByChain[chain];\n }\n\n function getSelectedWallet<T extends ConnectedChains>(chain: T): FullWallet[T] {\n const selected = getActiveWallet?.();\n if (!selected) {\n throw new Error(`Unknown connected chain: ${chain}`);\n }\n\n return getWallet(selected, chain) as FullWallet[T];\n }\n\n function getAllWallets() {\n return { ...connectedWalletsByChain };\n }\n\n function getAddress<T extends Chain>(chain: T) {\n return getWalletByChain(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 = getWalletByChain(chain);\n if (wallet?.walletType) {\n const chainMap = connectedWalletsByWallet.get(wallet.walletType as WalletOption);\n if (chainMap) {\n chainMap.delete(chain);\n if (chainMap.size === 0) {\n connectedWalletsByWallet.delete(wallet.walletType as WalletOption);\n }\n }\n }\n\n wallet?.disconnect?.();\n delete connectedWalletsByChain[chain];\n }\n\n function disconnectAll() {\n for (const chain of Object.keys(connectedWalletsByChain) as (keyof typeof connectedWalletsByChain)[]) {\n disconnectChain(chain);\n }\n }\n\n function getBalance<T extends Chain, R extends boolean>(chain: T, refresh?: R): ConditionalAssetValueReturn<R> {\n return (\n refresh ? getWalletWithBalance(chain).then(({ balance }) => balance) : getWalletByChain(chain)?.balance || []\n ) as ConditionalAssetValueReturn<R>;\n }\n\n async function getWalletWithBalance<T extends Chain>(chain: T, scamFilter = true) {\n const wallet = getWalletByChain(chain);\n if (!wallet) {\n throw new USwapError(\"core_wallet_connection_not_found\");\n }\n const defaultBalance = [AssetValue.from({ chain })];\n wallet.balance = defaultBalance;\n\n if (\"getBalance\" in wallet) {\n const balance = await wallet.getBalance(wallet.address, scamFilter);\n wallet.balance = balance;\n }\n\n return wallet;\n }\n\n function swap<T extends PluginName>({ route, pluginName, ...rest }: SwapParams<T, QuoteResponseRoute>) {\n const plugin = getUSwapPlugin(pluginName || route.providers[0]);\n\n if (\"swap\" in plugin) {\n // @ts-expect-error TODO: fix this\n return plugin.swap({ ...rest, route });\n }\n\n throw new USwapError(\"core_plugin_swap_not_found\");\n }\n\n function transfer({ assetValue, ...params }: GenericTransferParams | EVMTransferParams) {\n const chain = assetValue.chain;\n if ([Chain.Radix].includes(chain) || !getWalletByChain(chain)) {\n throw new USwapError(\"core_wallet_connection_not_found\");\n }\n const wallet = getWalletByChain(chain as Exclude<Chain, typeof Chain.Radix | typeof Chain.Near>);\n\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 = getWalletByChain(chain);\n if (!wallet) throw new USwapError(\"core_wallet_connection_not_found\");\n\n if (\"signMessage\" in wallet) {\n return wallet.signMessage?.(message);\n }\n\n throw new USwapError({\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 }: {\n chain: Chain;\n signature: string;\n message: string;\n address: string;\n }) {\n if (chain !== Chain.THORChain) {\n throw new USwapError({ errorKey: \"core_verify_message_not_supported\", info: { chain } });\n }\n\n const { getCosmosToolbox } = await import(\"@tcswap/toolboxes/cosmos\");\n const toolbox = await getCosmosToolbox(chain);\n\n return toolbox.verifySignature({ address, message, signature });\n }\n\n async function estimateTransactionFee<P extends PluginName, T extends ActionType>({\n type,\n feeOptionKey,\n params,\n }: {\n type: T;\n params: ActionParams<P>[T];\n feeOptionKey: FeeOption;\n }): Promise<AssetValue | undefined> {\n const { assetValue } = params;\n const { chain } = assetValue;\n\n if (!getWalletByChain(chain as Chain)) throw new USwapError(\"core_wallet_connection_not_found\");\n\n const baseValue = AssetValue.from({ chain });\n const { match } = await import(\"ts-pattern\");\n\n return match(chain as Chain)\n .returnType<Promise<AssetValue | undefined> | AssetValue | undefined>()\n .with(...EVMChains, (chain) => {\n const { address, ...wallet } = getWalletByChain(chain);\n\n const tx = match(type as ActionType)\n .with(\"transfer\", () => wallet.createTransferTx(params as EVMCreateTransactionParams))\n .with(\"approve\", (_t) => {\n const { contractAddress } = params as ActionParams<P>[typeof _t];\n\n return wallet.createApprovalTx({\n amount: assetValue.getBaseValue(\"bigint\"),\n assetAddress: assetValue.address as string,\n from: address,\n spenderAddress: contractAddress,\n });\n })\n .with(\"swap\", (_t) => {\n const {\n route: {\n providers: [plugin],\n tx,\n },\n } = params as ActionParams<P>[typeof _t];\n\n if (plugin && [PluginNameEnum.CHAINFLIP, PluginNameEnum.CHAINFLIP_STREAMING].includes(plugin)) {\n return wallet.createTransferTx({ assetValue, recipient: address, sender: address });\n }\n\n const evmTx = tx as EVMTransaction;\n\n return { ...evmTx, value: BigInt(evmTx.value) };\n })\n .otherwise(() => undefined);\n\n if (!tx) return baseValue;\n\n return wallet.estimateTransactionFee({ ...tx, chain, feeOption: feeOptionKey });\n })\n .with(...UTXOChains, (chain) => {\n const { address, ...wallet } = getWalletByChain(chain);\n return wallet.estimateTransactionFee({ ...params, feeOptionKey, recipient: address, sender: address });\n })\n .with(...CosmosChains, async () => {\n const { estimateTransactionFee } = await import(\"@tcswap/toolboxes/cosmos\");\n return estimateTransactionFee(params);\n })\n .with(Chain.Polkadot, (chain) => {\n const wallet = getWalletByChain(chain);\n return wallet.estimateTransactionFee({ ...params, recipient: wallet.address });\n })\n .with(Chain.Tron, (chain) => {\n const { address, ...wallet } = getWalletByChain(chain);\n return wallet.estimateTransactionFee({ ...params, recipient: address, sender: address });\n })\n .with(Chain.Ripple, (chain) => getWalletByChain(chain).estimateTransactionFee())\n .with(Chain.Ton, (chain) => getWalletByChain(chain).estimateTransactionFee())\n .with(Chain.Cardano, (chain) => getWalletByChain(chain).estimateTransactionFee())\n .with(Chain.Sui, (chain) => getWalletByChain(chain).estimateTransactionFee())\n .otherwise(async () => baseValue);\n }\n\n return {\n ...availablePlugins,\n ...connectWalletMethods,\n\n approveAssetValue,\n disconnectAll,\n disconnectChain,\n estimateTransactionFee,\n getAddress,\n getAllWallets,\n getBalance,\n getWallet,\n getWalletByChain,\n getWalletWithBalance,\n isAssetValueApproved,\n signMessage,\n swap,\n transfer,\n verifyMessage,\n };\n}\n\nexport * from \"@tcswap/helpers\";\n"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "F32557C2C3D25F9164756E2164756E21",
9
+ "names": []
10
+ }
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ var l=Object.create;var{getPrototypeOf:e,defineProperty:A,getOwnPropertyNames:a}=Object;var kk=Object.prototype.hasOwnProperty;var O=(I,j,$)=>{$=I!=null?l(e(I)):{};let X=j||!I||!I.__esModule?A($,"default",{value:I,enumerable:!0}):$;for(let Y of a(I))if(!kk.call(X,Y))A(X,Y,{get:()=>I[Y],enumerable:!0});return X};var b=((I)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(I,{get:(j,$)=>(typeof require<"u"?require:j)[$]}):I)(function(I){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+I+'" is not supported')});import{ApproveMode as x,AssetValue as S,Chain as _,CosmosChains as qk,EVMChains as B,ProviderName as V,USwapConfig as zk,USwapError as R,UTXOChains as Dk}from"@tcswap/helpers";export*from"@tcswap/helpers";function Ik({config:I,plugins:j,wallets:$,getActiveWallet:X}={}){if(I)zk.set(I);let Y={},F=new Map,K=Object.entries(j||{}).reduce((k,[z,q])=>{let D=q({getWallet:w});return k[z]=D,k},{}),C=Object.entries($||{}).reduce((k,[z,q])=>{let D=q.connectWallet({addChain:m});return k[z]=D,k},{});function y(k){let z=k&&K[k],q=Object.values(K).find((J)=>J.supportedUSwapProviders?.includes(k)),D=z||q;if(!D)throw new R("core_plugin_not_found");return D}function m(k){let z=H(k.chain),q=k?.balance||z?.balance||[S.from({chain:k.chain})],D={...z,...k,balance:q};Y[k.chain]=D;let J=k.walletType,Q=F.get(J);if(!Q)Q=new Map,F.set(J,Q);return Q.set(k.chain,D),D}function U({assetValue:k,type:z="checkOnly",contractAddress:q}){let D=K[q];if(D){if(z===x.CheckOnly&&"isAssetValueApproved"in D)return D.isAssetValueApproved({assetValue:k});if(z===x.Approve&&"approveAssetValue"in D)return D.approveAssetValue({assetValue:k});throw new R({errorKey:"core_approve_asset_target_invalid",info:{message:`Target ${String(q)} cannot be used for approve operation`}})}let J=k.chain,Q=B.includes(J);if(Q&&k.isGasAsset||!Q||k.isSynthetic)return Promise.resolve(z==="checkOnly"?!0:"approved");let G=H(J),L=z==="checkOnly"?G.isApproved:G.approve;if(!L)throw new R("core_wallet_connection_not_found");if(!(k.address&&G.address&&typeof q==="string"))throw new R("core_approve_asset_address_or_from_not_found");return L({amount:k.getBaseValue("bigint"),assetAddress:k.address,from:G.address,spenderAddress:q})}function f(k,z){return F.get(k)?.get(z)}function H(k){return Y[k]}function w(k){let z=X?.();if(!z)throw Error(`Unknown connected chain: ${k}`);return f(z,k)}function W(){return{...Y}}function g(k){return H(k)?.address||""}function d(k,z){return U({assetValue:k,contractAddress:z,type:x.Approve})}function u(k,z){return U({assetValue:k,contractAddress:z,type:x.CheckOnly})}function N(k){let z=H(k);if(z?.walletType){let q=F.get(z.walletType);if(q){if(q.delete(k),q.size===0)F.delete(z.walletType)}}z?.disconnect?.(),delete Y[k]}function o(){for(let k of Object.keys(Y))N(k)}function p(k,z){return z?E(k).then(({balance:q})=>q):H(k)?.balance||[]}async function E(k,z=!0){let q=H(k);if(!q)throw new R("core_wallet_connection_not_found");let D=[S.from({chain:k})];if(q.balance=D,"getBalance"in q){let J=await q.getBalance(q.address,z);q.balance=J}return q}function h({route:k,pluginName:z,...q}){let D=y(z||k.providers[0]);if("swap"in D)return D.swap({...q,route:k});throw new R("core_plugin_swap_not_found")}function r({assetValue:k,...z}){let q=k.chain;if([_.Radix].includes(q)||!H(q))throw new R("core_wallet_connection_not_found");return H(q).transfer({...z,assetValue:k})}function c({chain:k,message:z}){let q=H(k);if(!q)throw new R("core_wallet_connection_not_found");if("signMessage"in q)return q.signMessage?.(z);throw new R({errorKey:"core_wallet_sign_message_not_supported",info:{chain:k,wallet:q.walletType}})}async function i({address:k,chain:z,message:q,signature:D}){if(z!==_.THORChain)throw new R({errorKey:"core_verify_message_not_supported",info:{chain:z}});let{getCosmosToolbox:J}=await import("@tcswap/toolboxes/cosmos");return(await J(z)).verifySignature({address:k,message:q,signature:D})}async function s({type:k,feeOptionKey:z,params:q}){let{assetValue:D}=q,{chain:J}=D;if(!H(J))throw new R("core_wallet_connection_not_found");let Q=S.from({chain:J}),{match:P}=await import("ts-pattern");return P(J).returnType().with(...B,(G)=>{let{address:L,...Z}=H(G),v=P(k).with("transfer",()=>Z.createTransferTx(q)).with("approve",(n)=>{let{contractAddress:T}=q;return Z.createApprovalTx({amount:D.getBaseValue("bigint"),assetAddress:D.address,from:L,spenderAddress:T})}).with("swap",(n)=>{let{route:{providers:[T],tx:t}}=q;if(T&&[V.CHAINFLIP,V.CHAINFLIP_STREAMING].includes(T))return Z.createTransferTx({assetValue:D,recipient:L,sender:L});let M=t;return{...M,value:BigInt(M.value)}}).otherwise(()=>{return});if(!v)return Q;return Z.estimateTransactionFee({...v,chain:G,feeOption:z})}).with(...Dk,(G)=>{let{address:L,...Z}=H(G);return Z.estimateTransactionFee({...q,feeOptionKey:z,recipient:L,sender:L})}).with(...qk,async()=>{let{estimateTransactionFee:G}=await import("@tcswap/toolboxes/cosmos");return G(q)}).with(_.Polkadot,(G)=>{let L=H(G);return L.estimateTransactionFee({...q,recipient:L.address})}).with(_.Tron,(G)=>{let{address:L,...Z}=H(G);return Z.estimateTransactionFee({...q,recipient:L,sender:L})}).with(_.Ripple,(G)=>H(G).estimateTransactionFee()).with(_.Ton,(G)=>H(G).estimateTransactionFee()).with(_.Cardano,(G)=>H(G).estimateTransactionFee()).with(_.Sui,(G)=>H(G).estimateTransactionFee()).otherwise(async()=>Q)}return{...K,...C,approveAssetValue:d,disconnectAll:o,disconnectChain:N,estimateTransactionFee:s,getAddress:g,getAllWallets:W,getBalance:p,getWallet:f,getWalletByChain:H,getWalletWithBalance:E,isAssetValueApproved:u,signMessage:c,swap:h,transfer:r,verifyMessage:i}}export{Ik as USwap};
2
+
3
+ //# debugId=81A3B00E6E14EC8164756E2164756E21
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/index.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * Modifications © 2025 Horizontal Systems.\n */\n\nimport {\n ApproveMode,\n type ApproveReturnType,\n AssetValue,\n Chain,\n type ChainWallet,\n type ConditionalAssetValueReturn,\n CosmosChains,\n type EVMChain,\n EVMChains,\n type FeeOption,\n type GenericTransferParams,\n ProviderName as PluginNameEnum,\n type SwapParams,\n USwapConfig,\n type USwapConfigState,\n USwapError,\n UTXOChains,\n type WalletOption,\n} from \"@tcswap/helpers\";\nimport type { EVMTransaction, QuoteResponseRoute } from \"@tcswap/helpers/api\";\nimport type { createPlugin } from \"@tcswap/plugins\";\nimport type { FullWallet } from \"@tcswap/toolboxes\";\nimport type { EVMCreateTransactionParams, EVMTransferParams } from \"@tcswap/toolboxes/evm\";\nimport type { createWallet } from \"@tcswap/wallets\";\n\nexport type USwapParams<P, W> = { config?: USwapConfigState; plugins?: P; wallets?: W };\n\nexport function USwap<\n Plugins extends ReturnType<typeof createPlugin>,\n Wallets extends ReturnType<typeof createWallet>,\n>({\n config,\n plugins,\n wallets,\n getActiveWallet,\n}: {\n config?: USwapConfigState;\n plugins?: Plugins;\n wallets?: Wallets;\n getActiveWallet?: () => WalletOption | undefined;\n} = {}) {\n if (config) {\n USwapConfig.set(config);\n }\n\n type PluginName = keyof Plugins;\n const connectedWalletsByChain = {} as FullWallet;\n const connectedWalletsByWallet = new Map<WalletOption, Map<Chain, FullWallet[Chain]>>();\n type ConnectedChains = keyof typeof connectedWalletsByChain;\n type ActionType = \"transfer\" | \"approve\" | \"swap\";\n\n type ActionParams<P extends PluginName> = {\n transfer: EVMTransferParams | (GenericTransferParams & { sender?: string });\n approve: { assetValue: AssetValue; contractAddress: string; feeOptionKey?: FeeOption };\n swap: SwapParams<P, QuoteResponseRoute> & { assetValue: AssetValue };\n };\n\n const availablePlugins = Object.entries(plugins || {}).reduce(\n (acc, [pluginName, plugin]) => {\n const methods = plugin({ getWallet: getSelectedWallet });\n\n acc[pluginName as PluginName] = methods as ReturnType<Plugins[keyof Plugins]>;\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 acc[walletName as keyof Wallets] = connectWallet as ReturnType<Wallets[keyof Wallets][\"connectWallet\"]>;\n return acc;\n },\n {} as {\n [key in keyof Wallets]: ReturnType<Wallets[key][\"connectWallet\"]>;\n },\n );\n\n function getUSwapPlugin<T extends PluginName>(pluginName?: T) {\n const pluginByName = pluginName && availablePlugins[pluginName];\n const pluginByProvider = Object.values(availablePlugins).find((plugin) =>\n plugin.supportedUSwapProviders?.includes(pluginName),\n );\n const plugin = pluginByName || pluginByProvider;\n\n if (!plugin) {\n throw new USwapError(\"core_plugin_not_found\");\n }\n\n return plugin as ReturnType<Plugins[T]>;\n }\n\n function addChain<T extends Chain>(connectWallet: Omit<ChainWallet<T>, \"balance\"> & { balance?: AssetValue[] }) {\n const currentWallet = getWalletByChain(connectWallet.chain);\n\n const balance = connectWallet?.balance ||\n currentWallet?.balance || [AssetValue.from({ chain: connectWallet.chain })];\n\n const wallet = { ...currentWallet, ...connectWallet, balance };\n connectedWalletsByChain[connectWallet.chain] = wallet as FullWallet[T];\n\n const walletOption = connectWallet.walletType as WalletOption;\n let chainMap = connectedWalletsByWallet.get(walletOption);\n if (!chainMap) {\n chainMap = new Map<Chain, any>();\n connectedWalletsByWallet.set(walletOption, chainMap);\n }\n\n chainMap.set(connectWallet.chain, wallet as FullWallet[T]);\n\n return wallet;\n }\n\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 USwapError({\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 = getWalletByChain(chain);\n const walletAction = type === \"checkOnly\" ? wallet.isApproved : wallet.approve;\n if (!walletAction) throw new USwapError(\"core_wallet_connection_not_found\");\n\n if (!(assetValue.address && wallet.address && typeof spenderAddress === \"string\")) {\n throw new USwapError(\"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>(walletOption: WalletOption, chain: T): FullWallet[T] {\n return connectedWalletsByWallet.get(walletOption)?.get(chain) as FullWallet[T];\n }\n\n function getWalletByChain<T extends ConnectedChains>(chain: T) {\n return connectedWalletsByChain[chain];\n }\n\n function getSelectedWallet<T extends ConnectedChains>(chain: T): FullWallet[T] {\n const selected = getActiveWallet?.();\n if (!selected) {\n throw new Error(`Unknown connected chain: ${chain}`);\n }\n\n return getWallet(selected, chain) as FullWallet[T];\n }\n\n function getAllWallets() {\n return { ...connectedWalletsByChain };\n }\n\n function getAddress<T extends Chain>(chain: T) {\n return getWalletByChain(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 = getWalletByChain(chain);\n if (wallet?.walletType) {\n const chainMap = connectedWalletsByWallet.get(wallet.walletType as WalletOption);\n if (chainMap) {\n chainMap.delete(chain);\n if (chainMap.size === 0) {\n connectedWalletsByWallet.delete(wallet.walletType as WalletOption);\n }\n }\n }\n\n wallet?.disconnect?.();\n delete connectedWalletsByChain[chain];\n }\n\n function disconnectAll() {\n for (const chain of Object.keys(connectedWalletsByChain) as (keyof typeof connectedWalletsByChain)[]) {\n disconnectChain(chain);\n }\n }\n\n function getBalance<T extends Chain, R extends boolean>(chain: T, refresh?: R): ConditionalAssetValueReturn<R> {\n return (\n refresh ? getWalletWithBalance(chain).then(({ balance }) => balance) : getWalletByChain(chain)?.balance || []\n ) as ConditionalAssetValueReturn<R>;\n }\n\n async function getWalletWithBalance<T extends Chain>(chain: T, scamFilter = true) {\n const wallet = getWalletByChain(chain);\n if (!wallet) {\n throw new USwapError(\"core_wallet_connection_not_found\");\n }\n const defaultBalance = [AssetValue.from({ chain })];\n wallet.balance = defaultBalance;\n\n if (\"getBalance\" in wallet) {\n const balance = await wallet.getBalance(wallet.address, scamFilter);\n wallet.balance = balance;\n }\n\n return wallet;\n }\n\n function swap<T extends PluginName>({ route, pluginName, ...rest }: SwapParams<T, QuoteResponseRoute>) {\n const plugin = getUSwapPlugin(pluginName || route.providers[0]);\n\n if (\"swap\" in plugin) {\n // @ts-expect-error TODO: fix this\n return plugin.swap({ ...rest, route });\n }\n\n throw new USwapError(\"core_plugin_swap_not_found\");\n }\n\n function transfer({ assetValue, ...params }: GenericTransferParams | EVMTransferParams) {\n const chain = assetValue.chain;\n if ([Chain.Radix].includes(chain) || !getWalletByChain(chain)) {\n throw new USwapError(\"core_wallet_connection_not_found\");\n }\n const wallet = getWalletByChain(chain as Exclude<Chain, typeof Chain.Radix | typeof Chain.Near>);\n\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 = getWalletByChain(chain);\n if (!wallet) throw new USwapError(\"core_wallet_connection_not_found\");\n\n if (\"signMessage\" in wallet) {\n return wallet.signMessage?.(message);\n }\n\n throw new USwapError({\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 }: {\n chain: Chain;\n signature: string;\n message: string;\n address: string;\n }) {\n if (chain !== Chain.THORChain) {\n throw new USwapError({ errorKey: \"core_verify_message_not_supported\", info: { chain } });\n }\n\n const { getCosmosToolbox } = await import(\"@tcswap/toolboxes/cosmos\");\n const toolbox = await getCosmosToolbox(chain);\n\n return toolbox.verifySignature({ address, message, signature });\n }\n\n async function estimateTransactionFee<P extends PluginName, T extends ActionType>({\n type,\n feeOptionKey,\n params,\n }: {\n type: T;\n params: ActionParams<P>[T];\n feeOptionKey: FeeOption;\n }): Promise<AssetValue | undefined> {\n const { assetValue } = params;\n const { chain } = assetValue;\n\n if (!getWalletByChain(chain as Chain)) throw new USwapError(\"core_wallet_connection_not_found\");\n\n const baseValue = AssetValue.from({ chain });\n const { match } = await import(\"ts-pattern\");\n\n return match(chain as Chain)\n .returnType<Promise<AssetValue | undefined> | AssetValue | undefined>()\n .with(...EVMChains, (chain) => {\n const { address, ...wallet } = getWalletByChain(chain);\n\n const tx = match(type as ActionType)\n .with(\"transfer\", () => wallet.createTransferTx(params as EVMCreateTransactionParams))\n .with(\"approve\", (_t) => {\n const { contractAddress } = params as ActionParams<P>[typeof _t];\n\n return wallet.createApprovalTx({\n amount: assetValue.getBaseValue(\"bigint\"),\n assetAddress: assetValue.address as string,\n from: address,\n spenderAddress: contractAddress,\n });\n })\n .with(\"swap\", (_t) => {\n const {\n route: {\n providers: [plugin],\n tx,\n },\n } = params as ActionParams<P>[typeof _t];\n\n if (plugin && [PluginNameEnum.CHAINFLIP, PluginNameEnum.CHAINFLIP_STREAMING].includes(plugin)) {\n return wallet.createTransferTx({ assetValue, recipient: address, sender: address });\n }\n\n const evmTx = tx as EVMTransaction;\n\n return { ...evmTx, value: BigInt(evmTx.value) };\n })\n .otherwise(() => undefined);\n\n if (!tx) return baseValue;\n\n return wallet.estimateTransactionFee({ ...tx, chain, feeOption: feeOptionKey });\n })\n .with(...UTXOChains, (chain) => {\n const { address, ...wallet } = getWalletByChain(chain);\n return wallet.estimateTransactionFee({ ...params, feeOptionKey, recipient: address, sender: address });\n })\n .with(...CosmosChains, async () => {\n const { estimateTransactionFee } = await import(\"@tcswap/toolboxes/cosmos\");\n return estimateTransactionFee(params);\n })\n .with(Chain.Polkadot, (chain) => {\n const wallet = getWalletByChain(chain);\n return wallet.estimateTransactionFee({ ...params, recipient: wallet.address });\n })\n .with(Chain.Tron, (chain) => {\n const { address, ...wallet } = getWalletByChain(chain);\n return wallet.estimateTransactionFee({ ...params, recipient: address, sender: address });\n })\n .with(Chain.Ripple, (chain) => getWalletByChain(chain).estimateTransactionFee())\n .with(Chain.Ton, (chain) => getWalletByChain(chain).estimateTransactionFee())\n .with(Chain.Cardano, (chain) => getWalletByChain(chain).estimateTransactionFee())\n .with(Chain.Sui, (chain) => getWalletByChain(chain).estimateTransactionFee())\n .otherwise(async () => baseValue);\n }\n\n return {\n ...availablePlugins,\n ...connectWalletMethods,\n\n approveAssetValue,\n disconnectAll,\n disconnectChain,\n estimateTransactionFee,\n getAddress,\n getAllWallets,\n getBalance,\n getWallet,\n getWalletByChain,\n getWalletWithBalance,\n isAssetValueApproved,\n signMessage,\n swap,\n transfer,\n verifyMessage,\n };\n}\n\nexport * from \"@tcswap/helpers\";\n"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "81A3B00E6E14EC8164756E2164756E21",
9
+ "names": []
10
+ }