@swapkit/helpers 1.0.0-rc.103 → 1.0.0-rc.104

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
@@ -1280,7 +1280,7 @@ var MemoType;
1280
1280
  MemoType2["BOND"] = "BOND";
1281
1281
  MemoType2["DEPOSIT"] = "+";
1282
1282
  MemoType2["LEAVE"] = "LEAVE";
1283
- MemoType2["THORNAME_REGISTER"] = "~";
1283
+ MemoType2["NAME_REGISTER"] = "~";
1284
1284
  MemoType2["UNBOND"] = "UNBOND";
1285
1285
  MemoType2["WITHDRAW"] = "-";
1286
1286
  MemoType2["OPEN_LOAN"] = "$+";
@@ -1982,7 +1982,7 @@ var getMemoFor = (memoType, options) => {
1982
1982
  const { address, unbondAmount } = options;
1983
1983
  return `${memoType}:${address}:${unbondAmount}`;
1984
1984
  }
1985
- case MemoType.THORNAME_REGISTER: {
1985
+ case MemoType.NAME_REGISTER: {
1986
1986
  const { name, chain, address, owner } = options;
1987
1987
  return `${memoType}:${name}:${chain}:${address}${owner ? `:${owner}` : ""}`;
1988
1988
  }
@@ -2061,6 +2061,9 @@ var errorMessages = {
2061
2061
  core_transaction_invalid_sender_address: 10313,
2062
2062
  core_transaction_deposit_server_error: 10314,
2063
2063
  core_transaction_user_rejected: 10315,
2064
+ core_transaction_create_liquidity_cacao_error: 10316,
2065
+ core_transaction_add_liquidity_no_cacao_address: 10306,
2066
+ core_transaction_add_liquidity_cacao_error: 10307,
2064
2067
  wallet_ledger_connection_error: 20001,
2065
2068
  wallet_ledger_connection_claimed: 20002,
2066
2069
  wallet_ledger_get_address_error: 20003,
@@ -2826,4 +2829,4 @@ export {
2826
2829
  AGG_SWAP
2827
2830
  };
2828
2831
 
2829
- //# debugId=1AF616D9C1303CD064756e2164756e21
2832
+ //# debugId=98419242CC3C63F664756e2164756e21
package/dist/index.js.map CHANGED
@@ -3,29 +3,29 @@
3
3
  "sources": ["../src/types/abis/erc20.ts", "../src/types/abis/mayaEvmVaults.ts", "../src/types/abis/tcEthVault.ts", "../src/types/network.ts", "../src/types/chains.ts", "../src/types/commonTypes.ts", "../src/types/derivationPath.ts", "../src/types/wallet.ts", "../src/types/sdk.ts", "../src/types/quotes.ts", "../src/modules/requestClient.ts", "../src/helpers/asset.ts", "../src/helpers/derivationPath.ts", "../src/helpers/liquidity.ts", "../src/helpers/memo.ts", "../src/modules/swapKitError.ts", "../src/helpers/others.ts", "../src/helpers/validators.ts", "../src/helpers/web3wallets.ts", "../src/modules/bigIntArithmetics.ts", "../src/modules/swapKitNumber.ts", "../src/modules/assetValue.ts"],
4
4
  "sourcesContent": [
5
5
  "export const erc20ABI = [\n { inputs: [], stateMutability: \"nonpayable\", type: \"constructor\" },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"owner\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"spender\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"from\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"\", type: \"address\" },\n { internalType: \"address\", name: \"\", type: \"address\" },\n ],\n name: \"allowance\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"spender\", type: \"address\" },\n { internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"approve\",\n outputs: [{ internalType: \"bool\", name: \"success\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n name: \"balanceOf\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"decimals\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"name\",\n outputs: [{ internalType: \"string\", name: \"\", type: \"string\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"symbol\",\n outputs: [{ internalType: \"string\", name: \"\", type: \"string\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"totalSupply\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"transfer\",\n outputs: [{ internalType: \"bool\", name: \"success\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"from\", type: \"address\" },\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"transferFrom\",\n outputs: [{ internalType: \"bool\", name: \"success\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n",
6
- "export const MayaEthereumVaultAbi = [\n { inputs: [], stateMutability: \"nonpayable\", type: \"constructor\" },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"Deposit\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"oldVault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newVault\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferAllowance\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"vault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferOut\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"vault\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"target\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"address\", name: \"finalAsset\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amountOutMin\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferOutAndCall\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"oldVault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newVault\", type: \"address\" },\n {\n components: [\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n ],\n indexed: false,\n internalType: \"struct MAYAChain_Router.Coin[]\",\n name: \"coins\",\n type: \"tuple[]\",\n },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"VaultTransfer\",\n type: \"event\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"deposit\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n { internalType: \"uint256\", name: \"expiration\", type: \"uint256\" },\n ],\n name: \"depositWithExpiry\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"router\", type: \"address\" },\n { internalType: \"address payable\", name: \"asgard\", type: \"address\" },\n {\n components: [\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n ],\n internalType: \"struct MAYAChain_Router.Coin[]\",\n name: \"coins\",\n type: \"tuple[]\",\n },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"returnVaultAssets\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"router\", type: \"address\" },\n { internalType: \"address\", name: \"newVault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferAllowance\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"to\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferOut\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"target\", type: \"address\" },\n { internalType: \"address\", name: \"finalToken\", type: \"address\" },\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"uint256\", name: \"amountOutMin\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferOutAndCall\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"token\", type: \"address\" },\n ],\n name: \"vaultAllowance\",\n outputs: [{ internalType: \"uint256\", name: \"amount\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nexport const MayaArbitrumVaultAbi = [\n { inputs: [], stateMutability: \"nonpayable\", type: \"constructor\" },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"Deposit\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"oldVault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newVault\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferAllowance\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"vault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferOut\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"vault\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"target\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"address\", name: \"finalAsset\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amountOutMin\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferOutAndCall\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"oldVault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newVault\", type: \"address\" },\n {\n components: [\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n ],\n indexed: false,\n internalType: \"struct ArbRouter.Coin[]\",\n name: \"coins\",\n type: \"tuple[]\",\n },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"VaultTransfer\",\n type: \"event\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"deposit\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n { internalType: \"uint256\", name: \"expiration\", type: \"uint256\" },\n ],\n name: \"depositWithExpiry\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"router\", type: \"address\" },\n { internalType: \"address payable\", name: \"asgard\", type: \"address\" },\n {\n components: [\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n ],\n internalType: \"struct ArbRouter.Coin[]\",\n name: \"coins\",\n type: \"tuple[]\",\n },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"returnVaultAssets\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"router\", type: \"address\" },\n { internalType: \"address\", name: \"newVault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferAllowance\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"to\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferOut\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"target\", type: \"address\" },\n { internalType: \"address\", name: \"finalToken\", type: \"address\" },\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"uint256\", name: \"amountOutMin\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferOutAndCall\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"token\", type: \"address\" },\n ],\n name: \"vaultAllowance\",\n outputs: [{ internalType: \"uint256\", name: \"amount\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n",
7
- "export const TCEthereumVaultAbi = [\n {\n inputs: [{ internalType: \"address\", name: \"rune\", type: \"address\" }],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"Deposit\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"oldVault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newVault\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferAllowance\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"vault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferOut\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"vault\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"target\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"address\", name: \"finalAsset\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amountOutMin\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferOutAndCall\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"oldVault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newVault\", type: \"address\" },\n {\n components: [\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n ],\n indexed: false,\n internalType: \"struct THORChain_Router.Coin[]\",\n name: \"coins\",\n type: \"tuple[]\",\n },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"VaultTransfer\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"RUNE\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"deposit\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n { internalType: \"uint256\", name: \"expiration\", type: \"uint256\" },\n ],\n name: \"depositWithExpiry\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"router\", type: \"address\" },\n { internalType: \"address payable\", name: \"asgard\", type: \"address\" },\n {\n components: [\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n ],\n internalType: \"struct THORChain_Router.Coin[]\",\n name: \"coins\",\n type: \"tuple[]\",\n },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"returnVaultAssets\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"router\", type: \"address\" },\n { internalType: \"address\", name: \"newVault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferAllowance\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"to\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferOut\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"aggregator\", type: \"address\" },\n { internalType: \"address\", name: \"finalToken\", type: \"address\" },\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"uint256\", name: \"amountOutMin\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferOutAndCall\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"token\", type: \"address\" },\n ],\n name: \"vaultAllowance\",\n outputs: [{ internalType: \"uint256\", name: \"amount\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nexport const TCAvalancheDepositABI = [\n { inputs: [], stateMutability: \"nonpayable\", type: \"constructor\" },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"Deposit\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"oldVault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newVault\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferAllowance\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"vault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferOut\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"vault\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"target\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"address\", name: \"finalAsset\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amountOutMin\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferOutAndCall\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"oldVault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newVault\", type: \"address\" },\n {\n components: [\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n ],\n indexed: false,\n internalType: \"struct AvaxRouter.Coin[]\",\n name: \"coins\",\n type: \"tuple[]\",\n },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"VaultTransfer\",\n type: \"event\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"deposit\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n { internalType: \"uint256\", name: \"expiration\", type: \"uint256\" },\n ],\n name: \"depositWithExpiry\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"router\", type: \"address\" },\n { internalType: \"address payable\", name: \"asgard\", type: \"address\" },\n {\n components: [\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n ],\n internalType: \"struct AvaxRouter.Coin[]\",\n name: \"coins\",\n type: \"tuple[]\",\n },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"returnVaultAssets\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"router\", type: \"address\" },\n { internalType: \"address\", name: \"newVault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferAllowance\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"to\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferOut\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"target\", type: \"address\" },\n { internalType: \"address\", name: \"finalToken\", type: \"address\" },\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"uint256\", name: \"amountOutMin\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferOutAndCall\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"token\", type: \"address\" },\n ],\n name: \"vaultAllowance\",\n outputs: [{ internalType: \"uint256\", name: \"amount\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nexport const TCBscDepositABI = [\n { inputs: [], stateMutability: \"nonpayable\", type: \"constructor\" },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"Deposit\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"oldVault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newVault\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferAllowance\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"vault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferOut\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"vault\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"target\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"address\", name: \"finalAsset\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amountOutMin\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferOutAndCall\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"oldVault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newVault\", type: \"address\" },\n {\n components: [\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n ],\n indexed: false,\n internalType: \"struct THORChain_Router.Coin[]\",\n name: \"coins\",\n type: \"tuple[]\",\n },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"VaultTransfer\",\n type: \"event\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n { internalType: \"uint256\", name: \"expiration\", type: \"uint256\" },\n ],\n name: \"depositWithExpiry\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"router\", type: \"address\" },\n { internalType: \"address payable\", name: \"asgard\", type: \"address\" },\n {\n components: [\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n ],\n internalType: \"struct THORChain_Router.Coin[]\",\n name: \"coins\",\n type: \"tuple[]\",\n },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"returnVaultAssets\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"router\", type: \"address\" },\n { internalType: \"address\", name: \"newVault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferAllowance\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"to\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferOut\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"target\", type: \"address\" },\n { internalType: \"address\", name: \"finalToken\", type: \"address\" },\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"uint256\", name: \"amountOutMin\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferOutAndCall\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"token\", type: \"address\" },\n ],\n name: \"vaultAllowance\",\n outputs: [{ internalType: \"uint256\", name: \"amount\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n",
8
- "export enum RPCUrl {\n Arbitrum = \"https://arb1.arbitrum.io/rpc\",\n Avalanche = \"https://node-router.thorswap.net/avalanche-c\",\n Binance = \"\",\n BinanceSmartChain = \"https://bsc-dataseed.binance.org\",\n Bitcoin = \"https://node-router.thorswap.net/bitcoin\",\n BitcoinCash = \"https://node-router.thorswap.net/bitcoin-cash\",\n Chainflip = \"wss://mainnet-archive.chainflip.io\",\n Cosmos = \"https://node-router.thorswap.net/cosmos/rpc\",\n Dash = \"https://node-router.thorswap.net/dash\",\n Dogecoin = \"https://node-router.thorswap.net/dogecoin\",\n Ethereum = \"https://node-router.thorswap.net/ethereum\",\n Kujira = \"https://rpc-kujira.synergynodes.com/\",\n Litecoin = \"https://node-router.thorswap.net/litecoin\",\n Maya = \"https://tendermint.mayachain.info\",\n MayaStagenet = \"https://stagenet.tendermint.mayachain.info\",\n Optimism = \"https://mainnet.optimism.io\",\n Polkadot = \"wss://rpc.polkadot.io\",\n Polygon = \"https://polygon-rpc.com\",\n THORChain = \"https://rpc.thorswap.net\",\n THORChainStagenet = \"https://stagenet-rpc.ninerealms.com\",\n}\n\nexport enum ExplorerUrl {\n Arbitrum = \"https://arbiscan.io\",\n Avalanche = \"https://snowtrace.io\",\n Binance = \"https://explorer.binance.org\",\n BinanceSmartChain = \"https://bscscan.com\",\n Bitcoin = \"https://blockchair.com/bitcoin\",\n BitcoinCash = \"https://www.blockchair.com/bitcoin-cash\",\n Chainflip = \"https://explorer.polkascan.io/polkadot\",\n Cosmos = \"https://www.mintscan.io/cosmos\",\n Dash = \"https://blockchair.com/dash\",\n Dogecoin = \"https://blockchair.com/dogecoin\",\n Ethereum = \"https://etherscan.io\",\n Kujira = \"https://finder.kujira.network/kaiyo-1\",\n Litecoin = \"https://blockchair.com/litecoin\",\n Maya = \"https://www.mayascan.org\",\n Optimism = \"https://optimistic.etherscan.io\",\n Polkadot = \"https://polkadot.subscan.io/\",\n Polygon = \"https://polygonscan.com\",\n THORChain = \"https://runescan.io\",\n}\n",
9
- "import { ExplorerUrl, RPCUrl } from \"./network\";\n\nexport enum Chain {\n Arbitrum = \"ARB\",\n Avalanche = \"AVAX\",\n Binance = \"BNB\",\n BinanceSmartChain = \"BSC\",\n Bitcoin = \"BTC\",\n BitcoinCash = \"BCH\",\n Cosmos = \"GAIA\",\n Dash = \"DASH\",\n Dogecoin = \"DOGE\",\n Ethereum = \"ETH\",\n Kujira = \"KUJI\",\n Litecoin = \"LTC\",\n Maya = \"MAYA\",\n Optimism = \"OP\",\n Polkadot = \"DOT\",\n Chainflip = \"FLIP\",\n Polygon = \"MATIC\",\n THORChain = \"THOR\",\n}\n\nexport enum ChainId {\n Arbitrum = \"42161\",\n ArbitrumHex = \"0xa4b1\",\n Avalanche = \"43114\",\n AvalancheHex = \"0xa86a\",\n Binance = \"Binance-Chain-Tigris\",\n BinanceSmartChain = \"56\",\n BinanceSmartChainHex = \"0x38\",\n Bitcoin = \"bitcoin\",\n BitcoinCash = \"bitcoincash\",\n Chainflip = \"chainflip\",\n Cosmos = \"cosmoshub-4\",\n Dash = \"dash\",\n Dogecoin = \"dogecoin\",\n Kujira = \"kaiyo-1\",\n Ethereum = \"1\",\n EthereumHex = \"0x1\",\n Litecoin = \"litecoin\",\n Maya = \"mayachain-mainnet-v1\",\n MayaStagenet = \"mayachain-stagenet-v1\",\n Optimism = \"10\",\n OptimismHex = \"0xa\",\n Polkadot = \"polkadot\",\n Polygon = \"137\",\n PolygonHex = \"0x89\",\n THORChain = \"thorchain-mainnet-v1\",\n THORChainStagenet = \"thorchain-stagenet-v2\",\n}\n\nexport const ChainIdToChain: Record<ChainId, Chain> = {\n [ChainId.ArbitrumHex]: Chain.Arbitrum,\n [ChainId.Arbitrum]: Chain.Arbitrum,\n [ChainId.AvalancheHex]: Chain.Avalanche,\n [ChainId.Avalanche]: Chain.Avalanche,\n [ChainId.BinanceSmartChainHex]: Chain.BinanceSmartChain,\n [ChainId.BinanceSmartChain]: Chain.BinanceSmartChain,\n [ChainId.Binance]: Chain.Binance,\n [ChainId.BitcoinCash]: Chain.BitcoinCash,\n [ChainId.Bitcoin]: Chain.Bitcoin,\n [ChainId.Chainflip]: Chain.Chainflip,\n [ChainId.Cosmos]: Chain.Cosmos,\n [ChainId.Dash]: Chain.Dash,\n [ChainId.Dogecoin]: Chain.Dogecoin,\n [ChainId.EthereumHex]: Chain.Ethereum,\n [ChainId.Kujira]: Chain.Kujira,\n [ChainId.Ethereum]: Chain.Ethereum,\n [ChainId.Litecoin]: Chain.Litecoin,\n [ChainId.MayaStagenet]: Chain.Maya,\n [ChainId.Maya]: Chain.Maya,\n [ChainId.OptimismHex]: Chain.Optimism,\n [ChainId.Optimism]: Chain.Optimism,\n [ChainId.Polkadot]: Chain.Polkadot,\n [ChainId.PolygonHex]: Chain.Polygon,\n [ChainId.Polygon]: Chain.Polygon,\n [ChainId.THORChainStagenet]: Chain.THORChain,\n [ChainId.THORChain]: Chain.THORChain,\n};\n\ntype ChainNameType = keyof typeof Chain;\nconst chainNames = Object.keys(Chain) as ChainNameType[];\nconst chains = Object.values(Chain) as Chain[];\n\nexport enum BaseDecimal {\n ARB = 18,\n AVAX = 18,\n BCH = 8,\n BNB = 8,\n BSC = 18,\n BTC = 8,\n DASH = 8,\n DOGE = 8,\n DOT = 10,\n ETH = 18,\n FLIP = 18,\n GAIA = 6,\n KUJI = 6,\n LTC = 8,\n MATIC = 18,\n MAYA = 10,\n OP = 18,\n THOR = 8,\n ZEC = 8,\n}\n\nexport type SubstrateChain = Chain.Polkadot | Chain.Chainflip;\nexport const SubstrateChains = [Chain.Polkadot, Chain.Chainflip];\n\nexport type EVMChain =\n | Chain.Ethereum\n | Chain.Avalanche\n | Chain.BinanceSmartChain\n | Chain.Arbitrum\n | Chain.Optimism\n | Chain.Polygon;\nexport const EVMChains = [\n Chain.Ethereum,\n Chain.Avalanche,\n Chain.BinanceSmartChain,\n Chain.Arbitrum,\n Chain.Optimism,\n Chain.Polygon,\n] as const;\n\nexport type UTXOChain =\n | Chain.Bitcoin\n | Chain.BitcoinCash\n | Chain.Dash\n | Chain.Dogecoin\n | Chain.Litecoin;\nexport const UTXOChains = [\n Chain.Bitcoin,\n Chain.BitcoinCash,\n Chain.Dash,\n Chain.Dogecoin,\n Chain.Litecoin,\n] as const;\n\nexport type CosmosChain =\n | Chain.Cosmos\n | Chain.THORChain\n | Chain.Binance\n | Chain.Maya\n | Chain.Kujira;\nexport const CosmosChains = [\n Chain.Cosmos,\n Chain.THORChain,\n Chain.Binance,\n Chain.Maya,\n Chain.Kujira,\n] as const;\n\nexport const TCSupportedChains = [\n Chain.Avalanche,\n Chain.Binance,\n Chain.BinanceSmartChain,\n Chain.Bitcoin,\n Chain.BitcoinCash,\n Chain.Cosmos,\n Chain.Dogecoin,\n Chain.Ethereum,\n Chain.Litecoin,\n Chain.THORChain,\n] as const;\n\nexport const MAYASupportedChains = [\n Chain.Arbitrum,\n Chain.Dash,\n Chain.Ethereum,\n Chain.Kujira,\n Chain.Maya,\n Chain.THORChain,\n] as const;\n\nconst ChainToChainName = chains.reduce(\n (acc, chain) => {\n const chainName = chainNames.find((key) => Chain[key as ChainNameType] === chain);\n\n if (chainName) acc[chain] = chainName;\n\n return acc;\n },\n {} as { [key in Chain]: ChainNameType },\n);\n\nexport const ChainToChainId = chains.reduce(\n (acc, chain) => {\n acc[chain] = ChainId[ChainToChainName[chain]];\n return acc;\n },\n {} as { [key in Chain]: ChainId },\n);\n\nexport const ChainToRPC = chains.reduce(\n (acc, chain) => {\n acc[chain] = RPCUrl[ChainToChainName[chain]];\n return acc;\n },\n {} as { [key in Chain]: RPCUrl },\n);\n\nexport const ChainToHexChainId = chains.reduce(\n (acc, chain) => {\n const chainString = `${ChainToChainName[chain]}Hex` as keyof typeof ChainId;\n\n acc[chain] = ChainId[chainString];\n return acc;\n },\n {} as { [key in Chain]: ChainId },\n);\n\nexport const ChainToExplorerUrl = chains.reduce(\n (acc, chain) => {\n acc[chain] = ExplorerUrl[ChainToChainName[chain]];\n return acc;\n },\n {} as { [key in Chain]: string },\n);\n",
10
- "import type { AssetValue } from \"../modules/assetValue.ts\";\nimport type { Chain, CosmosChain, EVMChain, UTXOChain } from \"./chains.ts\";\nimport type { WalletOption } from \"./wallet.ts\";\n\nexport type ConnectConfig = {\n stagenet?: boolean;\n /**\n * @required\n */\n thorswapApiKey?: string;\n /**\n * @required for AVAX & BSC\n */\n covalentApiKey?: string;\n /**\n * @required for ETH\n */\n ethplorerApiKey?: string;\n /**\n * @required for BTC, BCH, LTC, DOGE\n */\n blockchairApiKey?: string;\n /**\n * @required for Walletconnect\n */\n walletConnectProjectId?: string;\n /**\n * @optional for Trezor config\n */\n trezorManifest?: {\n email: string;\n appUrl: string;\n };\n /**\n * @optional for KeepKey config\n */\n keepkeyConfig?: {\n apiKey: string;\n pairingInfo: {\n name: string;\n imageUrl: string;\n basePath: string;\n url: string;\n };\n };\n};\n\nexport type AddChainWalletParams<T extends Chain> = {\n address: string;\n balance: AssetValue[];\n walletType: WalletOption;\n chain: T;\n [key: string]: Todo;\n};\n\ntype ApisType = { [key in UTXOChain]?: string | Todo } & {\n [key in EVMChain]?: string | Todo;\n} & {\n [key in CosmosChain]?: string;\n};\n\nexport type ConnectWalletParams = {\n addChain: <T extends Chain>(params: AddChainWalletParams<T>) => void;\n apis: ApisType;\n config: ConnectConfig;\n rpcUrls: { [chain in Chain]?: string };\n};\n\nexport type Witness = {\n value: number;\n script: Buffer;\n};\n\nexport enum QuoteMode {\n TC_SUPPORTED_TO_TC_SUPPORTED = \"TC-TC\",\n TC_SUPPORTED_TO_ETH = \"TC-ERC20\",\n TC_SUPPORTED_TO_AVAX = \"TC-ARC20\",\n TC_SUPPORTED_TO_BSC = \"TC-BEP20\",\n ETH_TO_TC_SUPPORTED = \"ERC20-TC\",\n ETH_TO_ETH = \"ERC20-ERC20\",\n ETH_TO_AVAX = \"ERC20-ARC20\",\n ETH_TO_BSC = \"ERC20-BEP20\",\n AVAX_TO_TC_SUPPORTED = \"ARC20-TC\",\n AVAX_TO_ETH = \"ARC20-ERC20\",\n AVAX_TO_AVAX = \"ARC20-ARC20\",\n AVAX_TO_BSC = \"ARC20-BEP20\",\n BSC_TO_TC_SUPPORTED = \"BEP20-TC\",\n BSC_TO_ETH = \"BEP20-ERC20\",\n BSC_TO_AVAX = \"BEP20-ARC20\",\n BSC_TO_BSC = \"BEP20-BEP20\",\n}\n\nexport type Asset = {\n chain: Chain;\n symbol: string;\n ticker: string;\n synth?: boolean;\n};\n\nexport const AGG_SWAP = [QuoteMode.ETH_TO_ETH, QuoteMode.AVAX_TO_AVAX, QuoteMode.BSC_TO_BSC];\n\nexport const SWAP_IN = [\n QuoteMode.ETH_TO_TC_SUPPORTED,\n QuoteMode.ETH_TO_AVAX,\n QuoteMode.ETH_TO_BSC,\n QuoteMode.AVAX_TO_TC_SUPPORTED,\n QuoteMode.AVAX_TO_ETH,\n QuoteMode.AVAX_TO_BSC,\n QuoteMode.BSC_TO_TC_SUPPORTED,\n QuoteMode.BSC_TO_ETH,\n QuoteMode.BSC_TO_AVAX,\n];\n\nexport const SWAP_OUT = [\n QuoteMode.TC_SUPPORTED_TO_TC_SUPPORTED,\n QuoteMode.TC_SUPPORTED_TO_ETH,\n QuoteMode.TC_SUPPORTED_TO_AVAX,\n QuoteMode.TC_SUPPORTED_TO_BSC,\n];\n",
11
- "import type { Chain } from \"./chains\";\n\nexport enum ContractAddress {\n ARB = \"0x0000000000000000000000000000000000000000\",\n AVAX = \"0x0000000000000000000000000000000000000000\",\n ETH = \"0x0000000000000000000000000000000000000000\",\n BSC = \"0x0000000000000000000000000000000000000000\",\n MATIC = \"0x0000000000000000000000000000000000001010\",\n OP = \"0x4200000000000000000000000000000000000042\",\n}\n\nexport enum DerivationPath {\n ARB = \"m/44'/60'/0'/0\",\n AVAX = \"m/44'/60'/0'/0\",\n BCH = \"m/44'/145'/0'/0\",\n BNB = \"m/44'/714'/0'/0\",\n BSC = \"m/44'/60'/0'/0\",\n BTC = \"m/84'/0'/0'/0\",\n DASH = \"m/44'/5'/0'/0\",\n DOGE = \"m/44'/3'/0'/0\",\n DOT = \"////\",\n ETH = \"m/44'/60'/0'/0\",\n FLIP = \"////\",\n GAIA = \"m/44'/118'/0'/0\",\n KUJI = \"m/44'/118'/0'/0\",\n LTC = \"m/84'/2'/0'/0\",\n MATIC = \"m/44'/60'/0'/0\",\n MAYA = \"m/44'/931'/0'/0\",\n OP = \"m/44'/60'/0'/0\",\n THOR = \"m/44'/931'/0'/0\",\n}\n\nexport type DerivationPathArray = [number, number, number, number, number?];\n\nexport const NetworkDerivationPath: Record<Chain, DerivationPathArray> = {\n ARB: [44, 60, 0, 0, 0],\n AVAX: [44, 60, 0, 0, 0],\n BCH: [44, 145, 0, 0, 0],\n BNB: [44, 714, 0, 0, 0],\n BSC: [44, 60, 0, 0, 0],\n BTC: [84, 0, 0, 0, 0],\n DASH: [44, 5, 0, 0, 0],\n DOGE: [44, 3, 0, 0, 0],\n ETH: [44, 60, 0, 0, 0],\n GAIA: [44, 118, 0, 0, 0],\n KUJI: [44, 118, 0, 0, 0],\n LTC: [84, 2, 0, 0, 0],\n MATIC: [44, 60, 0, 0, 0],\n MAYA: [44, 931, 0, 0, 0],\n OP: [44, 60, 0, 0, 0],\n THOR: [44, 931, 0, 0, 0],\n\n // Polkadot and related network derivation path is not number based\n DOT: [0, 0, 0, 0, 0],\n FLIP: [0, 0, 0, 0, 0],\n};\n",
12
- "import type { Eip1193Provider } from \"ethers\";\nimport type { AssetValue } from \"../modules/assetValue\";\nimport type { Chain } from \"./chains\";\n\ndeclare global {\n interface WindowEventMap {\n \"eip6963:announceProvider\": CustomEvent;\n }\n}\n\nexport enum WalletOption {\n KEYSTORE = \"KEYSTORE\",\n KEEPKEY = \"KEEPKEY\",\n XDEFI = \"XDEFI\",\n METAMASK = \"METAMASK\",\n COINBASE_WEB = \"COINBASE_WEB\",\n COINBASE_MOBILE = \"COINBASE_MOBILE\",\n TREZOR = \"TREZOR\",\n TRUSTWALLET_WEB = \"TRUSTWALLET_WEB\",\n LEDGER = \"LEDGER\",\n KEPLR = \"KEPLR\",\n OKX = \"OKX\",\n OKX_MOBILE = \"OKX_MOBILE\",\n BRAVE = \"BRAVE\",\n WALLETCONNECT = \"WALLETCONNECT\",\n EIP6963 = \"EIP6963\",\n EXODUS = \"EXODUS\",\n}\n\nexport enum LedgerErrorCode {\n NoError = 0x9000,\n LockedDevice = 0x5515,\n TC_NotFound = 65535,\n}\n\nexport type ChainWallet = {\n chain: Chain;\n address: string;\n balance: AssetValue[];\n walletType: WalletOption;\n};\n\nexport type EmptyWallet = { [key in Chain]?: unknown };\n\nexport type BaseWallet<T extends EmptyWallet | unknown> = {\n // @ts-expect-error\n [key in Chain]: ChainWallet & T[key];\n};\n\nexport type Wallet<T> = BaseWallet<T>;\n\nexport type EIP6963ProviderInfo = {\n walletId: string;\n uuid: string;\n name: string;\n icon: string;\n};\n\nexport type EIP6963ProviderDetail = {\n info: EIP6963ProviderInfo;\n provider: Eip1193Provider;\n};\n\nexport type EIP6963Provider = {\n info: EIP6963ProviderInfo;\n provider: Eip1193Provider;\n};\n\n// This type represents the structure of an event dispatched by a wallet to announce its presence based on EIP-6963.\nexport type EIP6963AnnounceProviderEvent = Event & {\n detail: EIP6963Provider;\n};\n",
13
- "import { z } from \"zod\";\nimport type { AssetValue } from \"../modules/assetValue\";\nimport type { QuoteResponseRoute } from \"./quotes\";\n\nexport type GenericSwapParams = {\n buyAsset?: AssetValue;\n sellAsset?: AssetValue;\n recipient?: string;\n feeOptionKey?: FeeOption;\n route: QuoteResponseRoute;\n};\n\nexport type SwapParams<PluginNames = string, T = GenericSwapParams> = T & {\n pluginName?: PluginNames;\n};\n\nexport enum FeeOption {\n Average = \"average\",\n Fast = \"fast\",\n Fastest = \"fastest\",\n}\n\nexport enum ApproveMode {\n Approve = \"approve\",\n CheckOnly = \"checkOnly\",\n}\n\nexport type ApproveReturnType<T extends ApproveMode> = T extends \"checkOnly\"\n ? Promise<boolean>\n : Promise<string>;\n\nexport type WalletTxParams = {\n feeOptionKey?: FeeOption;\n from?: string;\n memo?: string; // optional memo to pass\n recipient: string;\n};\n\nexport enum MemoType {\n BOND = \"BOND\",\n DEPOSIT = \"+\",\n LEAVE = \"LEAVE\",\n THORNAME_REGISTER = \"~\",\n UNBOND = \"UNBOND\",\n WITHDRAW = \"-\",\n OPEN_LOAN = \"$+\",\n CLOSE_LOAN = \"$-\",\n}\n\nexport const QuoteRequestSchema = z\n .object({\n sellAsset: z.string({\n description: \"Asset to sell\",\n }),\n buyAsset: z.string({\n description: \"Asset to buy\",\n }),\n sellAmount: z\n .number({\n description: \"Amount of asset to sell\",\n })\n .refine((amount) => amount > 0, {\n message: \"sellAmount must be greater than 0\",\n path: [\"sellAmount\"],\n }),\n providers: z.optional(\n z.array(\n z.string({\n description: \"List of providers to use\",\n }),\n ),\n ),\n sourceAddress: z.optional(\n z.string({\n description: \"Address to send asset from\",\n }),\n ),\n destinationAddress: z.optional(\n z.string({\n description: \"Address to send asset to\",\n }),\n ),\n slippage: z.optional(\n z.number({\n description: \"Slippage tolerance as a percentage. Default is 3%.\",\n }),\n ),\n affiliate: z.optional(\n z.string({\n description: \"Affiliate thorname\",\n }),\n ),\n affiliateFee: z.optional(\n z\n .number({\n description: \"Affiliate fee in basis points\",\n })\n .refine(\n (fee) => {\n return fee === Math.floor(fee) && fee >= 0;\n },\n { message: \"affiliateFee must be a positive integer\", path: [\"affiliateFee\"] },\n ),\n ),\n allowSmartContractSender: z.optional(\n z.boolean({\n description: \"Allow smart contract as sender\",\n }),\n ),\n allowSmartContractReceiver: z.optional(\n z.boolean({\n description: \"Allow smart contract as recipient\",\n }),\n ),\n disableSecurityChecks: z.optional(\n z.boolean({\n description: \"Disable security checks\",\n }),\n ),\n })\n .refine((data) => data.sellAsset !== data.buyAsset, {\n message: \"Must be different\",\n path: [\"sellAsset\", \"buyAsset\"],\n });\n\nexport type QuoteRequest = z.infer<typeof QuoteRequestSchema>;\n",
14
- "import { z } from \"zod\";\n\nexport enum WarningCodeEnum {\n highSlippage = \"highSlippage\",\n highPriceImpact = \"highPriceImpact\",\n}\n\nexport const EVMTransactionDetailsParamsSchema = z.array(\n z.union([\n z.string(),\n z.number(),\n z.array(z.string()),\n z\n .object({\n from: z.string(),\n value: z.string(),\n })\n .describe(\"Parameters to pass to the contract method\"),\n ]),\n);\n\nexport type EVMTransactionDetailsParams = z.infer<typeof EVMTransactionDetailsParamsSchema>;\n\nexport const EVMTransactionDetailsSchema = z.object({\n contractAddress: z.string({\n description: \"Address of the contract to interact with\",\n }),\n contractMethod: z.string({\n description: \"Name of the method to call\",\n }),\n contractParams: EVMTransactionDetailsParamsSchema,\n // contractParamsStreaming: z.array(\n // z.string({\n // description:\n // \"If making a streaming swap through THORChain, parameters to pass to the contract method\",\n // }),\n // ),\n contractParamNames: z.array(\n z.string({\n description: \"Names of the parameters to pass to the contract method\",\n }),\n ),\n approvalToken: z.optional(\n z.string({\n description: \"Address of the token to approve spending of\",\n }),\n ),\n approvalSpender: z.optional(\n z.string({\n description: \"Address of the spender to approve\",\n }),\n ),\n});\n\nexport type EVMTransactionDetails = z.infer<typeof EVMTransactionDetailsSchema>;\n\nexport const EstimatedTimeSchema = z.object({\n inbound: z.optional(\n z.number({\n description: \"Time to receive inbound asset in seconds\",\n }),\n ),\n swap: z.optional(\n z.number({\n description: \"Time to swap assets in seconds\",\n }),\n ),\n outbound: z.optional(\n z.number({\n description: \"Time to receive outbound asset in seconds\",\n }),\n ),\n total: z.number({\n description: \"Total time in seconds\",\n }),\n});\n\nexport type EstimatedTime = z.infer<typeof EstimatedTimeSchema>;\n\nexport enum ProviderName {\n CHAINFLIP = \"CHAINFLIP\",\n TRADERJOE_V1 = \"TRADERJOE_V1\",\n PANGOLIN_V1 = \"PANGOLIN_V1\",\n UNISWAP_V2 = \"UNISWAP_V2\",\n THORCHAIN = \"THORCHAIN\",\n THORCHAIN_STREAMING = \"THORCHAIN_STREAMING\",\n MAYACHAIN = \"MAYACHAIN\",\n ONEINCH = \"ONEINCH\",\n SUSHISWAP_V2 = \"SUSHISWAP_V2\",\n WOOFI_V2 = \"WOOFI_V2\",\n PANCAKESWAP = \"PANCAKESWAP\",\n}\n\nexport enum FeeTypeEnum {\n LIQUIDITY = \"liquidity\",\n NETWORK = \"network\",\n INBOUND = \"inbound\",\n OUTBOUND = \"outbound\",\n AFFILIATE = \"affiliate\",\n TAX = \"tax\",\n}\n\nexport const FeesSchema = z.array(\n z.object({\n type: z.nativeEnum(FeeTypeEnum),\n amount: z.string(),\n asset: z.string(),\n chain: z.string(),\n protocol: z.nativeEnum(ProviderName),\n }),\n);\n\nexport type Fees = z.infer<typeof FeesSchema>;\n\nexport const RouteLegSchema = z.object({\n sellAsset: z.string({\n description: \"Asset to sell\",\n }),\n buyAsset: z.string({\n description: \"Asset to buy\",\n }),\n provider: z.nativeEnum(ProviderName),\n sourceAddress: z.string({\n description: \"Source address\",\n }),\n destinationAddress: z.string({\n description: \"Destination address\",\n }),\n estimatedTime: EstimatedTimeSchema.optional(),\n affiliate: z\n .string({\n description: \"Affiliate address\",\n })\n .optional(),\n affiliateFee: z\n .number({\n description: \"Affiliate fee\",\n })\n .optional(),\n slipPercentage: z.number({\n description: \"Slippage as a percentage\",\n }),\n});\n\nexport type RouteLeg = z.infer<typeof RouteLegSchema>;\n\nexport const RouteLegWithoutAddressesSchema = RouteLegSchema.omit({\n sourceAddress: true,\n destinationAddress: true,\n slipPercentage: true,\n});\n\nexport type RouteLegWithoutAddresses = z.infer<typeof RouteLegWithoutAddressesSchema>;\n\nexport const RouteQuoteMetadataAssetSchema = z.object({\n name: z.string({\n description: \"Asset name\",\n }),\n price: z.number({\n description: \"Price in USD\",\n }),\n image: z.string({\n description: \"Asset image\",\n }),\n});\n\nexport type RouteQuoteMetadataAsset = z.infer<typeof RouteQuoteMetadataAssetSchema>;\n\nexport const RouteQuoteMetadataSchema = z.object({\n priceImpact: z.number({\n description: \"Price impact\",\n }),\n assets: z.optional(z.array(RouteQuoteMetadataAssetSchema)),\n});\n\nexport const RouteQuoteWarningSchema = z.array(\n z.object({\n code: z.nativeEnum(WarningCodeEnum),\n display: z.string(),\n tooltip: z.string().optional(),\n }),\n);\n\nexport const RouteQuoteLegSchema = z.object({\n sellAsset: z.string({\n description: \"Asset to sell\",\n }),\n buyAsset: z.string({\n description: \"Asset to buy\",\n }),\n provider: z.nativeEnum(ProviderName),\n buyAmount: z.string({\n description: \"Amount of asset to buy\",\n }),\n buyAmountMaxSlippage: z.string({\n description: \"Amount of asset to buy\",\n }),\n sellAmount: z.string({\n description: \"Amount of asset to sell\",\n }),\n sourceAddress: z.string({\n description: \"Source address\",\n }),\n destinationAddress: z.string({\n description: \"Destination address\",\n }),\n slippageBps: z.number({\n description: \"Slippage in bps\",\n }),\n targetAddress: z.optional(\n z.string({\n description: \"Target address for contract call or transfer address\",\n }),\n ),\n inboundAddress: z.optional(\n z.string({\n description: \"Inbound address\",\n }),\n ),\n routerAddress: z.optional(\n z.string({\n description: \"Inbound address\",\n }),\n ),\n contractMethod: z.optional(\n z.string({\n description: \"Contract method\",\n }),\n ),\n fees: z.optional(FeesSchema),\n estimatedTime: z.optional(EstimatedTimeSchema),\n memo: z.optional(\n z.string({\n description: \"Memo\",\n }),\n ),\n expiration: z.optional(\n z.string({\n description: \"Expiration\",\n }),\n ),\n});\n\nexport type RouteQuoteLeg = z.infer<typeof RouteQuoteLegSchema>;\n\nexport const RouteQuoteSchema = z.object({\n providers: z.array(z.nativeEnum(ProviderName)),\n sellAsset: z.string({\n description: \"Asset to sell\",\n }),\n sellAmount: z.string({\n description: \"sell amount\",\n }),\n buyAsset: z.string({\n description: \"Asset to buy\",\n }),\n expectedBuyAmount: z.string({\n description: \"Expected Buy amount\",\n }),\n expectedBuyAmountMaxSlippage: z.string({\n description: \"Expected Buy amount max slippage\",\n }),\n sourceAddress: z.string({\n description: \"Source address\",\n }),\n destinationAddress: z.string({\n description: \"Destination address\",\n }),\n targetAddress: z.optional(\n z.string({\n description: \"Target address\",\n }),\n ),\n routerAddress: z.optional(\n z.string({\n description: \"Router address\",\n }),\n ),\n inboundAddress: z.optional(\n z.string({\n description: \"Inbound address\",\n }),\n ),\n expiration: z.optional(\n z.string({\n description: \"Expiration\",\n }),\n ),\n memo: z.optional(\n z.string({\n description: \"Memo\",\n }),\n ),\n evmTransactionDetails: z.optional(EVMTransactionDetailsSchema),\n routePathArray: z.optional(z.array(z.string())),\n estimatedTime: z.optional(EstimatedTimeSchema),\n totalSlippageBps: z.number({\n description: \"Total slippage in bps\",\n }),\n legs: z.array(RouteQuoteLegSchema),\n // TODO use enum\n errorCode: z.optional(z.string()),\n warnings: RouteQuoteWarningSchema,\n meta: RouteQuoteMetadataSchema,\n});\n\nexport type RouteQuote = z.infer<typeof RouteQuoteSchema>;\n\nconst QuoteResponseRouteLegItem = z.object({\n provider: z.nativeEnum(ProviderName),\n sellAsset: z.string({\n description: \"Asset to sell\",\n }),\n sellAmount: z.string({\n description: \"Sell amount\",\n }),\n buyAsset: z.string({\n description: \"Asset to buy\",\n }),\n buyAmount: z.string({\n description: \"Buy amount\",\n }),\n buyAmountMaxSlippage: z.string({\n description: \"Buy amount max slippage\",\n }),\n fees: z.optional(FeesSchema), // TODO remove optionality\n});\n\nconst QuoteResponseRouteItem = z.object({\n providers: z.array(z.nativeEnum(ProviderName)),\n sellAsset: z.string({\n description: \"Asset to sell\",\n }),\n sellAmount: z.string({\n description: \"sell amount\",\n }),\n buyAsset: z.string({\n description: \"Asset to buy\",\n }),\n expectedBuyAmount: z.string({\n description: \"Expected Buy amount\",\n }),\n expectedBuyAmountMaxSlippage: z.string({\n description: \"Expected Buy amount max slippage\",\n }),\n sourceAddress: z.string({\n description: \"Source address\",\n }),\n destinationAddress: z.string({\n description: \"Destination address\",\n }),\n targetAddress: z.optional(\n z.string({\n description: \"Target address\",\n }),\n ),\n expiration: z.optional(\n z.string({\n description: \"Expiration\",\n }),\n ),\n memo: z.optional(\n z.string({\n description: \"Memo\",\n }),\n ),\n evmTransactionDetails: z.optional(EVMTransactionDetailsSchema),\n estimatedTime: z.optional(EstimatedTimeSchema), // TODO remove optionality\n totalSlippageBps: z.number({\n description: \"Total slippage in bps\",\n }),\n legs: z.array(QuoteResponseRouteLegItem),\n warnings: RouteQuoteWarningSchema,\n meta: RouteQuoteMetadataSchema,\n});\n\nexport const QuoteResponseSchema = z.object({\n quoteId: z.string({\n description: \"Quote ID\",\n }),\n routes: z.array(QuoteResponseRouteItem),\n error: z.optional(\n z.string({\n description: \"Error message\",\n }),\n ),\n});\n\nexport type QuoteResponse = z.infer<typeof QuoteResponseSchema>;\nexport type QuoteResponseRoute = z.infer<typeof QuoteResponseRouteItem>;\nexport type QuoteResponseRouteLeg = z.infer<typeof QuoteResponseRouteLegItem>;\n",
15
- "import type { KyInstance, Options } from \"ky\";\nimport ky from \"ky\";\n\nlet kyClient: typeof ky;\n\nexport const defaultRequestHeaders =\n typeof window !== \"undefined\"\n ? ({} as Record<string, string>)\n : { referrer: \"https://sk.thorswap.net\", referer: \"https://sk.thorswap.net\" };\n\nexport function setRequestClientConfig({ apiKey, ...config }: Options & { apiKey?: string }) {\n kyClient = ky.create({\n ...config,\n headers: { ...defaultRequestHeaders, ...config.headers, \"x-api-key\": apiKey },\n });\n}\n\nfunction getKyClient() {\n if (kyClient) return kyClient;\n kyClient = ky.create({ headers: defaultRequestHeaders });\n return kyClient;\n}\n\nconst getTypedBaseRequestClient = (ky: KyInstance) => ({\n get: <T>(url: string | URL | Request, options?: Options) => ky.get(url, options).json<T>(),\n post: <T>(url: string | URL | Request, options?: Options) => ky.post(url, options).json<T>(),\n});\n\nexport const RequestClient = {\n ...getTypedBaseRequestClient(getKyClient()),\n extend: (options: Options) => {\n const extendedClient = getKyClient().extend(options);\n return {\n ...getTypedBaseRequestClient(extendedClient),\n extend: RequestClient.extend,\n };\n },\n};\n",
16
- "import { RequestClient } from \"../modules/requestClient.ts\";\nimport { BaseDecimal, Chain, ChainToRPC, type EVMChain, EVMChains } from \"../types/chains.ts\";\nimport type { TokenNames } from \"../types/tokens.ts\";\n\nconst getDecimalMethodHex = \"0x313ce567\";\n\nexport type CommonAssetString =\n | `${Chain.Maya}.MAYA`\n | `${Chain.Ethereum}.THOR`\n | `${Chain.Ethereum}.vTHOR`\n | `${Chain.Kujira}.USK`\n | Chain;\n\nconst getContractDecimals = async ({ chain, to }: { chain: EVMChain; to: string }) => {\n try {\n const { result } = await RequestClient.post<{ result: string }>(ChainToRPC[chain], {\n headers: {\n accept: \"*/*\",\n \"content-type\": \"application/json\",\n \"cache-control\": \"no-cache\",\n },\n body: JSON.stringify({\n id: 44,\n jsonrpc: \"2.0\",\n method: \"eth_call\",\n params: [{ to: to.toLowerCase(), data: getDecimalMethodHex }, \"latest\"],\n }),\n });\n\n return Number.parseInt(BigInt(result || BaseDecimal[chain]).toString());\n } catch (error) {\n console.error(error);\n return BaseDecimal[chain];\n }\n};\n\nconst getETHAssetDecimal = (symbol: string) => {\n if (symbol === Chain.Ethereum) return BaseDecimal.ETH;\n const splitSymbol = symbol.split(\"-\");\n const address = splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];\n\n return address?.startsWith(\"0x\")\n ? getContractDecimals({ chain: Chain.Ethereum, to: address })\n : BaseDecimal.ETH;\n};\n\nconst getAVAXAssetDecimal = (symbol: string) => {\n const splitSymbol = symbol.split(\"-\");\n const address = splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];\n\n return address?.startsWith(\"0x\")\n ? getContractDecimals({ chain: Chain.Avalanche, to: address.toLowerCase() })\n : BaseDecimal.AVAX;\n};\n\nconst getBSCAssetDecimal = (symbol: string) => {\n if (symbol === Chain.BinanceSmartChain) return BaseDecimal.BSC;\n\n return BaseDecimal.BSC;\n};\n\nexport const getDecimal = ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n switch (chain) {\n case Chain.Ethereum:\n return getETHAssetDecimal(symbol);\n case Chain.Avalanche:\n return getAVAXAssetDecimal(symbol);\n case Chain.BinanceSmartChain:\n return getBSCAssetDecimal(symbol);\n default:\n return BaseDecimal[chain];\n }\n};\n\nexport const isGasAsset = ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Optimism:\n return symbol === \"ETH\";\n case Chain.Maya:\n return symbol === \"CACAO\";\n case Chain.Kujira:\n return symbol === \"KUJI\";\n case Chain.Cosmos:\n return symbol === \"ATOM\";\n case Chain.Polygon:\n return symbol === \"MATIC\";\n case Chain.BinanceSmartChain:\n return symbol === \"BNB\";\n case Chain.THORChain:\n return symbol === \"RUNE\";\n\n default:\n return symbol === chain;\n }\n};\n\nexport const getCommonAssetInfo = (\n assetString: CommonAssetString,\n): { identifier: string; decimal: number } => {\n switch (assetString) {\n case `${Chain.Ethereum}.THOR`:\n return { identifier: \"ETH.THOR-0xa5f2211b9b8170f694421f2046281775e8468044\", decimal: 18 };\n case `${Chain.Ethereum}.vTHOR`:\n return { identifier: \"ETH.vTHOR-0x815c23eca83261b6ec689b60cc4a58b54bc24d8d\", decimal: 18 };\n case Chain.Arbitrum:\n return { identifier: `${Chain.Arbitrum}.ETH`, decimal: BaseDecimal[assetString] };\n case Chain.Optimism:\n return { identifier: `${Chain.Optimism}.ETH`, decimal: BaseDecimal[assetString] };\n case Chain.Cosmos:\n return { identifier: \"GAIA.ATOM\", decimal: BaseDecimal[assetString] };\n case Chain.THORChain:\n return { identifier: \"THOR.RUNE\", decimal: BaseDecimal[assetString] };\n case Chain.BinanceSmartChain:\n return { identifier: \"BSC.BNB\", decimal: BaseDecimal[assetString] };\n case Chain.Maya:\n return { identifier: \"MAYA.CACAO\", decimal: BaseDecimal.MAYA };\n case `${Chain.Maya}.MAYA`:\n return { identifier: \"MAYA.MAYA\", decimal: 4 };\n\n case `${Chain.Kujira}.USK`:\n return { identifier: `${Chain.Kujira}.USK`, decimal: 6 };\n\n default:\n return { identifier: `${assetString}.${assetString}`, decimal: BaseDecimal[assetString] };\n }\n};\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: TODO: Refactor\nexport const getAssetType = ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n if (symbol.includes(\"/\")) return \"Synth\";\n\n switch (chain) {\n case Chain.Cosmos:\n return symbol === \"ATOM\" ? \"Native\" : Chain.Cosmos;\n case Chain.Kujira:\n return symbol === Chain.Kujira ? \"Native\" : Chain.Kujira;\n case Chain.Binance:\n return symbol === Chain.Binance ? \"Native\" : \"BEP2\";\n case Chain.BinanceSmartChain:\n return symbol === Chain.Binance ? \"Native\" : \"BEP20\";\n case Chain.Ethereum:\n return symbol === Chain.Ethereum ? \"Native\" : \"ERC20\";\n case Chain.Avalanche:\n return symbol === Chain.Avalanche ? \"Native\" : Chain.Avalanche;\n case Chain.Polygon:\n return symbol === Chain.Polygon ? \"Native\" : \"POLYGON\";\n\n case Chain.Arbitrum:\n return [Chain.Ethereum, Chain.Arbitrum].includes(symbol as Chain) ? \"Native\" : \"ARBITRUM\";\n case Chain.Optimism:\n return [Chain.Ethereum, Chain.Optimism].includes(symbol as Chain) ? \"Native\" : \"OPTIMISM\";\n\n default:\n return \"Native\";\n }\n};\n\nexport const assetFromString = (assetString: string) => {\n const [chain, ...symbolArray] = assetString.split(\".\") as [Chain, ...(string | undefined)[]];\n const synth = assetString.includes(\"/\");\n const symbol = symbolArray.join(\".\");\n const splitSymbol = symbol?.split(\"-\");\n const ticker = splitSymbol?.length\n ? splitSymbol.length === 1\n ? splitSymbol[0]\n : splitSymbol.slice(0, -1).join(\"-\")\n : undefined;\n\n return { chain, symbol, ticker, synth };\n};\n\nconst potentialScamRegex = new RegExp(\n /(.)\\1{6}|\\.ORG|\\.NET|\\.FINANCE|\\.COM|WWW|HTTP|\\\\\\\\|\\/\\/|[\\s$%:[\\]]/,\n \"gmi\",\n);\n\nconst evmAssetHasAddress = (assetString: string) => {\n const [chain, symbol] = assetString.split(\".\") as [EVMChain, string];\n if (!EVMChains.includes(chain as EVMChain)) return true;\n const splitSymbol = symbol.split(\"-\");\n const address = splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];\n\n return isGasAsset({ chain: chain as Chain, symbol }) || !!address;\n};\n\nexport const filterAssets = (\n tokens: {\n value: string;\n decimal: number;\n chain: Chain;\n symbol: string;\n }[],\n) =>\n tokens.filter(({ chain, value, symbol }) => {\n const assetString = `${chain}.${symbol}`;\n\n return (\n !potentialScamRegex.test(assetString) && evmAssetHasAddress(assetString) && value !== \"0\"\n );\n });\n\nexport async function findAssetBy(\n params: { chain: EVMChain; contract: string } | { identifier: `${Chain}.${string}` },\n) {\n const tokenPackages = await import(\"@swapkit/tokens\");\n\n for (const tokenList of Object.values(tokenPackages)) {\n for (const { identifier, chain: tokenChain, ...rest } of tokenList.tokens) {\n if (\"identifier\" in params && identifier === params.identifier) {\n return identifier as TokenNames;\n }\n\n if (\n \"address\" in rest &&\n \"chain\" in params &&\n tokenChain === params.chain &&\n rest.address.toLowerCase() === params.contract.toLowerCase()\n )\n return identifier as TokenNames;\n }\n }\n\n return;\n}\n",
17
- "import {\n Chain,\n type DerivationPathArray,\n type EVMChain,\n EVMChains,\n NetworkDerivationPath,\n} from \"../types\";\n\ntype Params = {\n chain: Chain;\n index: number;\n addressIndex?: number;\n type?: \"legacy\" | \"ledgerLive\" | \"nativeSegwitMiddleAccount\" | \"segwit\";\n};\n\nconst updatedLastIndex = (path: DerivationPathArray, index: number) => [\n ...path.slice(0, path.length - 1),\n index,\n];\n\nexport function getDerivationPathFor({ chain, index, addressIndex = 0, type }: Params) {\n if (EVMChains.includes(chain as EVMChain)) {\n if (type === \"legacy\") return [44, 60, 0, index];\n if (type === \"ledgerLive\") return [44, 60, index, 0, addressIndex];\n return updatedLastIndex(NetworkDerivationPath[chain], index);\n }\n\n if ([Chain.Bitcoin, Chain.Litecoin].includes(chain)) {\n const chainId = chain === Chain.Bitcoin ? 0 : 2;\n\n if (type === \"nativeSegwitMiddleAccount\") return [84, chainId, index, 0, addressIndex];\n if (type === \"segwit\") return [49, chainId, 0, 0, index];\n if (type === \"legacy\") return [44, chainId, 0, 0, index];\n return updatedLastIndex(NetworkDerivationPath[chain], index);\n }\n\n return updatedLastIndex(NetworkDerivationPath[chain], index);\n}\n\nexport function getWalletFormatFor(path: string) {\n const [_, purpose, chainId] = path.split(\"/\").map((p) => Number.parseInt(p, 10));\n\n if (chainId === 145) \"cashaddr\";\n\n switch (purpose) {\n case 44:\n return \"legacy\";\n case 49:\n return \"p2sh\";\n default:\n return \"bech32\";\n }\n}\n",
18
- "import { SwapKitNumber } from \"../index.ts\";\nimport { BaseDecimal } from \"../types/chains.ts\";\n\ntype ShareParams<T extends {}> = T & {\n liquidityUnits: string;\n poolUnits: string;\n};\n\ntype PoolParams = {\n runeAmount: string;\n assetAmount: string;\n runeDepth: string;\n assetDepth: string;\n};\n\n/**\n * Ref: https://gitlab.com/thorchain/thornode/-/issues/657\n * share = (s * A * (2 * T^2 - 2 * T * s + s^2))/T^3\n * s = stakeUnits for member (after factoring in withdrawBasisPoints)\n * T = totalPoolUnits for pool\n * A = assetDepth to be withdrawn\n *\n * Formula:\n * share = (s * A * (2 * T^2 - 2 * T * s + s^2))/T^3\n * (part1 * (part2 - part3 + part4)) / part5\n */\nexport function getAsymmetricRuneShare({\n liquidityUnits,\n poolUnits,\n runeDepth,\n}: ShareParams<{ runeDepth: string }>) {\n const s = toTCSwapKitNumber(liquidityUnits);\n const T = toTCSwapKitNumber(poolUnits);\n const A = toTCSwapKitNumber(runeDepth);\n\n const part1 = s.mul(A);\n const part2 = T.mul(T).mul(2);\n const part3 = T.mul(s).mul(2);\n const part4 = s.mul(s);\n const part5 = T.mul(T).mul(T);\n\n const numerator = part1.mul(part2.sub(part3).add(part4));\n\n return numerator.div(part5);\n}\n\nexport function getAsymmetricAssetShare({\n liquidityUnits,\n poolUnits,\n assetDepth,\n}: ShareParams<{ assetDepth: string }>) {\n const s = toTCSwapKitNumber(liquidityUnits);\n const T = toTCSwapKitNumber(poolUnits);\n const A = toTCSwapKitNumber(assetDepth);\n\n const part1 = s.mul(A);\n const part2 = T.mul(T).mul(2);\n const part3 = T.mul(s).mul(2);\n const part4 = s.mul(s);\n const numerator = part1.mul(part2.sub(part3).add(part4));\n const part5 = T.mul(T).mul(T);\n\n return numerator.div(part5);\n}\n\nexport function getAsymmetricRuneWithdrawAmount({\n percent,\n runeDepth,\n liquidityUnits,\n poolUnits,\n}: ShareParams<{ percent: number; runeDepth: string }>) {\n return getAsymmetricRuneShare({ runeDepth, liquidityUnits, poolUnits }).mul(percent);\n}\n\nexport function getAsymmetricAssetWithdrawAmount({\n percent,\n assetDepth,\n liquidityUnits,\n poolUnits,\n}: ShareParams<{ percent: number; assetDepth: string }>) {\n return getAsymmetricAssetShare({ assetDepth, liquidityUnits, poolUnits }).mul(percent);\n}\n\nfunction toTCSwapKitNumber(value: string) {\n return SwapKitNumber.fromBigInt(BigInt(value), BaseDecimal.THOR);\n}\n\nexport function getSymmetricPoolShare({\n liquidityUnits,\n poolUnits,\n runeDepth,\n assetDepth,\n}: ShareParams<{\n runeDepth: string;\n assetDepth: string;\n}>) {\n return {\n assetAmount: toTCSwapKitNumber(assetDepth).mul(liquidityUnits).div(poolUnits),\n runeAmount: toTCSwapKitNumber(runeDepth).mul(liquidityUnits).div(poolUnits),\n };\n}\n\nexport function getSymmetricWithdraw({\n liquidityUnits,\n poolUnits,\n runeDepth,\n assetDepth,\n percent,\n}: ShareParams<{\n runeDepth: string;\n assetDepth: string;\n percent: number;\n}>) {\n return Object.fromEntries(\n Object.entries(getSymmetricPoolShare({ liquidityUnits, poolUnits, runeDepth, assetDepth })).map(\n ([name, value]) => [name, value.mul(percent)],\n ),\n );\n}\n\nexport function getEstimatedPoolShare({\n runeDepth,\n poolUnits,\n assetDepth,\n liquidityUnits,\n runeAmount,\n assetAmount,\n}: ShareParams<{\n runeAmount: string;\n assetAmount: string;\n runeDepth: string;\n assetDepth: string;\n}>) {\n const R = new SwapKitNumber({ value: runeDepth, decimal: 8 });\n const A = new SwapKitNumber({ value: assetDepth, decimal: 8 });\n const P = new SwapKitNumber({ value: poolUnits, decimal: 8 });\n const runeAddAmount = new SwapKitNumber({ value: runeAmount, decimal: 8 });\n const assetAddAmount = new SwapKitNumber({ value: assetAmount, decimal: 8 });\n\n // liquidityUnits = P * (r*A + a*R + 2*r*a) / (r*A + a*R + 2*R*A)\n const rA = runeAddAmount.mul(A);\n const aR = assetAddAmount.mul(R);\n const ra = runeAddAmount.mul(assetAddAmount);\n const RA = R.mul(A);\n const numerator = P.mul(rA.add(aR.add(ra.mul(2))));\n const denominator = rA.add(aR.add(RA.mul(2)));\n const liquidityUnitsAfterAdd = numerator.div(denominator);\n const estimatedLiquidityUnits = toTCSwapKitNumber(liquidityUnits).add(liquidityUnitsAfterAdd);\n\n if (liquidityUnitsAfterAdd.getBaseValue(\"number\") === 0) {\n return estimatedLiquidityUnits.div(P).getBaseValue(\"number\");\n }\n\n // get pool units after add\n const newPoolUnits = P.add(estimatedLiquidityUnits);\n\n return estimatedLiquidityUnits.div(newPoolUnits).getBaseValue(\"number\");\n}\n\nexport function getLiquiditySlippage({\n runeAmount,\n assetAmount,\n runeDepth,\n assetDepth,\n}: PoolParams) {\n if (runeAmount === \"0\" || assetAmount === \"0\" || runeDepth === \"0\" || assetDepth === \"0\")\n return 0;\n // formula: (t * R - T * r)/ (T*r + R*T)\n const R = toTCSwapKitNumber(runeDepth);\n const T = toTCSwapKitNumber(assetDepth);\n const assetAddAmount = toTCSwapKitNumber(assetAmount);\n const runeAddAmount = toTCSwapKitNumber(runeAmount);\n\n const numerator = assetAddAmount.mul(R).sub(T.mul(runeAddAmount));\n const denominator = T.mul(runeAddAmount).add(R.mul(T));\n\n // set absolute value of percent, no negative allowed\n return Math.abs(numerator.div(denominator).getBaseValue(\"number\"));\n}\n",
19
- "import { Chain } from \"../types/chains\";\nimport { MemoType } from \"../types/sdk\";\n\nexport type ThornameRegisterParam = {\n name: string;\n chain: string;\n address: string;\n owner?: string;\n preferredAsset?: string;\n expiryBlock?: string;\n};\n\ntype WithChain<T extends {}> = T & { chain: Chain };\n\nexport type MemoOptions<T extends MemoType> = {\n [MemoType.BOND]: { address: string };\n [MemoType.LEAVE]: { address: string };\n [MemoType.CLOSE_LOAN]: { address: string; asset: string; minAmount?: string };\n [MemoType.OPEN_LOAN]: { address: string; asset: string; minAmount?: string };\n [MemoType.UNBOND]: { address: string; unbondAmount: number };\n [MemoType.DEPOSIT]: WithChain<{ symbol: string; address?: string; singleSide?: boolean }>;\n [MemoType.WITHDRAW]: WithChain<{\n ticker: string;\n symbol: string;\n basisPoints: number;\n targetAssetString?: string;\n singleSide?: boolean;\n }>;\n [MemoType.THORNAME_REGISTER]: Omit<ThornameRegisterParam, \"preferredAsset\" | \"expiryBlock\">;\n}[T];\n\nexport const getMemoFor = <T extends MemoType>(memoType: T, options: MemoOptions<T>) => {\n switch (memoType) {\n case MemoType.LEAVE:\n case MemoType.BOND: {\n const { address } = options as MemoOptions<MemoType.BOND>;\n return `${memoType}:${address}`;\n }\n\n case MemoType.UNBOND: {\n const { address, unbondAmount } = options as MemoOptions<MemoType.UNBOND>;\n return `${memoType}:${address}:${unbondAmount}`;\n }\n\n case MemoType.THORNAME_REGISTER: {\n const { name, chain, address, owner } = options as MemoOptions<MemoType.THORNAME_REGISTER>;\n return `${memoType}:${name}:${chain}:${address}${owner ? `:${owner}` : \"\"}`;\n }\n\n case MemoType.DEPOSIT: {\n const { chain, symbol, address, singleSide } = options as MemoOptions<MemoType.DEPOSIT>;\n\n const getPoolIdentifier = (chain: Chain, symbol: string): string => {\n switch (chain) {\n case Chain.Litecoin:\n return \"l\";\n case Chain.Dogecoin:\n return \"d\";\n case Chain.BitcoinCash:\n return \"c\";\n default:\n return `${chain}.${symbol}`;\n }\n };\n\n return singleSide\n ? `${memoType}:${chain}/${symbol}`\n : `${memoType}:${getPoolIdentifier(chain, symbol)}:${address || \"\"}`;\n }\n\n case MemoType.WITHDRAW: {\n const { chain, ticker, symbol, basisPoints, targetAssetString, singleSide } =\n options as MemoOptions<MemoType.WITHDRAW>;\n\n const shortenedSymbol =\n chain === \"ETH\" && ticker !== \"ETH\" ? `${ticker}-${symbol.slice(-3)}` : symbol;\n const target = !singleSide && targetAssetString ? `:${targetAssetString}` : \"\";\n const assetDivider = singleSide ? \"/\" : \".\";\n\n return `${memoType}:${chain}${assetDivider}${shortenedSymbol}:${basisPoints}${target}`;\n }\n\n case MemoType.OPEN_LOAN:\n case MemoType.CLOSE_LOAN: {\n const { asset, address } = options as MemoOptions<MemoType.OPEN_LOAN>;\n\n return `${memoType}:${asset}:${address}`; //:${minAmount ? `${minAmount}` : ''}:t:0`;\n }\n\n default:\n return \"\";\n }\n};\n",
20
- "const errorMessages = {\n /**\n * Core\n */\n core_wallet_connection_not_found: 10001,\n core_estimated_max_spendable_chain_not_supported: 10002,\n core_extend_error: 10003,\n core_inbound_data_not_found: 10004,\n core_approve_asset_address_or_from_not_found: 10005,\n core_plugin_not_found: 10006,\n core_plugin_swap_not_found: 10007,\n core_approve_asset_target_invalid: 10008,\n core_chain_halted: 10099,\n\n /**\n * Core - Wallet Connection\n */\n core_wallet_xdefi_not_installed: 10101,\n core_wallet_evmwallet_not_installed: 10102,\n core_wallet_walletconnect_not_installed: 10103,\n core_wallet_keystore_not_installed: 10104,\n core_wallet_ledger_not_installed: 10105,\n core_wallet_trezor_not_installed: 10106,\n core_wallet_keplr_not_installed: 10107,\n core_wallet_okx_not_installed: 10108,\n core_wallet_keepkey_not_installed: 10109,\n /**\n * Core - Swap\n */\n core_swap_invalid_params: 10200,\n core_swap_route_not_complete: 10201,\n core_swap_asset_not_recognized: 10202,\n core_swap_contract_not_found: 10203,\n core_swap_route_transaction_not_found: 10204,\n core_swap_contract_not_supported: 10205,\n core_swap_transaction_error: 10206,\n core_swap_quote_mode_not_supported: 10207,\n /**\n * Core - Transaction\n */\n core_transaction_deposit_error: 10301,\n core_transaction_create_liquidity_rune_error: 10302,\n core_transaction_create_liquidity_asset_error: 10303,\n core_transaction_create_liquidity_invalid_params: 10304,\n core_transaction_add_liquidity_invalid_params: 10305,\n core_transaction_add_liquidity_no_rune_address: 10306,\n core_transaction_add_liquidity_rune_error: 10307,\n core_transaction_add_liquidity_asset_error: 10308,\n core_transaction_withdraw_error: 10309,\n core_transaction_deposit_to_pool_error: 10310,\n core_transaction_deposit_insufficient_funds_error: 10311,\n core_transaction_deposit_gas_error: 10312,\n core_transaction_invalid_sender_address: 10313,\n core_transaction_deposit_server_error: 10314,\n core_transaction_user_rejected: 10315,\n\n /**\n * Wallets\n */\n wallet_ledger_connection_error: 20001,\n wallet_ledger_connection_claimed: 20002,\n wallet_ledger_get_address_error: 20003,\n wallet_ledger_device_not_found: 20004,\n wallet_ledger_device_locked: 20005,\n\n /**\n * Chainflip\n */\n chainflip_channel_error: 30001,\n chainflip_broker_recipient_error: 30002,\n\n /**\n * THORChain\n */\n\n /**\n * SwapKit API\n */\n api_v2_invalid_response: 40001,\n\n /**\n * Helpers\n */\n helpers_number_different_decimals: 99101,\n} as const;\n\nexport type ErrorKeys = keyof typeof errorMessages;\n\nexport class SwapKitError extends Error {\n constructor(errorKey: ErrorKeys, sourceError?: NotWorth) {\n if (sourceError) {\n console.error(sourceError, {\n stack: sourceError?.stack,\n message: sourceError?.message,\n });\n }\n\n super(errorKey, {\n cause: { code: errorMessages[errorKey], message: errorKey },\n });\n Object.setPrototypeOf(this, SwapKitError.prototype);\n }\n}\n",
21
- "import { type ErrorKeys, SwapKitError } from \"../modules/swapKitError\";\nimport type { DerivationPathArray } from \"../types/derivationPath\";\n\n// 10 rune for register, 1 rune per year\n// MINIMUM_REGISTRATION_FEE = 11\nexport function getTHORNameCost(numberOfYears: number) {\n if (numberOfYears < 0) throw new Error(\"Invalid number of years\");\n return 10 + numberOfYears;\n}\n\n// 10 CACAO for register\n// 1.0512 CACAO per year\nexport function getMAYANameCost(numberOfYears: number) {\n if (numberOfYears < 0) throw new Error(\"Invalid number of year\");\n // round to max 10 decimals\n return Math.round((10 + numberOfYears * 1.0512) * 1e10) / 1e10;\n}\n\nexport function derivationPathToString([network, chainId, account, change, index]:\n | [number, number, number, number, number | undefined]\n | DerivationPathArray) {\n const shortPath = typeof index !== \"number\";\n\n return `m/${network}'/${chainId}'/${account}'/${change}${shortPath ? \"\" : `/${index}`}`;\n}\n\nexport function wrapWithThrow<T>(fn: () => T, errorKey?: ErrorKeys) {\n try {\n return fn();\n } catch (error) {\n if (errorKey) {\n throw new SwapKitError(errorKey, error);\n }\n\n return console.error(error);\n }\n}\n",
22
- "import { Chain } from \"../types/chains\";\n\n// Backward compatibility\nconst supportedChains = [...Object.values(Chain), \"TERRA\"];\n\nexport function validateIdentifier(identifier = \"\") {\n const uppercasedIdentifier = identifier.toUpperCase();\n\n const [chain] = uppercasedIdentifier.split(\".\") as [Chain, string];\n if (supportedChains.includes(chain)) return true;\n\n const [synthChain] = uppercasedIdentifier.split(\"/\") as [Chain, string];\n if (supportedChains.includes(synthChain)) return true;\n\n throw new Error(\n `Invalid identifier: ${identifier}. Expected format: <Chain>.<Ticker> or <Chain>.<Ticker>-<ContractAddress>`,\n );\n}\n\nexport function validateTNS(name: string) {\n if (name.length > 30) return false;\n\n const regex = /^[a-zA-Z0-9+_-]+$/g;\n\n return !!name.match(regex);\n}\n",
23
- "import type { BrowserProvider } from \"ethers\";\nimport {\n ChainId,\n type EIP6963AnnounceProviderEvent,\n type EIP6963Provider,\n WalletOption,\n} from \"../types\";\n\nexport type EthereumWindowProvider = BrowserProvider & {\n __XDEFI?: boolean;\n isBraveWallet?: boolean;\n isCoinbaseWallet?: boolean;\n isMetaMask?: boolean;\n isOkxWallet?: boolean;\n isTrust?: boolean;\n on: (event: string, callback?: () => void) => void;\n overrideIsMetaMask?: boolean;\n request: <T = unknown>(args: { method: string; params?: unknown[] }) => Promise<T>;\n selectedProvider?: EthereumWindowProvider;\n};\n\ndeclare const window: {\n ethereum: EthereumWindowProvider;\n trustwallet: EthereumWindowProvider;\n coinbaseWalletExtension: EthereumWindowProvider;\n braveSolana: Todo;\n} & Window;\n\n// declare global {\n// interface Window {\n// ethereum: EthereumWindowProvider;\n// trustwallet: EthereumWindowProvider;\n// coinbaseWalletExtension: EthereumWindowProvider;\n// braveSolana: Todo;\n// }\n// }\n\ntype NetworkParams = {\n chainId: ChainId;\n chainName: string;\n nativeCurrency: {\n name: string;\n symbol: string;\n decimals: number;\n };\n rpcUrls: string[];\n blockExplorerUrls: string[];\n};\n\ntype ProviderRequestParams = {\n provider?: BrowserProvider;\n params?: Todo;\n method:\n | \"wallet_addEthereumChain\"\n | \"wallet_switchEthereumChain\"\n | \"eth_requestAccounts\"\n | \"eth_sendTransaction\"\n | \"eth_signTransaction\";\n};\n\nconst methodsToWrap = [\n \"approve\",\n \"approvedAmount\",\n \"call\",\n \"sendTransaction\",\n \"transfer\",\n \"isApproved\",\n \"approvedAmount\",\n \"EIP1193SendTransaction\",\n \"getFeeData\",\n \"broadcastTransaction\",\n \"estimateCall\",\n \"estimateGasLimit\",\n \"estimateGasPrices\",\n \"createContractTxObject\",\n];\n\nexport const wrapMethodWithNetworkSwitch = <T extends (...args: Todo[]) => Todo>(\n func: T,\n provider: BrowserProvider,\n chainId: ChainId,\n) =>\n (async (...args: Todo[]) => {\n try {\n await switchEVMWalletNetwork(provider, chainId);\n } catch (error) {\n throw new Error(`Failed to switch network: ${error}`);\n }\n return func(...args);\n }) as unknown as T;\n\nconst providerRequest = ({ provider, params, method }: ProviderRequestParams) => {\n if (!provider?.send) throw new Error(\"Provider not found\");\n\n const providerParams = params ? (Array.isArray(params) ? params : [params]) : [];\n return provider.send(method, providerParams);\n};\n\nexport const prepareNetworkSwitch = <T extends { [key: string]: (...args: Todo[]) => Todo }>({\n toolbox,\n chainId,\n provider = window.ethereum,\n}: {\n toolbox: T;\n chainId: ChainId;\n provider?: BrowserProvider;\n}) => {\n const wrappedMethods = methodsToWrap.reduce((object, methodName) => {\n if (!toolbox[methodName]) return object;\n const method = toolbox[methodName];\n\n if (typeof method !== \"function\") return object;\n\n return {\n // biome-ignore lint/performance/noAccumulatingSpread: This is a valid use case\n ...object,\n [methodName]: wrapMethodWithNetworkSwitch<typeof method>(method, provider, chainId),\n };\n }, {});\n\n return { ...toolbox, ...wrappedMethods };\n};\n\nexport const addEVMWalletNetwork = (provider: BrowserProvider, networkParams: NetworkParams) =>\n providerRequest({ provider, method: \"wallet_addEthereumChain\", params: [networkParams] });\n\nexport const switchEVMWalletNetwork = (provider: BrowserProvider, chainId = ChainId.EthereumHex) =>\n providerRequest({ provider, method: \"wallet_switchEthereumChain\", params: [{ chainId }] });\n\nexport const addAccountsChangedCallback = (callback: () => void) => {\n window.ethereum?.on(\"accountsChanged\", () => callback());\n // @ts-expect-error that should be implemented in xdefi and hooked up via swapkit core\n window.xfi?.ethereum.on(\"accountsChanged\", () => callback());\n};\n\nexport const getETHDefaultWallet = () => {\n const { isTrust, isBraveWallet, __XDEFI, overrideIsMetaMask, selectedProvider } =\n window?.ethereum || {};\n if (isTrust) return WalletOption.TRUSTWALLET_WEB;\n if (isBraveWallet) return WalletOption.BRAVE;\n if (overrideIsMetaMask && selectedProvider?.isCoinbaseWallet) return WalletOption.COINBASE_WEB;\n if (__XDEFI) WalletOption.XDEFI;\n return WalletOption.METAMASK;\n};\n\nexport const isDetected = (walletOption: WalletOption) => {\n return listWeb3EVMWallets().includes(walletOption);\n};\n\nexport const listWeb3EVMWallets = () => {\n const metamaskEnabled = window?.ethereum && !window.ethereum?.isBraveWallet;\n // @ts-ignore that should be implemented in xdefi and hooked up via swapkit core\n const xdefiEnabled = window?.xfi || window?.ethereum?.__XDEFI;\n const braveEnabled = window?.ethereum?.isBraveWallet;\n const trustEnabled = window?.ethereum?.isTrust || window?.trustwallet;\n const coinbaseEnabled =\n (window?.ethereum?.overrideIsMetaMask &&\n window?.ethereum?.selectedProvider?.isCoinbaseWallet) ||\n window?.coinbaseWalletExtension;\n\n const wallets = [];\n if (metamaskEnabled) wallets.push(WalletOption.METAMASK);\n if (xdefiEnabled) wallets.push(WalletOption.XDEFI);\n if (braveEnabled) wallets.push(WalletOption.BRAVE);\n if (trustEnabled) wallets.push(WalletOption.TRUSTWALLET_WEB);\n if (coinbaseEnabled) wallets.push(WalletOption.COINBASE_WEB);\n if (okxMobileEnabled()) wallets.push(WalletOption.OKX_MOBILE);\n\n return wallets;\n};\n\nexport function getEIP6963Wallets() {\n const providers: EIP6963Provider[] = [];\n\n function onAnnouncement(event: EIP6963AnnounceProviderEvent) {\n if (providers.map((p) => p.info.uuid).includes(event.detail.info.uuid)) return;\n providers.push(event.detail);\n }\n\n window.addEventListener(\"eip6963:announceProvider\", onAnnouncement);\n window.dispatchEvent(new Event(\"eip6963:requestProvider\"));\n\n function removeEIP6963EventListener() {\n window.removeEventListener(\"eip6963:announceProvider\", onAnnouncement);\n }\n\n return { providers, removeEIP6963EventListener };\n}\n\nexport const okxMobileEnabled = () => {\n const ua = navigator.userAgent;\n const isIOS = /iphone|ipad|ipod|ios/i.test(ua);\n const isAndroid = /android|XiaoMi|MiuiBrowser/i.test(ua);\n const isMobile = isIOS || isAndroid;\n const isOKApp = /OKApp/i.test(ua);\n\n return isMobile && isOKApp;\n};\n\nexport const isWeb3Detected = () => typeof window.ethereum !== \"undefined\";\n",
24
- "import { BaseDecimal } from \"../types/chains.ts\";\nimport type { SwapKitNumber } from \"./swapKitNumber.ts\";\n\ntype NumberPrimitivesType = {\n bigint: bigint;\n number: number;\n string: string;\n};\nexport type NumberPrimitives = bigint | number | string;\ntype InitialisationValueType = NumberPrimitives | BigIntArithmetics | SwapKitNumber;\n\ntype SKBigIntParams = InitialisationValueType | { decimal?: number; value: number | string };\ntype AllowedNumberTypes = \"bigint\" | \"number\" | \"string\";\n\nconst DEFAULT_DECIMAL = 8;\nconst toMultiplier = (decimal: number) => 10n ** BigInt(decimal);\nconst decimalFromMultiplier = (multiplier: bigint) =>\n Math.log10(Number.parseFloat(multiplier.toString()));\n\nexport function formatBigIntToSafeValue({\n value,\n bigIntDecimal = DEFAULT_DECIMAL,\n decimal = DEFAULT_DECIMAL,\n}: {\n value: bigint;\n bigIntDecimal?: number;\n decimal?: number;\n}) {\n if (decimal === 0) return value.toString();\n const isNegative = value < 0n;\n let valueString = value.toString().substring(isNegative ? 1 : 0);\n\n const padLength = decimal - (valueString.length - 1);\n\n if (padLength > 0) {\n valueString = \"0\".repeat(padLength) + valueString;\n }\n\n const decimalIndex = valueString.length - decimal;\n let decimalString = valueString.slice(-decimal);\n\n // Check if we need to round up\n if (Number.parseInt(decimalString[bigIntDecimal] || \"0\") >= 5) {\n // Increment the last decimal place and slice off the rest\n decimalString = `${decimalString.substring(0, bigIntDecimal - 1)}${(\n Number.parseInt(decimalString[bigIntDecimal - 1] || \"0\") + 1\n ).toString()}`;\n } else {\n // Just slice off the extra digits\n decimalString = decimalString.substring(0, bigIntDecimal);\n }\n\n return `${isNegative ? \"-\" : \"\"}${valueString.slice(0, decimalIndex)}.${decimalString}`.replace(\n /\\.?0*$/,\n \"\",\n );\n}\n\nexport class BigIntArithmetics {\n decimalMultiplier: bigint = 10n ** 8n;\n bigIntValue = 0n;\n decimal?: number;\n\n static fromBigInt(value: bigint, decimal?: number) {\n return new BigIntArithmetics({\n decimal,\n value: formatBigIntToSafeValue({ value, bigIntDecimal: decimal, decimal }),\n });\n }\n\n static shiftDecimals({\n value,\n from,\n to,\n }: {\n value: InstanceType<typeof SwapKitNumber>;\n from: number;\n to: number;\n }) {\n return BigIntArithmetics.fromBigInt(\n (value.getBaseValue(\"bigint\") * toMultiplier(to)) / toMultiplier(from),\n to,\n );\n }\n\n constructor(params: SKBigIntParams) {\n const value = getStringValue(params);\n const isComplex = typeof params === \"object\";\n this.decimal = isComplex ? params.decimal : undefined;\n\n // use the multiplier to keep track of decimal point - defaults to 8 if lower than 8\n this.decimalMultiplier =\n isComplex && \"decimalMultiplier\" in params\n ? params.decimalMultiplier\n : toMultiplier(Math.max(getFloatDecimals(toSafeValue(value)), this.decimal || 0));\n this.#setValue(value);\n }\n\n set(value: SKBigIntParams): this {\n // @ts-expect-error False positive\n return new this.constructor({ decimal: this.decimal, value, identifier: this.toString() });\n }\n add(...args: InitialisationValueType[]) {\n return this.#arithmetics(\"add\", ...args);\n }\n sub(...args: InitialisationValueType[]) {\n return this.#arithmetics(\"sub\", ...args);\n }\n mul(...args: InitialisationValueType[]) {\n return this.#arithmetics(\"mul\", ...args);\n }\n div(...args: InitialisationValueType[]) {\n return this.#arithmetics(\"div\", ...args);\n }\n gt(value: InitialisationValueType) {\n return this.#comparison(\"gt\", value);\n }\n gte(value: InitialisationValueType) {\n return this.#comparison(\"gte\", value);\n }\n lt(value: InitialisationValueType) {\n return this.#comparison(\"lt\", value);\n }\n lte(value: InitialisationValueType) {\n return this.#comparison(\"lte\", value);\n }\n eqValue(value: InitialisationValueType) {\n return this.#comparison(\"eqValue\", value);\n }\n\n // @ts-expect-error False positive\n getValue<T extends AllowedNumberTypes>(type: T): NumberPrimitivesType[T] {\n const value = this.formatBigIntToSafeValue(\n this.bigIntValue,\n this.decimal || decimalFromMultiplier(this.decimalMultiplier),\n );\n\n switch (type) {\n case \"number\":\n return Number(value) as NumberPrimitivesType[T];\n case \"string\":\n return value as NumberPrimitivesType[T];\n case \"bigint\":\n return ((this.bigIntValue * 10n ** BigInt(this.decimal || 8n)) /\n this.decimalMultiplier) as NumberPrimitivesType[T];\n }\n }\n\n // @ts-expect-error\n getBaseValue<T extends AllowedNumberTypes>(type: T): NumberPrimitivesType[T] {\n const divisor = this.decimalMultiplier / toMultiplier(this.decimal || BaseDecimal.THOR);\n const baseValue = this.bigIntValue / divisor;\n\n switch (type) {\n case \"number\":\n return Number(baseValue) as NumberPrimitivesType[T];\n case \"string\":\n return baseValue.toString() as NumberPrimitivesType[T];\n case \"bigint\":\n return baseValue as NumberPrimitivesType[T];\n }\n }\n\n getBigIntValue(value: InitialisationValueType, decimal?: number) {\n if (!decimal && typeof value === \"object\") return value.bigIntValue;\n\n const stringValue = getStringValue(value);\n const safeValue = toSafeValue(stringValue);\n\n if (safeValue === \"0\" || safeValue === \"undefined\") return 0n;\n return this.#toBigInt(safeValue, decimal);\n }\n\n toSignificant(significantDigits = 6) {\n const [int, dec] = this.getValue(\"string\").split(\".\");\n const integer = int || \"\";\n const decimal = dec || \"\";\n const valueLength = Number.parseInt(integer) ? integer.length + decimal.length : decimal.length;\n\n if (valueLength <= significantDigits) {\n return this.getValue(\"string\");\n }\n\n if (integer.length >= significantDigits) {\n return integer.slice(0, significantDigits).padEnd(integer.length, \"0\");\n }\n\n if (Number.parseInt(integer)) {\n return `${integer}.${decimal.slice(0, significantDigits - integer.length)}`.padEnd(\n significantDigits - integer.length,\n \"0\",\n );\n }\n\n const trimmedDecimal = Number.parseInt(decimal);\n const slicedDecimal = `${trimmedDecimal}`.slice(0, significantDigits);\n\n return `0.${slicedDecimal.padStart(\n decimal.length - `${trimmedDecimal}`.length + slicedDecimal.length,\n \"0\",\n )}`;\n }\n\n toFixed(fixedDigits = 6) {\n const [int, dec] = this.getValue(\"string\").split(\".\");\n const integer = int || \"\";\n const decimal = dec || \"\";\n\n if (Number.parseInt(integer)) {\n return `${integer}.${decimal.slice(0, fixedDigits)}`.padEnd(fixedDigits, \"0\");\n }\n\n const trimmedDecimal = Number.parseInt(decimal);\n const slicedDecimal = `${trimmedDecimal}`.slice(0, fixedDigits);\n\n return `0.${slicedDecimal.padStart(\n decimal.length - `${trimmedDecimal}`.length + slicedDecimal.length,\n \"0\",\n )}`;\n }\n\n toAbbreviation(digits = 2) {\n const value = this.getValue(\"number\");\n const abbreviations = [\"\", \"K\", \"M\", \"B\", \"T\", \"Q\", \"Qi\", \"S\"];\n const tier = Math.floor(Math.log10(Math.abs(value)) / 3);\n const suffix = abbreviations[tier];\n\n if (!suffix) return this.getValue(\"string\");\n\n const scale = 10 ** (tier * 3);\n const scaled = value / scale;\n\n return `${scaled.toFixed(digits)}${suffix}`;\n }\n\n toCurrency(\n currency = \"$\",\n {\n currencyPosition = \"start\",\n decimal = 2,\n decimalSeparator = \".\",\n thousandSeparator = \",\",\n } = {},\n ) {\n const value = this.getValue(\"number\");\n const [int = \"\", dec = \"\"] = value.toFixed(6).split(\".\");\n const integer = int.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSeparator);\n\n const parsedValue =\n int || dec\n ? int === \"0\"\n ? `${Number.parseFloat(`0.${dec}`)}`.replace(\".\", decimalSeparator)\n : `${integer}${Number.parseInt(dec) ? `${decimalSeparator}${dec.slice(0, decimal)}` : \"\"}`\n : \"0.00\";\n\n return `${currencyPosition === \"start\" ? currency : \"\"}${parsedValue}${\n currencyPosition === \"end\" ? currency : \"\"\n }`;\n }\n\n formatBigIntToSafeValue(value: bigint, decimal?: number) {\n const bigIntDecimal = decimal || this.decimal || DEFAULT_DECIMAL;\n const decimalToUseForConversion = Math.max(\n bigIntDecimal,\n decimalFromMultiplier(this.decimalMultiplier),\n );\n const isNegative = value < 0n;\n\n const valueString = value.toString().substring(isNegative ? 1 : 0);\n const padLength = decimalToUseForConversion - (valueString.length - 1);\n\n const parsedValueString = padLength > 0 ? \"0\".repeat(padLength) + valueString : valueString;\n\n const decimalIndex = parsedValueString.length - decimalToUseForConversion;\n let decimalString = parsedValueString.slice(-decimalToUseForConversion);\n\n // Check if we need to round up\n if (Number.parseInt(decimalString[bigIntDecimal] || \"0\") >= 5) {\n // Increment the last decimal place and slice off the rest\n decimalString = `${decimalString.substring(0, bigIntDecimal - 1)}${(\n Number.parseInt(decimalString[bigIntDecimal - 1] || \"0\") + 1\n ).toString()}`;\n } else {\n // Just slice off the extra digits\n decimalString = decimalString.substring(0, bigIntDecimal);\n }\n\n return `${isNegative ? \"-\" : \"\"}${parsedValueString.slice(\n 0,\n decimalIndex,\n )}.${decimalString}`.replace(/\\.?0*$/, \"\");\n }\n\n #arithmetics(method: \"add\" | \"sub\" | \"mul\" | \"div\", ...args: InitialisationValueType[]): this {\n const precisionDecimal = this.#retrievePrecisionDecimal(this, ...args);\n const decimal = Math.max(precisionDecimal, decimalFromMultiplier(this.decimalMultiplier));\n const precisionDecimalMultiplier = toMultiplier(decimal);\n\n const result = args.reduce(\n (acc: bigint, arg) => {\n const value = this.getBigIntValue(arg, decimal);\n\n switch (method) {\n case \"add\":\n return acc + value;\n case \"sub\":\n return acc - value;\n /**\n * Multiplication & division would end up with wrong result if we don't adjust the value\n * 200000000n * 200000000n => 40000000000000000n\n * 200000000n / 200000000n => 1n\n * So we do the following:\n * 200000000n * 200000000n = 40000000000000000n / 100000000n (decimals) => 400000000n\n * (200000000n * 100000000n (decimals)) / 200000000n => 100000000n\n */\n case \"mul\":\n return (acc * value) / precisionDecimalMultiplier;\n case \"div\": {\n if (value === 0n) throw new RangeError(\"Division by zero\");\n return (acc * precisionDecimalMultiplier) / value;\n }\n default:\n return acc;\n }\n },\n //normalize is to precision multiplier base\n (this.bigIntValue * precisionDecimalMultiplier) / this.decimalMultiplier,\n );\n\n const value = formatBigIntToSafeValue({\n bigIntDecimal: decimal,\n decimal,\n value: result,\n });\n\n // @ts-expect-error False positive\n return new this.constructor({\n decimalMultiplier: toMultiplier(decimal),\n decimal: this.decimal,\n value,\n identifier: this.toString(),\n });\n }\n\n #comparison(method: \"gt\" | \"gte\" | \"lt\" | \"lte\" | \"eqValue\", ...args: InitialisationValueType[]) {\n const decimal = this.#retrievePrecisionDecimal(this, ...args);\n const value = this.getBigIntValue(args[0] || \"0\", decimal);\n const compareToValue = this.getBigIntValue(this, decimal);\n\n switch (method) {\n case \"gt\":\n return compareToValue > value;\n case \"gte\":\n return compareToValue >= value;\n case \"lt\":\n return compareToValue < value;\n case \"lte\":\n return compareToValue <= value;\n case \"eqValue\":\n return compareToValue === value;\n }\n }\n\n #setValue(value: InitialisationValueType) {\n const safeValue = toSafeValue(value) || \"0\";\n this.bigIntValue = this.#toBigInt(safeValue);\n }\n\n #retrievePrecisionDecimal(...args: InitialisationValueType[]) {\n const decimals = args\n .map((arg) => {\n const isObject = typeof arg === \"object\";\n const value = isObject\n ? arg.decimal || decimalFromMultiplier(arg.decimalMultiplier)\n : getFloatDecimals(toSafeValue(arg));\n\n return value;\n })\n .filter(Boolean) as number[];\n\n return Math.max(...decimals, DEFAULT_DECIMAL);\n }\n\n #toBigInt(value: string, decimal?: number) {\n const multiplier = decimal ? toMultiplier(decimal) : this.decimalMultiplier;\n const padDecimal = decimalFromMultiplier(multiplier);\n const [integerPart = \"\", decimalPart = \"\"] = value.split(\".\");\n\n return BigInt(`${integerPart}${decimalPart.padEnd(padDecimal, \"0\")}`);\n }\n}\n\nconst numberFormatter = Intl.NumberFormat(\"fullwide\", {\n useGrouping: false,\n maximumFractionDigits: 20,\n});\n\nfunction toSafeValue(value: InitialisationValueType) {\n const parsedValue =\n typeof value === \"number\" ? numberFormatter.format(value) : getStringValue(value);\n const splitValue = `${parsedValue}`.replaceAll(\",\", \".\").split(\".\");\n\n return splitValue.length > 1\n ? `${splitValue.slice(0, -1).join(\"\")}.${splitValue.at(-1)}`\n : splitValue[0] || \"0\";\n}\n\nfunction getFloatDecimals(value: string) {\n const decimals = value.split(\".\")[1]?.length || 0;\n return Math.max(decimals, DEFAULT_DECIMAL);\n}\n\nfunction getStringValue(param: SKBigIntParams) {\n return typeof param === \"object\"\n ? \"getValue\" in param\n ? param.getValue(\"string\")\n : param.value\n : param;\n}\n",
25
- "import { BigIntArithmetics, formatBigIntToSafeValue } from \"./bigIntArithmetics.ts\";\n\nexport type SwapKitValueType = BigIntArithmetics | string | number;\n\nexport class SwapKitNumber extends BigIntArithmetics {\n eq(value: SwapKitValueType) {\n return this.eqValue(value);\n }\n\n static fromBigInt(value: bigint, decimal?: number) {\n return new SwapKitNumber({\n decimal,\n value: formatBigIntToSafeValue({ value, bigIntDecimal: decimal, decimal }),\n });\n }\n}\n",
26
- "import type { CommonAssetString } from \"../helpers/asset.ts\";\nimport { getAssetType, getCommonAssetInfo, getDecimal, isGasAsset } from \"../helpers/asset.ts\";\nimport { validateIdentifier } from \"../helpers/validators.ts\";\nimport { BaseDecimal, Chain, type ChainId, ChainToChainId } from \"../types/chains.ts\";\nimport type { TokenNames, TokenTax } from \"../types/tokens.ts\";\n\nimport type { NumberPrimitives } from \"./bigIntArithmetics.ts\";\nimport { BigIntArithmetics, formatBigIntToSafeValue } from \"./bigIntArithmetics.ts\";\nimport { SwapKitNumber, type SwapKitValueType } from \"./swapKitNumber.ts\";\n\nconst staticTokensMap = new Map<\n TokenNames,\n { tax?: TokenTax; decimal: number; identifier: string }\n>();\n\nexport class AssetValue extends BigIntArithmetics {\n address?: string;\n chain: Chain;\n isGasAsset = false;\n isSynthetic = false;\n symbol: string;\n tax?: TokenTax;\n ticker: string;\n type: ReturnType<typeof getAssetType>;\n chainId: ChainId;\n\n constructor({\n value,\n decimal,\n tax,\n chain,\n symbol,\n identifier,\n }: { decimal: number; value: SwapKitValueType; tax?: TokenTax } & (\n | { chain: Chain; symbol: string; identifier?: never }\n | { identifier: string; chain?: never; symbol?: never }\n )) {\n super(typeof value === \"object\" ? value : { decimal, value });\n\n const assetInfo = getAssetInfo(identifier || `${chain}.${symbol}`);\n\n this.type = getAssetType(assetInfo);\n this.tax = tax;\n this.chain = assetInfo.chain;\n this.ticker = assetInfo.ticker;\n this.symbol = assetInfo.symbol;\n this.address = assetInfo.address;\n this.isSynthetic = assetInfo.isSynthetic;\n this.isGasAsset = assetInfo.isGasAsset;\n this.chainId = ChainToChainId[assetInfo.chain];\n }\n\n toString() {\n return this.isSynthetic ? this.symbol : `${this.chain}.${this.symbol}`;\n }\n\n toUrl() {\n return this.isSynthetic ? `${this.chain}.${this.symbol.replace(\"/\", \".\")}` : this.toString();\n }\n\n eq({ chain, symbol }: { chain: Chain; symbol: string }) {\n return this.chain === chain && this.symbol === symbol;\n }\n\n // THOR.RUNE\n // THOR.ETH.ETH\n // ETH.THOR-0x1234567890\n static fromUrl(urlAsset: string, value: NumberPrimitives = 0) {\n const [chain, ticker, symbol] = urlAsset.split(\".\");\n if (!(chain && ticker)) throw new Error(\"Invalid asset url\");\n\n const assetString =\n chain === Chain.THORChain && symbol ? `${chain}.${ticker}/${symbol}` : urlAsset;\n\n return createAssetValue(assetString, value);\n }\n\n static fromString(assetString: string, value: NumberPrimitives = 0) {\n return createAssetValue(assetString, value);\n }\n static fromIdentifier(\n assetString:\n | `${Chain}.${string}`\n | `${Chain}/${string}`\n | `${Chain}.${string}-${string}`\n | TokenNames,\n value: NumberPrimitives = 0,\n ) {\n return createAssetValue(assetString, value);\n }\n\n static fromStringSync(assetString: string, value: NumberPrimitives = 0) {\n const { chain, isSynthetic } = getAssetInfo(assetString);\n const tokenInfo = staticTokensMap.get(assetString.toUpperCase() as TokenNames);\n\n if (isSynthetic) return createSyntheticAssetValue(assetString, value);\n // TODO: write logger that will only run in dev mode with some flag\n // if (!tokenInfo) {\n // console.error(\n // `Asset ${assetString} is not loaded. Use AssetValue.loadStaticAssets() to load it`,\n // );\n // }\n\n const { tax, decimal, identifier } = tokenInfo || {\n decimal: BaseDecimal[chain],\n identifier: assetString,\n };\n\n return new AssetValue({\n tax,\n value: safeValue(value, decimal),\n identifier: isSynthetic ? assetString : identifier,\n decimal: isSynthetic ? 8 : decimal,\n });\n }\n\n static async fromStringWithBase(\n assetString: string,\n value: NumberPrimitives = 0,\n baseDecimal: number = BaseDecimal.THOR,\n ) {\n const shiftedAmount = BigIntArithmetics.shiftDecimals({\n value: SwapKitNumber.fromBigInt(BigInt(value)),\n from: 0,\n to: baseDecimal,\n }).getBaseValue(\"string\");\n const assetValue = await AssetValue.fromString(assetString, value);\n\n return assetValue.set(shiftedAmount);\n }\n\n static fromStringWithBaseSync(\n assetString: string,\n value: NumberPrimitives = 0,\n baseDecimal: number = BaseDecimal.THOR,\n ) {\n const { chain, isSynthetic } = getAssetInfo(assetString);\n const tokenInfo = staticTokensMap.get(assetString.toUpperCase() as TokenNames);\n\n if (isSynthetic) return createSyntheticAssetValue(assetString, value);\n\n const { tax, decimal, identifier } = tokenInfo || {\n decimal: BaseDecimal[chain],\n identifier: assetString,\n };\n\n return new AssetValue({\n tax,\n value: safeValue(BigInt(value), baseDecimal),\n identifier,\n decimal,\n });\n }\n\n static fromIdentifierSync(assetString: TokenNames, value: NumberPrimitives = 0) {\n const { chain, isSynthetic } = getAssetInfo(assetString);\n const tokenInfo = staticTokensMap.get(assetString);\n\n if (isSynthetic) return createSyntheticAssetValue(assetString, value);\n // TODO: write logger that will only run in dev mode with some flag\n // if (!tokenInfo) {\n // console.error(\n // `Asset ${assetString} is not loaded. - Loading with base Chain. Use AssetValue.loadStaticAssets() to load it`,\n // );\n // }\n\n const { tax, decimal, identifier } = tokenInfo || {\n decimal: BaseDecimal[chain],\n identifier: assetString,\n };\n return new AssetValue({ tax, decimal, identifier, value: safeValue(value, decimal) });\n }\n\n static fromChainOrSignature(assetString: CommonAssetString, value: NumberPrimitives = 0) {\n const { decimal, identifier } = getCommonAssetInfo(assetString);\n return new AssetValue({ value: safeValue(value, decimal), decimal, identifier });\n }\n\n static loadStaticAssets() {\n return new Promise<{ ok: true } | { ok: false; message: string; error: Todo }>(\n (resolve, reject) => {\n try {\n import(\"@swapkit/tokens\").then((tokenPackages) => {\n for (const tokenList of Object.values(tokenPackages)) {\n for (const { identifier, chain, ...rest } of tokenList.tokens) {\n staticTokensMap.set(identifier.toUpperCase() as TokenNames, {\n identifier,\n decimal: \"decimals\" in rest ? rest.decimals : BaseDecimal[chain as Chain],\n });\n }\n }\n\n resolve({ ok: true });\n });\n } catch (error) {\n console.error(error);\n reject({\n ok: false,\n error,\n message:\n \"Couldn't load static assets. Ensure you have installed @swapkit/tokens package\",\n });\n }\n },\n );\n }\n}\n\nexport function getMinAmountByChain(chain: Chain) {\n const asset = AssetValue.fromChainOrSignature(chain);\n\n switch (chain) {\n case Chain.Bitcoin:\n case Chain.Litecoin:\n case Chain.BitcoinCash:\n return asset.set(0.00010001);\n\n case Chain.Dogecoin:\n return asset.set(1.00000001);\n\n case Chain.Avalanche:\n case Chain.Ethereum:\n return asset.set(0.00000001);\n\n case Chain.THORChain:\n case Chain.Maya:\n return asset.set(0);\n\n case Chain.Cosmos:\n return asset.set(0.000001);\n\n default:\n return asset.set(0.00000001);\n }\n}\n\nasync function createAssetValue(identifier: string, value: NumberPrimitives = 0) {\n validateIdentifier(identifier);\n\n const staticToken = staticTokensMap.get(identifier.toUpperCase() as TokenNames);\n const decimal = staticToken?.decimal || (await getDecimal(getAssetInfo(identifier)));\n if (!staticToken) {\n staticTokensMap.set(identifier.toUpperCase() as TokenNames, { identifier, decimal });\n }\n\n return new AssetValue({ decimal, value: safeValue(value, decimal), identifier });\n}\n\nfunction createSyntheticAssetValue(identifier: string, value: NumberPrimitives = 0) {\n const [synthChain, symbol] =\n identifier.split(\".\")?.[0]?.toUpperCase() === Chain.THORChain\n ? identifier.split(\".\").slice(1).join().split(\"/\")\n : identifier.split(\"/\");\n\n if (!(synthChain && symbol)) throw new Error(\"Invalid asset identifier\");\n\n return new AssetValue({\n decimal: 8,\n value: safeValue(value, 8),\n identifier: `${Chain.THORChain}.${synthChain}/${symbol}`,\n });\n}\n\nfunction safeValue(value: NumberPrimitives, decimal: number) {\n return typeof value === \"bigint\"\n ? formatBigIntToSafeValue({ value, bigIntDecimal: decimal, decimal })\n : value;\n}\n\n// TODO refactor & split into smaller functions\nfunction getAssetInfo(identifier: string) {\n const isSynthetic = identifier.slice(0, 14).includes(\"/\");\n\n const isThorchain = identifier.split(\".\")?.[0]?.toUpperCase() === Chain.THORChain;\n const isMaya = identifier.split(\".\")?.[0]?.toUpperCase() === Chain.Maya;\n\n const [synthChain, synthSymbol = \"\"] =\n isThorchain || isMaya\n ? identifier.split(\".\").slice(1).join().split(\"/\")\n : identifier.split(\"/\");\n\n if (isSynthetic && !(synthChain && synthSymbol)) throw new Error(\"Invalid asset identifier\");\n\n const adjustedIdentifier =\n identifier.includes(\".\") && !isSynthetic\n ? identifier\n : `${isMaya ? Chain.Maya : Chain.THORChain}.${synthSymbol}`;\n\n const [chain, ...rest] = adjustedIdentifier.split(\".\") as [Chain, string];\n\n const symbol = isSynthetic ? synthSymbol : rest.join(\".\");\n const splitSymbol = symbol.split(\"-\");\n const ticker = (\n splitSymbol.length === 1 ? splitSymbol[0] : splitSymbol.slice(0, -1).join(\"-\")\n ) as string;\n const address = splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];\n\n return {\n address: address?.toLowerCase(),\n chain,\n isGasAsset: isGasAsset({ chain, symbol }),\n isSynthetic,\n symbol:\n (isSynthetic ? `${synthChain}/` : \"\") +\n (address ? `${ticker}-${address?.toLowerCase() ?? \"\"}` : symbol),\n ticker,\n };\n}\n"
6
+ "export const MayaEthereumVaultAbi = [\n { inputs: [], stateMutability: \"nonpayable\", type: \"constructor\" },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"Deposit\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"oldVault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newVault\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferAllowance\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"vault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferOut\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"vault\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"target\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"address\", name: \"finalAsset\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amountOutMin\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferOutAndCall\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"oldVault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newVault\", type: \"address\" },\n {\n components: [\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n ],\n indexed: false,\n internalType: \"struct MAYAChain_Router.Coin[]\",\n name: \"coins\",\n type: \"tuple[]\",\n },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"VaultTransfer\",\n type: \"event\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"deposit\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n { internalType: \"uint256\", name: \"expiration\", type: \"uint256\" },\n ],\n name: \"depositWithExpiry\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"router\", type: \"address\" },\n { internalType: \"address payable\", name: \"asgard\", type: \"address\" },\n {\n components: [\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n ],\n internalType: \"struct MAYAChain_Router.Coin[]\",\n name: \"coins\",\n type: \"tuple[]\",\n },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"returnVaultAssets\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"router\", type: \"address\" },\n { internalType: \"address\", name: \"newVault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferAllowance\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"to\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferOut\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"target\", type: \"address\" },\n { internalType: \"address\", name: \"finalToken\", type: \"address\" },\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"uint256\", name: \"amountOutMin\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferOutAndCall\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"token\", type: \"address\" },\n ],\n name: \"vaultAllowance\",\n outputs: [{ internalType: \"uint256\", name: \"amount\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nexport const MayaArbitrumVaultAbi = [\n { inputs: [], stateMutability: \"nonpayable\", type: \"constructor\" },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"Deposit\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"oldVault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newVault\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferAllowance\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"vault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferOut\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"vault\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"target\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"address\", name: \"finalAsset\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amountOutMin\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferOutAndCall\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"oldVault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newVault\", type: \"address\" },\n {\n components: [\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n ],\n indexed: false,\n internalType: \"struct ArbRouter.Coin[]\",\n name: \"coins\",\n type: \"tuple[]\",\n },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"VaultTransfer\",\n type: \"event\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"deposit\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n { internalType: \"uint256\", name: \"expiration\", type: \"uint256\" },\n ],\n name: \"depositWithExpiry\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"router\", type: \"address\" },\n { internalType: \"address payable\", name: \"asgard\", type: \"address\" },\n {\n components: [\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n ],\n internalType: \"struct ArbRouter.Coin[]\",\n name: \"coins\",\n type: \"tuple[]\",\n },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"returnVaultAssets\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"router\", type: \"address\" },\n { internalType: \"address\", name: \"newVault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferAllowance\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"to\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferOut\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"target\", type: \"address\" },\n { internalType: \"address\", name: \"finalToken\", type: \"address\" },\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"uint256\", name: \"amountOutMin\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferOutAndCall\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"token\", type: \"address\" },\n ],\n name: \"vaultAllowance\",\n outputs: [{ internalType: \"uint256\", name: \"amount\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n",
7
+ "export const TCEthereumVaultAbi = [\n {\n inputs: [{ internalType: \"address\", name: \"rune\", type: \"address\" }],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"Deposit\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"oldVault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newVault\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferAllowance\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"vault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferOut\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"vault\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"target\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"address\", name: \"finalAsset\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amountOutMin\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferOutAndCall\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"oldVault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newVault\", type: \"address\" },\n {\n components: [\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n ],\n indexed: false,\n internalType: \"struct THORChain_Router.Coin[]\",\n name: \"coins\",\n type: \"tuple[]\",\n },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"VaultTransfer\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"RUNE\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"deposit\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n { internalType: \"uint256\", name: \"expiration\", type: \"uint256\" },\n ],\n name: \"depositWithExpiry\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"router\", type: \"address\" },\n { internalType: \"address payable\", name: \"asgard\", type: \"address\" },\n {\n components: [\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n ],\n internalType: \"struct THORChain_Router.Coin[]\",\n name: \"coins\",\n type: \"tuple[]\",\n },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"returnVaultAssets\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"router\", type: \"address\" },\n { internalType: \"address\", name: \"newVault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferAllowance\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"to\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferOut\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"aggregator\", type: \"address\" },\n { internalType: \"address\", name: \"finalToken\", type: \"address\" },\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"uint256\", name: \"amountOutMin\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferOutAndCall\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"token\", type: \"address\" },\n ],\n name: \"vaultAllowance\",\n outputs: [{ internalType: \"uint256\", name: \"amount\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nexport const TCAvalancheDepositABI = [\n { inputs: [], stateMutability: \"nonpayable\", type: \"constructor\" },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"Deposit\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"oldVault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newVault\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferAllowance\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"vault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferOut\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"vault\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"target\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"address\", name: \"finalAsset\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amountOutMin\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferOutAndCall\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"oldVault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newVault\", type: \"address\" },\n {\n components: [\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n ],\n indexed: false,\n internalType: \"struct AvaxRouter.Coin[]\",\n name: \"coins\",\n type: \"tuple[]\",\n },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"VaultTransfer\",\n type: \"event\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"deposit\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n { internalType: \"uint256\", name: \"expiration\", type: \"uint256\" },\n ],\n name: \"depositWithExpiry\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"router\", type: \"address\" },\n { internalType: \"address payable\", name: \"asgard\", type: \"address\" },\n {\n components: [\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n ],\n internalType: \"struct AvaxRouter.Coin[]\",\n name: \"coins\",\n type: \"tuple[]\",\n },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"returnVaultAssets\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"router\", type: \"address\" },\n { internalType: \"address\", name: \"newVault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferAllowance\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"to\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferOut\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"target\", type: \"address\" },\n { internalType: \"address\", name: \"finalToken\", type: \"address\" },\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"uint256\", name: \"amountOutMin\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferOutAndCall\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"token\", type: \"address\" },\n ],\n name: \"vaultAllowance\",\n outputs: [{ internalType: \"uint256\", name: \"amount\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nexport const TCBscDepositABI = [\n { inputs: [], stateMutability: \"nonpayable\", type: \"constructor\" },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"Deposit\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"oldVault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newVault\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferAllowance\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"vault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"asset\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferOut\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"vault\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"target\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { indexed: false, internalType: \"address\", name: \"finalAsset\", type: \"address\" },\n { indexed: false, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amountOutMin\", type: \"uint256\" },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"TransferOutAndCall\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"oldVault\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newVault\", type: \"address\" },\n {\n components: [\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n ],\n indexed: false,\n internalType: \"struct THORChain_Router.Coin[]\",\n name: \"coins\",\n type: \"tuple[]\",\n },\n { indexed: false, internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"VaultTransfer\",\n type: \"event\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n { internalType: \"uint256\", name: \"expiration\", type: \"uint256\" },\n ],\n name: \"depositWithExpiry\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"router\", type: \"address\" },\n { internalType: \"address payable\", name: \"asgard\", type: \"address\" },\n {\n components: [\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n ],\n internalType: \"struct THORChain_Router.Coin[]\",\n name: \"coins\",\n type: \"tuple[]\",\n },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"returnVaultAssets\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"router\", type: \"address\" },\n { internalType: \"address\", name: \"newVault\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferAllowance\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"to\", type: \"address\" },\n { internalType: \"address\", name: \"asset\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferOut\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"target\", type: \"address\" },\n { internalType: \"address\", name: \"finalToken\", type: \"address\" },\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"uint256\", name: \"amountOutMin\", type: \"uint256\" },\n { internalType: \"string\", name: \"memo\", type: \"string\" },\n ],\n name: \"transferOutAndCall\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"vault\", type: \"address\" },\n { internalType: \"address\", name: \"token\", type: \"address\" },\n ],\n name: \"vaultAllowance\",\n outputs: [{ internalType: \"uint256\", name: \"amount\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n",
8
+ "export enum RPCUrl {\n Arbitrum = \"https://arb1.arbitrum.io/rpc\",\n Avalanche = \"https://node-router.thorswap.net/avalanche-c\",\n Binance = \"\",\n BinanceSmartChain = \"https://bsc-dataseed.binance.org\",\n Bitcoin = \"https://node-router.thorswap.net/bitcoin\",\n BitcoinCash = \"https://node-router.thorswap.net/bitcoin-cash\",\n Chainflip = \"wss://mainnet-archive.chainflip.io\",\n Cosmos = \"https://node-router.thorswap.net/cosmos/rpc\",\n Dash = \"https://node-router.thorswap.net/dash\",\n Dogecoin = \"https://node-router.thorswap.net/dogecoin\",\n Ethereum = \"https://node-router.thorswap.net/ethereum\",\n Kujira = \"https://rpc-kujira.synergynodes.com/\",\n Litecoin = \"https://node-router.thorswap.net/litecoin\",\n Maya = \"https://tendermint.mayachain.info\",\n MayaStagenet = \"https://stagenet.tendermint.mayachain.info\",\n Optimism = \"https://mainnet.optimism.io\",\n Polkadot = \"wss://rpc.polkadot.io\",\n Polygon = \"https://polygon-rpc.com\",\n THORChain = \"https://rpc.thorswap.net\",\n THORChainStagenet = \"https://stagenet-rpc.ninerealms.com\",\n}\n\nexport enum ExplorerUrl {\n Arbitrum = \"https://arbiscan.io\",\n Avalanche = \"https://snowtrace.io\",\n Binance = \"https://explorer.binance.org\",\n BinanceSmartChain = \"https://bscscan.com\",\n Bitcoin = \"https://blockchair.com/bitcoin\",\n BitcoinCash = \"https://www.blockchair.com/bitcoin-cash\",\n Chainflip = \"https://explorer.polkascan.io/polkadot\",\n Cosmos = \"https://www.mintscan.io/cosmos\",\n Dash = \"https://blockchair.com/dash\",\n Dogecoin = \"https://blockchair.com/dogecoin\",\n Ethereum = \"https://etherscan.io\",\n Kujira = \"https://finder.kujira.network/kaiyo-1\",\n Litecoin = \"https://blockchair.com/litecoin\",\n Maya = \"https://www.mayascan.org\",\n Optimism = \"https://optimistic.etherscan.io\",\n Polkadot = \"https://polkadot.subscan.io/\",\n Polygon = \"https://polygonscan.com\",\n THORChain = \"https://runescan.io\",\n}\n",
9
+ "import { ExplorerUrl, RPCUrl } from \"./network\";\n\nexport enum Chain {\n Arbitrum = \"ARB\",\n Avalanche = \"AVAX\",\n Binance = \"BNB\",\n BinanceSmartChain = \"BSC\",\n Bitcoin = \"BTC\",\n BitcoinCash = \"BCH\",\n Cosmos = \"GAIA\",\n Dash = \"DASH\",\n Dogecoin = \"DOGE\",\n Ethereum = \"ETH\",\n Kujira = \"KUJI\",\n Litecoin = \"LTC\",\n Maya = \"MAYA\",\n Optimism = \"OP\",\n Polkadot = \"DOT\",\n Chainflip = \"FLIP\",\n Polygon = \"MATIC\",\n THORChain = \"THOR\",\n}\n\nexport enum ChainId {\n Arbitrum = \"42161\",\n ArbitrumHex = \"0xa4b1\",\n Avalanche = \"43114\",\n AvalancheHex = \"0xa86a\",\n Binance = \"Binance-Chain-Tigris\",\n BinanceSmartChain = \"56\",\n BinanceSmartChainHex = \"0x38\",\n Bitcoin = \"bitcoin\",\n BitcoinCash = \"bitcoincash\",\n Chainflip = \"chainflip\",\n Cosmos = \"cosmoshub-4\",\n Dash = \"dash\",\n Dogecoin = \"dogecoin\",\n Kujira = \"kaiyo-1\",\n Ethereum = \"1\",\n EthereumHex = \"0x1\",\n Litecoin = \"litecoin\",\n Maya = \"mayachain-mainnet-v1\",\n MayaStagenet = \"mayachain-stagenet-v1\",\n Optimism = \"10\",\n OptimismHex = \"0xa\",\n Polkadot = \"polkadot\",\n Polygon = \"137\",\n PolygonHex = \"0x89\",\n THORChain = \"thorchain-mainnet-v1\",\n THORChainStagenet = \"thorchain-stagenet-v2\",\n}\n\nexport const ChainIdToChain: Record<ChainId, Chain> = {\n [ChainId.ArbitrumHex]: Chain.Arbitrum,\n [ChainId.Arbitrum]: Chain.Arbitrum,\n [ChainId.AvalancheHex]: Chain.Avalanche,\n [ChainId.Avalanche]: Chain.Avalanche,\n [ChainId.BinanceSmartChainHex]: Chain.BinanceSmartChain,\n [ChainId.BinanceSmartChain]: Chain.BinanceSmartChain,\n [ChainId.Binance]: Chain.Binance,\n [ChainId.BitcoinCash]: Chain.BitcoinCash,\n [ChainId.Bitcoin]: Chain.Bitcoin,\n [ChainId.Chainflip]: Chain.Chainflip,\n [ChainId.Cosmos]: Chain.Cosmos,\n [ChainId.Dash]: Chain.Dash,\n [ChainId.Dogecoin]: Chain.Dogecoin,\n [ChainId.EthereumHex]: Chain.Ethereum,\n [ChainId.Kujira]: Chain.Kujira,\n [ChainId.Ethereum]: Chain.Ethereum,\n [ChainId.Litecoin]: Chain.Litecoin,\n [ChainId.MayaStagenet]: Chain.Maya,\n [ChainId.Maya]: Chain.Maya,\n [ChainId.OptimismHex]: Chain.Optimism,\n [ChainId.Optimism]: Chain.Optimism,\n [ChainId.Polkadot]: Chain.Polkadot,\n [ChainId.PolygonHex]: Chain.Polygon,\n [ChainId.Polygon]: Chain.Polygon,\n [ChainId.THORChainStagenet]: Chain.THORChain,\n [ChainId.THORChain]: Chain.THORChain,\n};\n\ntype ChainNameType = keyof typeof Chain;\nconst chainNames = Object.keys(Chain) as ChainNameType[];\nconst chains = Object.values(Chain) as Chain[];\n\nexport enum BaseDecimal {\n ARB = 18,\n AVAX = 18,\n BCH = 8,\n BNB = 8,\n BSC = 18,\n BTC = 8,\n DASH = 8,\n DOGE = 8,\n DOT = 10,\n ETH = 18,\n FLIP = 18,\n GAIA = 6,\n KUJI = 6,\n LTC = 8,\n MATIC = 18,\n MAYA = 10,\n OP = 18,\n THOR = 8,\n ZEC = 8,\n}\n\nexport type SubstrateChain = Chain.Polkadot | Chain.Chainflip;\nexport const SubstrateChains = [Chain.Polkadot, Chain.Chainflip];\n\nexport type EVMChain =\n | Chain.Ethereum\n | Chain.Avalanche\n | Chain.BinanceSmartChain\n | Chain.Arbitrum\n | Chain.Optimism\n | Chain.Polygon;\nexport const EVMChains = [\n Chain.Ethereum,\n Chain.Avalanche,\n Chain.BinanceSmartChain,\n Chain.Arbitrum,\n Chain.Optimism,\n Chain.Polygon,\n] as const;\n\nexport type UTXOChain =\n | Chain.Bitcoin\n | Chain.BitcoinCash\n | Chain.Dash\n | Chain.Dogecoin\n | Chain.Litecoin;\nexport const UTXOChains = [\n Chain.Bitcoin,\n Chain.BitcoinCash,\n Chain.Dash,\n Chain.Dogecoin,\n Chain.Litecoin,\n] as const;\n\nexport type CosmosChain =\n | Chain.Cosmos\n | Chain.THORChain\n | Chain.Binance\n | Chain.Maya\n | Chain.Kujira;\nexport const CosmosChains = [\n Chain.Cosmos,\n Chain.THORChain,\n Chain.Binance,\n Chain.Maya,\n Chain.Kujira,\n] as const;\n\nexport const TCSupportedChains = [\n Chain.Avalanche,\n Chain.Binance,\n Chain.BinanceSmartChain,\n Chain.Bitcoin,\n Chain.BitcoinCash,\n Chain.Cosmos,\n Chain.Dogecoin,\n Chain.Ethereum,\n Chain.Litecoin,\n Chain.THORChain,\n] as const;\n\nexport const MAYASupportedChains = [\n Chain.Arbitrum,\n Chain.Dash,\n Chain.Ethereum,\n Chain.Kujira,\n Chain.Maya,\n Chain.THORChain,\n] as const;\n\nconst ChainToChainName = chains.reduce(\n (acc, chain) => {\n const chainName = chainNames.find((key) => Chain[key as ChainNameType] === chain);\n\n if (chainName) acc[chain] = chainName;\n\n return acc;\n },\n {} as { [key in Chain]: ChainNameType },\n);\n\nexport const ChainToChainId = chains.reduce(\n (acc, chain) => {\n acc[chain] = ChainId[ChainToChainName[chain]];\n return acc;\n },\n {} as { [key in Chain]: ChainId },\n);\n\nexport const ChainToRPC = chains.reduce(\n (acc, chain) => {\n acc[chain] = RPCUrl[ChainToChainName[chain]];\n return acc;\n },\n {} as { [key in Chain]: RPCUrl },\n);\n\nexport const ChainToHexChainId = chains.reduce(\n (acc, chain) => {\n const chainString = `${ChainToChainName[chain]}Hex` as keyof typeof ChainId;\n\n acc[chain] = ChainId[chainString];\n return acc;\n },\n {} as { [key in Chain]: ChainId },\n);\n\nexport const ChainToExplorerUrl = chains.reduce(\n (acc, chain) => {\n acc[chain] = ExplorerUrl[ChainToChainName[chain]];\n return acc;\n },\n {} as { [key in Chain]: string },\n);\n",
10
+ "import type { AssetValue } from \"../modules/assetValue.ts\";\nimport type { Chain, CosmosChain, EVMChain, UTXOChain } from \"./chains.ts\";\nimport type { WalletOption } from \"./wallet.ts\";\n\nexport type ConnectConfig = {\n stagenet?: boolean;\n /**\n * @required\n */\n thorswapApiKey?: string;\n /**\n * @required for AVAX & BSC\n */\n covalentApiKey?: string;\n /**\n * @required for ETH\n */\n ethplorerApiKey?: string;\n /**\n * @required for BTC, BCH, LTC, DOGE\n */\n blockchairApiKey?: string;\n /**\n * @required for Walletconnect\n */\n walletConnectProjectId?: string;\n /**\n * @optional for Trezor config\n */\n trezorManifest?: {\n email: string;\n appUrl: string;\n };\n /**\n * @optional for KeepKey config\n */\n keepkeyConfig?: {\n apiKey: string;\n pairingInfo: {\n name: string;\n imageUrl: string;\n basePath: string;\n url: string;\n };\n };\n};\n\nexport type AddChainWalletParams<T extends Chain> = {\n address: string;\n balance: AssetValue[];\n walletType: WalletOption;\n chain: T;\n [key: string]: Todo;\n};\n\ntype ApisType = { [key in UTXOChain]?: string | Todo } & {\n [key in EVMChain]?: string | Todo;\n} & {\n [key in CosmosChain]?: string;\n};\n\nexport type ConnectWalletParams = {\n addChain: <T extends Chain>(params: AddChainWalletParams<T>) => void;\n apis: ApisType;\n config: ConnectConfig;\n rpcUrls: { [chain in Chain]?: string };\n};\n\nexport type Witness = {\n value: number;\n script: Buffer;\n};\n\nexport enum QuoteMode {\n TC_SUPPORTED_TO_TC_SUPPORTED = \"TC-TC\",\n TC_SUPPORTED_TO_ETH = \"TC-ERC20\",\n TC_SUPPORTED_TO_AVAX = \"TC-ARC20\",\n TC_SUPPORTED_TO_BSC = \"TC-BEP20\",\n ETH_TO_TC_SUPPORTED = \"ERC20-TC\",\n ETH_TO_ETH = \"ERC20-ERC20\",\n ETH_TO_AVAX = \"ERC20-ARC20\",\n ETH_TO_BSC = \"ERC20-BEP20\",\n AVAX_TO_TC_SUPPORTED = \"ARC20-TC\",\n AVAX_TO_ETH = \"ARC20-ERC20\",\n AVAX_TO_AVAX = \"ARC20-ARC20\",\n AVAX_TO_BSC = \"ARC20-BEP20\",\n BSC_TO_TC_SUPPORTED = \"BEP20-TC\",\n BSC_TO_ETH = \"BEP20-ERC20\",\n BSC_TO_AVAX = \"BEP20-ARC20\",\n BSC_TO_BSC = \"BEP20-BEP20\",\n}\n\nexport type Asset = {\n chain: Chain;\n symbol: string;\n ticker: string;\n synth?: boolean;\n};\n\nexport const AGG_SWAP = [QuoteMode.ETH_TO_ETH, QuoteMode.AVAX_TO_AVAX, QuoteMode.BSC_TO_BSC];\n\nexport const SWAP_IN = [\n QuoteMode.ETH_TO_TC_SUPPORTED,\n QuoteMode.ETH_TO_AVAX,\n QuoteMode.ETH_TO_BSC,\n QuoteMode.AVAX_TO_TC_SUPPORTED,\n QuoteMode.AVAX_TO_ETH,\n QuoteMode.AVAX_TO_BSC,\n QuoteMode.BSC_TO_TC_SUPPORTED,\n QuoteMode.BSC_TO_ETH,\n QuoteMode.BSC_TO_AVAX,\n];\n\nexport const SWAP_OUT = [\n QuoteMode.TC_SUPPORTED_TO_TC_SUPPORTED,\n QuoteMode.TC_SUPPORTED_TO_ETH,\n QuoteMode.TC_SUPPORTED_TO_AVAX,\n QuoteMode.TC_SUPPORTED_TO_BSC,\n];\n",
11
+ "import type { Chain } from \"./chains\";\n\nexport enum ContractAddress {\n ARB = \"0x0000000000000000000000000000000000000000\",\n AVAX = \"0x0000000000000000000000000000000000000000\",\n ETH = \"0x0000000000000000000000000000000000000000\",\n BSC = \"0x0000000000000000000000000000000000000000\",\n MATIC = \"0x0000000000000000000000000000000000001010\",\n OP = \"0x4200000000000000000000000000000000000042\",\n}\n\nexport enum DerivationPath {\n ARB = \"m/44'/60'/0'/0\",\n AVAX = \"m/44'/60'/0'/0\",\n BCH = \"m/44'/145'/0'/0\",\n BNB = \"m/44'/714'/0'/0\",\n BSC = \"m/44'/60'/0'/0\",\n BTC = \"m/84'/0'/0'/0\",\n DASH = \"m/44'/5'/0'/0\",\n DOGE = \"m/44'/3'/0'/0\",\n DOT = \"////\",\n ETH = \"m/44'/60'/0'/0\",\n FLIP = \"////\",\n GAIA = \"m/44'/118'/0'/0\",\n KUJI = \"m/44'/118'/0'/0\",\n LTC = \"m/84'/2'/0'/0\",\n MATIC = \"m/44'/60'/0'/0\",\n MAYA = \"m/44'/931'/0'/0\",\n OP = \"m/44'/60'/0'/0\",\n THOR = \"m/44'/931'/0'/0\",\n}\n\nexport type DerivationPathArray = [number, number, number, number, number?];\n\nexport const NetworkDerivationPath: Record<Chain, DerivationPathArray> = {\n ARB: [44, 60, 0, 0, 0],\n AVAX: [44, 60, 0, 0, 0],\n BCH: [44, 145, 0, 0, 0],\n BNB: [44, 714, 0, 0, 0],\n BSC: [44, 60, 0, 0, 0],\n BTC: [84, 0, 0, 0, 0],\n DASH: [44, 5, 0, 0, 0],\n DOGE: [44, 3, 0, 0, 0],\n ETH: [44, 60, 0, 0, 0],\n GAIA: [44, 118, 0, 0, 0],\n KUJI: [44, 118, 0, 0, 0],\n LTC: [84, 2, 0, 0, 0],\n MATIC: [44, 60, 0, 0, 0],\n MAYA: [44, 931, 0, 0, 0],\n OP: [44, 60, 0, 0, 0],\n THOR: [44, 931, 0, 0, 0],\n\n // Polkadot and related network derivation path is not number based\n DOT: [0, 0, 0, 0, 0],\n FLIP: [0, 0, 0, 0, 0],\n};\n",
12
+ "import type { Eip1193Provider } from \"ethers\";\nimport type { AssetValue } from \"../modules/assetValue\";\nimport type { Chain } from \"./chains\";\n\ndeclare global {\n interface WindowEventMap {\n \"eip6963:announceProvider\": CustomEvent;\n }\n}\n\nexport enum WalletOption {\n KEYSTORE = \"KEYSTORE\",\n KEEPKEY = \"KEEPKEY\",\n XDEFI = \"XDEFI\",\n METAMASK = \"METAMASK\",\n COINBASE_WEB = \"COINBASE_WEB\",\n COINBASE_MOBILE = \"COINBASE_MOBILE\",\n TREZOR = \"TREZOR\",\n TRUSTWALLET_WEB = \"TRUSTWALLET_WEB\",\n LEDGER = \"LEDGER\",\n KEPLR = \"KEPLR\",\n OKX = \"OKX\",\n OKX_MOBILE = \"OKX_MOBILE\",\n BRAVE = \"BRAVE\",\n WALLETCONNECT = \"WALLETCONNECT\",\n EIP6963 = \"EIP6963\",\n EXODUS = \"EXODUS\",\n}\n\nexport enum LedgerErrorCode {\n NoError = 0x9000,\n LockedDevice = 0x5515,\n TC_NotFound = 65535,\n}\n\nexport type ChainWallet = {\n chain: Chain;\n address: string;\n balance: AssetValue[];\n walletType: WalletOption;\n};\n\nexport type EmptyWallet = { [key in Chain]?: unknown };\n\nexport type BaseWallet<T extends EmptyWallet | unknown> = {\n // @ts-expect-error\n [key in Chain]: ChainWallet & T[key];\n};\n\nexport type Wallet<T> = BaseWallet<T>;\n\nexport type EIP6963ProviderInfo = {\n walletId: string;\n uuid: string;\n name: string;\n icon: string;\n};\n\nexport type EIP6963ProviderDetail = {\n info: EIP6963ProviderInfo;\n provider: Eip1193Provider;\n};\n\nexport type EIP6963Provider = {\n info: EIP6963ProviderInfo;\n provider: Eip1193Provider;\n};\n\n// This type represents the structure of an event dispatched by a wallet to announce its presence based on EIP-6963.\nexport type EIP6963AnnounceProviderEvent = Event & {\n detail: EIP6963Provider;\n};\n",
13
+ "import { z } from \"zod\";\nimport type { AssetValue } from \"../modules/assetValue\";\nimport type { QuoteResponseRoute } from \"./quotes\";\n\nexport type GenericSwapParams = {\n buyAsset?: AssetValue;\n sellAsset?: AssetValue;\n recipient?: string;\n feeOptionKey?: FeeOption;\n route: QuoteResponseRoute;\n};\n\nexport type SwapParams<PluginNames = string, T = GenericSwapParams> = T & {\n pluginName?: PluginNames;\n};\n\nexport enum FeeOption {\n Average = \"average\",\n Fast = \"fast\",\n Fastest = \"fastest\",\n}\n\nexport enum ApproveMode {\n Approve = \"approve\",\n CheckOnly = \"checkOnly\",\n}\n\nexport type ApproveReturnType<T extends ApproveMode> = T extends \"checkOnly\"\n ? Promise<boolean>\n : Promise<string>;\n\nexport type WalletTxParams = {\n feeOptionKey?: FeeOption;\n from?: string;\n memo?: string; // optional memo to pass\n recipient: string;\n};\n\nexport enum MemoType {\n BOND = \"BOND\",\n DEPOSIT = \"+\",\n LEAVE = \"LEAVE\",\n NAME_REGISTER = \"~\",\n UNBOND = \"UNBOND\",\n WITHDRAW = \"-\",\n OPEN_LOAN = \"$+\",\n CLOSE_LOAN = \"$-\",\n}\n\nexport const QuoteRequestSchema = z\n .object({\n sellAsset: z.string({\n description: \"Asset to sell\",\n }),\n buyAsset: z.string({\n description: \"Asset to buy\",\n }),\n sellAmount: z\n .number({\n description: \"Amount of asset to sell\",\n })\n .refine((amount) => amount > 0, {\n message: \"sellAmount must be greater than 0\",\n path: [\"sellAmount\"],\n }),\n providers: z.optional(\n z.array(\n z.string({\n description: \"List of providers to use\",\n }),\n ),\n ),\n sourceAddress: z.optional(\n z.string({\n description: \"Address to send asset from\",\n }),\n ),\n destinationAddress: z.optional(\n z.string({\n description: \"Address to send asset to\",\n }),\n ),\n slippage: z.optional(\n z.number({\n description: \"Slippage tolerance as a percentage. Default is 3%.\",\n }),\n ),\n affiliate: z.optional(\n z.string({\n description: \"Affiliate thorname\",\n }),\n ),\n affiliateFee: z.optional(\n z\n .number({\n description: \"Affiliate fee in basis points\",\n })\n .refine(\n (fee) => {\n return fee === Math.floor(fee) && fee >= 0;\n },\n { message: \"affiliateFee must be a positive integer\", path: [\"affiliateFee\"] },\n ),\n ),\n allowSmartContractSender: z.optional(\n z.boolean({\n description: \"Allow smart contract as sender\",\n }),\n ),\n allowSmartContractReceiver: z.optional(\n z.boolean({\n description: \"Allow smart contract as recipient\",\n }),\n ),\n disableSecurityChecks: z.optional(\n z.boolean({\n description: \"Disable security checks\",\n }),\n ),\n })\n .refine((data) => data.sellAsset !== data.buyAsset, {\n message: \"Must be different\",\n path: [\"sellAsset\", \"buyAsset\"],\n });\n\nexport type QuoteRequest = z.infer<typeof QuoteRequestSchema>;\n",
14
+ "import { z } from \"zod\";\n\nexport enum WarningCodeEnum {\n highSlippage = \"highSlippage\",\n highPriceImpact = \"highPriceImpact\",\n}\n\nexport const EVMTransactionDetailsParamsSchema = z.array(\n z.union([\n z.string(),\n z.number(),\n z.array(z.string()),\n z\n .object({\n from: z.string(),\n value: z.string(),\n })\n .describe(\"Parameters to pass to the contract method\"),\n ]),\n);\n\nexport type EVMTransactionDetailsParams = z.infer<typeof EVMTransactionDetailsParamsSchema>;\n\nexport const EVMTransactionDetailsSchema = z.object({\n contractAddress: z.string({\n description: \"Address of the contract to interact with\",\n }),\n contractMethod: z.string({\n description: \"Name of the method to call\",\n }),\n contractParams: EVMTransactionDetailsParamsSchema,\n // contractParamsStreaming: z.array(\n // z.string({\n // description:\n // \"If making a streaming swap through THORChain, parameters to pass to the contract method\",\n // }),\n // ),\n contractParamNames: z.array(\n z.string({\n description: \"Names of the parameters to pass to the contract method\",\n }),\n ),\n approvalToken: z.optional(\n z.string({\n description: \"Address of the token to approve spending of\",\n }),\n ),\n approvalSpender: z.optional(\n z.string({\n description: \"Address of the spender to approve\",\n }),\n ),\n});\n\nexport type EVMTransactionDetails = z.infer<typeof EVMTransactionDetailsSchema>;\n\nexport const EstimatedTimeSchema = z.object({\n inbound: z.optional(\n z.number({\n description: \"Time to receive inbound asset in seconds\",\n }),\n ),\n swap: z.optional(\n z.number({\n description: \"Time to swap assets in seconds\",\n }),\n ),\n outbound: z.optional(\n z.number({\n description: \"Time to receive outbound asset in seconds\",\n }),\n ),\n total: z.number({\n description: \"Total time in seconds\",\n }),\n});\n\nexport type EstimatedTime = z.infer<typeof EstimatedTimeSchema>;\n\nexport enum ProviderName {\n CHAINFLIP = \"CHAINFLIP\",\n TRADERJOE_V1 = \"TRADERJOE_V1\",\n PANGOLIN_V1 = \"PANGOLIN_V1\",\n UNISWAP_V2 = \"UNISWAP_V2\",\n THORCHAIN = \"THORCHAIN\",\n THORCHAIN_STREAMING = \"THORCHAIN_STREAMING\",\n MAYACHAIN = \"MAYACHAIN\",\n ONEINCH = \"ONEINCH\",\n SUSHISWAP_V2 = \"SUSHISWAP_V2\",\n WOOFI_V2 = \"WOOFI_V2\",\n PANCAKESWAP = \"PANCAKESWAP\",\n}\n\nexport enum FeeTypeEnum {\n LIQUIDITY = \"liquidity\",\n NETWORK = \"network\",\n INBOUND = \"inbound\",\n OUTBOUND = \"outbound\",\n AFFILIATE = \"affiliate\",\n TAX = \"tax\",\n}\n\nexport const FeesSchema = z.array(\n z.object({\n type: z.nativeEnum(FeeTypeEnum),\n amount: z.string(),\n asset: z.string(),\n chain: z.string(),\n protocol: z.nativeEnum(ProviderName),\n }),\n);\n\nexport type Fees = z.infer<typeof FeesSchema>;\n\nexport const RouteLegSchema = z.object({\n sellAsset: z.string({\n description: \"Asset to sell\",\n }),\n buyAsset: z.string({\n description: \"Asset to buy\",\n }),\n provider: z.nativeEnum(ProviderName),\n sourceAddress: z.string({\n description: \"Source address\",\n }),\n destinationAddress: z.string({\n description: \"Destination address\",\n }),\n estimatedTime: EstimatedTimeSchema.optional(),\n affiliate: z\n .string({\n description: \"Affiliate address\",\n })\n .optional(),\n affiliateFee: z\n .number({\n description: \"Affiliate fee\",\n })\n .optional(),\n slipPercentage: z.number({\n description: \"Slippage as a percentage\",\n }),\n});\n\nexport type RouteLeg = z.infer<typeof RouteLegSchema>;\n\nexport const RouteLegWithoutAddressesSchema = RouteLegSchema.omit({\n sourceAddress: true,\n destinationAddress: true,\n slipPercentage: true,\n});\n\nexport type RouteLegWithoutAddresses = z.infer<typeof RouteLegWithoutAddressesSchema>;\n\nexport const RouteQuoteMetadataAssetSchema = z.object({\n name: z.string({\n description: \"Asset name\",\n }),\n price: z.number({\n description: \"Price in USD\",\n }),\n image: z.string({\n description: \"Asset image\",\n }),\n});\n\nexport type RouteQuoteMetadataAsset = z.infer<typeof RouteQuoteMetadataAssetSchema>;\n\nexport const RouteQuoteMetadataSchema = z.object({\n priceImpact: z.number({\n description: \"Price impact\",\n }),\n assets: z.optional(z.array(RouteQuoteMetadataAssetSchema)),\n});\n\nexport const RouteQuoteWarningSchema = z.array(\n z.object({\n code: z.nativeEnum(WarningCodeEnum),\n display: z.string(),\n tooltip: z.string().optional(),\n }),\n);\n\nexport const RouteQuoteLegSchema = z.object({\n sellAsset: z.string({\n description: \"Asset to sell\",\n }),\n buyAsset: z.string({\n description: \"Asset to buy\",\n }),\n provider: z.nativeEnum(ProviderName),\n buyAmount: z.string({\n description: \"Amount of asset to buy\",\n }),\n buyAmountMaxSlippage: z.string({\n description: \"Amount of asset to buy\",\n }),\n sellAmount: z.string({\n description: \"Amount of asset to sell\",\n }),\n sourceAddress: z.string({\n description: \"Source address\",\n }),\n destinationAddress: z.string({\n description: \"Destination address\",\n }),\n slippageBps: z.number({\n description: \"Slippage in bps\",\n }),\n targetAddress: z.optional(\n z.string({\n description: \"Target address for contract call or transfer address\",\n }),\n ),\n inboundAddress: z.optional(\n z.string({\n description: \"Inbound address\",\n }),\n ),\n routerAddress: z.optional(\n z.string({\n description: \"Inbound address\",\n }),\n ),\n contractMethod: z.optional(\n z.string({\n description: \"Contract method\",\n }),\n ),\n fees: z.optional(FeesSchema),\n estimatedTime: z.optional(EstimatedTimeSchema),\n memo: z.optional(\n z.string({\n description: \"Memo\",\n }),\n ),\n expiration: z.optional(\n z.string({\n description: \"Expiration\",\n }),\n ),\n});\n\nexport type RouteQuoteLeg = z.infer<typeof RouteQuoteLegSchema>;\n\nexport const RouteQuoteSchema = z.object({\n providers: z.array(z.nativeEnum(ProviderName)),\n sellAsset: z.string({\n description: \"Asset to sell\",\n }),\n sellAmount: z.string({\n description: \"sell amount\",\n }),\n buyAsset: z.string({\n description: \"Asset to buy\",\n }),\n expectedBuyAmount: z.string({\n description: \"Expected Buy amount\",\n }),\n expectedBuyAmountMaxSlippage: z.string({\n description: \"Expected Buy amount max slippage\",\n }),\n sourceAddress: z.string({\n description: \"Source address\",\n }),\n destinationAddress: z.string({\n description: \"Destination address\",\n }),\n targetAddress: z.optional(\n z.string({\n description: \"Target address\",\n }),\n ),\n routerAddress: z.optional(\n z.string({\n description: \"Router address\",\n }),\n ),\n inboundAddress: z.optional(\n z.string({\n description: \"Inbound address\",\n }),\n ),\n expiration: z.optional(\n z.string({\n description: \"Expiration\",\n }),\n ),\n memo: z.optional(\n z.string({\n description: \"Memo\",\n }),\n ),\n evmTransactionDetails: z.optional(EVMTransactionDetailsSchema),\n routePathArray: z.optional(z.array(z.string())),\n estimatedTime: z.optional(EstimatedTimeSchema),\n totalSlippageBps: z.number({\n description: \"Total slippage in bps\",\n }),\n legs: z.array(RouteQuoteLegSchema),\n // TODO use enum\n errorCode: z.optional(z.string()),\n warnings: RouteQuoteWarningSchema,\n meta: RouteQuoteMetadataSchema,\n});\n\nexport type RouteQuote = z.infer<typeof RouteQuoteSchema>;\n\nconst QuoteResponseRouteLegItem = z.object({\n provider: z.nativeEnum(ProviderName),\n sellAsset: z.string({\n description: \"Asset to sell\",\n }),\n sellAmount: z.string({\n description: \"Sell amount\",\n }),\n buyAsset: z.string({\n description: \"Asset to buy\",\n }),\n buyAmount: z.string({\n description: \"Buy amount\",\n }),\n buyAmountMaxSlippage: z.string({\n description: \"Buy amount max slippage\",\n }),\n fees: z.optional(FeesSchema), // TODO remove optionality\n});\n\nconst QuoteResponseRouteItem = z.object({\n providers: z.array(z.nativeEnum(ProviderName)),\n sellAsset: z.string({\n description: \"Asset to sell\",\n }),\n sellAmount: z.string({\n description: \"sell amount\",\n }),\n buyAsset: z.string({\n description: \"Asset to buy\",\n }),\n expectedBuyAmount: z.string({\n description: \"Expected Buy amount\",\n }),\n expectedBuyAmountMaxSlippage: z.string({\n description: \"Expected Buy amount max slippage\",\n }),\n sourceAddress: z.string({\n description: \"Source address\",\n }),\n destinationAddress: z.string({\n description: \"Destination address\",\n }),\n targetAddress: z.optional(\n z.string({\n description: \"Target address\",\n }),\n ),\n expiration: z.optional(\n z.string({\n description: \"Expiration\",\n }),\n ),\n memo: z.optional(\n z.string({\n description: \"Memo\",\n }),\n ),\n evmTransactionDetails: z.optional(EVMTransactionDetailsSchema),\n estimatedTime: z.optional(EstimatedTimeSchema), // TODO remove optionality\n totalSlippageBps: z.number({\n description: \"Total slippage in bps\",\n }),\n legs: z.array(QuoteResponseRouteLegItem),\n warnings: RouteQuoteWarningSchema,\n meta: RouteQuoteMetadataSchema,\n});\n\nexport const QuoteResponseSchema = z.object({\n quoteId: z.string({\n description: \"Quote ID\",\n }),\n routes: z.array(QuoteResponseRouteItem),\n error: z.optional(\n z.string({\n description: \"Error message\",\n }),\n ),\n});\n\nexport type QuoteResponse = z.infer<typeof QuoteResponseSchema>;\nexport type QuoteResponseRoute = z.infer<typeof QuoteResponseRouteItem>;\nexport type QuoteResponseRouteLeg = z.infer<typeof QuoteResponseRouteLegItem>;\n",
15
+ "import type { KyInstance, Options } from \"ky\";\nimport ky from \"ky\";\n\nlet kyClient: typeof ky;\n\nexport const defaultRequestHeaders =\n typeof window !== \"undefined\"\n ? ({} as Record<string, string>)\n : { referrer: \"https://sk.thorswap.net\", referer: \"https://sk.thorswap.net\" };\n\nexport function setRequestClientConfig({ apiKey, ...config }: Options & { apiKey?: string }) {\n kyClient = ky.create({\n ...config,\n headers: { ...defaultRequestHeaders, ...config.headers, \"x-api-key\": apiKey },\n });\n}\n\nfunction getKyClient() {\n if (kyClient) return kyClient;\n kyClient = ky.create({ headers: defaultRequestHeaders });\n return kyClient;\n}\n\nconst getTypedBaseRequestClient = (ky: KyInstance) => ({\n get: <T>(url: string | URL | Request, options?: Options) => ky.get(url, options).json<T>(),\n post: <T>(url: string | URL | Request, options?: Options) => ky.post(url, options).json<T>(),\n});\n\nexport const RequestClient = {\n ...getTypedBaseRequestClient(getKyClient()),\n extend: (options: Options) => {\n const extendedClient = getKyClient().extend(options);\n return {\n ...getTypedBaseRequestClient(extendedClient),\n extend: RequestClient.extend,\n };\n },\n};\n",
16
+ "import { RequestClient } from \"../modules/requestClient.ts\";\nimport { BaseDecimal, Chain, ChainToRPC, type EVMChain, EVMChains } from \"../types/chains.ts\";\nimport type { TokenNames } from \"../types/tokens.ts\";\n\nconst getDecimalMethodHex = \"0x313ce567\";\n\nexport type CommonAssetString =\n | `${Chain.Maya}.MAYA`\n | `${Chain.Ethereum}.THOR`\n | `${Chain.Ethereum}.vTHOR`\n | `${Chain.Kujira}.USK`\n | Chain;\n\nconst getContractDecimals = async ({ chain, to }: { chain: EVMChain; to: string }) => {\n try {\n const { result } = await RequestClient.post<{ result: string }>(ChainToRPC[chain], {\n headers: {\n accept: \"*/*\",\n \"content-type\": \"application/json\",\n \"cache-control\": \"no-cache\",\n },\n body: JSON.stringify({\n id: 44,\n jsonrpc: \"2.0\",\n method: \"eth_call\",\n params: [{ to: to.toLowerCase(), data: getDecimalMethodHex }, \"latest\"],\n }),\n });\n\n return Number.parseInt(BigInt(result || BaseDecimal[chain]).toString());\n } catch (error) {\n console.error(error);\n return BaseDecimal[chain];\n }\n};\n\nconst getETHAssetDecimal = (symbol: string) => {\n if (symbol === Chain.Ethereum) return BaseDecimal.ETH;\n const splitSymbol = symbol.split(\"-\");\n const address = splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];\n\n return address?.startsWith(\"0x\")\n ? getContractDecimals({ chain: Chain.Ethereum, to: address })\n : BaseDecimal.ETH;\n};\n\nconst getAVAXAssetDecimal = (symbol: string) => {\n const splitSymbol = symbol.split(\"-\");\n const address = splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];\n\n return address?.startsWith(\"0x\")\n ? getContractDecimals({ chain: Chain.Avalanche, to: address.toLowerCase() })\n : BaseDecimal.AVAX;\n};\n\nconst getBSCAssetDecimal = (symbol: string) => {\n if (symbol === Chain.BinanceSmartChain) return BaseDecimal.BSC;\n\n return BaseDecimal.BSC;\n};\n\nexport const getDecimal = ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n switch (chain) {\n case Chain.Ethereum:\n return getETHAssetDecimal(symbol);\n case Chain.Avalanche:\n return getAVAXAssetDecimal(symbol);\n case Chain.BinanceSmartChain:\n return getBSCAssetDecimal(symbol);\n default:\n return BaseDecimal[chain];\n }\n};\n\nexport const isGasAsset = ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Optimism:\n return symbol === \"ETH\";\n case Chain.Maya:\n return symbol === \"CACAO\";\n case Chain.Kujira:\n return symbol === \"KUJI\";\n case Chain.Cosmos:\n return symbol === \"ATOM\";\n case Chain.Polygon:\n return symbol === \"MATIC\";\n case Chain.BinanceSmartChain:\n return symbol === \"BNB\";\n case Chain.THORChain:\n return symbol === \"RUNE\";\n\n default:\n return symbol === chain;\n }\n};\n\nexport const getCommonAssetInfo = (\n assetString: CommonAssetString,\n): { identifier: string; decimal: number } => {\n switch (assetString) {\n case `${Chain.Ethereum}.THOR`:\n return { identifier: \"ETH.THOR-0xa5f2211b9b8170f694421f2046281775e8468044\", decimal: 18 };\n case `${Chain.Ethereum}.vTHOR`:\n return { identifier: \"ETH.vTHOR-0x815c23eca83261b6ec689b60cc4a58b54bc24d8d\", decimal: 18 };\n case Chain.Arbitrum:\n return { identifier: `${Chain.Arbitrum}.ETH`, decimal: BaseDecimal[assetString] };\n case Chain.Optimism:\n return { identifier: `${Chain.Optimism}.ETH`, decimal: BaseDecimal[assetString] };\n case Chain.Cosmos:\n return { identifier: \"GAIA.ATOM\", decimal: BaseDecimal[assetString] };\n case Chain.THORChain:\n return { identifier: \"THOR.RUNE\", decimal: BaseDecimal[assetString] };\n case Chain.BinanceSmartChain:\n return { identifier: \"BSC.BNB\", decimal: BaseDecimal[assetString] };\n case Chain.Maya:\n return { identifier: \"MAYA.CACAO\", decimal: BaseDecimal.MAYA };\n case `${Chain.Maya}.MAYA`:\n return { identifier: \"MAYA.MAYA\", decimal: 4 };\n\n case `${Chain.Kujira}.USK`:\n return { identifier: `${Chain.Kujira}.USK`, decimal: 6 };\n\n default:\n return { identifier: `${assetString}.${assetString}`, decimal: BaseDecimal[assetString] };\n }\n};\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: TODO: Refactor\nexport const getAssetType = ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n if (symbol.includes(\"/\")) return \"Synth\";\n\n switch (chain) {\n case Chain.Cosmos:\n return symbol === \"ATOM\" ? \"Native\" : Chain.Cosmos;\n case Chain.Kujira:\n return symbol === Chain.Kujira ? \"Native\" : Chain.Kujira;\n case Chain.Binance:\n return symbol === Chain.Binance ? \"Native\" : \"BEP2\";\n case Chain.BinanceSmartChain:\n return symbol === Chain.Binance ? \"Native\" : \"BEP20\";\n case Chain.Ethereum:\n return symbol === Chain.Ethereum ? \"Native\" : \"ERC20\";\n case Chain.Avalanche:\n return symbol === Chain.Avalanche ? \"Native\" : Chain.Avalanche;\n case Chain.Polygon:\n return symbol === Chain.Polygon ? \"Native\" : \"POLYGON\";\n\n case Chain.Arbitrum:\n return [Chain.Ethereum, Chain.Arbitrum].includes(symbol as Chain) ? \"Native\" : \"ARBITRUM\";\n case Chain.Optimism:\n return [Chain.Ethereum, Chain.Optimism].includes(symbol as Chain) ? \"Native\" : \"OPTIMISM\";\n\n default:\n return \"Native\";\n }\n};\n\nexport const assetFromString = (assetString: string) => {\n const [chain, ...symbolArray] = assetString.split(\".\") as [Chain, ...(string | undefined)[]];\n const synth = assetString.includes(\"/\");\n const symbol = symbolArray.join(\".\");\n const splitSymbol = symbol?.split(\"-\");\n const ticker = splitSymbol?.length\n ? splitSymbol.length === 1\n ? splitSymbol[0]\n : splitSymbol.slice(0, -1).join(\"-\")\n : undefined;\n\n return { chain, symbol, ticker, synth };\n};\n\nconst potentialScamRegex = new RegExp(\n /(.)\\1{6}|\\.ORG|\\.NET|\\.FINANCE|\\.COM|WWW|HTTP|\\\\\\\\|\\/\\/|[\\s$%:[\\]]/,\n \"gmi\",\n);\n\nconst evmAssetHasAddress = (assetString: string) => {\n const [chain, symbol] = assetString.split(\".\") as [EVMChain, string];\n if (!EVMChains.includes(chain as EVMChain)) return true;\n const splitSymbol = symbol.split(\"-\");\n const address = splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];\n\n return isGasAsset({ chain: chain as Chain, symbol }) || !!address;\n};\n\nexport const filterAssets = (\n tokens: {\n value: string;\n decimal: number;\n chain: Chain;\n symbol: string;\n }[],\n) =>\n tokens.filter(({ chain, value, symbol }) => {\n const assetString = `${chain}.${symbol}`;\n\n return (\n !potentialScamRegex.test(assetString) && evmAssetHasAddress(assetString) && value !== \"0\"\n );\n });\n\nexport async function findAssetBy(\n params: { chain: EVMChain; contract: string } | { identifier: `${Chain}.${string}` },\n) {\n const tokenPackages = await import(\"@swapkit/tokens\");\n\n for (const tokenList of Object.values(tokenPackages)) {\n for (const { identifier, chain: tokenChain, ...rest } of tokenList.tokens) {\n if (\"identifier\" in params && identifier === params.identifier) {\n return identifier as TokenNames;\n }\n\n if (\n \"address\" in rest &&\n \"chain\" in params &&\n tokenChain === params.chain &&\n rest.address.toLowerCase() === params.contract.toLowerCase()\n )\n return identifier as TokenNames;\n }\n }\n\n return;\n}\n",
17
+ "import {\n Chain,\n type DerivationPathArray,\n type EVMChain,\n EVMChains,\n NetworkDerivationPath,\n} from \"../types\";\n\ntype Params = {\n chain: Chain;\n index: number;\n addressIndex?: number;\n type?: \"legacy\" | \"ledgerLive\" | \"nativeSegwitMiddleAccount\" | \"segwit\";\n};\n\nconst updatedLastIndex = (path: DerivationPathArray, index: number) => [\n ...path.slice(0, path.length - 1),\n index,\n];\n\nexport function getDerivationPathFor({ chain, index, addressIndex = 0, type }: Params) {\n if (EVMChains.includes(chain as EVMChain)) {\n if (type === \"legacy\") return [44, 60, 0, index];\n if (type === \"ledgerLive\") return [44, 60, index, 0, addressIndex];\n return updatedLastIndex(NetworkDerivationPath[chain], index);\n }\n\n if ([Chain.Bitcoin, Chain.Litecoin].includes(chain)) {\n const chainId = chain === Chain.Bitcoin ? 0 : 2;\n\n if (type === \"nativeSegwitMiddleAccount\") return [84, chainId, index, 0, addressIndex];\n if (type === \"segwit\") return [49, chainId, 0, 0, index];\n if (type === \"legacy\") return [44, chainId, 0, 0, index];\n return updatedLastIndex(NetworkDerivationPath[chain], index);\n }\n\n return updatedLastIndex(NetworkDerivationPath[chain], index);\n}\n\nexport function getWalletFormatFor(path: string) {\n const [_, purpose, chainId] = path.split(\"/\").map((p) => Number.parseInt(p, 10));\n\n if (chainId === 145) \"cashaddr\";\n\n switch (purpose) {\n case 44:\n return \"legacy\";\n case 49:\n return \"p2sh\";\n default:\n return \"bech32\";\n }\n}\n",
18
+ "import { SwapKitNumber } from \"../index.ts\";\nimport { BaseDecimal } from \"../types/chains.ts\";\n\ntype ShareParams<T extends {}> = T & {\n liquidityUnits: string;\n poolUnits: string;\n};\n\ntype PoolParams = {\n runeAmount: string;\n assetAmount: string;\n runeDepth: string;\n assetDepth: string;\n};\n\n/**\n * Ref: https://gitlab.com/thorchain/thornode/-/issues/657\n * share = (s * A * (2 * T^2 - 2 * T * s + s^2))/T^3\n * s = stakeUnits for member (after factoring in withdrawBasisPoints)\n * T = totalPoolUnits for pool\n * A = assetDepth to be withdrawn\n *\n * Formula:\n * share = (s * A * (2 * T^2 - 2 * T * s + s^2))/T^3\n * (part1 * (part2 - part3 + part4)) / part5\n */\nexport function getAsymmetricRuneShare({\n liquidityUnits,\n poolUnits,\n runeDepth,\n}: ShareParams<{ runeDepth: string }>) {\n const s = toTCSwapKitNumber(liquidityUnits);\n const T = toTCSwapKitNumber(poolUnits);\n const A = toTCSwapKitNumber(runeDepth);\n\n const part1 = s.mul(A);\n const part2 = T.mul(T).mul(2);\n const part3 = T.mul(s).mul(2);\n const part4 = s.mul(s);\n const part5 = T.mul(T).mul(T);\n\n const numerator = part1.mul(part2.sub(part3).add(part4));\n\n return numerator.div(part5);\n}\n\nexport function getAsymmetricAssetShare({\n liquidityUnits,\n poolUnits,\n assetDepth,\n}: ShareParams<{ assetDepth: string }>) {\n const s = toTCSwapKitNumber(liquidityUnits);\n const T = toTCSwapKitNumber(poolUnits);\n const A = toTCSwapKitNumber(assetDepth);\n\n const part1 = s.mul(A);\n const part2 = T.mul(T).mul(2);\n const part3 = T.mul(s).mul(2);\n const part4 = s.mul(s);\n const numerator = part1.mul(part2.sub(part3).add(part4));\n const part5 = T.mul(T).mul(T);\n\n return numerator.div(part5);\n}\n\nexport function getAsymmetricRuneWithdrawAmount({\n percent,\n runeDepth,\n liquidityUnits,\n poolUnits,\n}: ShareParams<{ percent: number; runeDepth: string }>) {\n return getAsymmetricRuneShare({ runeDepth, liquidityUnits, poolUnits }).mul(percent);\n}\n\nexport function getAsymmetricAssetWithdrawAmount({\n percent,\n assetDepth,\n liquidityUnits,\n poolUnits,\n}: ShareParams<{ percent: number; assetDepth: string }>) {\n return getAsymmetricAssetShare({ assetDepth, liquidityUnits, poolUnits }).mul(percent);\n}\n\nfunction toTCSwapKitNumber(value: string) {\n return SwapKitNumber.fromBigInt(BigInt(value), BaseDecimal.THOR);\n}\n\nexport function getSymmetricPoolShare({\n liquidityUnits,\n poolUnits,\n runeDepth,\n assetDepth,\n}: ShareParams<{\n runeDepth: string;\n assetDepth: string;\n}>) {\n return {\n assetAmount: toTCSwapKitNumber(assetDepth).mul(liquidityUnits).div(poolUnits),\n runeAmount: toTCSwapKitNumber(runeDepth).mul(liquidityUnits).div(poolUnits),\n };\n}\n\nexport function getSymmetricWithdraw({\n liquidityUnits,\n poolUnits,\n runeDepth,\n assetDepth,\n percent,\n}: ShareParams<{\n runeDepth: string;\n assetDepth: string;\n percent: number;\n}>) {\n return Object.fromEntries(\n Object.entries(getSymmetricPoolShare({ liquidityUnits, poolUnits, runeDepth, assetDepth })).map(\n ([name, value]) => [name, value.mul(percent)],\n ),\n );\n}\n\nexport function getEstimatedPoolShare({\n runeDepth,\n poolUnits,\n assetDepth,\n liquidityUnits,\n runeAmount,\n assetAmount,\n}: ShareParams<{\n runeAmount: string;\n assetAmount: string;\n runeDepth: string;\n assetDepth: string;\n}>) {\n const R = new SwapKitNumber({ value: runeDepth, decimal: 8 });\n const A = new SwapKitNumber({ value: assetDepth, decimal: 8 });\n const P = new SwapKitNumber({ value: poolUnits, decimal: 8 });\n const runeAddAmount = new SwapKitNumber({ value: runeAmount, decimal: 8 });\n const assetAddAmount = new SwapKitNumber({ value: assetAmount, decimal: 8 });\n\n // liquidityUnits = P * (r*A + a*R + 2*r*a) / (r*A + a*R + 2*R*A)\n const rA = runeAddAmount.mul(A);\n const aR = assetAddAmount.mul(R);\n const ra = runeAddAmount.mul(assetAddAmount);\n const RA = R.mul(A);\n const numerator = P.mul(rA.add(aR.add(ra.mul(2))));\n const denominator = rA.add(aR.add(RA.mul(2)));\n const liquidityUnitsAfterAdd = numerator.div(denominator);\n const estimatedLiquidityUnits = toTCSwapKitNumber(liquidityUnits).add(liquidityUnitsAfterAdd);\n\n if (liquidityUnitsAfterAdd.getBaseValue(\"number\") === 0) {\n return estimatedLiquidityUnits.div(P).getBaseValue(\"number\");\n }\n\n // get pool units after add\n const newPoolUnits = P.add(estimatedLiquidityUnits);\n\n return estimatedLiquidityUnits.div(newPoolUnits).getBaseValue(\"number\");\n}\n\nexport function getLiquiditySlippage({\n runeAmount,\n assetAmount,\n runeDepth,\n assetDepth,\n}: PoolParams) {\n if (runeAmount === \"0\" || assetAmount === \"0\" || runeDepth === \"0\" || assetDepth === \"0\")\n return 0;\n // formula: (t * R - T * r)/ (T*r + R*T)\n const R = toTCSwapKitNumber(runeDepth);\n const T = toTCSwapKitNumber(assetDepth);\n const assetAddAmount = toTCSwapKitNumber(assetAmount);\n const runeAddAmount = toTCSwapKitNumber(runeAmount);\n\n const numerator = assetAddAmount.mul(R).sub(T.mul(runeAddAmount));\n const denominator = T.mul(runeAddAmount).add(R.mul(T));\n\n // set absolute value of percent, no negative allowed\n return Math.abs(numerator.div(denominator).getBaseValue(\"number\"));\n}\n",
19
+ "import { Chain } from \"../types/chains\";\nimport { MemoType } from \"../types/sdk\";\n\nexport type NameRegisterParam = {\n name: string;\n chain: string;\n address: string;\n owner?: string;\n preferredAsset?: string;\n expiryBlock?: string;\n};\n\ntype WithChain<T extends {}> = T & { chain: Chain };\n\nexport type MemoOptions<T extends MemoType> = {\n [MemoType.BOND]: { address: string };\n [MemoType.LEAVE]: { address: string };\n [MemoType.CLOSE_LOAN]: { address: string; asset: string; minAmount?: string };\n [MemoType.OPEN_LOAN]: { address: string; asset: string; minAmount?: string };\n [MemoType.UNBOND]: { address: string; unbondAmount: number };\n [MemoType.DEPOSIT]: WithChain<{ symbol: string; address?: string; singleSide?: boolean }>;\n [MemoType.WITHDRAW]: WithChain<{\n ticker: string;\n symbol: string;\n basisPoints: number;\n targetAssetString?: string;\n singleSide?: boolean;\n }>;\n [MemoType.NAME_REGISTER]: Omit<NameRegisterParam, \"preferredAsset\" | \"expiryBlock\">;\n}[T];\n\nexport const getMemoFor = <T extends MemoType>(memoType: T, options: MemoOptions<T>) => {\n switch (memoType) {\n case MemoType.LEAVE:\n case MemoType.BOND: {\n const { address } = options as MemoOptions<MemoType.BOND>;\n return `${memoType}:${address}`;\n }\n\n case MemoType.UNBOND: {\n const { address, unbondAmount } = options as MemoOptions<MemoType.UNBOND>;\n return `${memoType}:${address}:${unbondAmount}`;\n }\n\n case MemoType.NAME_REGISTER: {\n const { name, chain, address, owner } = options as MemoOptions<MemoType.NAME_REGISTER>;\n return `${memoType}:${name}:${chain}:${address}${owner ? `:${owner}` : \"\"}`;\n }\n\n case MemoType.DEPOSIT: {\n const { chain, symbol, address, singleSide } = options as MemoOptions<MemoType.DEPOSIT>;\n\n const getPoolIdentifier = (chain: Chain, symbol: string): string => {\n switch (chain) {\n case Chain.Litecoin:\n return \"l\";\n case Chain.Dogecoin:\n return \"d\";\n case Chain.BitcoinCash:\n return \"c\";\n default:\n return `${chain}.${symbol}`;\n }\n };\n\n return singleSide\n ? `${memoType}:${chain}/${symbol}`\n : `${memoType}:${getPoolIdentifier(chain, symbol)}:${address || \"\"}`;\n }\n\n case MemoType.WITHDRAW: {\n const { chain, ticker, symbol, basisPoints, targetAssetString, singleSide } =\n options as MemoOptions<MemoType.WITHDRAW>;\n\n const shortenedSymbol =\n chain === \"ETH\" && ticker !== \"ETH\" ? `${ticker}-${symbol.slice(-3)}` : symbol;\n const target = !singleSide && targetAssetString ? `:${targetAssetString}` : \"\";\n const assetDivider = singleSide ? \"/\" : \".\";\n\n return `${memoType}:${chain}${assetDivider}${shortenedSymbol}:${basisPoints}${target}`;\n }\n\n case MemoType.OPEN_LOAN:\n case MemoType.CLOSE_LOAN: {\n const { asset, address } = options as MemoOptions<MemoType.OPEN_LOAN>;\n\n return `${memoType}:${asset}:${address}`; //:${minAmount ? `${minAmount}` : ''}:t:0`;\n }\n\n default:\n return \"\";\n }\n};\n",
20
+ "const errorMessages = {\n /**\n * Core\n */\n core_wallet_connection_not_found: 10001,\n core_estimated_max_spendable_chain_not_supported: 10002,\n core_extend_error: 10003,\n core_inbound_data_not_found: 10004,\n core_approve_asset_address_or_from_not_found: 10005,\n core_plugin_not_found: 10006,\n core_plugin_swap_not_found: 10007,\n core_approve_asset_target_invalid: 10008,\n core_chain_halted: 10099,\n\n /**\n * Core - Wallet Connection\n */\n core_wallet_xdefi_not_installed: 10101,\n core_wallet_evmwallet_not_installed: 10102,\n core_wallet_walletconnect_not_installed: 10103,\n core_wallet_keystore_not_installed: 10104,\n core_wallet_ledger_not_installed: 10105,\n core_wallet_trezor_not_installed: 10106,\n core_wallet_keplr_not_installed: 10107,\n core_wallet_okx_not_installed: 10108,\n core_wallet_keepkey_not_installed: 10109,\n /**\n * Core - Swap\n */\n core_swap_invalid_params: 10200,\n core_swap_route_not_complete: 10201,\n core_swap_asset_not_recognized: 10202,\n core_swap_contract_not_found: 10203,\n core_swap_route_transaction_not_found: 10204,\n core_swap_contract_not_supported: 10205,\n core_swap_transaction_error: 10206,\n core_swap_quote_mode_not_supported: 10207,\n /**\n * Core - Transaction\n */\n core_transaction_deposit_error: 10301,\n core_transaction_create_liquidity_rune_error: 10302,\n core_transaction_create_liquidity_asset_error: 10303,\n core_transaction_create_liquidity_invalid_params: 10304,\n core_transaction_add_liquidity_invalid_params: 10305,\n core_transaction_add_liquidity_no_rune_address: 10306,\n core_transaction_add_liquidity_rune_error: 10307,\n core_transaction_add_liquidity_asset_error: 10308,\n core_transaction_withdraw_error: 10309,\n core_transaction_deposit_to_pool_error: 10310,\n core_transaction_deposit_insufficient_funds_error: 10311,\n core_transaction_deposit_gas_error: 10312,\n core_transaction_invalid_sender_address: 10313,\n core_transaction_deposit_server_error: 10314,\n core_transaction_user_rejected: 10315,\n core_transaction_create_liquidity_cacao_error: 10316,\n core_transaction_add_liquidity_no_cacao_address: 10306,\n core_transaction_add_liquidity_cacao_error: 10307,\n\n /**\n * Wallets\n */\n wallet_ledger_connection_error: 20001,\n wallet_ledger_connection_claimed: 20002,\n wallet_ledger_get_address_error: 20003,\n wallet_ledger_device_not_found: 20004,\n wallet_ledger_device_locked: 20005,\n\n /**\n * Chainflip\n */\n chainflip_channel_error: 30001,\n chainflip_broker_recipient_error: 30002,\n\n /**\n * THORChain\n */\n\n /**\n * SwapKit API\n */\n api_v2_invalid_response: 40001,\n\n /**\n * Helpers\n */\n helpers_number_different_decimals: 99101,\n} as const;\n\nexport type ErrorKeys = keyof typeof errorMessages;\n\nexport class SwapKitError extends Error {\n constructor(errorKey: ErrorKeys, sourceError?: NotWorth) {\n if (sourceError) {\n console.error(sourceError, {\n stack: sourceError?.stack,\n message: sourceError?.message,\n });\n }\n\n super(errorKey, {\n cause: { code: errorMessages[errorKey], message: errorKey },\n });\n Object.setPrototypeOf(this, SwapKitError.prototype);\n }\n}\n",
21
+ "import { type ErrorKeys, SwapKitError } from \"../modules/swapKitError\";\nimport type { DerivationPathArray } from \"../types/derivationPath\";\n\n// 10 rune for register, 1 rune per year\n// MINIMUM_REGISTRATION_FEE = 11\nexport function getTHORNameCost(numberOfYears: number) {\n if (numberOfYears < 0) throw new Error(\"Invalid number of years\");\n return 10 + numberOfYears;\n}\n\n// 10 CACAO for register\n// 1.0512 CACAO per year\nexport function getMAYANameCost(numberOfYears: number) {\n if (numberOfYears < 0) throw new Error(\"Invalid number of year\");\n // round to max 10 decimals\n return Math.round((10 + numberOfYears * 1.0512) * 1e10) / 1e10;\n}\n\nexport function derivationPathToString([network, chainId, account, change, index]:\n | [number, number, number, number, number | undefined]\n | DerivationPathArray) {\n const shortPath = typeof index !== \"number\";\n\n return `m/${network}'/${chainId}'/${account}'/${change}${shortPath ? \"\" : `/${index}`}`;\n}\n\nexport function wrapWithThrow<T>(fn: () => T, errorKey?: ErrorKeys) {\n try {\n return fn();\n } catch (error) {\n if (errorKey) {\n throw new SwapKitError(errorKey, error);\n }\n\n return console.error(error);\n }\n}\n",
22
+ "import { Chain } from \"../types/chains\";\n\n// Backward compatibility\nconst supportedChains = [...Object.values(Chain), \"TERRA\"];\n\nexport function validateIdentifier(identifier = \"\") {\n const uppercasedIdentifier = identifier.toUpperCase();\n\n const [chain] = uppercasedIdentifier.split(\".\") as [Chain, string];\n if (supportedChains.includes(chain)) return true;\n\n const [synthChain] = uppercasedIdentifier.split(\"/\") as [Chain, string];\n if (supportedChains.includes(synthChain)) return true;\n\n throw new Error(\n `Invalid identifier: ${identifier}. Expected format: <Chain>.<Ticker> or <Chain>.<Ticker>-<ContractAddress>`,\n );\n}\n\nexport function validateTNS(name: string) {\n if (name.length > 30) return false;\n\n const regex = /^[a-zA-Z0-9+_-]+$/g;\n\n return !!name.match(regex);\n}\n",
23
+ "import type { BrowserProvider } from \"ethers\";\nimport {\n ChainId,\n type EIP6963AnnounceProviderEvent,\n type EIP6963Provider,\n WalletOption,\n} from \"../types\";\n\nexport type EthereumWindowProvider = BrowserProvider & {\n __XDEFI?: boolean;\n isBraveWallet?: boolean;\n isCoinbaseWallet?: boolean;\n isMetaMask?: boolean;\n isOkxWallet?: boolean;\n isTrust?: boolean;\n on: (event: string, callback?: () => void) => void;\n overrideIsMetaMask?: boolean;\n request: <T = unknown>(args: { method: string; params?: unknown[] }) => Promise<T>;\n selectedProvider?: EthereumWindowProvider;\n};\n\ndeclare const window: {\n ethereum: EthereumWindowProvider;\n trustwallet: EthereumWindowProvider;\n coinbaseWalletExtension: EthereumWindowProvider;\n braveSolana: Todo;\n} & Window;\n\n// declare global {\n// interface Window {\n// ethereum: EthereumWindowProvider;\n// trustwallet: EthereumWindowProvider;\n// coinbaseWalletExtension: EthereumWindowProvider;\n// braveSolana: Todo;\n// }\n// }\n\ntype NetworkParams = {\n chainId: ChainId;\n chainName: string;\n nativeCurrency: {\n name: string;\n symbol: string;\n decimals: number;\n };\n rpcUrls: string[];\n blockExplorerUrls: string[];\n};\n\ntype ProviderRequestParams = {\n provider?: BrowserProvider;\n params?: Todo;\n method:\n | \"wallet_addEthereumChain\"\n | \"wallet_switchEthereumChain\"\n | \"eth_requestAccounts\"\n | \"eth_sendTransaction\"\n | \"eth_signTransaction\";\n};\n\nconst methodsToWrap = [\n \"approve\",\n \"approvedAmount\",\n \"call\",\n \"sendTransaction\",\n \"transfer\",\n \"isApproved\",\n \"approvedAmount\",\n \"EIP1193SendTransaction\",\n \"getFeeData\",\n \"broadcastTransaction\",\n \"estimateCall\",\n \"estimateGasLimit\",\n \"estimateGasPrices\",\n \"createContractTxObject\",\n];\n\nexport const wrapMethodWithNetworkSwitch = <T extends (...args: Todo[]) => Todo>(\n func: T,\n provider: BrowserProvider,\n chainId: ChainId,\n) =>\n (async (...args: Todo[]) => {\n try {\n await switchEVMWalletNetwork(provider, chainId);\n } catch (error) {\n throw new Error(`Failed to switch network: ${error}`);\n }\n return func(...args);\n }) as unknown as T;\n\nconst providerRequest = ({ provider, params, method }: ProviderRequestParams) => {\n if (!provider?.send) throw new Error(\"Provider not found\");\n\n const providerParams = params ? (Array.isArray(params) ? params : [params]) : [];\n return provider.send(method, providerParams);\n};\n\nexport const prepareNetworkSwitch = <T extends { [key: string]: (...args: Todo[]) => Todo }>({\n toolbox,\n chainId,\n provider = window.ethereum,\n}: {\n toolbox: T;\n chainId: ChainId;\n provider?: BrowserProvider;\n}) => {\n const wrappedMethods = methodsToWrap.reduce((object, methodName) => {\n if (!toolbox[methodName]) return object;\n const method = toolbox[methodName];\n\n if (typeof method !== \"function\") return object;\n\n return {\n // biome-ignore lint/performance/noAccumulatingSpread: This is a valid use case\n ...object,\n [methodName]: wrapMethodWithNetworkSwitch<typeof method>(method, provider, chainId),\n };\n }, {});\n\n return { ...toolbox, ...wrappedMethods };\n};\n\nexport const addEVMWalletNetwork = (provider: BrowserProvider, networkParams: NetworkParams) =>\n providerRequest({ provider, method: \"wallet_addEthereumChain\", params: [networkParams] });\n\nexport const switchEVMWalletNetwork = (provider: BrowserProvider, chainId = ChainId.EthereumHex) =>\n providerRequest({ provider, method: \"wallet_switchEthereumChain\", params: [{ chainId }] });\n\nexport const addAccountsChangedCallback = (callback: () => void) => {\n window.ethereum?.on(\"accountsChanged\", () => callback());\n // @ts-expect-error that should be implemented in xdefi and hooked up via swapkit core\n window.xfi?.ethereum.on(\"accountsChanged\", () => callback());\n};\n\nexport const getETHDefaultWallet = () => {\n const { isTrust, isBraveWallet, __XDEFI, overrideIsMetaMask, selectedProvider } =\n window?.ethereum || {};\n if (isTrust) return WalletOption.TRUSTWALLET_WEB;\n if (isBraveWallet) return WalletOption.BRAVE;\n if (overrideIsMetaMask && selectedProvider?.isCoinbaseWallet) return WalletOption.COINBASE_WEB;\n if (__XDEFI) WalletOption.XDEFI;\n return WalletOption.METAMASK;\n};\n\nexport const isDetected = (walletOption: WalletOption) => {\n return listWeb3EVMWallets().includes(walletOption);\n};\n\nexport const listWeb3EVMWallets = () => {\n const metamaskEnabled = window?.ethereum && !window.ethereum?.isBraveWallet;\n // @ts-ignore that should be implemented in xdefi and hooked up via swapkit core\n const xdefiEnabled = window?.xfi || window?.ethereum?.__XDEFI;\n const braveEnabled = window?.ethereum?.isBraveWallet;\n const trustEnabled = window?.ethereum?.isTrust || window?.trustwallet;\n const coinbaseEnabled =\n (window?.ethereum?.overrideIsMetaMask &&\n window?.ethereum?.selectedProvider?.isCoinbaseWallet) ||\n window?.coinbaseWalletExtension;\n\n const wallets = [];\n if (metamaskEnabled) wallets.push(WalletOption.METAMASK);\n if (xdefiEnabled) wallets.push(WalletOption.XDEFI);\n if (braveEnabled) wallets.push(WalletOption.BRAVE);\n if (trustEnabled) wallets.push(WalletOption.TRUSTWALLET_WEB);\n if (coinbaseEnabled) wallets.push(WalletOption.COINBASE_WEB);\n if (okxMobileEnabled()) wallets.push(WalletOption.OKX_MOBILE);\n\n return wallets;\n};\n\nexport function getEIP6963Wallets() {\n const providers: EIP6963Provider[] = [];\n\n function onAnnouncement(event: EIP6963AnnounceProviderEvent) {\n if (providers.map((p) => p.info.uuid).includes(event.detail.info.uuid)) return;\n providers.push(event.detail);\n }\n\n window.addEventListener(\"eip6963:announceProvider\", onAnnouncement);\n window.dispatchEvent(new Event(\"eip6963:requestProvider\"));\n\n function removeEIP6963EventListener() {\n window.removeEventListener(\"eip6963:announceProvider\", onAnnouncement);\n }\n\n return { providers, removeEIP6963EventListener };\n}\n\nexport const okxMobileEnabled = () => {\n const ua = navigator.userAgent;\n const isIOS = /iphone|ipad|ipod|ios/i.test(ua);\n const isAndroid = /android|XiaoMi|MiuiBrowser/i.test(ua);\n const isMobile = isIOS || isAndroid;\n const isOKApp = /OKApp/i.test(ua);\n\n return isMobile && isOKApp;\n};\n\nexport const isWeb3Detected = () => typeof window.ethereum !== \"undefined\";\n",
24
+ "import { BaseDecimal } from \"../types/chains.ts\";\nimport type { SwapKitNumber } from \"./swapKitNumber.ts\";\n\ntype NumberPrimitivesType = {\n bigint: bigint;\n number: number;\n string: string;\n};\nexport type NumberPrimitives = bigint | number | string;\ntype InitialisationValueType = NumberPrimitives | BigIntArithmetics | SwapKitNumber;\n\ntype SKBigIntParams = InitialisationValueType | { decimal?: number; value: number | string };\ntype AllowedNumberTypes = \"bigint\" | \"number\" | \"string\";\n\nconst DEFAULT_DECIMAL = 8;\nconst toMultiplier = (decimal: number) => 10n ** BigInt(decimal);\nconst decimalFromMultiplier = (multiplier: bigint) =>\n Math.log10(Number.parseFloat(multiplier.toString()));\n\nexport function formatBigIntToSafeValue({\n value,\n bigIntDecimal = DEFAULT_DECIMAL,\n decimal = DEFAULT_DECIMAL,\n}: {\n value: bigint;\n bigIntDecimal?: number;\n decimal?: number;\n}) {\n if (decimal === 0) return value.toString();\n const isNegative = value < 0n;\n let valueString = value.toString().substring(isNegative ? 1 : 0);\n\n const padLength = decimal - (valueString.length - 1);\n\n if (padLength > 0) {\n valueString = \"0\".repeat(padLength) + valueString;\n }\n\n const decimalIndex = valueString.length - decimal;\n let decimalString = valueString.slice(-decimal);\n\n // Check if we need to round up\n if (Number.parseInt(decimalString[bigIntDecimal] || \"0\") >= 5) {\n // Increment the last decimal place and slice off the rest\n decimalString = `${decimalString.substring(0, bigIntDecimal - 1)}${(\n Number.parseInt(decimalString[bigIntDecimal - 1] || \"0\") + 1\n ).toString()}`;\n } else {\n // Just slice off the extra digits\n decimalString = decimalString.substring(0, bigIntDecimal);\n }\n\n return `${isNegative ? \"-\" : \"\"}${valueString.slice(0, decimalIndex)}.${decimalString}`.replace(\n /\\.?0*$/,\n \"\",\n );\n}\n\nexport class BigIntArithmetics {\n decimalMultiplier: bigint = 10n ** 8n;\n bigIntValue = 0n;\n decimal?: number;\n\n static fromBigInt(value: bigint, decimal?: number) {\n return new BigIntArithmetics({\n decimal,\n value: formatBigIntToSafeValue({ value, bigIntDecimal: decimal, decimal }),\n });\n }\n\n static shiftDecimals({\n value,\n from,\n to,\n }: {\n value: InstanceType<typeof SwapKitNumber>;\n from: number;\n to: number;\n }) {\n return BigIntArithmetics.fromBigInt(\n (value.getBaseValue(\"bigint\") * toMultiplier(to)) / toMultiplier(from),\n to,\n );\n }\n\n constructor(params: SKBigIntParams) {\n const value = getStringValue(params);\n const isComplex = typeof params === \"object\";\n this.decimal = isComplex ? params.decimal : undefined;\n\n // use the multiplier to keep track of decimal point - defaults to 8 if lower than 8\n this.decimalMultiplier =\n isComplex && \"decimalMultiplier\" in params\n ? params.decimalMultiplier\n : toMultiplier(Math.max(getFloatDecimals(toSafeValue(value)), this.decimal || 0));\n this.#setValue(value);\n }\n\n set(value: SKBigIntParams): this {\n // @ts-expect-error False positive\n return new this.constructor({ decimal: this.decimal, value, identifier: this.toString() });\n }\n add(...args: InitialisationValueType[]) {\n return this.#arithmetics(\"add\", ...args);\n }\n sub(...args: InitialisationValueType[]) {\n return this.#arithmetics(\"sub\", ...args);\n }\n mul(...args: InitialisationValueType[]) {\n return this.#arithmetics(\"mul\", ...args);\n }\n div(...args: InitialisationValueType[]) {\n return this.#arithmetics(\"div\", ...args);\n }\n gt(value: InitialisationValueType) {\n return this.#comparison(\"gt\", value);\n }\n gte(value: InitialisationValueType) {\n return this.#comparison(\"gte\", value);\n }\n lt(value: InitialisationValueType) {\n return this.#comparison(\"lt\", value);\n }\n lte(value: InitialisationValueType) {\n return this.#comparison(\"lte\", value);\n }\n eqValue(value: InitialisationValueType) {\n return this.#comparison(\"eqValue\", value);\n }\n\n // @ts-expect-error False positive\n getValue<T extends AllowedNumberTypes>(type: T): NumberPrimitivesType[T] {\n const value = this.formatBigIntToSafeValue(\n this.bigIntValue,\n this.decimal || decimalFromMultiplier(this.decimalMultiplier),\n );\n\n switch (type) {\n case \"number\":\n return Number(value) as NumberPrimitivesType[T];\n case \"string\":\n return value as NumberPrimitivesType[T];\n case \"bigint\":\n return ((this.bigIntValue * 10n ** BigInt(this.decimal || 8n)) /\n this.decimalMultiplier) as NumberPrimitivesType[T];\n }\n }\n\n // @ts-expect-error\n getBaseValue<T extends AllowedNumberTypes>(type: T): NumberPrimitivesType[T] {\n const divisor = this.decimalMultiplier / toMultiplier(this.decimal || BaseDecimal.THOR);\n const baseValue = this.bigIntValue / divisor;\n\n switch (type) {\n case \"number\":\n return Number(baseValue) as NumberPrimitivesType[T];\n case \"string\":\n return baseValue.toString() as NumberPrimitivesType[T];\n case \"bigint\":\n return baseValue as NumberPrimitivesType[T];\n }\n }\n\n getBigIntValue(value: InitialisationValueType, decimal?: number) {\n if (!decimal && typeof value === \"object\") return value.bigIntValue;\n\n const stringValue = getStringValue(value);\n const safeValue = toSafeValue(stringValue);\n\n if (safeValue === \"0\" || safeValue === \"undefined\") return 0n;\n return this.#toBigInt(safeValue, decimal);\n }\n\n toSignificant(significantDigits = 6) {\n const [int, dec] = this.getValue(\"string\").split(\".\");\n const integer = int || \"\";\n const decimal = dec || \"\";\n const valueLength = Number.parseInt(integer) ? integer.length + decimal.length : decimal.length;\n\n if (valueLength <= significantDigits) {\n return this.getValue(\"string\");\n }\n\n if (integer.length >= significantDigits) {\n return integer.slice(0, significantDigits).padEnd(integer.length, \"0\");\n }\n\n if (Number.parseInt(integer)) {\n return `${integer}.${decimal.slice(0, significantDigits - integer.length)}`.padEnd(\n significantDigits - integer.length,\n \"0\",\n );\n }\n\n const trimmedDecimal = Number.parseInt(decimal);\n const slicedDecimal = `${trimmedDecimal}`.slice(0, significantDigits);\n\n return `0.${slicedDecimal.padStart(\n decimal.length - `${trimmedDecimal}`.length + slicedDecimal.length,\n \"0\",\n )}`;\n }\n\n toFixed(fixedDigits = 6) {\n const [int, dec] = this.getValue(\"string\").split(\".\");\n const integer = int || \"\";\n const decimal = dec || \"\";\n\n if (Number.parseInt(integer)) {\n return `${integer}.${decimal.slice(0, fixedDigits)}`.padEnd(fixedDigits, \"0\");\n }\n\n const trimmedDecimal = Number.parseInt(decimal);\n const slicedDecimal = `${trimmedDecimal}`.slice(0, fixedDigits);\n\n return `0.${slicedDecimal.padStart(\n decimal.length - `${trimmedDecimal}`.length + slicedDecimal.length,\n \"0\",\n )}`;\n }\n\n toAbbreviation(digits = 2) {\n const value = this.getValue(\"number\");\n const abbreviations = [\"\", \"K\", \"M\", \"B\", \"T\", \"Q\", \"Qi\", \"S\"];\n const tier = Math.floor(Math.log10(Math.abs(value)) / 3);\n const suffix = abbreviations[tier];\n\n if (!suffix) return this.getValue(\"string\");\n\n const scale = 10 ** (tier * 3);\n const scaled = value / scale;\n\n return `${scaled.toFixed(digits)}${suffix}`;\n }\n\n toCurrency(\n currency = \"$\",\n {\n currencyPosition = \"start\",\n decimal = 2,\n decimalSeparator = \".\",\n thousandSeparator = \",\",\n } = {},\n ) {\n const value = this.getValue(\"number\");\n const [int = \"\", dec = \"\"] = value.toFixed(6).split(\".\");\n const integer = int.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSeparator);\n\n const parsedValue =\n int || dec\n ? int === \"0\"\n ? `${Number.parseFloat(`0.${dec}`)}`.replace(\".\", decimalSeparator)\n : `${integer}${Number.parseInt(dec) ? `${decimalSeparator}${dec.slice(0, decimal)}` : \"\"}`\n : \"0.00\";\n\n return `${currencyPosition === \"start\" ? currency : \"\"}${parsedValue}${\n currencyPosition === \"end\" ? currency : \"\"\n }`;\n }\n\n formatBigIntToSafeValue(value: bigint, decimal?: number) {\n const bigIntDecimal = decimal || this.decimal || DEFAULT_DECIMAL;\n const decimalToUseForConversion = Math.max(\n bigIntDecimal,\n decimalFromMultiplier(this.decimalMultiplier),\n );\n const isNegative = value < 0n;\n\n const valueString = value.toString().substring(isNegative ? 1 : 0);\n const padLength = decimalToUseForConversion - (valueString.length - 1);\n\n const parsedValueString = padLength > 0 ? \"0\".repeat(padLength) + valueString : valueString;\n\n const decimalIndex = parsedValueString.length - decimalToUseForConversion;\n let decimalString = parsedValueString.slice(-decimalToUseForConversion);\n\n // Check if we need to round up\n if (Number.parseInt(decimalString[bigIntDecimal] || \"0\") >= 5) {\n // Increment the last decimal place and slice off the rest\n decimalString = `${decimalString.substring(0, bigIntDecimal - 1)}${(\n Number.parseInt(decimalString[bigIntDecimal - 1] || \"0\") + 1\n ).toString()}`;\n } else {\n // Just slice off the extra digits\n decimalString = decimalString.substring(0, bigIntDecimal);\n }\n\n return `${isNegative ? \"-\" : \"\"}${parsedValueString.slice(\n 0,\n decimalIndex,\n )}.${decimalString}`.replace(/\\.?0*$/, \"\");\n }\n\n #arithmetics(method: \"add\" | \"sub\" | \"mul\" | \"div\", ...args: InitialisationValueType[]): this {\n const precisionDecimal = this.#retrievePrecisionDecimal(this, ...args);\n const decimal = Math.max(precisionDecimal, decimalFromMultiplier(this.decimalMultiplier));\n const precisionDecimalMultiplier = toMultiplier(decimal);\n\n const result = args.reduce(\n (acc: bigint, arg) => {\n const value = this.getBigIntValue(arg, decimal);\n\n switch (method) {\n case \"add\":\n return acc + value;\n case \"sub\":\n return acc - value;\n /**\n * Multiplication & division would end up with wrong result if we don't adjust the value\n * 200000000n * 200000000n => 40000000000000000n\n * 200000000n / 200000000n => 1n\n * So we do the following:\n * 200000000n * 200000000n = 40000000000000000n / 100000000n (decimals) => 400000000n\n * (200000000n * 100000000n (decimals)) / 200000000n => 100000000n\n */\n case \"mul\":\n return (acc * value) / precisionDecimalMultiplier;\n case \"div\": {\n if (value === 0n) throw new RangeError(\"Division by zero\");\n return (acc * precisionDecimalMultiplier) / value;\n }\n default:\n return acc;\n }\n },\n //normalize is to precision multiplier base\n (this.bigIntValue * precisionDecimalMultiplier) / this.decimalMultiplier,\n );\n\n const value = formatBigIntToSafeValue({\n bigIntDecimal: decimal,\n decimal,\n value: result,\n });\n\n // @ts-expect-error False positive\n return new this.constructor({\n decimalMultiplier: toMultiplier(decimal),\n decimal: this.decimal,\n value,\n identifier: this.toString(),\n });\n }\n\n #comparison(method: \"gt\" | \"gte\" | \"lt\" | \"lte\" | \"eqValue\", ...args: InitialisationValueType[]) {\n const decimal = this.#retrievePrecisionDecimal(this, ...args);\n const value = this.getBigIntValue(args[0] || \"0\", decimal);\n const compareToValue = this.getBigIntValue(this, decimal);\n\n switch (method) {\n case \"gt\":\n return compareToValue > value;\n case \"gte\":\n return compareToValue >= value;\n case \"lt\":\n return compareToValue < value;\n case \"lte\":\n return compareToValue <= value;\n case \"eqValue\":\n return compareToValue === value;\n }\n }\n\n #setValue(value: InitialisationValueType) {\n const safeValue = toSafeValue(value) || \"0\";\n this.bigIntValue = this.#toBigInt(safeValue);\n }\n\n #retrievePrecisionDecimal(...args: InitialisationValueType[]) {\n const decimals = args\n .map((arg) => {\n const isObject = typeof arg === \"object\";\n const value = isObject\n ? arg.decimal || decimalFromMultiplier(arg.decimalMultiplier)\n : getFloatDecimals(toSafeValue(arg));\n\n return value;\n })\n .filter(Boolean) as number[];\n\n return Math.max(...decimals, DEFAULT_DECIMAL);\n }\n\n #toBigInt(value: string, decimal?: number) {\n const multiplier = decimal ? toMultiplier(decimal) : this.decimalMultiplier;\n const padDecimal = decimalFromMultiplier(multiplier);\n const [integerPart = \"\", decimalPart = \"\"] = value.split(\".\");\n\n return BigInt(`${integerPart}${decimalPart.padEnd(padDecimal, \"0\")}`);\n }\n}\n\nconst numberFormatter = Intl.NumberFormat(\"fullwide\", {\n useGrouping: false,\n maximumFractionDigits: 20,\n});\n\nfunction toSafeValue(value: InitialisationValueType) {\n const parsedValue =\n typeof value === \"number\" ? numberFormatter.format(value) : getStringValue(value);\n const splitValue = `${parsedValue}`.replaceAll(\",\", \".\").split(\".\");\n\n return splitValue.length > 1\n ? `${splitValue.slice(0, -1).join(\"\")}.${splitValue.at(-1)}`\n : splitValue[0] || \"0\";\n}\n\nfunction getFloatDecimals(value: string) {\n const decimals = value.split(\".\")[1]?.length || 0;\n return Math.max(decimals, DEFAULT_DECIMAL);\n}\n\nfunction getStringValue(param: SKBigIntParams) {\n return typeof param === \"object\"\n ? \"getValue\" in param\n ? param.getValue(\"string\")\n : param.value\n : param;\n}\n",
25
+ "import { BigIntArithmetics, formatBigIntToSafeValue } from \"./bigIntArithmetics.ts\";\n\nexport type SwapKitValueType = BigIntArithmetics | string | number;\n\nexport class SwapKitNumber extends BigIntArithmetics {\n eq(value: SwapKitValueType) {\n return this.eqValue(value);\n }\n\n static fromBigInt(value: bigint, decimal?: number) {\n return new SwapKitNumber({\n decimal,\n value: formatBigIntToSafeValue({ value, bigIntDecimal: decimal, decimal }),\n });\n }\n}\n",
26
+ "import type { CommonAssetString } from \"../helpers/asset.ts\";\nimport { getAssetType, getCommonAssetInfo, getDecimal, isGasAsset } from \"../helpers/asset.ts\";\nimport { validateIdentifier } from \"../helpers/validators.ts\";\nimport { BaseDecimal, Chain, type ChainId, ChainToChainId } from \"../types/chains.ts\";\nimport type { TokenNames, TokenTax } from \"../types/tokens.ts\";\n\nimport type { NumberPrimitives } from \"./bigIntArithmetics.ts\";\nimport { BigIntArithmetics, formatBigIntToSafeValue } from \"./bigIntArithmetics.ts\";\nimport { SwapKitNumber, type SwapKitValueType } from \"./swapKitNumber.ts\";\n\nconst staticTokensMap = new Map<\n TokenNames,\n { tax?: TokenTax; decimal: number; identifier: string }\n>();\n\nexport class AssetValue extends BigIntArithmetics {\n address?: string;\n chain: Chain;\n isGasAsset = false;\n isSynthetic = false;\n symbol: string;\n tax?: TokenTax;\n ticker: string;\n type: ReturnType<typeof getAssetType>;\n chainId: ChainId;\n\n constructor({\n value,\n decimal,\n tax,\n chain,\n symbol,\n identifier,\n }: { decimal: number; value: SwapKitValueType; tax?: TokenTax } & (\n | { chain: Chain; symbol: string; identifier?: never }\n | { identifier: string; chain?: never; symbol?: never }\n )) {\n super(typeof value === \"object\" ? value : { decimal, value });\n\n const assetInfo = getAssetInfo(identifier || `${chain}.${symbol}`);\n\n this.type = getAssetType(assetInfo);\n this.tax = tax;\n this.chain = assetInfo.chain;\n this.ticker = assetInfo.ticker;\n this.symbol = assetInfo.symbol;\n this.address = assetInfo.address;\n this.isSynthetic = assetInfo.isSynthetic;\n this.isGasAsset = assetInfo.isGasAsset;\n this.chainId = ChainToChainId[assetInfo.chain];\n }\n\n toString() {\n return this.isSynthetic ? this.symbol : `${this.chain}.${this.symbol}`;\n }\n\n toUrl() {\n return this.isSynthetic ? `${this.chain}.${this.symbol.replace(\"/\", \".\")}` : this.toString();\n }\n\n eq({ chain, symbol }: { chain: Chain; symbol: string }) {\n return this.chain === chain && this.symbol === symbol;\n }\n\n // THOR.RUNE\n // THOR.ETH.ETH\n // ETH.THOR-0x1234567890\n static fromUrl(urlAsset: string, value: NumberPrimitives = 0) {\n const [chain, ticker, symbol] = urlAsset.split(\".\");\n if (!(chain && ticker)) throw new Error(\"Invalid asset url\");\n\n const assetString =\n chain === Chain.THORChain && symbol ? `${chain}.${ticker}/${symbol}` : urlAsset;\n\n return createAssetValue(assetString, value);\n }\n\n static fromString(assetString: string, value: NumberPrimitives = 0) {\n return createAssetValue(assetString, value);\n }\n static fromIdentifier(\n assetString:\n | `${Chain}.${string}`\n | `${Chain}/${string}`\n | `${Chain}.${string}-${string}`\n | TokenNames,\n value: NumberPrimitives = 0,\n ) {\n return createAssetValue(assetString, value);\n }\n\n static fromStringSync(assetString: string, value: NumberPrimitives = 0) {\n const { chain, isSynthetic } = getAssetInfo(assetString);\n const tokenInfo = staticTokensMap.get(assetString.toUpperCase() as TokenNames);\n\n if (isSynthetic) return createSyntheticAssetValue(assetString, value);\n // TODO: write logger that will only run in dev mode with some flag\n // if (!tokenInfo) {\n // console.error(\n // `Asset ${assetString} is not loaded. Use AssetValue.loadStaticAssets() to load it`,\n // );\n // }\n\n const { tax, decimal, identifier } = tokenInfo || {\n decimal: BaseDecimal[chain],\n identifier: assetString,\n };\n\n return new AssetValue({\n tax,\n value: safeValue(value, decimal),\n identifier: isSynthetic ? assetString : identifier,\n decimal: isSynthetic ? 8 : decimal,\n });\n }\n\n static async fromStringWithBase(\n assetString: string,\n value: NumberPrimitives = 0,\n baseDecimal: number = BaseDecimal.THOR,\n ) {\n const shiftedAmount = BigIntArithmetics.shiftDecimals({\n value: SwapKitNumber.fromBigInt(BigInt(value)),\n from: 0,\n to: baseDecimal,\n }).getBaseValue(\"string\");\n const assetValue = await AssetValue.fromString(assetString, value);\n\n return assetValue.set(shiftedAmount);\n }\n\n static fromStringWithBaseSync(\n assetString: string,\n value: NumberPrimitives = 0,\n baseDecimal: number = BaseDecimal.THOR,\n ) {\n const { chain, isSynthetic } = getAssetInfo(assetString);\n const tokenInfo = staticTokensMap.get(assetString.toUpperCase() as TokenNames);\n\n if (isSynthetic) return createSyntheticAssetValue(assetString, value);\n\n const { tax, decimal, identifier } = tokenInfo || {\n decimal: BaseDecimal[chain],\n identifier: assetString,\n };\n\n return new AssetValue({\n tax,\n value: safeValue(BigInt(value), baseDecimal),\n identifier,\n decimal,\n });\n }\n\n static fromIdentifierSync(assetString: TokenNames, value: NumberPrimitives = 0) {\n const { chain, isSynthetic } = getAssetInfo(assetString);\n const tokenInfo = staticTokensMap.get(assetString);\n\n if (isSynthetic) return createSyntheticAssetValue(assetString, value);\n // TODO: write logger that will only run in dev mode with some flag\n // if (!tokenInfo) {\n // console.error(\n // `Asset ${assetString} is not loaded. - Loading with base Chain. Use AssetValue.loadStaticAssets() to load it`,\n // );\n // }\n\n const { tax, decimal, identifier } = tokenInfo || {\n decimal: BaseDecimal[chain],\n identifier: assetString,\n };\n return new AssetValue({ tax, decimal, identifier, value: safeValue(value, decimal) });\n }\n\n static fromChainOrSignature(assetString: CommonAssetString, value: NumberPrimitives = 0) {\n const { decimal, identifier } = getCommonAssetInfo(assetString);\n return new AssetValue({ value: safeValue(value, decimal), decimal, identifier });\n }\n\n static loadStaticAssets() {\n return new Promise<{ ok: true } | { ok: false; message: string; error: Todo }>(\n (resolve, reject) => {\n try {\n import(\"@swapkit/tokens\").then((tokenPackages) => {\n for (const tokenList of Object.values(tokenPackages)) {\n for (const { identifier, chain, ...rest } of tokenList.tokens) {\n staticTokensMap.set(identifier.toUpperCase() as TokenNames, {\n identifier,\n decimal: \"decimals\" in rest ? rest.decimals : BaseDecimal[chain as Chain],\n });\n }\n }\n\n resolve({ ok: true });\n });\n } catch (error) {\n console.error(error);\n reject({\n ok: false,\n error,\n message:\n \"Couldn't load static assets. Ensure you have installed @swapkit/tokens package\",\n });\n }\n },\n );\n }\n}\n\nexport function getMinAmountByChain(chain: Chain) {\n const asset = AssetValue.fromChainOrSignature(chain);\n\n switch (chain) {\n case Chain.Bitcoin:\n case Chain.Litecoin:\n case Chain.BitcoinCash:\n return asset.set(0.00010001);\n\n case Chain.Dogecoin:\n return asset.set(1.00000001);\n\n case Chain.Avalanche:\n case Chain.Ethereum:\n return asset.set(0.00000001);\n\n case Chain.THORChain:\n case Chain.Maya:\n return asset.set(0);\n\n case Chain.Cosmos:\n return asset.set(0.000001);\n\n default:\n return asset.set(0.00000001);\n }\n}\n\nasync function createAssetValue(identifier: string, value: NumberPrimitives = 0) {\n validateIdentifier(identifier);\n\n const staticToken = staticTokensMap.get(identifier.toUpperCase() as TokenNames);\n const decimal = staticToken?.decimal || (await getDecimal(getAssetInfo(identifier)));\n if (!staticToken) {\n staticTokensMap.set(identifier.toUpperCase() as TokenNames, { identifier, decimal });\n }\n\n return new AssetValue({ decimal, value: safeValue(value, decimal), identifier });\n}\n\nfunction createSyntheticAssetValue(identifier: string, value: NumberPrimitives = 0) {\n const [synthChain, symbol] =\n identifier.split(\".\")?.[0]?.toUpperCase() === Chain.THORChain\n ? identifier.split(\".\").slice(1).join().split(\"/\")\n : identifier.split(\"/\");\n\n if (!(synthChain && symbol)) throw new Error(\"Invalid asset identifier\");\n\n return new AssetValue({\n decimal: 8,\n value: safeValue(value, 8),\n identifier: `${Chain.THORChain}.${synthChain}/${symbol}`,\n });\n}\n\nfunction safeValue(value: NumberPrimitives, decimal: number) {\n return typeof value === \"bigint\"\n ? formatBigIntToSafeValue({ value, bigIntDecimal: decimal, decimal })\n : value;\n}\n\n// TODO refactor & split into smaller functions\nfunction getAssetInfo(identifier: string) {\n const isSynthetic = identifier.slice(0, 14).includes(\"/\");\n\n const isThorchain = identifier.split(\".\")?.[0]?.toUpperCase() === Chain.THORChain;\n const isMaya = identifier.split(\".\")?.[0]?.toUpperCase() === Chain.Maya;\n\n const [synthChain, synthSymbol = \"\"] =\n isThorchain || isMaya\n ? identifier.split(\".\").slice(1).join().split(\"/\")\n : identifier.split(\"/\");\n\n if (isSynthetic && !(synthChain && synthSymbol)) throw new Error(\"Invalid asset identifier\");\n\n const adjustedIdentifier =\n identifier.includes(\".\") && !isSynthetic\n ? identifier\n : `${isMaya ? Chain.Maya : Chain.THORChain}.${synthSymbol}`;\n\n const [chain, ...rest] = adjustedIdentifier.split(\".\") as [Chain, string];\n\n const symbol = isSynthetic ? synthSymbol : rest.join(\".\");\n const splitSymbol = symbol.split(\"-\");\n const ticker = (\n splitSymbol.length === 1 ? splitSymbol[0] : splitSymbol.slice(0, -1).join(\"-\")\n ) as string;\n const address = splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];\n\n return {\n address: address?.toLowerCase(),\n chain,\n isGasAsset: isGasAsset({ chain, symbol }),\n isSynthetic,\n symbol:\n (isSynthetic ? `${synthChain}/` : \"\") +\n (address ? `${ticker}-${address?.toLowerCase() ?? \"\"}` : symbol),\n ticker,\n };\n}\n"
27
27
  ],
28
- "mappings": "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",
29
- "debugId": "1AF616D9C1303CD064756e2164756e21",
28
+ "mappings": "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",
29
+ "debugId": "98419242CC3C63F664756e2164756e21",
30
30
  "names": []
31
31
  }
package/package.json CHANGED
@@ -38,5 +38,5 @@
38
38
  },
39
39
  "type": "module",
40
40
  "types": "./src/index.ts",
41
- "version": "1.0.0-rc.103"
41
+ "version": "1.0.0-rc.104"
42
42
  }
@@ -25,7 +25,7 @@ describe("getMemoFor", () => {
25
25
  });
26
26
 
27
27
  test("returns correct memo for Thorname Register", () => {
28
- const result = getMemoFor(MemoType.THORNAME_REGISTER, {
28
+ const result = getMemoFor(MemoType.NAME_REGISTER, {
29
29
  name: "thorname",
30
30
  chain: "BNB",
31
31
  address: "0xABC123",
@@ -35,7 +35,7 @@ describe("getMemoFor", () => {
35
35
  });
36
36
 
37
37
  test("returns correct memo for Mayaname Register", () => {
38
- const result = getMemoFor(MemoType.THORNAME_REGISTER, {
38
+ const result = getMemoFor(MemoType.NAME_REGISTER, {
39
39
  name: "mayaname",
40
40
  chain: "BNB",
41
41
  address: "0xABC123",
@@ -1,7 +1,7 @@
1
1
  import { Chain } from "../types/chains";
2
2
  import { MemoType } from "../types/sdk";
3
3
 
4
- export type ThornameRegisterParam = {
4
+ export type NameRegisterParam = {
5
5
  name: string;
6
6
  chain: string;
7
7
  address: string;
@@ -26,7 +26,7 @@ export type MemoOptions<T extends MemoType> = {
26
26
  targetAssetString?: string;
27
27
  singleSide?: boolean;
28
28
  }>;
29
- [MemoType.THORNAME_REGISTER]: Omit<ThornameRegisterParam, "preferredAsset" | "expiryBlock">;
29
+ [MemoType.NAME_REGISTER]: Omit<NameRegisterParam, "preferredAsset" | "expiryBlock">;
30
30
  }[T];
31
31
 
32
32
  export const getMemoFor = <T extends MemoType>(memoType: T, options: MemoOptions<T>) => {
@@ -42,8 +42,8 @@ export const getMemoFor = <T extends MemoType>(memoType: T, options: MemoOptions
42
42
  return `${memoType}:${address}:${unbondAmount}`;
43
43
  }
44
44
 
45
- case MemoType.THORNAME_REGISTER: {
46
- const { name, chain, address, owner } = options as MemoOptions<MemoType.THORNAME_REGISTER>;
45
+ case MemoType.NAME_REGISTER: {
46
+ const { name, chain, address, owner } = options as MemoOptions<MemoType.NAME_REGISTER>;
47
47
  return `${memoType}:${name}:${chain}:${address}${owner ? `:${owner}` : ""}`;
48
48
  }
49
49
 
@@ -53,6 +53,9 @@ const errorMessages = {
53
53
  core_transaction_invalid_sender_address: 10313,
54
54
  core_transaction_deposit_server_error: 10314,
55
55
  core_transaction_user_rejected: 10315,
56
+ core_transaction_create_liquidity_cacao_error: 10316,
57
+ core_transaction_add_liquidity_no_cacao_address: 10306,
58
+ core_transaction_add_liquidity_cacao_error: 10307,
56
59
 
57
60
  /**
58
61
  * Wallets
package/src/types/sdk.ts CHANGED
@@ -40,7 +40,7 @@ export enum MemoType {
40
40
  BOND = "BOND",
41
41
  DEPOSIT = "+",
42
42
  LEAVE = "LEAVE",
43
- THORNAME_REGISTER = "~",
43
+ NAME_REGISTER = "~",
44
44
  UNBOND = "UNBOND",
45
45
  WITHDRAW = "-",
46
46
  OPEN_LOAN = "$+",