@swapkit/core 1.0.0-rc.160 → 1.0.0-rc.161

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.js CHANGED
@@ -63,8 +63,12 @@ function SwapKit({
63
63
  return acc;
64
64
  }, {}) : wallets;
65
65
  const connectedWallets = {};
66
- const availablePlugins = Object.entries(compatPlugins).reduce((acc, [pluginName, { plugin, config: config2 }]) => {
67
- const methods = plugin({ wallets: connectedWallets, stagenet, config: config2 });
66
+ const availablePlugins = Object.entries(compatPlugins).reduce((acc, [pluginName, { plugin, config: pluginConfig }]) => {
67
+ const methods = plugin({
68
+ wallets: connectedWallets,
69
+ stagenet,
70
+ config: pluginConfig ?? config
71
+ });
68
72
  acc[pluginName] = methods;
69
73
  return acc;
70
74
  }, {});
@@ -129,6 +133,9 @@ function SwapKit({
129
133
  function getWallet(chain) {
130
134
  return connectedWallets[chain];
131
135
  }
136
+ function getAllWallets() {
137
+ return { ...connectedWallets };
138
+ }
132
139
  function getAddress(chain) {
133
140
  return getWallet(chain)?.address || "";
134
141
  }
@@ -168,6 +175,23 @@ function SwapKit({
168
175
  }
169
176
  throw new SwapKitError("core_plugin_swap_not_found");
170
177
  }
178
+ function disconnectAll() {
179
+ for (const chain of Object.keys(connectedWallets)) {
180
+ const wallet = connectedWallets[chain];
181
+ if ("disconnect" in wallet) {
182
+ wallet.disconnect();
183
+ }
184
+ delete connectedWallets[chain];
185
+ }
186
+ }
187
+ function disconnectChain(chain) {
188
+ const wallet = connectedWallets[chain];
189
+ const disconnect = wallet?.disconnect;
190
+ if (disconnect) {
191
+ disconnect();
192
+ }
193
+ delete connectedWallets[chain];
194
+ }
171
195
  return {
172
196
  ...availablePlugins,
173
197
  ...connectWalletMethods,
@@ -177,14 +201,17 @@ function SwapKit({
177
201
  getExplorerAddressUrl,
178
202
  getExplorerTxUrl,
179
203
  getWallet,
204
+ getAllWallets,
180
205
  getWalletWithBalance,
181
206
  isAssetValueApproved,
182
207
  swap,
183
- validateAddress
208
+ validateAddress,
209
+ disconnectAll,
210
+ disconnectChain
184
211
  };
185
212
  }
186
213
  export {
187
214
  SwapKit
188
215
  };
189
216
 
190
- //# debugId=120429E512FFA90264756e2164756e21
217
+ //# debugId=E0205D68B547A0FA64756e2164756e21
package/dist/index.js.map CHANGED
@@ -3,10 +3,10 @@
3
3
  "sources": ["../src/index.ts", "../src/client.ts", "../src/helpers/explorerUrls.ts"],
4
4
  "sourcesContent": [
5
5
  "export * from \"@swapkit/api\";\nexport * from \"@swapkit/helpers\";\n\nexport * from \"./client.ts\";\nexport * from \"./types.ts\";\n",
6
- "import {\n type AddChainWalletParams,\n ApproveMode,\n type ApproveReturnType,\n AssetValue,\n type Chain,\n type ConnectConfig,\n type EVMChain,\n EVMChains,\n type ProviderName as PluginNameEnum,\n SwapKitError,\n type SwapParams,\n} from \"@swapkit/helpers\";\nimport type { BaseEVMWallet } from \"@swapkit/toolbox-evm\";\n\nimport {\n getExplorerAddressUrl as getAddressUrl,\n getExplorerTxUrl as getTxUrl,\n} from \"./helpers/explorerUrls.ts\";\nimport type { Apis, SwapKitPluginInterface, SwapKitWallet, Wallet } from \"./types.ts\";\n\nexport function SwapKit<\n Plugins extends { [key in string]: SwapKitPluginInterface<{ [key in string]: Todo }> },\n Wallets extends { [key in string]: SwapKitWallet<NotWorth[]> },\n>({\n apis = {},\n config = {},\n plugins,\n rpcUrls = {},\n stagenet = false,\n wallets,\n}: {\n apis?: Apis;\n config?: ConnectConfig;\n plugins: Plugins;\n rpcUrls?: { [key in Chain]?: string };\n stagenet?: boolean;\n wallets: Wallets;\n}) {\n type PluginName = keyof Plugins;\n\n /**\n * @REMOVE (V1)\n * Compatibility layer for plugins and wallets for easier migration and backwards compatibility\n */\n const compatPlugins: Plugins = Array.isArray(plugins)\n ? plugins.reduce((acc, pluginInterface) => {\n // @ts-ignore Ignore until we remove the compatibility layer\n const { name, plugin } = Object.values(pluginInterface)?.[0] || {};\n acc[name] = plugin;\n return acc;\n }, {})\n : plugins;\n const compatWallets: Wallets = Array.isArray(wallets)\n ? wallets.reduce((acc, wallet) => {\n // @ts-ignore Ignore until we remove the compatibility layer\n const [walletName, connectWallet] = Object.entries(wallet)?.[0] || {};\n acc[walletName] = connectWallet;\n return acc;\n }, {})\n : wallets;\n\n const connectedWallets = {} as Wallet;\n const availablePlugins = Object.entries(compatPlugins).reduce(\n (acc, [pluginName, { plugin, config }]) => {\n const methods = plugin({ wallets: connectedWallets, stagenet, config });\n\n // @ts-expect-error\n acc[pluginName] = methods;\n return acc;\n },\n {} as { [key in PluginName]: ReturnType<Plugins[key][\"plugin\"]> },\n );\n\n const connectWalletMethods = Object.entries(compatWallets).reduce(\n (acc, [walletName, wallet]) => {\n const connectWallet = wallet({ addChain, config, apis, rpcUrls });\n\n // @ts-expect-error\n acc[walletName] = connectWallet;\n return acc;\n },\n {} as { [key in keyof Wallets]: ReturnType<Wallets[key]> },\n );\n\n /**\n * @Private\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\", \"Could not find the requested plugin\");\n }\n\n return plugin;\n }\n\n /**\n * @Private\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\", \"Could not find the requested plugin\");\n }\n\n return plugin;\n }\n\n function addChain<T extends Chain>(connectWallet: AddChainWalletParams<T>) {\n // @ts-expect-error: TODO\n connectedWallets[connectWallet.chain] = 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 \"core_approve_asset_target_invalid\",\n `Target ${String(spenderAddress)} cannot be used for approve operation`,\n );\n }\n\n const { address, chain, isGasAsset, isSynthetic } = assetValue;\n const isEVMChain = EVMChains.includes(chain as EVMChain);\n const isNativeEVM = isEVMChain && isGasAsset;\n\n if (isNativeEVM || !isEVMChain || isSynthetic) {\n return Promise.resolve(type === \"checkOnly\" ? true : \"approved\") as ApproveReturnType<T>;\n }\n\n const walletMethods = connectedWallets[chain] as BaseEVMWallet;\n const walletAction = type === \"checkOnly\" ? walletMethods?.isApproved : walletMethods?.approve;\n if (!walletAction) throw new SwapKitError(\"core_wallet_connection_not_found\");\n\n const from = getAddress(chain);\n if (!(address && from && 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: address,\n from,\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 function getAddress<T extends Chain>(chain: T) {\n return getWallet(chain)?.address || \"\";\n }\n /**\n * TODO: Figure out validation without connecting to wallet\n */\n function validateAddress({ address, chain }: { address: string; chain: Chain }) {\n // @ts-expect-error TODO add validate address to radix\n return getWallet(chain)?.validateAddress?.(address);\n }\n\n function getBalance<T extends Chain>(chain: T, refresh?: boolean) {\n if (refresh) {\n return getWalletWithBalance(chain).then((wallet) => wallet.balance);\n }\n\n return getWallet(chain)?.balance || [];\n }\n\n async function getWalletWithBalance<T extends Chain>(chain: T, potentialScamFilter = true) {\n const defaultBalance = [AssetValue.fromChainOrSignature(chain)];\n const wallet = getWallet(chain);\n\n if (!wallet) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n\n if (\"getBalance\" in wallet) {\n // @ts-expect-error TODO add getBalance to radix\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 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 swap<T extends PluginName>({ route, pluginName, ...rest }: SwapParams<T>) {\n const plugin =\n (pluginName && getSwapKitPlugin(pluginName)) ||\n getSwapKitPluginForSKProvider(route.providers[0] as PluginNameEnum);\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 return {\n ...availablePlugins,\n ...connectWalletMethods,\n\n approveAssetValue,\n getAddress,\n getBalance,\n getExplorerAddressUrl: getAddressUrl,\n getExplorerTxUrl: getTxUrl,\n getWallet,\n getWalletWithBalance,\n isAssetValueApproved,\n swap,\n validateAddress,\n };\n}\n",
6
+ "import {\n type AddChainWalletParams,\n ApproveMode,\n type ApproveReturnType,\n AssetValue,\n type Chain,\n type ConnectConfig,\n type EVMChain,\n EVMChains,\n type ProviderName as PluginNameEnum,\n SwapKitError,\n type SwapParams,\n} from \"@swapkit/helpers\";\nimport type { BaseEVMWallet } from \"@swapkit/toolbox-evm\";\n\nimport {\n getExplorerAddressUrl as getAddressUrl,\n getExplorerTxUrl as getTxUrl,\n} from \"./helpers/explorerUrls.ts\";\nimport type { Apis, SwapKitPluginInterface, SwapKitWallet, Wallet } from \"./types.ts\";\n\nexport function SwapKit<\n Plugins extends { [key in string]: SwapKitPluginInterface<{ [key in string]: Todo }> },\n Wallets extends { [key in string]: SwapKitWallet<NotWorth[]> },\n>({\n apis = {},\n config = {},\n plugins,\n rpcUrls = {},\n stagenet = false,\n wallets,\n}: {\n apis?: Apis;\n config?: ConnectConfig;\n plugins: Plugins;\n rpcUrls?: { [key in Chain]?: string };\n stagenet?: boolean;\n wallets: Wallets;\n}) {\n type PluginName = keyof Plugins;\n\n /**\n * @REMOVE (V1)\n * Compatibility layer for plugins and wallets for easier migration and backwards compatibility\n */\n const compatPlugins: Plugins = Array.isArray(plugins)\n ? plugins.reduce((acc, pluginInterface) => {\n // @ts-ignore Ignore until we remove the compatibility layer\n const { name, plugin } = Object.values(pluginInterface)?.[0] || {};\n acc[name] = plugin;\n return acc;\n }, {})\n : plugins;\n const compatWallets: Wallets = Array.isArray(wallets)\n ? wallets.reduce((acc, wallet) => {\n // @ts-ignore Ignore until we remove the compatibility layer\n const [walletName, connectWallet] = Object.entries(wallet)?.[0] || {};\n acc[walletName] = connectWallet;\n return acc;\n }, {})\n : wallets;\n\n const connectedWallets = {} as Wallet;\n const availablePlugins = Object.entries(compatPlugins).reduce(\n (acc, [pluginName, { plugin, config: pluginConfig }]) => {\n const methods = plugin({\n wallets: connectedWallets,\n stagenet,\n config: pluginConfig ?? config,\n });\n\n // @ts-expect-error\n acc[pluginName] = methods;\n return acc;\n },\n {} as { [key in PluginName]: ReturnType<Plugins[key][\"plugin\"]> },\n );\n\n const connectWalletMethods = Object.entries(compatWallets).reduce(\n (acc, [walletName, wallet]) => {\n const connectWallet = wallet({ addChain, config, apis, rpcUrls });\n\n // @ts-expect-error\n acc[walletName] = connectWallet;\n return acc;\n },\n {} as { [key in keyof Wallets]: ReturnType<Wallets[key]> },\n );\n\n /**\n * @Private\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\", \"Could not find the requested plugin\");\n }\n\n return plugin;\n }\n\n /**\n * @Private\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\", \"Could not find the requested plugin\");\n }\n\n return plugin;\n }\n\n function addChain<T extends Chain>(connectWallet: AddChainWalletParams<T>) {\n // @ts-expect-error: TODO\n connectedWallets[connectWallet.chain] = 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 \"core_approve_asset_target_invalid\",\n `Target ${String(spenderAddress)} cannot be used for approve operation`,\n );\n }\n\n const { address, chain, isGasAsset, isSynthetic } = assetValue;\n const isEVMChain = EVMChains.includes(chain as EVMChain);\n const isNativeEVM = isEVMChain && isGasAsset;\n\n if (isNativeEVM || !isEVMChain || isSynthetic) {\n return Promise.resolve(type === \"checkOnly\" ? true : \"approved\") as ApproveReturnType<T>;\n }\n\n const walletMethods = connectedWallets[chain] as BaseEVMWallet;\n const walletAction = type === \"checkOnly\" ? walletMethods?.isApproved : walletMethods?.approve;\n if (!walletAction) throw new SwapKitError(\"core_wallet_connection_not_found\");\n\n const from = getAddress(chain);\n if (!(address && from && 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: address,\n from,\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 function getAllWallets() {\n return { ...connectedWallets };\n }\n function getAddress<T extends Chain>(chain: T) {\n return getWallet(chain)?.address || \"\";\n }\n /**\n * TODO: Figure out validation without connecting to wallet\n */\n function validateAddress({ address, chain }: { address: string; chain: Chain }) {\n // @ts-expect-error TODO add validate address to radix\n return getWallet(chain)?.validateAddress?.(address);\n }\n\n function getBalance<T extends Chain>(chain: T, refresh?: boolean) {\n if (refresh) {\n return getWalletWithBalance(chain).then((wallet) => wallet.balance);\n }\n\n return getWallet(chain)?.balance || [];\n }\n\n async function getWalletWithBalance<T extends Chain>(chain: T, potentialScamFilter = true) {\n const defaultBalance = [AssetValue.fromChainOrSignature(chain)];\n const wallet = getWallet(chain);\n\n if (!wallet) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n\n if (\"getBalance\" in wallet) {\n // @ts-expect-error TODO add getBalance to radix\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 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 swap<T extends PluginName>({ route, pluginName, ...rest }: SwapParams<T>) {\n const plugin =\n (pluginName && getSwapKitPlugin(pluginName)) ||\n getSwapKitPluginForSKProvider(route.providers[0] as PluginNameEnum);\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 disconnectAll() {\n for (const chain of Object.keys(connectedWallets)) {\n // @ts-expect-error: TODO\n const wallet = connectedWallets[chain];\n if (\"disconnect\" in wallet) {\n wallet.disconnect();\n }\n // @ts-expect-error: TODO\n delete connectedWallets[chain];\n }\n }\n\n function disconnectChain(chain: Chain) {\n const wallet = connectedWallets[chain];\n const disconnect = wallet?.disconnect;\n if (disconnect) {\n disconnect();\n }\n delete connectedWallets[chain];\n }\n\n return {\n ...availablePlugins,\n ...connectWalletMethods,\n\n approveAssetValue,\n getAddress,\n getBalance,\n getExplorerAddressUrl: getAddressUrl,\n getExplorerTxUrl: getTxUrl,\n getWallet,\n getAllWallets,\n getWalletWithBalance,\n isAssetValueApproved,\n swap,\n validateAddress,\n disconnectAll,\n disconnectChain,\n };\n}\n",
7
7
  "import { Chain, ChainToExplorerUrl } 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.Binance:\n case Chain.Maya:\n case Chain.Kujira:\n case Chain.Cosmos:\n case Chain.THORChain:\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.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 return `${baseUrl}/transaction/${txHash.toLowerCase()}`;\n\n default:\n throw new Error(`Unsupported chain: ${chain}`);\n }\n}\n\nexport function getExplorerAddressUrl({ chain, address }: { address: string; chain: Chain }) {\n const baseUrl = ChainToExplorerUrl[chain];\n\n return `${baseUrl}/address/${address}`;\n}\n"
8
8
  ],
9
- "mappings": "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",
10
- "debugId": "120429E512FFA90264756e2164756e21",
9
+ "mappings": "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",
10
+ "debugId": "E0205D68B547A0FA64756e2164756e21",
11
11
  "names": []
12
12
  }
package/package.json CHANGED
@@ -1,26 +1,26 @@
1
1
  {
2
2
  "author": "swapkit-oss",
3
3
  "dependencies": {
4
- "@swapkit/api": "1.0.0-rc.77",
5
- "@swapkit/helpers": "1.0.0-rc.109"
4
+ "@swapkit/api": "1.0.0-rc.78",
5
+ "@swapkit/helpers": "1.0.0-rc.110"
6
6
  },
7
7
  "description": "SwapKit - Core",
8
8
  "devDependencies": {
9
9
  "@swapkit/tokens": "1.0.0-rc.53",
10
- "@swapkit/toolbox-cosmos": "1.0.0-rc.135",
11
- "@swapkit/toolbox-evm": "1.0.0-rc.115",
12
- "@swapkit/toolbox-substrate": "1.0.0-rc.44",
13
- "@swapkit/toolbox-utxo": "1.0.0-rc.118",
10
+ "@swapkit/toolbox-cosmos": "1.0.0-rc.136",
11
+ "@swapkit/toolbox-evm": "1.0.0-rc.116",
12
+ "@swapkit/toolbox-substrate": "1.0.0-rc.45",
13
+ "@swapkit/toolbox-utxo": "1.0.0-rc.119",
14
14
  "bun-types": "1.1.8"
15
15
  },
16
16
  "peerDependencies": {
17
- "@swapkit/api": "1.0.0-rc.77",
18
- "@swapkit/helpers": "1.0.0-rc.109",
17
+ "@swapkit/api": "1.0.0-rc.78",
18
+ "@swapkit/helpers": "1.0.0-rc.110",
19
19
  "@swapkit/tokens": "1.0.0-rc.53",
20
- "@swapkit/toolbox-cosmos": "1.0.0-rc.135",
21
- "@swapkit/toolbox-evm": "1.0.0-rc.115",
22
- "@swapkit/toolbox-substrate": "1.0.0-rc.44",
23
- "@swapkit/toolbox-utxo": "1.0.0-rc.118"
20
+ "@swapkit/toolbox-cosmos": "1.0.0-rc.136",
21
+ "@swapkit/toolbox-evm": "1.0.0-rc.116",
22
+ "@swapkit/toolbox-substrate": "1.0.0-rc.45",
23
+ "@swapkit/toolbox-utxo": "1.0.0-rc.119"
24
24
  },
25
25
  "files": [
26
26
  "src/",
@@ -45,5 +45,5 @@
45
45
  },
46
46
  "type": "module",
47
47
  "types": "./src/index.ts",
48
- "version": "1.0.0-rc.160"
48
+ "version": "1.0.0-rc.161"
49
49
  }
package/src/client.ts CHANGED
@@ -62,8 +62,12 @@ export function SwapKit<
62
62
 
63
63
  const connectedWallets = {} as Wallet;
64
64
  const availablePlugins = Object.entries(compatPlugins).reduce(
65
- (acc, [pluginName, { plugin, config }]) => {
66
- const methods = plugin({ wallets: connectedWallets, stagenet, config });
65
+ (acc, [pluginName, { plugin, config: pluginConfig }]) => {
66
+ const methods = plugin({
67
+ wallets: connectedWallets,
68
+ stagenet,
69
+ config: pluginConfig ?? config,
70
+ });
67
71
 
68
72
  // @ts-expect-error
69
73
  acc[pluginName] = methods;
@@ -173,6 +177,9 @@ export function SwapKit<
173
177
  function getWallet<T extends Chain>(chain: T) {
174
178
  return connectedWallets[chain];
175
179
  }
180
+ function getAllWallets() {
181
+ return { ...connectedWallets };
182
+ }
176
183
  function getAddress<T extends Chain>(chain: T) {
177
184
  return getWallet(chain)?.address || "";
178
185
  }
@@ -230,6 +237,27 @@ export function SwapKit<
230
237
  throw new SwapKitError("core_plugin_swap_not_found");
231
238
  }
232
239
 
240
+ function disconnectAll() {
241
+ for (const chain of Object.keys(connectedWallets)) {
242
+ // @ts-expect-error: TODO
243
+ const wallet = connectedWallets[chain];
244
+ if ("disconnect" in wallet) {
245
+ wallet.disconnect();
246
+ }
247
+ // @ts-expect-error: TODO
248
+ delete connectedWallets[chain];
249
+ }
250
+ }
251
+
252
+ function disconnectChain(chain: Chain) {
253
+ const wallet = connectedWallets[chain];
254
+ const disconnect = wallet?.disconnect;
255
+ if (disconnect) {
256
+ disconnect();
257
+ }
258
+ delete connectedWallets[chain];
259
+ }
260
+
233
261
  return {
234
262
  ...availablePlugins,
235
263
  ...connectWalletMethods,
@@ -240,9 +268,12 @@ export function SwapKit<
240
268
  getExplorerAddressUrl: getAddressUrl,
241
269
  getExplorerTxUrl: getTxUrl,
242
270
  getWallet,
271
+ getAllWallets,
243
272
  getWalletWithBalance,
244
273
  isAssetValueApproved,
245
274
  swap,
246
275
  validateAddress,
276
+ disconnectAll,
277
+ disconnectChain,
247
278
  };
248
279
  }