@swapkit/plugins 4.0.22 → 4.0.23

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.
@@ -1,4 +1,4 @@
1
- var P={};k(P,{assetIdentifierToChainflipTicker:()=>b,ChainflipPlugin:()=>_,ChainflipBroker:()=>T});module.exports=D(P);var A=require("@polkadot/keyring"),u=require("@polkadot/util"),s=require("@swapkit/helpers"),b=new Map([["ARB.ETH","ArbEth"],["ARB.USDC-0XAF88D065E77C8CC2239327C5EDB3A432268E5831","ArbUsdc"],["BTC.BTC","Btc"],["DOT.DOT","Dot"],["ETH.ETH","Eth"],["ETH.FLIP-0X826180541412D574CF1336D22C0C0A287822678A","Flip"],["ETH.USDC-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48","Usdc"],["ETH.USDT-0XDAC17F958D2EE523A2206206994597C13D831EC7","Usdt"],["SOL.SOL","Sol"],["SOL.USDC-EPJFWDD5AUFQSSQEM2QN1XZYBAPC8G4WEGGKZWYTDT1V","SolUsdc"]]),S=(e)=>()=>{let r=e.api.tx.swapping?.registerAsBroker?.();if(!r)throw new s.SwapKitError("chainflip_broker_register");return e.signAndBroadcast({address:e.getAddress(),tx:r})},B=(e)=>({feeAsset:r,recipient:t})=>{let a=r.chain===s.Chain.Polkadot,n=s.wrapWithThrow(()=>{return a?e.encodeAddress(e.decodeAddress(t),"hex"):t},"chainflip_broker_recipient_error");return new Promise((p)=>{let o=e.api.tx?.swapping?.withdraw?.(r.ticker.toLowerCase(),{[r.chain.toLowerCase()]:n});if(!o)throw new s.SwapKitError("chainflip_broker_withdraw");e.signAndBroadcast({callback:(c)=>{if(!c.status?.isFinalized)return;let d=c.events.find((x)=>x.event.method==="WithdrawalRequested");if(!d)throw new s.SwapKitError("chainflip_channel_error","Could not find 'WithdrawalRequested' event");let{event:{data:{egressId:l,egressAsset:f,egressAmount:m,egressFee:g,destinationAddress:C}}}=d.toHuman();p({destinationAddress:C,egressAmount:m,egressAsset:f,egressFee:g,egressId:l})},tx:o})})},E=(e)=>async({evmToolbox:r,stateChainAccount:t,assetValue:a})=>{let{chainflipGateway:n}=await import("@swapkit/helpers/contracts"),p=s.AssetValue.from({asset:"ETH.FLIP"});if(!a.eqAsset(p))throw new s.SwapKitError("chainflip_broker_fund_only_flip_supported");if(!e.validateAddress(t))throw new s.SwapKitError("chainflip_broker_fund_invalid_address");let o=u.isHex(t)?t:u.u8aToHex(A.decodeAddress(t));return r.call({abi:n,contractAddress:"0x6995ab7c4d7f4b03f467cf4c8e920427d9621dbd",funcName:"fundStateChainAccount",funcParams:[o,a.getBaseValue("string")]})},T=(e)=>({fundStateChainAccount:E(e),registerAsBroker:S(e),withdrawFee:B(e)});var i=require("@swapkit/helpers"),w=require("@swapkit/helpers/api");var _=h({methods:({getWallet:e})=>({swap:async function(t){if(!(t?.route?.buyAsset&&t.route.meta.chainflip))throw new i.SwapKitError("core_swap_invalid_params",{...t});let{route:{buyAsset:a,sellAsset:n,sellAmount:p,meta:{chainflip:o}},maxBoostFeeBps:c=0}=t;if(!(n&&a))throw new i.SwapKitError("core_swap_asset_not_recognized");let d=await i.AssetValue.from({asset:n,asyncTokenLookup:!0,value:p}),l=e(d.chain);if(!l)throw new i.SwapKitError("core_wallet_connection_not_found");let{depositAddress:f}=await w.SwapKitApi.getChainflipDepositChannel({...o,maxBoostFeeBps:c||o.maxBoostFeeBps});return await l.transfer({assetValue:d,isProgramDerivedAddress:!0,recipient:f,sender:l.address})}}),name:"chainflip",properties:{supportedSwapkitProviders:[i.ProviderName.CHAINFLIP,i.ProviderName.CHAINFLIP_STREAMING]}});
1
+ var P={};k(P,{assetIdentifierToChainflipTicker:()=>y,ChainflipPlugin:()=>_,ChainflipBroker:()=>T});module.exports=D(P);var A=require("@polkadot/keyring"),f=require("@polkadot/util"),s=require("@swapkit/helpers"),y=new Map([["ARB.ETH","ArbEth"],["ARB.USDC-0XAF88D065E77C8CC2239327C5EDB3A432268E5831","ArbUsdc"],["BTC.BTC","Btc"],["DOT.DOT","Dot"],["ETH.ETH","Eth"],["ETH.FLIP-0X826180541412D574CF1336D22C0C0A287822678A","Flip"],["ETH.USDC-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48","Usdc"],["ETH.USDT-0XDAC17F958D2EE523A2206206994597C13D831EC7","Usdt"],["SOL.SOL","Sol"],["SOL.USDC-EPJFWDD5AUFQSSQEM2QN1XZYBAPC8G4WEGGKZWYTDT1V","SolUsdc"]]),S=(e)=>()=>{let r=e.api.tx.swapping?.registerAsBroker?.();if(!r)throw new s.SwapKitError("chainflip_broker_register");return e.signAndBroadcast({address:e.getAddress(),tx:r})},B=(e)=>({feeAsset:r,recipient:t})=>{let a=r.chain===s.Chain.Polkadot,n=s.wrapWithThrow(()=>{return a?e.encodeAddress(e.decodeAddress(t),"hex"):t},"chainflip_broker_recipient_error");return new Promise((p)=>{let o=e.api.tx?.swapping?.withdraw?.(r.ticker.toLowerCase(),{[r.chain.toLowerCase()]:n});if(!o)throw new s.SwapKitError("chainflip_broker_withdraw");e.signAndBroadcast({callback:(c)=>{if(!c.status?.isFinalized)return;let d=c.events.find((x)=>x.event.method==="WithdrawalRequested");if(!d)throw new s.SwapKitError("chainflip_channel_error","Could not find 'WithdrawalRequested' event");let{event:{data:{egressId:l,egressAsset:u,egressAmount:m,egressFee:g,destinationAddress:C}}}=d.toHuman();p({destinationAddress:C,egressAmount:m,egressAsset:u,egressFee:g,egressId:l})},tx:o})})},E=(e)=>async({evmToolbox:r,stateChainAccount:t,assetValue:a})=>{let{chainflipGateway:n}=await import("@swapkit/helpers/contracts"),p=s.AssetValue.from({asset:"ETH.FLIP"});if(!a.eqAsset(p))throw new s.SwapKitError("chainflip_broker_fund_only_flip_supported");if(!e.validateAddress(t))throw new s.SwapKitError("chainflip_broker_fund_invalid_address");let o=f.isHex(t)?t:f.u8aToHex(A.decodeAddress(t));return r.call({abi:n,contractAddress:"0x6995ab7c4d7f4b03f467cf4c8e920427d9621dbd",funcName:"fundStateChainAccount",funcParams:[o,a.getBaseValue("string")]})},T=(e)=>({fundStateChainAccount:E(e),registerAsBroker:S(e),withdrawFee:B(e)});var i=require("@swapkit/helpers"),h=require("@swapkit/helpers/api");var _=w({methods:({getWallet:e})=>({swap:async function(t){if(!(t?.route?.buyAsset&&t.route.meta.chainflip))throw new i.SwapKitError("core_swap_invalid_params",{...t});let{route:{buyAsset:a,sellAsset:n,sellAmount:p,meta:{chainflip:o}},maxBoostFeeBps:c=0}=t;if(!(n&&a))throw new i.SwapKitError("core_swap_asset_not_recognized");let d=await i.AssetValue.from({asset:n,asyncTokenLookup:!0,value:p}),l=e(d.chain);if(!l)throw new i.SwapKitError("core_wallet_connection_not_found");let{depositAddress:u}=await h.SwapKitApi.getChainflipDepositChannel({...o,maxBoostFeeBps:c||o.maxBoostFeeBps});return await l.transfer({assetValue:d,isProgramDerivedAddress:!0,recipient:u,sender:l.address})}}),name:"chainflip",properties:{supportedSwapkitProviders:[i.ProviderName.CHAINFLIP,i.ProviderName.CHAINFLIP_STREAMING]}});
2
2
 
3
- //# debugId=B573473D11E2796A64756E2164756E21
3
+ //# debugId=C14498B3528242E764756E2164756E21
4
4
  //# sourceMappingURL=index.cjs.map
@@ -2,10 +2,10 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/chainflip/broker.ts", "../src/chainflip/plugin.ts"],
4
4
  "sourcesContent": [
5
- "import { decodeAddress } from \"@polkadot/keyring\";\nimport { isHex, u8aToHex } from \"@polkadot/util\";\nimport { AssetValue, Chain, SwapKitError, wrapWithThrow } from \"@swapkit/helpers\";\nimport type { getEvmToolbox } from \"@swapkit/toolboxes/evm\";\nimport type { getSubstrateToolbox } from \"@swapkit/toolboxes/substrate\";\n\nimport type { WithdrawFeeResponse } from \"./types\";\n\ntype ChainflipToolbox = Awaited<ReturnType<typeof getSubstrateToolbox<Chain.Chainflip>>>;\n\nexport const assetIdentifierToChainflipTicker = new Map<string, string>([\n [\"ARB.ETH\", \"ArbEth\"],\n [\"ARB.USDC-0XAF88D065E77C8CC2239327C5EDB3A432268E5831\", \"ArbUsdc\"],\n [\"BTC.BTC\", \"Btc\"],\n [\"DOT.DOT\", \"Dot\"],\n [\"ETH.ETH\", \"Eth\"],\n [\"ETH.FLIP-0X826180541412D574CF1336D22C0C0A287822678A\", \"Flip\"],\n [\"ETH.USDC-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48\", \"Usdc\"],\n [\"ETH.USDT-0XDAC17F958D2EE523A2206206994597C13D831EC7\", \"Usdt\"],\n [\"SOL.SOL\", \"Sol\"],\n [\"SOL.USDC-EPJFWDD5AUFQSSQEM2QN1XZYBAPC8G4WEGGKZWYTDT1V\", \"SolUsdc\"],\n]);\n\nconst registerAsBroker = (toolbox: ChainflipToolbox) => () => {\n const extrinsic = toolbox.api.tx.swapping?.registerAsBroker?.();\n\n if (!extrinsic) {\n throw new SwapKitError(\"chainflip_broker_register\");\n }\n\n return toolbox.signAndBroadcast({ address: toolbox.getAddress(), tx: extrinsic });\n};\n\nconst withdrawFee =\n (toolbox: ChainflipToolbox) =>\n ({ feeAsset, recipient }: { feeAsset: AssetValue; recipient: string }) => {\n const isFeeChainPolkadot = feeAsset.chain === Chain.Polkadot;\n\n const recipientAddress = wrapWithThrow(() => {\n return isFeeChainPolkadot ? toolbox.encodeAddress(toolbox.decodeAddress(recipient), \"hex\") : recipient;\n }, \"chainflip_broker_recipient_error\");\n\n return new Promise<WithdrawFeeResponse>((resolve) => {\n const extrinsic = toolbox.api.tx?.swapping?.withdraw?.(feeAsset.ticker.toLowerCase(), {\n [feeAsset.chain.toLowerCase()]: recipientAddress,\n });\n\n if (!extrinsic) {\n throw new SwapKitError(\"chainflip_broker_withdraw\");\n }\n\n toolbox.signAndBroadcast({\n callback: (result) => {\n if (!result.status?.isFinalized) {\n return;\n }\n\n const withdrawEvent = result.events.find((event) => event.event.method === \"WithdrawalRequested\");\n\n if (!withdrawEvent) {\n throw new SwapKitError(\"chainflip_channel_error\", \"Could not find 'WithdrawalRequested' event\");\n }\n const {\n event: {\n data: { egressId, egressAsset, egressAmount, egressFee, destinationAddress },\n },\n } = withdrawEvent.toHuman() as any;\n resolve({ destinationAddress, egressAmount, egressAsset, egressFee, egressId });\n },\n tx: extrinsic,\n });\n });\n };\n\nconst fundStateChainAccount =\n (chainflipToolbox: ChainflipToolbox) =>\n async ({\n evmToolbox,\n stateChainAccount,\n assetValue,\n }: {\n evmToolbox: Awaited<ReturnType<typeof getEvmToolbox>>;\n stateChainAccount: string;\n assetValue: AssetValue;\n }) => {\n const { chainflipGateway } = await import(\"@swapkit/helpers/contracts\");\n\n const flipAssetValue = AssetValue.from({ asset: \"ETH.FLIP\" });\n\n if (!assetValue.eqAsset(flipAssetValue)) {\n throw new SwapKitError(\"chainflip_broker_fund_only_flip_supported\");\n }\n\n if (!chainflipToolbox.validateAddress(stateChainAccount)) {\n throw new SwapKitError(\"chainflip_broker_fund_invalid_address\");\n }\n\n const hexAddress = isHex(stateChainAccount) ? stateChainAccount : u8aToHex(decodeAddress(stateChainAccount));\n\n return evmToolbox.call<string>({\n abi: chainflipGateway,\n contractAddress: \"0x6995ab7c4d7f4b03f467cf4c8e920427d9621dbd\",\n funcName: \"fundStateChainAccount\",\n funcParams: [hexAddress, assetValue.getBaseValue(\"string\")],\n });\n };\n\nexport const ChainflipBroker = (chainflipToolbox: ChainflipToolbox) => ({\n fundStateChainAccount: fundStateChainAccount(chainflipToolbox),\n registerAsBroker: registerAsBroker(chainflipToolbox),\n withdrawFee: withdrawFee(chainflipToolbox),\n});\n",
6
- "import { AssetValue, type Chain, type CryptoChain, ProviderName, SwapKitError } from \"@swapkit/helpers\";\nimport { SwapKitApi } from \"@swapkit/helpers/api\";\nimport { createPlugin } from \"../utils\";\nimport type { RequestSwapDepositAddressParams } from \"./types\";\n\nexport const ChainflipPlugin = createPlugin({\n methods: ({ getWallet }) => ({\n swap: async function chainflipSwap(swapParams: RequestSwapDepositAddressParams) {\n if (!(swapParams?.route?.buyAsset && swapParams.route.meta.chainflip)) {\n throw new SwapKitError(\"core_swap_invalid_params\", { ...swapParams });\n }\n\n const {\n route: {\n buyAsset: buyAssetString,\n sellAsset: sellAssetString,\n sellAmount,\n meta: { chainflip },\n },\n maxBoostFeeBps = 0,\n } = swapParams;\n\n if (!(sellAssetString && buyAssetString)) {\n throw new SwapKitError(\"core_swap_asset_not_recognized\");\n }\n\n const sellAsset = await AssetValue.from({ asset: sellAssetString, asyncTokenLookup: true, value: sellAmount });\n\n const wallet = getWallet(sellAsset.chain as Exclude<CryptoChain, Chain.Radix>);\n\n if (!wallet) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n\n const { depositAddress } = await SwapKitApi.getChainflipDepositChannel({\n ...chainflip,\n maxBoostFeeBps: maxBoostFeeBps || chainflip.maxBoostFeeBps,\n });\n\n const tx = await wallet.transfer({\n assetValue: sellAsset,\n isProgramDerivedAddress: true,\n recipient: depositAddress,\n sender: wallet.address,\n });\n\n return tx;\n },\n }),\n name: \"chainflip\",\n properties: { supportedSwapkitProviders: [ProviderName.CHAINFLIP, ProviderName.CHAINFLIP_STREAMING] },\n});\n"
5
+ "import { decodeAddress } from \"@polkadot/keyring\";\nimport { isHex, u8aToHex } from \"@polkadot/util\";\nimport { AssetValue, Chain, SwapKitError, wrapWithThrow } from \"@swapkit/helpers\";\nimport type { getEvmToolbox } from \"@swapkit/toolboxes/evm\";\nimport type { getSubstrateToolbox } from \"@swapkit/toolboxes/substrate\";\n\nimport type { WithdrawFeeResponse } from \"./types\";\n\ntype ChainflipToolbox = Awaited<ReturnType<typeof getSubstrateToolbox<typeof Chain.Chainflip>>>;\n\nexport const assetIdentifierToChainflipTicker = new Map<string, string>([\n [\"ARB.ETH\", \"ArbEth\"],\n [\"ARB.USDC-0XAF88D065E77C8CC2239327C5EDB3A432268E5831\", \"ArbUsdc\"],\n [\"BTC.BTC\", \"Btc\"],\n [\"DOT.DOT\", \"Dot\"],\n [\"ETH.ETH\", \"Eth\"],\n [\"ETH.FLIP-0X826180541412D574CF1336D22C0C0A287822678A\", \"Flip\"],\n [\"ETH.USDC-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48\", \"Usdc\"],\n [\"ETH.USDT-0XDAC17F958D2EE523A2206206994597C13D831EC7\", \"Usdt\"],\n [\"SOL.SOL\", \"Sol\"],\n [\"SOL.USDC-EPJFWDD5AUFQSSQEM2QN1XZYBAPC8G4WEGGKZWYTDT1V\", \"SolUsdc\"],\n]);\n\nconst registerAsBroker = (toolbox: ChainflipToolbox) => () => {\n const extrinsic = toolbox.api.tx.swapping?.registerAsBroker?.();\n\n if (!extrinsic) {\n throw new SwapKitError(\"chainflip_broker_register\");\n }\n\n return toolbox.signAndBroadcast({ address: toolbox.getAddress(), tx: extrinsic });\n};\n\nconst withdrawFee =\n (toolbox: ChainflipToolbox) =>\n ({ feeAsset, recipient }: { feeAsset: AssetValue; recipient: string }) => {\n const isFeeChainPolkadot = feeAsset.chain === Chain.Polkadot;\n\n const recipientAddress = wrapWithThrow(() => {\n return isFeeChainPolkadot ? toolbox.encodeAddress(toolbox.decodeAddress(recipient), \"hex\") : recipient;\n }, \"chainflip_broker_recipient_error\");\n\n return new Promise<WithdrawFeeResponse>((resolve) => {\n const extrinsic = toolbox.api.tx?.swapping?.withdraw?.(feeAsset.ticker.toLowerCase(), {\n [feeAsset.chain.toLowerCase()]: recipientAddress,\n });\n\n if (!extrinsic) {\n throw new SwapKitError(\"chainflip_broker_withdraw\");\n }\n\n toolbox.signAndBroadcast({\n callback: (result) => {\n if (!result.status?.isFinalized) {\n return;\n }\n\n const withdrawEvent = result.events.find((event) => event.event.method === \"WithdrawalRequested\");\n\n if (!withdrawEvent) {\n throw new SwapKitError(\"chainflip_channel_error\", \"Could not find 'WithdrawalRequested' event\");\n }\n const {\n event: {\n data: { egressId, egressAsset, egressAmount, egressFee, destinationAddress },\n },\n } = withdrawEvent.toHuman() as any;\n resolve({ destinationAddress, egressAmount, egressAsset, egressFee, egressId });\n },\n tx: extrinsic,\n });\n });\n };\n\nconst fundStateChainAccount =\n (chainflipToolbox: ChainflipToolbox) =>\n async ({\n evmToolbox,\n stateChainAccount,\n assetValue,\n }: {\n evmToolbox: Awaited<ReturnType<typeof getEvmToolbox>>;\n stateChainAccount: string;\n assetValue: AssetValue;\n }) => {\n const { chainflipGateway } = await import(\"@swapkit/helpers/contracts\");\n\n const flipAssetValue = AssetValue.from({ asset: \"ETH.FLIP\" });\n\n if (!assetValue.eqAsset(flipAssetValue)) {\n throw new SwapKitError(\"chainflip_broker_fund_only_flip_supported\");\n }\n\n if (!chainflipToolbox.validateAddress(stateChainAccount)) {\n throw new SwapKitError(\"chainflip_broker_fund_invalid_address\");\n }\n\n const hexAddress = isHex(stateChainAccount) ? stateChainAccount : u8aToHex(decodeAddress(stateChainAccount));\n\n return evmToolbox.call<string>({\n abi: chainflipGateway,\n contractAddress: \"0x6995ab7c4d7f4b03f467cf4c8e920427d9621dbd\",\n funcName: \"fundStateChainAccount\",\n funcParams: [hexAddress, assetValue.getBaseValue(\"string\")],\n });\n };\n\nexport const ChainflipBroker = (chainflipToolbox: ChainflipToolbox) => ({\n fundStateChainAccount: fundStateChainAccount(chainflipToolbox),\n registerAsBroker: registerAsBroker(chainflipToolbox),\n withdrawFee: withdrawFee(chainflipToolbox),\n});\n",
6
+ "import { AssetValue, type Chain, ProviderName, SwapKitError } from \"@swapkit/helpers\";\nimport { SwapKitApi } from \"@swapkit/helpers/api\";\nimport { createPlugin } from \"../utils\";\nimport type { RequestSwapDepositAddressParams } from \"./types\";\n\nexport const ChainflipPlugin = createPlugin({\n methods: ({ getWallet }) => ({\n swap: async function chainflipSwap(swapParams: RequestSwapDepositAddressParams) {\n if (!(swapParams?.route?.buyAsset && swapParams.route.meta.chainflip)) {\n throw new SwapKitError(\"core_swap_invalid_params\", { ...swapParams });\n }\n\n const {\n route: {\n buyAsset: buyAssetString,\n sellAsset: sellAssetString,\n sellAmount,\n meta: { chainflip },\n },\n maxBoostFeeBps = 0,\n } = swapParams;\n\n if (!(sellAssetString && buyAssetString)) {\n throw new SwapKitError(\"core_swap_asset_not_recognized\");\n }\n\n const sellAsset = await AssetValue.from({ asset: sellAssetString, asyncTokenLookup: true, value: sellAmount });\n\n const wallet = getWallet(sellAsset.chain as Exclude<Chain, Chain.Radix>);\n\n if (!wallet) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n\n const { depositAddress } = await SwapKitApi.getChainflipDepositChannel({\n ...chainflip,\n maxBoostFeeBps: maxBoostFeeBps || chainflip.maxBoostFeeBps,\n });\n\n const tx = await wallet.transfer({\n assetValue: sellAsset,\n isProgramDerivedAddress: true,\n recipient: depositAddress,\n sender: wallet.address,\n });\n\n return tx;\n },\n }),\n name: \"chainflip\",\n properties: { supportedSwapkitProviders: [ProviderName.CHAINFLIP, ProviderName.CHAINFLIP_STREAMING] },\n});\n"
7
7
  ],
8
- "mappings": "uHAA8B,IAA9B,+BACA,4BACA,8BAQa,EAAmC,IAAI,IAAoB,CACtE,CAAC,UAAW,QAAQ,EACpB,CAAC,sDAAuD,SAAS,EACjE,CAAC,UAAW,KAAK,EACjB,CAAC,UAAW,KAAK,EACjB,CAAC,UAAW,KAAK,EACjB,CAAC,sDAAuD,MAAM,EAC9D,CAAC,sDAAuD,MAAM,EAC9D,CAAC,sDAAuD,MAAM,EAC9D,CAAC,UAAW,KAAK,EACjB,CAAC,wDAAyD,SAAS,CACrE,CAAC,EAEK,EAAmB,CAAC,IAA8B,IAAM,CAC5D,IAAM,EAAY,EAAQ,IAAI,GAAG,UAAU,mBAAmB,EAE9D,GAAI,CAAC,EACH,MAAM,IAAI,eAAa,2BAA2B,EAGpD,OAAO,EAAQ,iBAAiB,CAAE,QAAS,EAAQ,WAAW,EAAG,GAAI,CAAU,CAAC,GAG5E,EACJ,CAAC,IACD,EAAG,WAAU,eAA6D,CACxE,IAAM,EAAqB,EAAS,QAAU,QAAM,SAE9C,EAAmB,gBAAc,IAAM,CAC3C,OAAO,EAAqB,EAAQ,cAAc,EAAQ,cAAc,CAAS,EAAG,KAAK,EAAI,GAC5F,kCAAkC,EAErC,OAAO,IAAI,QAA6B,CAAC,IAAY,CACnD,IAAM,EAAY,EAAQ,IAAI,IAAI,UAAU,WAAW,EAAS,OAAO,YAAY,EAAG,EACnF,EAAS,MAAM,YAAY,GAAI,CAClC,CAAC,EAED,GAAI,CAAC,EACH,MAAM,IAAI,eAAa,2BAA2B,EAGpD,EAAQ,iBAAiB,CACvB,SAAU,CAAC,IAAW,CACpB,GAAI,CAAC,EAAO,QAAQ,YAClB,OAGF,IAAM,EAAgB,EAAO,OAAO,KAAK,CAAC,IAAU,EAAM,MAAM,SAAW,qBAAqB,EAEhG,GAAI,CAAC,EACH,MAAM,IAAI,eAAa,0BAA2B,4CAA4C,EAEhG,IACE,OACE,MAAQ,WAAU,cAAa,eAAc,YAAW,wBAExD,EAAc,QAAQ,EAC1B,EAAQ,CAAE,qBAAoB,eAAc,cAAa,YAAW,UAAS,CAAC,GAEhF,GAAI,CACN,CAAC,EACF,GAGC,EACJ,CAAC,IACD,OACE,aACA,oBACA,gBAKI,CACJ,IAAQ,oBAAqB,KAAa,sCAEpC,EAAiB,aAAW,KAAK,CAAE,MAAO,UAAW,CAAC,EAE5D,GAAI,CAAC,EAAW,QAAQ,CAAc,EACpC,MAAM,IAAI,eAAa,2CAA2C,EAGpE,GAAI,CAAC,EAAiB,gBAAgB,CAAiB,EACrD,MAAM,IAAI,eAAa,uCAAuC,EAGhE,IAAM,EAAa,QAAM,CAAiB,EAAI,EAAoB,WAAS,gBAAc,CAAiB,CAAC,EAE3G,OAAO,EAAW,KAAa,CAC7B,IAAK,EACL,gBAAiB,6CACjB,SAAU,wBACV,WAAY,CAAC,EAAY,EAAW,aAAa,QAAQ,CAAC,CAC5D,CAAC,GAGQ,EAAkB,CAAC,KAAwC,CACtE,sBAAuB,EAAsB,CAAgB,EAC7D,iBAAkB,EAAiB,CAAgB,EACnD,YAAa,EAAY,CAAgB,CAC3C,GC/GqF,IAArF,8BACA,kCAIO,IAAM,EAAkB,EAAa,CAC1C,QAAS,EAAG,gBAAiB,CAC3B,KAAM,cAA4B,CAAC,EAA6C,CAC9E,GAAI,EAAE,GAAY,OAAO,UAAY,EAAW,MAAM,KAAK,WACzD,MAAM,IAAI,eAAa,2BAA4B,IAAK,CAAW,CAAC,EAGtE,IACE,OACE,SAAU,EACV,UAAW,EACX,aACA,MAAQ,cAEV,iBAAiB,GACf,EAEJ,GAAI,EAAE,GAAmB,GACvB,MAAM,IAAI,eAAa,gCAAgC,EAGzD,IAAM,EAAY,MAAM,aAAW,KAAK,CAAE,MAAO,EAAiB,iBAAkB,GAAM,MAAO,CAAW,CAAC,EAEvG,EAAS,EAAU,EAAU,KAA0C,EAE7E,GAAI,CAAC,EACH,MAAM,IAAI,eAAa,kCAAkC,EAG3D,IAAQ,kBAAmB,MAAM,aAAW,2BAA2B,IAClE,EACH,eAAgB,GAAkB,EAAU,cAC9C,CAAC,EASD,OAPW,MAAM,EAAO,SAAS,CAC/B,WAAY,EACZ,wBAAyB,GACzB,UAAW,EACX,OAAQ,EAAO,OACjB,CAAC,EAIL,GACA,KAAM,YACN,WAAY,CAAE,0BAA2B,CAAC,eAAa,UAAW,eAAa,mBAAmB,CAAE,CACtG,CAAC",
9
- "debugId": "B573473D11E2796A64756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "C14498B3528242E764756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -1,4 +1,4 @@
1
- import{a as C,b as x,c as A}from"../chunk-a0djqfqa.js";import{decodeAddress as y}from"@polkadot/keyring";import{isHex as b,u8aToHex as S}from"@polkadot/util";import{AssetValue as B,Chain as E,SwapKitError as d,wrapWithThrow as T}from"@swapkit/helpers";var I=new Map([["ARB.ETH","ArbEth"],["ARB.USDC-0XAF88D065E77C8CC2239327C5EDB3A432268E5831","ArbUsdc"],["BTC.BTC","Btc"],["DOT.DOT","Dot"],["ETH.ETH","Eth"],["ETH.FLIP-0X826180541412D574CF1336D22C0C0A287822678A","Flip"],["ETH.USDC-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48","Usdc"],["ETH.USDT-0XDAC17F958D2EE523A2206206994597C13D831EC7","Usdt"],["SOL.SOL","Sol"],["SOL.USDC-EPJFWDD5AUFQSSQEM2QN1XZYBAPC8G4WEGGKZWYTDT1V","SolUsdc"]]),_=(e)=>()=>{let s=e.api.tx.swapping?.registerAsBroker?.();if(!s)throw new d("chainflip_broker_register");return e.signAndBroadcast({address:e.getAddress(),tx:s})},D=(e)=>({feeAsset:s,recipient:t})=>{let i=s.chain===E.Polkadot,o=T(()=>{return i?e.encodeAddress(e.decodeAddress(t),"hex"):t},"chainflip_broker_recipient_error");return new Promise((a)=>{let r=e.api.tx?.swapping?.withdraw?.(s.ticker.toLowerCase(),{[s.chain.toLowerCase()]:o});if(!r)throw new d("chainflip_broker_withdraw");e.signAndBroadcast({callback:(l)=>{if(!l.status?.isFinalized)return;let n=l.events.find((g)=>g.event.method==="WithdrawalRequested");if(!n)throw new d("chainflip_channel_error","Could not find 'WithdrawalRequested' event");let{event:{data:{egressId:p,egressAsset:c,egressAmount:f,egressFee:h,destinationAddress:w}}}=n.toHuman();a({destinationAddress:w,egressAmount:f,egressAsset:c,egressFee:h,egressId:p})},tx:r})})},k=(e)=>async({evmToolbox:s,stateChainAccount:t,assetValue:i})=>{let{chainflipGateway:o}=await import("@swapkit/helpers/contracts"),a=B.from({asset:"ETH.FLIP"});if(!i.eqAsset(a))throw new d("chainflip_broker_fund_only_flip_supported");if(!e.validateAddress(t))throw new d("chainflip_broker_fund_invalid_address");let r=b(t)?t:S(y(t));return s.call({abi:o,contractAddress:"0x6995ab7c4d7f4b03f467cf4c8e920427d9621dbd",funcName:"fundStateChainAccount",funcParams:[r,i.getBaseValue("string")]})},V=(e)=>({fundStateChainAccount:k(e),registerAsBroker:_(e),withdrawFee:D(e)});import{AssetValue as P,ProviderName as m,SwapKitError as u}from"@swapkit/helpers";import{SwapKitApi as F}from"@swapkit/helpers/api";var M=A({methods:({getWallet:e})=>({swap:async function(t){if(!(t?.route?.buyAsset&&t.route.meta.chainflip))throw new u("core_swap_invalid_params",{...t});let{route:{buyAsset:i,sellAsset:o,sellAmount:a,meta:{chainflip:r}},maxBoostFeeBps:l=0}=t;if(!(o&&i))throw new u("core_swap_asset_not_recognized");let n=await P.from({asset:o,asyncTokenLookup:!0,value:a}),p=e(n.chain);if(!p)throw new u("core_wallet_connection_not_found");let{depositAddress:c}=await F.getChainflipDepositChannel({...r,maxBoostFeeBps:l||r.maxBoostFeeBps});return await p.transfer({assetValue:n,isProgramDerivedAddress:!0,recipient:c,sender:p.address})}}),name:"chainflip",properties:{supportedSwapkitProviders:[m.CHAINFLIP,m.CHAINFLIP_STREAMING]}});export{I as assetIdentifierToChainflipTicker,M as ChainflipPlugin,V as ChainflipBroker};
1
+ import{a as C,b as x,c as A}from"../chunk-a0djqfqa.js";import{decodeAddress as b}from"@polkadot/keyring";import{isHex as y,u8aToHex as S}from"@polkadot/util";import{AssetValue as B,Chain as E,SwapKitError as d,wrapWithThrow as T}from"@swapkit/helpers";var I=new Map([["ARB.ETH","ArbEth"],["ARB.USDC-0XAF88D065E77C8CC2239327C5EDB3A432268E5831","ArbUsdc"],["BTC.BTC","Btc"],["DOT.DOT","Dot"],["ETH.ETH","Eth"],["ETH.FLIP-0X826180541412D574CF1336D22C0C0A287822678A","Flip"],["ETH.USDC-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48","Usdc"],["ETH.USDT-0XDAC17F958D2EE523A2206206994597C13D831EC7","Usdt"],["SOL.SOL","Sol"],["SOL.USDC-EPJFWDD5AUFQSSQEM2QN1XZYBAPC8G4WEGGKZWYTDT1V","SolUsdc"]]),_=(e)=>()=>{let s=e.api.tx.swapping?.registerAsBroker?.();if(!s)throw new d("chainflip_broker_register");return e.signAndBroadcast({address:e.getAddress(),tx:s})},D=(e)=>({feeAsset:s,recipient:t})=>{let i=s.chain===E.Polkadot,o=T(()=>{return i?e.encodeAddress(e.decodeAddress(t),"hex"):t},"chainflip_broker_recipient_error");return new Promise((a)=>{let r=e.api.tx?.swapping?.withdraw?.(s.ticker.toLowerCase(),{[s.chain.toLowerCase()]:o});if(!r)throw new d("chainflip_broker_withdraw");e.signAndBroadcast({callback:(l)=>{if(!l.status?.isFinalized)return;let n=l.events.find((g)=>g.event.method==="WithdrawalRequested");if(!n)throw new d("chainflip_channel_error","Could not find 'WithdrawalRequested' event");let{event:{data:{egressId:p,egressAsset:c,egressAmount:u,egressFee:w,destinationAddress:h}}}=n.toHuman();a({destinationAddress:h,egressAmount:u,egressAsset:c,egressFee:w,egressId:p})},tx:r})})},k=(e)=>async({evmToolbox:s,stateChainAccount:t,assetValue:i})=>{let{chainflipGateway:o}=await import("@swapkit/helpers/contracts"),a=B.from({asset:"ETH.FLIP"});if(!i.eqAsset(a))throw new d("chainflip_broker_fund_only_flip_supported");if(!e.validateAddress(t))throw new d("chainflip_broker_fund_invalid_address");let r=y(t)?t:S(b(t));return s.call({abi:o,contractAddress:"0x6995ab7c4d7f4b03f467cf4c8e920427d9621dbd",funcName:"fundStateChainAccount",funcParams:[r,i.getBaseValue("string")]})},V=(e)=>({fundStateChainAccount:k(e),registerAsBroker:_(e),withdrawFee:D(e)});import{AssetValue as P,ProviderName as m,SwapKitError as f}from"@swapkit/helpers";import{SwapKitApi as F}from"@swapkit/helpers/api";var M=A({methods:({getWallet:e})=>({swap:async function(t){if(!(t?.route?.buyAsset&&t.route.meta.chainflip))throw new f("core_swap_invalid_params",{...t});let{route:{buyAsset:i,sellAsset:o,sellAmount:a,meta:{chainflip:r}},maxBoostFeeBps:l=0}=t;if(!(o&&i))throw new f("core_swap_asset_not_recognized");let n=await P.from({asset:o,asyncTokenLookup:!0,value:a}),p=e(n.chain);if(!p)throw new f("core_wallet_connection_not_found");let{depositAddress:c}=await F.getChainflipDepositChannel({...r,maxBoostFeeBps:l||r.maxBoostFeeBps});return await p.transfer({assetValue:n,isProgramDerivedAddress:!0,recipient:c,sender:p.address})}}),name:"chainflip",properties:{supportedSwapkitProviders:[m.CHAINFLIP,m.CHAINFLIP_STREAMING]}});export{I as assetIdentifierToChainflipTicker,M as ChainflipPlugin,V as ChainflipBroker};
2
2
 
3
- //# debugId=F1F0394D3A6FD8F564756E2164756E21
3
+ //# debugId=144DAD02059BE0B864756E2164756E21
4
4
  //# sourceMappingURL=index.js.map
@@ -2,10 +2,10 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/chainflip/broker.ts", "../src/chainflip/plugin.ts"],
4
4
  "sourcesContent": [
5
- "import { decodeAddress } from \"@polkadot/keyring\";\nimport { isHex, u8aToHex } from \"@polkadot/util\";\nimport { AssetValue, Chain, SwapKitError, wrapWithThrow } from \"@swapkit/helpers\";\nimport type { getEvmToolbox } from \"@swapkit/toolboxes/evm\";\nimport type { getSubstrateToolbox } from \"@swapkit/toolboxes/substrate\";\n\nimport type { WithdrawFeeResponse } from \"./types\";\n\ntype ChainflipToolbox = Awaited<ReturnType<typeof getSubstrateToolbox<Chain.Chainflip>>>;\n\nexport const assetIdentifierToChainflipTicker = new Map<string, string>([\n [\"ARB.ETH\", \"ArbEth\"],\n [\"ARB.USDC-0XAF88D065E77C8CC2239327C5EDB3A432268E5831\", \"ArbUsdc\"],\n [\"BTC.BTC\", \"Btc\"],\n [\"DOT.DOT\", \"Dot\"],\n [\"ETH.ETH\", \"Eth\"],\n [\"ETH.FLIP-0X826180541412D574CF1336D22C0C0A287822678A\", \"Flip\"],\n [\"ETH.USDC-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48\", \"Usdc\"],\n [\"ETH.USDT-0XDAC17F958D2EE523A2206206994597C13D831EC7\", \"Usdt\"],\n [\"SOL.SOL\", \"Sol\"],\n [\"SOL.USDC-EPJFWDD5AUFQSSQEM2QN1XZYBAPC8G4WEGGKZWYTDT1V\", \"SolUsdc\"],\n]);\n\nconst registerAsBroker = (toolbox: ChainflipToolbox) => () => {\n const extrinsic = toolbox.api.tx.swapping?.registerAsBroker?.();\n\n if (!extrinsic) {\n throw new SwapKitError(\"chainflip_broker_register\");\n }\n\n return toolbox.signAndBroadcast({ address: toolbox.getAddress(), tx: extrinsic });\n};\n\nconst withdrawFee =\n (toolbox: ChainflipToolbox) =>\n ({ feeAsset, recipient }: { feeAsset: AssetValue; recipient: string }) => {\n const isFeeChainPolkadot = feeAsset.chain === Chain.Polkadot;\n\n const recipientAddress = wrapWithThrow(() => {\n return isFeeChainPolkadot ? toolbox.encodeAddress(toolbox.decodeAddress(recipient), \"hex\") : recipient;\n }, \"chainflip_broker_recipient_error\");\n\n return new Promise<WithdrawFeeResponse>((resolve) => {\n const extrinsic = toolbox.api.tx?.swapping?.withdraw?.(feeAsset.ticker.toLowerCase(), {\n [feeAsset.chain.toLowerCase()]: recipientAddress,\n });\n\n if (!extrinsic) {\n throw new SwapKitError(\"chainflip_broker_withdraw\");\n }\n\n toolbox.signAndBroadcast({\n callback: (result) => {\n if (!result.status?.isFinalized) {\n return;\n }\n\n const withdrawEvent = result.events.find((event) => event.event.method === \"WithdrawalRequested\");\n\n if (!withdrawEvent) {\n throw new SwapKitError(\"chainflip_channel_error\", \"Could not find 'WithdrawalRequested' event\");\n }\n const {\n event: {\n data: { egressId, egressAsset, egressAmount, egressFee, destinationAddress },\n },\n } = withdrawEvent.toHuman() as any;\n resolve({ destinationAddress, egressAmount, egressAsset, egressFee, egressId });\n },\n tx: extrinsic,\n });\n });\n };\n\nconst fundStateChainAccount =\n (chainflipToolbox: ChainflipToolbox) =>\n async ({\n evmToolbox,\n stateChainAccount,\n assetValue,\n }: {\n evmToolbox: Awaited<ReturnType<typeof getEvmToolbox>>;\n stateChainAccount: string;\n assetValue: AssetValue;\n }) => {\n const { chainflipGateway } = await import(\"@swapkit/helpers/contracts\");\n\n const flipAssetValue = AssetValue.from({ asset: \"ETH.FLIP\" });\n\n if (!assetValue.eqAsset(flipAssetValue)) {\n throw new SwapKitError(\"chainflip_broker_fund_only_flip_supported\");\n }\n\n if (!chainflipToolbox.validateAddress(stateChainAccount)) {\n throw new SwapKitError(\"chainflip_broker_fund_invalid_address\");\n }\n\n const hexAddress = isHex(stateChainAccount) ? stateChainAccount : u8aToHex(decodeAddress(stateChainAccount));\n\n return evmToolbox.call<string>({\n abi: chainflipGateway,\n contractAddress: \"0x6995ab7c4d7f4b03f467cf4c8e920427d9621dbd\",\n funcName: \"fundStateChainAccount\",\n funcParams: [hexAddress, assetValue.getBaseValue(\"string\")],\n });\n };\n\nexport const ChainflipBroker = (chainflipToolbox: ChainflipToolbox) => ({\n fundStateChainAccount: fundStateChainAccount(chainflipToolbox),\n registerAsBroker: registerAsBroker(chainflipToolbox),\n withdrawFee: withdrawFee(chainflipToolbox),\n});\n",
6
- "import { AssetValue, type Chain, type CryptoChain, ProviderName, SwapKitError } from \"@swapkit/helpers\";\nimport { SwapKitApi } from \"@swapkit/helpers/api\";\nimport { createPlugin } from \"../utils\";\nimport type { RequestSwapDepositAddressParams } from \"./types\";\n\nexport const ChainflipPlugin = createPlugin({\n methods: ({ getWallet }) => ({\n swap: async function chainflipSwap(swapParams: RequestSwapDepositAddressParams) {\n if (!(swapParams?.route?.buyAsset && swapParams.route.meta.chainflip)) {\n throw new SwapKitError(\"core_swap_invalid_params\", { ...swapParams });\n }\n\n const {\n route: {\n buyAsset: buyAssetString,\n sellAsset: sellAssetString,\n sellAmount,\n meta: { chainflip },\n },\n maxBoostFeeBps = 0,\n } = swapParams;\n\n if (!(sellAssetString && buyAssetString)) {\n throw new SwapKitError(\"core_swap_asset_not_recognized\");\n }\n\n const sellAsset = await AssetValue.from({ asset: sellAssetString, asyncTokenLookup: true, value: sellAmount });\n\n const wallet = getWallet(sellAsset.chain as Exclude<CryptoChain, Chain.Radix>);\n\n if (!wallet) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n\n const { depositAddress } = await SwapKitApi.getChainflipDepositChannel({\n ...chainflip,\n maxBoostFeeBps: maxBoostFeeBps || chainflip.maxBoostFeeBps,\n });\n\n const tx = await wallet.transfer({\n assetValue: sellAsset,\n isProgramDerivedAddress: true,\n recipient: depositAddress,\n sender: wallet.address,\n });\n\n return tx;\n },\n }),\n name: \"chainflip\",\n properties: { supportedSwapkitProviders: [ProviderName.CHAINFLIP, ProviderName.CHAINFLIP_STREAMING] },\n});\n"
5
+ "import { decodeAddress } from \"@polkadot/keyring\";\nimport { isHex, u8aToHex } from \"@polkadot/util\";\nimport { AssetValue, Chain, SwapKitError, wrapWithThrow } from \"@swapkit/helpers\";\nimport type { getEvmToolbox } from \"@swapkit/toolboxes/evm\";\nimport type { getSubstrateToolbox } from \"@swapkit/toolboxes/substrate\";\n\nimport type { WithdrawFeeResponse } from \"./types\";\n\ntype ChainflipToolbox = Awaited<ReturnType<typeof getSubstrateToolbox<typeof Chain.Chainflip>>>;\n\nexport const assetIdentifierToChainflipTicker = new Map<string, string>([\n [\"ARB.ETH\", \"ArbEth\"],\n [\"ARB.USDC-0XAF88D065E77C8CC2239327C5EDB3A432268E5831\", \"ArbUsdc\"],\n [\"BTC.BTC\", \"Btc\"],\n [\"DOT.DOT\", \"Dot\"],\n [\"ETH.ETH\", \"Eth\"],\n [\"ETH.FLIP-0X826180541412D574CF1336D22C0C0A287822678A\", \"Flip\"],\n [\"ETH.USDC-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48\", \"Usdc\"],\n [\"ETH.USDT-0XDAC17F958D2EE523A2206206994597C13D831EC7\", \"Usdt\"],\n [\"SOL.SOL\", \"Sol\"],\n [\"SOL.USDC-EPJFWDD5AUFQSSQEM2QN1XZYBAPC8G4WEGGKZWYTDT1V\", \"SolUsdc\"],\n]);\n\nconst registerAsBroker = (toolbox: ChainflipToolbox) => () => {\n const extrinsic = toolbox.api.tx.swapping?.registerAsBroker?.();\n\n if (!extrinsic) {\n throw new SwapKitError(\"chainflip_broker_register\");\n }\n\n return toolbox.signAndBroadcast({ address: toolbox.getAddress(), tx: extrinsic });\n};\n\nconst withdrawFee =\n (toolbox: ChainflipToolbox) =>\n ({ feeAsset, recipient }: { feeAsset: AssetValue; recipient: string }) => {\n const isFeeChainPolkadot = feeAsset.chain === Chain.Polkadot;\n\n const recipientAddress = wrapWithThrow(() => {\n return isFeeChainPolkadot ? toolbox.encodeAddress(toolbox.decodeAddress(recipient), \"hex\") : recipient;\n }, \"chainflip_broker_recipient_error\");\n\n return new Promise<WithdrawFeeResponse>((resolve) => {\n const extrinsic = toolbox.api.tx?.swapping?.withdraw?.(feeAsset.ticker.toLowerCase(), {\n [feeAsset.chain.toLowerCase()]: recipientAddress,\n });\n\n if (!extrinsic) {\n throw new SwapKitError(\"chainflip_broker_withdraw\");\n }\n\n toolbox.signAndBroadcast({\n callback: (result) => {\n if (!result.status?.isFinalized) {\n return;\n }\n\n const withdrawEvent = result.events.find((event) => event.event.method === \"WithdrawalRequested\");\n\n if (!withdrawEvent) {\n throw new SwapKitError(\"chainflip_channel_error\", \"Could not find 'WithdrawalRequested' event\");\n }\n const {\n event: {\n data: { egressId, egressAsset, egressAmount, egressFee, destinationAddress },\n },\n } = withdrawEvent.toHuman() as any;\n resolve({ destinationAddress, egressAmount, egressAsset, egressFee, egressId });\n },\n tx: extrinsic,\n });\n });\n };\n\nconst fundStateChainAccount =\n (chainflipToolbox: ChainflipToolbox) =>\n async ({\n evmToolbox,\n stateChainAccount,\n assetValue,\n }: {\n evmToolbox: Awaited<ReturnType<typeof getEvmToolbox>>;\n stateChainAccount: string;\n assetValue: AssetValue;\n }) => {\n const { chainflipGateway } = await import(\"@swapkit/helpers/contracts\");\n\n const flipAssetValue = AssetValue.from({ asset: \"ETH.FLIP\" });\n\n if (!assetValue.eqAsset(flipAssetValue)) {\n throw new SwapKitError(\"chainflip_broker_fund_only_flip_supported\");\n }\n\n if (!chainflipToolbox.validateAddress(stateChainAccount)) {\n throw new SwapKitError(\"chainflip_broker_fund_invalid_address\");\n }\n\n const hexAddress = isHex(stateChainAccount) ? stateChainAccount : u8aToHex(decodeAddress(stateChainAccount));\n\n return evmToolbox.call<string>({\n abi: chainflipGateway,\n contractAddress: \"0x6995ab7c4d7f4b03f467cf4c8e920427d9621dbd\",\n funcName: \"fundStateChainAccount\",\n funcParams: [hexAddress, assetValue.getBaseValue(\"string\")],\n });\n };\n\nexport const ChainflipBroker = (chainflipToolbox: ChainflipToolbox) => ({\n fundStateChainAccount: fundStateChainAccount(chainflipToolbox),\n registerAsBroker: registerAsBroker(chainflipToolbox),\n withdrawFee: withdrawFee(chainflipToolbox),\n});\n",
6
+ "import { AssetValue, type Chain, ProviderName, SwapKitError } from \"@swapkit/helpers\";\nimport { SwapKitApi } from \"@swapkit/helpers/api\";\nimport { createPlugin } from \"../utils\";\nimport type { RequestSwapDepositAddressParams } from \"./types\";\n\nexport const ChainflipPlugin = createPlugin({\n methods: ({ getWallet }) => ({\n swap: async function chainflipSwap(swapParams: RequestSwapDepositAddressParams) {\n if (!(swapParams?.route?.buyAsset && swapParams.route.meta.chainflip)) {\n throw new SwapKitError(\"core_swap_invalid_params\", { ...swapParams });\n }\n\n const {\n route: {\n buyAsset: buyAssetString,\n sellAsset: sellAssetString,\n sellAmount,\n meta: { chainflip },\n },\n maxBoostFeeBps = 0,\n } = swapParams;\n\n if (!(sellAssetString && buyAssetString)) {\n throw new SwapKitError(\"core_swap_asset_not_recognized\");\n }\n\n const sellAsset = await AssetValue.from({ asset: sellAssetString, asyncTokenLookup: true, value: sellAmount });\n\n const wallet = getWallet(sellAsset.chain as Exclude<Chain, Chain.Radix>);\n\n if (!wallet) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n\n const { depositAddress } = await SwapKitApi.getChainflipDepositChannel({\n ...chainflip,\n maxBoostFeeBps: maxBoostFeeBps || chainflip.maxBoostFeeBps,\n });\n\n const tx = await wallet.transfer({\n assetValue: sellAsset,\n isProgramDerivedAddress: true,\n recipient: depositAddress,\n sender: wallet.address,\n });\n\n return tx;\n },\n }),\n name: \"chainflip\",\n properties: { supportedSwapkitProviders: [ProviderName.CHAINFLIP, ProviderName.CHAINFLIP_STREAMING] },\n});\n"
7
7
  ],
8
- "mappings": "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",
9
- "debugId": "F1F0394D3A6FD8F564756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "144DAD02059BE0B864756E2164756E21",
10
10
  "names": []
11
11
  }
package/dist/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- var l={};r(l,{loadPlugin:()=>p,createPlugin:()=>e});module.exports=o(l);async function p(n){let{match:a}=await import("ts-pattern");return await a(n).with("chainflip",async()=>{let{ChainflipPlugin:t}=await import("./chainflip/index.cjs");return t}).with("thorchain",async()=>{let{ThorchainPlugin:t}=await import("./thorchain/index.cjs");return t}).with("radix",async()=>{let{RadixPlugin:t}=await import("./radix/index.cjs");return t}).with("evm",async()=>{let{EVMPlugin:t}=await import("./evm/index.cjs");return t}).with("solana",async()=>{let{SolanaPlugin:t}=await import("./solana/index.cjs");return t}).with("near",async()=>{let{NearPlugin:t}=await import("./near/index.cjs");return t}).exhaustive()}
1
+ var l={};r(l,{loadPlugin:()=>p,createPlugin:()=>e});module.exports=o(l);async function p(n){let{match:a}=await import("ts-pattern");return await a(n).with("chainflip",async()=>{let{ChainflipPlugin:i}=await import("./chainflip/index.cjs");return i}).with("thorchain",async()=>{let{ThorchainPlugin:i}=await import("./thorchain/index.cjs");return i}).with("radix",async()=>{let{RadixPlugin:i}=await import("./radix/index.cjs");return i}).with("evm",async()=>{let{EVMPlugin:i}=await import("./evm/index.cjs");return i}).with("solana",async()=>{let{SolanaPlugin:i}=await import("./solana/index.cjs");return i}).with("near",async()=>{let{NearPlugin:i}=await import("./near/index.cjs");return i}).exhaustive()}
2
2
 
3
- //# debugId=D2740AD78324D54864756E2164756E21
3
+ //# debugId=5445384FF1EB3BC364756E2164756E21
4
4
  //# sourceMappingURL=index.cjs.map
@@ -5,6 +5,6 @@
5
5
  "import type { PluginName, SKPlugins } from \"./types\";\n\nexport * from \"./types\";\nexport * from \"./utils\";\n\nexport async function loadPlugin<P extends PluginName>(pluginName: P) {\n const { match } = await import(\"ts-pattern\");\n\n const plugin = await match(pluginName as PluginName)\n .with(\"chainflip\", async () => {\n const { ChainflipPlugin } = await import(\"./chainflip\");\n return ChainflipPlugin;\n })\n .with(\"thorchain\", async () => {\n const { ThorchainPlugin } = await import(\"./thorchain\");\n return ThorchainPlugin;\n })\n .with(\"radix\", async () => {\n const { RadixPlugin } = await import(\"./radix\");\n return RadixPlugin;\n })\n .with(\"evm\", async () => {\n const { EVMPlugin } = await import(\"./evm\");\n return EVMPlugin;\n })\n .with(\"solana\", async () => {\n const { SolanaPlugin } = await import(\"./solana\");\n return SolanaPlugin;\n })\n .with(\"near\", async () => {\n const { NearPlugin } = await import(\"./near\");\n return NearPlugin;\n })\n .exhaustive();\n\n return plugin as unknown as SKPlugins[P];\n}\n"
6
6
  ],
7
7
  "mappings": "wEAKA,eAAsB,CAAgC,CAAC,EAAe,CACpE,IAAQ,SAAU,KAAa,sBA6B/B,OA3Be,MAAM,EAAM,CAAwB,EAChD,KAAK,YAAa,SAAY,CAC7B,IAAQ,mBAAoB,KAAa,iCACzC,OAAO,EACR,EACA,KAAK,YAAa,SAAY,CAC7B,IAAQ,mBAAoB,KAAa,iCACzC,OAAO,EACR,EACA,KAAK,QAAS,SAAY,CACzB,IAAQ,eAAgB,KAAa,6BACrC,OAAO,EACR,EACA,KAAK,MAAO,SAAY,CACvB,IAAQ,aAAc,KAAa,2BACnC,OAAO,EACR,EACA,KAAK,SAAU,SAAY,CAC1B,IAAQ,gBAAiB,KAAa,8BACtC,OAAO,EACR,EACA,KAAK,OAAQ,SAAY,CACxB,IAAQ,cAAe,KAAa,4BACpC,OAAO,EACR,EACA,WAAW",
8
- "debugId": "D2740AD78324D54864756E2164756E21",
8
+ "debugId": "5445384FF1EB3BC364756E2164756E21",
9
9
  "names": []
10
10
  }
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import{a as i,b as n,c as m}from"./chunk-a0djqfqa.js";async function e(a){let{match:o}=await import("ts-pattern");return await o(a).with("chainflip",async()=>{let{ChainflipPlugin:t}=await import("./chainflip/index.js");return t}).with("thorchain",async()=>{let{ThorchainPlugin:t}=await import("./thorchain/index.js");return t}).with("radix",async()=>{let{RadixPlugin:t}=await import("./radix/index.js");return t}).with("evm",async()=>{let{EVMPlugin:t}=await import("./evm/index.js");return t}).with("solana",async()=>{let{SolanaPlugin:t}=await import("./solana/index.js");return t}).with("near",async()=>{let{NearPlugin:t}=await import("./near/index.js");return t}).exhaustive()}export{e as loadPlugin,m as createPlugin};
1
+ import{a as t,b as n,c as m}from"./chunk-a0djqfqa.js";async function e(a){let{match:o}=await import("ts-pattern");return await o(a).with("chainflip",async()=>{let{ChainflipPlugin:i}=await import("./chainflip/index.js");return i}).with("thorchain",async()=>{let{ThorchainPlugin:i}=await import("./thorchain/index.js");return i}).with("radix",async()=>{let{RadixPlugin:i}=await import("./radix/index.js");return i}).with("evm",async()=>{let{EVMPlugin:i}=await import("./evm/index.js");return i}).with("solana",async()=>{let{SolanaPlugin:i}=await import("./solana/index.js");return i}).with("near",async()=>{let{NearPlugin:i}=await import("./near/index.js");return i}).exhaustive()}export{e as loadPlugin,m as createPlugin};
2
2
 
3
- //# debugId=3225A6AEB76407B864756E2164756E21
3
+ //# debugId=D6E36DB2F3C3364B64756E2164756E21
4
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -5,6 +5,6 @@
5
5
  "import type { PluginName, SKPlugins } from \"./types\";\n\nexport * from \"./types\";\nexport * from \"./utils\";\n\nexport async function loadPlugin<P extends PluginName>(pluginName: P) {\n const { match } = await import(\"ts-pattern\");\n\n const plugin = await match(pluginName as PluginName)\n .with(\"chainflip\", async () => {\n const { ChainflipPlugin } = await import(\"./chainflip\");\n return ChainflipPlugin;\n })\n .with(\"thorchain\", async () => {\n const { ThorchainPlugin } = await import(\"./thorchain\");\n return ThorchainPlugin;\n })\n .with(\"radix\", async () => {\n const { RadixPlugin } = await import(\"./radix\");\n return RadixPlugin;\n })\n .with(\"evm\", async () => {\n const { EVMPlugin } = await import(\"./evm\");\n return EVMPlugin;\n })\n .with(\"solana\", async () => {\n const { SolanaPlugin } = await import(\"./solana\");\n return SolanaPlugin;\n })\n .with(\"near\", async () => {\n const { NearPlugin } = await import(\"./near\");\n return NearPlugin;\n })\n .exhaustive();\n\n return plugin as unknown as SKPlugins[P];\n}\n"
6
6
  ],
7
7
  "mappings": "sDAKA,eAAsB,CAAgC,CAAC,EAAe,CACpE,IAAQ,SAAU,KAAa,sBA6B/B,OA3Be,MAAM,EAAM,CAAwB,EAChD,KAAK,YAAa,SAAY,CAC7B,IAAQ,mBAAoB,KAAa,gCACzC,OAAO,EACR,EACA,KAAK,YAAa,SAAY,CAC7B,IAAQ,mBAAoB,KAAa,gCACzC,OAAO,EACR,EACA,KAAK,QAAS,SAAY,CACzB,IAAQ,eAAgB,KAAa,4BACrC,OAAO,EACR,EACA,KAAK,MAAO,SAAY,CACvB,IAAQ,aAAc,KAAa,0BACnC,OAAO,EACR,EACA,KAAK,SAAU,SAAY,CAC1B,IAAQ,gBAAiB,KAAa,6BACtC,OAAO,EACR,EACA,KAAK,OAAQ,SAAY,CACxB,IAAQ,cAAe,KAAa,2BACpC,OAAO,EACR,EACA,WAAW",
8
- "debugId": "3225A6AEB76407B864756E2164756E21",
8
+ "debugId": "D6E36DB2F3C3364B64756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -1,4 +1,4 @@
1
- var O={};L(O,{NearPlugin:()=>y});module.exports=G(O);var q=require("@swapkit/helpers");var H=require("near-api-js/lib/utils/format"),X=2,b=64;function $(Q){if(Q.length<X||Q.length>b)return!1;return/^[a-z0-9]+(-[a-z0-9]+)*$/.test(Q)}function U(Q){let B=Q.length,x;if(B<=2)x="50";else if(B<=3)x="20";else if(B<=4)x="5";else if(B<=5)x="1";else x="0.1";return H.parseNearAmount(x)||"0"}var y=V({methods:({getWallet:Q})=>({nearNames:{async getInfo(B){let x=B.toLowerCase().replace(/\.near$/,"");if(!$(x))throw new q.SwapKitError("plugin_near_invalid_name");let D=`${x}.near`,F=Q(q.Chain.Near);if(!F)throw new q.SwapKitError("plugin_near_no_connection");try{let J=await F.provider.query({account_id:D,finality:"final",request_type:"view_account"}),Z=await F.provider.query({account_id:D,finality:"final",request_type:"view_access_key_list"});return{accountId:D,balance:J.amount,codeHash:J.code_hash,publicKeys:Z.keys?.map((Y)=>Y.public_key)||[],storageUsed:J.storage_usage}}catch(J){if(/UNKNOWN_ACCOUNT|does not exist while viewing/.test(J.message))return null;throw J}},async isAvailable(B){return await this.resolve(B)===null},async lookupNames(B){let x=Q(q.Chain.Near);if(!x)throw new q.SwapKitError("plugin_near_no_connection");try{if(await x.provider.query({account_id:B,finality:"final",request_type:"view_account"}),B.endsWith(".near"))return[B];return[]}catch{return[]}},async register(B){let{name:x,publicKey:D}=B,F=x.toLowerCase().replace(/\.near$/,"");if(!$(F))throw new q.SwapKitError("plugin_near_invalid_name");let J=Q(q.Chain.Near),Z=D||await J.getPublicKey(),Y=U(F);return J.callFunction({args:{new_account_id:`${F}.near`,new_public_key:Z},contractId:"near",deposit:Y,methodName:"create_account"})},async resolve(B){let x=B.toLowerCase().replace(/\.near$/,"");if(!$(x))throw new q.SwapKitError("plugin_near_invalid_name");let D=`${x}.near`,F=Q(q.Chain.Near);if(!F)throw new q.SwapKitError("plugin_near_no_connection");try{return await F.provider.query({account_id:D,finality:"final",request_type:"view_account"}),D}catch(J){if(/UNKNOWN_ACCOUNT|does not exist while viewing/.test(J.message))return null;throw J}},transfer(B,x){let D=B.toLowerCase().replace(/\.near$/,"");if(!$(D))throw new q.SwapKitError("plugin_near_invalid_name");return Q(q.Chain.Near).callFunction({args:{name:D,new_owner:x},contractId:"near",deposit:"1",methodName:"transfer"})}},async swap(B){let{route:{buyAsset:x,sellAsset:D,inboundAddress:F,sellAmount:J,meta:{near:Z}}}=B;if(!(D&&x&&Z?.sellAsset))throw new q.SwapKitError("core_swap_asset_not_recognized");if(!F)throw new q.SwapKitError("core_swap_invalid_params",{missing:["inboundAddress"]});let Y=await q.AssetValue.from({asset:D,value:J}),j=Q(Y.chain);if(!j)throw new q.SwapKitError("core_wallet_connection_not_found");return await j.transfer({assetValue:Y,isProgramDerivedAddress:!0,recipient:F,sender:j.address})}}),name:"near",properties:{supportedSwapkitProviders:[q.ProviderName.NEAR]}});
1
+ var T={};_(T,{NearPlugin:()=>k});module.exports=P(T);var x=require("@swapkit/helpers");var U=require("near-api-js/lib/utils/format"),b=2,O=64;function j(Q){if(Q.length<b||Q.length>O)return!1;return/^[a-z0-9]+(-[a-z0-9]+)*$/.test(Q)}function V(Q){let B=Q.length,q;if(B<=2)q="50";else if(B<=3)q="20";else if(B<=4)q="5";else if(B<=5)q="1";else q="0.1";return U.parseNearAmount(q)||"0"}var k=X({methods:({getWallet:Q})=>({nearNames:{async getInfo(B){let q=B.toLowerCase().replace(/\.near$/,"");if(!j(q))throw new x.SwapKitError("plugin_near_invalid_name");let F=`${q}.near`,D=Q(x.Chain.Near);if(!D)throw new x.SwapKitError("plugin_near_no_connection");try{let J=await D.provider.query({account_id:F,finality:"final",request_type:"view_account"}),Z=await D.provider.query({account_id:F,finality:"final",request_type:"view_access_key_list"});return{accountId:F,balance:J.amount,codeHash:J.code_hash,publicKeys:Z.keys?.map((Y)=>Y.public_key)||[],storageUsed:J.storage_usage}}catch(J){if(/UNKNOWN_ACCOUNT|does not exist while viewing/.test(J.message))return null;throw J}},async isAvailable(B){return await this.resolve(B)===null},async lookupNames(B){let q=Q(x.Chain.Near);if(!q)throw new x.SwapKitError("plugin_near_no_connection");try{if(await q.provider.query({account_id:B,finality:"final",request_type:"view_account"}),B.endsWith(".near"))return[B];return[]}catch{return[]}},async register(B){let{name:q,publicKey:F}=B,D=q.toLowerCase().replace(/\.near$/,"");if(!j(D))throw new x.SwapKitError("plugin_near_invalid_name");let J=Q(x.Chain.Near),Z=F||await J.getPublicKey(),Y=V(D);return J.callFunction({args:{new_account_id:`${D}.near`,new_public_key:Z},contractId:"near",deposit:Y,methodName:"create_account"})},async resolve(B){let q=B.toLowerCase().replace(/\.near$/,"");if(!j(q))throw new x.SwapKitError("plugin_near_invalid_name");let F=`${q}.near`,D=Q(x.Chain.Near);if(!D)throw new x.SwapKitError("plugin_near_no_connection");try{return await D.provider.query({account_id:F,finality:"final",request_type:"view_account"}),F}catch(J){if(/UNKNOWN_ACCOUNT|does not exist while viewing/.test(J.message))return null;throw J}},transfer(B,q){let F=B.toLowerCase().replace(/\.near$/,"");if(!j(F))throw new x.SwapKitError("plugin_near_invalid_name");return Q(x.Chain.Near).callFunction({args:{name:F,new_owner:q},contractId:"near",deposit:"1",methodName:"transfer"})}},async swap(B){let{route:{buyAsset:q,sellAsset:F,inboundAddress:D,sellAmount:J,meta:{near:Z}}}=B;if(!(F&&q&&Z?.sellAsset))throw new x.SwapKitError("core_swap_asset_not_recognized");if(!D)throw new x.SwapKitError("core_swap_invalid_params",{missing:["inboundAddress"]});let Y=await x.AssetValue.from({asset:F,value:J}),y=Y.chain,H=Q(Y.chain);if(y===x.Chain.Near&&!Y.isGasAsset){let $=Q(Y.chain);if(!$)throw new x.SwapKitError("core_wallet_connection_not_found");let G=await $.createContractFunctionCall({args:{amount:Y.getBaseValue("string"),msg:JSON.stringify({receiver_id:D}),receiver_id:"intents.near"},attachedDeposit:"1",contractId:Y.address,gas:"250000000000000",methodName:"ft_transfer_call",sender:$.address}),L=await $.signTransaction(G);return $.broadcastTransaction(L)}if(!H)throw new x.SwapKitError("core_wallet_connection_not_found");return await H.transfer({assetValue:Y,isProgramDerivedAddress:!0,recipient:D,sender:H.address})}}),name:"near",properties:{supportedSwapkitProviders:[x.ProviderName.NEAR]}});
2
2
 
3
- //# debugId=66E8AFB7A089E1D364756E2164756E21
3
+ //# debugId=938A31A39CC950E264756E2164756E21
4
4
  //# sourceMappingURL=index.cjs.map
@@ -2,10 +2,10 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/near/plugin.ts", "../src/near/nearNames.ts"],
4
4
  "sourcesContent": [
5
- "import { AssetValue, Chain, type CryptoChain, ProviderName, SwapKitError, type SwapParams } from \"@swapkit/helpers\";\nimport type { QuoteResponseRoute } from \"@swapkit/helpers/api\";\nimport type { NearWallet } from \"@swapkit/toolboxes/near\";\nimport { createPlugin } from \"../utils\";\nimport { calculateNearNameCost, validateNearName } from \"./nearNames\";\nimport type { NearAccountInfo, NearNameRegistrationParams } from \"./types\";\n\nexport const NearPlugin = createPlugin({\n methods: ({ getWallet }) => ({\n nearNames: {\n async getInfo(name: string): Promise<NearAccountInfo | null> {\n const normalizedName = name.toLowerCase().replace(/\\.near$/, \"\");\n\n if (!validateNearName(normalizedName)) {\n throw new SwapKitError(\"plugin_near_invalid_name\");\n }\n\n const accountId = `${normalizedName}.near`;\n const wallet = getWallet(Chain.Near);\n\n if (!wallet) {\n throw new SwapKitError(\"plugin_near_no_connection\");\n }\n\n try {\n // Get account info\n const accountInfo = await wallet.provider.query({\n account_id: accountId,\n finality: \"final\",\n request_type: \"view_account\",\n });\n\n // Optionally get the account's public keys\n const keysInfo = await wallet.provider.query({\n account_id: accountId,\n finality: \"final\",\n request_type: \"view_access_key_list\",\n });\n\n return {\n accountId,\n balance: (accountInfo as any).amount,\n codeHash: (accountInfo as any).code_hash,\n publicKeys: (keysInfo as any).keys?.map((k: any) => k.public_key) || [],\n storageUsed: (accountInfo as any).storage_usage,\n };\n } catch (err: any) {\n if (/UNKNOWN_ACCOUNT|does not exist while viewing/.test(err.message)) {\n return null;\n }\n throw err;\n }\n },\n\n async isAvailable(name: string) {\n const owner = await this.resolve(name);\n return owner === null;\n },\n\n async lookupNames(accountId: string) {\n // NEAR doesn't have a central registry to look up all names owned by an account\n // This would require indexing or an external service\n // For now, we can only check if a specific account exists\n const wallet = getWallet(Chain.Near);\n\n if (!wallet) {\n throw new SwapKitError(\"plugin_near_no_connection\");\n }\n\n try {\n // Check if the account exists\n await wallet.provider.query({ account_id: accountId, finality: \"final\", request_type: \"view_account\" });\n\n // If the account ID ends with .near, it's a NEAR name\n if (accountId.endsWith(\".near\")) {\n return [accountId];\n }\n\n // Otherwise, we can't determine what names they own without an indexer\n return [];\n } catch {\n return [];\n }\n },\n\n async register(params: NearNameRegistrationParams) {\n const { name, publicKey: publicKeyOverwrite } = params;\n const normalizedName = name.toLowerCase().replace(/\\.near$/, \"\");\n\n if (!validateNearName(normalizedName)) {\n throw new SwapKitError(\"plugin_near_invalid_name\");\n }\n\n const wallet = getWallet(Chain.Near) as NearWallet;\n\n const newPublicKey = publicKeyOverwrite || (await wallet.getPublicKey());\n\n const cost = calculateNearNameCost(normalizedName);\n\n return wallet.callFunction({\n args: { new_account_id: `${normalizedName}.near`, new_public_key: newPublicKey },\n contractId: \"near\",\n deposit: cost,\n methodName: \"create_account\",\n });\n },\n async resolve(name: string) {\n const normalizedName = name.toLowerCase().replace(/\\.near$/, \"\");\n\n if (!validateNearName(normalizedName)) {\n throw new SwapKitError(\"plugin_near_invalid_name\");\n }\n\n const accountId = `${normalizedName}.near`;\n const wallet = getWallet(Chain.Near);\n\n if (!wallet) {\n throw new SwapKitError(\"plugin_near_no_connection\");\n }\n\n try {\n // Ask RPC whether the account exists\n await wallet.provider.query({ account_id: accountId, finality: \"final\", request_type: \"view_account\" });\n // If no error is thrown, the account exists\n return accountId; // Account is taken, return the account ID as \"owner\"\n } catch (err: any) {\n // UNKNOWN_ACCOUNT means it hasn't been created yet → available\n if (/UNKNOWN_ACCOUNT|does not exist while viewing/.test(err.message)) {\n return null;\n }\n // Re-throw any unexpected errors\n throw err;\n }\n },\n\n transfer(name: string, newOwner: string) {\n const normalizedName = name.toLowerCase().replace(/\\.near$/, \"\");\n\n if (!validateNearName(normalizedName)) {\n throw new SwapKitError(\"plugin_near_invalid_name\");\n }\n\n const wallet = getWallet(Chain.Near) as NearWallet;\n\n return wallet.callFunction({\n args: { name: normalizedName, new_owner: newOwner },\n contractId: \"near\",\n deposit: \"1\",\n methodName: \"transfer\",\n });\n },\n },\n async swap(swapParams: SwapParams<\"near\", QuoteResponseRoute>) {\n const {\n route: {\n buyAsset: buyAssetString,\n sellAsset: sellAssetString,\n inboundAddress,\n sellAmount,\n meta: { near },\n },\n } = swapParams;\n\n if (!(sellAssetString && buyAssetString && near?.sellAsset)) {\n throw new SwapKitError(\"core_swap_asset_not_recognized\");\n }\n\n if (!inboundAddress) {\n throw new SwapKitError(\"core_swap_invalid_params\", { missing: [\"inboundAddress\"] });\n }\n\n const sellAsset = await AssetValue.from({ asset: sellAssetString, value: sellAmount });\n\n const wallet = getWallet(sellAsset.chain as Exclude<CryptoChain, Chain.Radix>);\n\n if (!wallet) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n\n const tx = await wallet.transfer({\n assetValue: sellAsset,\n isProgramDerivedAddress: true,\n recipient: inboundAddress,\n sender: wallet.address,\n });\n\n return tx as string;\n },\n }),\n name: \"near\",\n properties: { supportedSwapkitProviders: [ProviderName.NEAR] },\n});\n",
5
+ "import { AssetValue, Chain, ProviderName, SwapKitError, type SwapParams } from \"@swapkit/helpers\";\nimport type { QuoteResponseRoute } from \"@swapkit/helpers/api\";\nimport type { NearWallet } from \"@swapkit/toolboxes/near\";\nimport { createPlugin } from \"../utils\";\nimport { calculateNearNameCost, validateNearName } from \"./nearNames\";\nimport type { NearAccountInfo, NearNameRegistrationParams } from \"./types\";\n\nexport const NearPlugin = createPlugin({\n methods: ({ getWallet }) => ({\n nearNames: {\n async getInfo(name: string): Promise<NearAccountInfo | null> {\n const normalizedName = name.toLowerCase().replace(/\\.near$/, \"\");\n\n if (!validateNearName(normalizedName)) {\n throw new SwapKitError(\"plugin_near_invalid_name\");\n }\n\n const accountId = `${normalizedName}.near`;\n const wallet = getWallet(Chain.Near);\n\n if (!wallet) {\n throw new SwapKitError(\"plugin_near_no_connection\");\n }\n\n try {\n // Get account info\n const accountInfo = await wallet.provider.query({\n account_id: accountId,\n finality: \"final\",\n request_type: \"view_account\",\n });\n\n // Optionally get the account's public keys\n const keysInfo = await wallet.provider.query({\n account_id: accountId,\n finality: \"final\",\n request_type: \"view_access_key_list\",\n });\n\n return {\n accountId,\n balance: (accountInfo as any).amount,\n codeHash: (accountInfo as any).code_hash,\n publicKeys: (keysInfo as any).keys?.map((k: any) => k.public_key) || [],\n storageUsed: (accountInfo as any).storage_usage,\n };\n } catch (err: any) {\n if (/UNKNOWN_ACCOUNT|does not exist while viewing/.test(err.message)) {\n return null;\n }\n throw err;\n }\n },\n\n async isAvailable(name: string) {\n const owner = await this.resolve(name);\n return owner === null;\n },\n\n async lookupNames(accountId: string) {\n // NEAR doesn't have a central registry to look up all names owned by an account\n // This would require indexing or an external service\n // For now, we can only check if a specific account exists\n const wallet = getWallet(Chain.Near);\n\n if (!wallet) {\n throw new SwapKitError(\"plugin_near_no_connection\");\n }\n\n try {\n // Check if the account exists\n await wallet.provider.query({ account_id: accountId, finality: \"final\", request_type: \"view_account\" });\n\n // If the account ID ends with .near, it's a NEAR name\n if (accountId.endsWith(\".near\")) {\n return [accountId];\n }\n\n // Otherwise, we can't determine what names they own without an indexer\n return [];\n } catch {\n return [];\n }\n },\n\n async register(params: NearNameRegistrationParams) {\n const { name, publicKey: publicKeyOverwrite } = params;\n const normalizedName = name.toLowerCase().replace(/\\.near$/, \"\");\n\n if (!validateNearName(normalizedName)) {\n throw new SwapKitError(\"plugin_near_invalid_name\");\n }\n\n const wallet = getWallet(Chain.Near) as NearWallet;\n\n const newPublicKey = publicKeyOverwrite || (await wallet.getPublicKey());\n\n const cost = calculateNearNameCost(normalizedName);\n\n return wallet.callFunction({\n args: { new_account_id: `${normalizedName}.near`, new_public_key: newPublicKey },\n contractId: \"near\",\n deposit: cost,\n methodName: \"create_account\",\n });\n },\n async resolve(name: string) {\n const normalizedName = name.toLowerCase().replace(/\\.near$/, \"\");\n\n if (!validateNearName(normalizedName)) {\n throw new SwapKitError(\"plugin_near_invalid_name\");\n }\n\n const accountId = `${normalizedName}.near`;\n const wallet = getWallet(Chain.Near);\n\n if (!wallet) {\n throw new SwapKitError(\"plugin_near_no_connection\");\n }\n\n try {\n // Ask RPC whether the account exists\n await wallet.provider.query({ account_id: accountId, finality: \"final\", request_type: \"view_account\" });\n // If no error is thrown, the account exists\n return accountId; // Account is taken, return the account ID as \"owner\"\n } catch (err: any) {\n // UNKNOWN_ACCOUNT means it hasn't been created yet → available\n if (/UNKNOWN_ACCOUNT|does not exist while viewing/.test(err.message)) {\n return null;\n }\n // Re-throw any unexpected errors\n throw err;\n }\n },\n\n transfer(name: string, newOwner: string) {\n const normalizedName = name.toLowerCase().replace(/\\.near$/, \"\");\n\n if (!validateNearName(normalizedName)) {\n throw new SwapKitError(\"plugin_near_invalid_name\");\n }\n\n const wallet = getWallet(Chain.Near) as NearWallet;\n\n return wallet.callFunction({\n args: { name: normalizedName, new_owner: newOwner },\n contractId: \"near\",\n deposit: \"1\",\n methodName: \"transfer\",\n });\n },\n },\n async swap(swapParams: SwapParams<\"near\", QuoteResponseRoute>) {\n const {\n route: {\n buyAsset: buyAssetString,\n sellAsset: sellAssetString,\n inboundAddress,\n sellAmount,\n meta: { near },\n },\n } = swapParams;\n\n if (!(sellAssetString && buyAssetString && near?.sellAsset)) {\n throw new SwapKitError(\"core_swap_asset_not_recognized\");\n }\n\n if (!inboundAddress) {\n throw new SwapKitError(\"core_swap_invalid_params\", { missing: [\"inboundAddress\"] });\n }\n\n const sellAsset = await AssetValue.from({ asset: sellAssetString, value: sellAmount });\n\n const sellAssetChain = sellAsset.chain;\n\n const wallet = getWallet(sellAsset.chain as Exclude<Chain, typeof Chain.Radix>);\n\n if (sellAssetChain === Chain.Near && !sellAsset.isGasAsset) {\n const wallet = getWallet(sellAsset.chain as Chain.Near);\n if (!wallet) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n\n const unsignedTransaction = await wallet.createContractFunctionCall({\n args: {\n amount: sellAsset.getBaseValue(\"string\"),\n msg: JSON.stringify({ receiver_id: inboundAddress }),\n receiver_id: \"intents.near\",\n },\n attachedDeposit: \"1\",\n contractId: sellAsset.address as string,\n gas: \"250000000000000\",\n methodName: \"ft_transfer_call\",\n sender: wallet.address,\n });\n\n const signedTransaction = await wallet.signTransaction(unsignedTransaction);\n return wallet.broadcastTransaction(signedTransaction);\n }\n\n if (!wallet) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n const tx = await wallet.transfer({\n assetValue: sellAsset,\n isProgramDerivedAddress: true,\n recipient: inboundAddress,\n sender: wallet.address,\n });\n\n return tx as string;\n },\n }),\n name: \"near\",\n properties: { supportedSwapkitProviders: [ProviderName.NEAR] },\n});\n",
6
6
  "import { parseNearAmount } from \"near-api-js/lib/utils/format\";\n\nconst MINIMUM_NAME_LENGTH = 2;\nconst MAXIMUM_NAME_LENGTH = 64;\n\nexport function validateNearName(name: string): boolean {\n if (name.length < MINIMUM_NAME_LENGTH || name.length > MAXIMUM_NAME_LENGTH) {\n return false;\n }\n\n // Only lowercase letters, numbers, and hyphens\n // Cannot start or end with hyphen\n // No consecutive hyphens\n return /^[a-z0-9]+(-[a-z0-9]+)*$/.test(name);\n}\n\nexport function calculateNearNameCost(name: string): string {\n // Pricing based on name length\n // These are suggested prices, the actual minimum is ~0.00182 NEAR\n const length = name.length;\n\n let costInNear: string;\n if (length <= 2) {\n costInNear = \"50\"; // 50 NEAR for 2-char names\n } else if (length <= 3) {\n costInNear = \"20\"; // 20 NEAR for 3-char names\n } else if (length <= 4) {\n costInNear = \"5\"; // 5 NEAR for 4-char names\n } else if (length <= 5) {\n costInNear = \"1\"; // 1 NEAR for 5-char names\n } else {\n costInNear = \"0.1\"; // 0.1 NEAR for 6+ characters\n }\n\n // Convert NEAR to yoctoNEAR\n return parseNearAmount(costInNear) || \"0\";\n}\n"
7
7
  ],
8
- "mappings": "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",
9
- "debugId": "66E8AFB7A089E1D364756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "938A31A39CC950E264756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -1,4 +1,4 @@
1
- import{c as V}from"../chunk-a0djqfqa.js";import{AssetValue as G,Chain as j,ProviderName as L,SwapKitError as Q}from"@swapkit/helpers";import{parseNearAmount as X}from"near-api-js/lib/utils/format";var b=2,y=64;function $(J){if(J.length<b||J.length>y)return!1;return/^[a-z0-9]+(-[a-z0-9]+)*$/.test(J)}function U(J){let q=J.length,x;if(q<=2)x="50";else if(q<=3)x="20";else if(q<=4)x="5";else if(q<=5)x="1";else x="0.1";return X(x)||"0"}var v=V({methods:({getWallet:J})=>({nearNames:{async getInfo(q){let x=q.toLowerCase().replace(/\.near$/,"");if(!$(x))throw new Q("plugin_near_invalid_name");let B=`${x}.near`,D=J(j.Near);if(!D)throw new Q("plugin_near_no_connection");try{let F=await D.provider.query({account_id:B,finality:"final",request_type:"view_account"}),Z=await D.provider.query({account_id:B,finality:"final",request_type:"view_access_key_list"});return{accountId:B,balance:F.amount,codeHash:F.code_hash,publicKeys:Z.keys?.map((Y)=>Y.public_key)||[],storageUsed:F.storage_usage}}catch(F){if(/UNKNOWN_ACCOUNT|does not exist while viewing/.test(F.message))return null;throw F}},async isAvailable(q){return await this.resolve(q)===null},async lookupNames(q){let x=J(j.Near);if(!x)throw new Q("plugin_near_no_connection");try{if(await x.provider.query({account_id:q,finality:"final",request_type:"view_account"}),q.endsWith(".near"))return[q];return[]}catch{return[]}},async register(q){let{name:x,publicKey:B}=q,D=x.toLowerCase().replace(/\.near$/,"");if(!$(D))throw new Q("plugin_near_invalid_name");let F=J(j.Near),Z=B||await F.getPublicKey(),Y=U(D);return F.callFunction({args:{new_account_id:`${D}.near`,new_public_key:Z},contractId:"near",deposit:Y,methodName:"create_account"})},async resolve(q){let x=q.toLowerCase().replace(/\.near$/,"");if(!$(x))throw new Q("plugin_near_invalid_name");let B=`${x}.near`,D=J(j.Near);if(!D)throw new Q("plugin_near_no_connection");try{return await D.provider.query({account_id:B,finality:"final",request_type:"view_account"}),B}catch(F){if(/UNKNOWN_ACCOUNT|does not exist while viewing/.test(F.message))return null;throw F}},transfer(q,x){let B=q.toLowerCase().replace(/\.near$/,"");if(!$(B))throw new Q("plugin_near_invalid_name");return J(j.Near).callFunction({args:{name:B,new_owner:x},contractId:"near",deposit:"1",methodName:"transfer"})}},async swap(q){let{route:{buyAsset:x,sellAsset:B,inboundAddress:D,sellAmount:F,meta:{near:Z}}}=q;if(!(B&&x&&Z?.sellAsset))throw new Q("core_swap_asset_not_recognized");if(!D)throw new Q("core_swap_invalid_params",{missing:["inboundAddress"]});let Y=await G.from({asset:B,value:F}),H=J(Y.chain);if(!H)throw new Q("core_wallet_connection_not_found");return await H.transfer({assetValue:Y,isProgramDerivedAddress:!0,recipient:D,sender:H.address})}}),name:"near",properties:{supportedSwapkitProviders:[L.NEAR]}});export{v as NearPlugin};
1
+ import{c as X}from"../chunk-a0djqfqa.js";import{AssetValue as P,Chain as Z,ProviderName as _,SwapKitError as Y}from"@swapkit/helpers";import{parseNearAmount as b}from"near-api-js/lib/utils/format";var O=2,k=64;function H(J){if(J.length<O||J.length>k)return!1;return/^[a-z0-9]+(-[a-z0-9]+)*$/.test(J)}function V(J){let q=J.length,x;if(q<=2)x="50";else if(q<=3)x="20";else if(q<=4)x="5";else if(q<=5)x="1";else x="0.1";return b(x)||"0"}var C=X({methods:({getWallet:J})=>({nearNames:{async getInfo(q){let x=q.toLowerCase().replace(/\.near$/,"");if(!H(x))throw new Y("plugin_near_invalid_name");let D=`${x}.near`,B=J(Z.Near);if(!B)throw new Y("plugin_near_no_connection");try{let F=await B.provider.query({account_id:D,finality:"final",request_type:"view_account"}),$=await B.provider.query({account_id:D,finality:"final",request_type:"view_access_key_list"});return{accountId:D,balance:F.amount,codeHash:F.code_hash,publicKeys:$.keys?.map((Q)=>Q.public_key)||[],storageUsed:F.storage_usage}}catch(F){if(/UNKNOWN_ACCOUNT|does not exist while viewing/.test(F.message))return null;throw F}},async isAvailable(q){return await this.resolve(q)===null},async lookupNames(q){let x=J(Z.Near);if(!x)throw new Y("plugin_near_no_connection");try{if(await x.provider.query({account_id:q,finality:"final",request_type:"view_account"}),q.endsWith(".near"))return[q];return[]}catch{return[]}},async register(q){let{name:x,publicKey:D}=q,B=x.toLowerCase().replace(/\.near$/,"");if(!H(B))throw new Y("plugin_near_invalid_name");let F=J(Z.Near),$=D||await F.getPublicKey(),Q=V(B);return F.callFunction({args:{new_account_id:`${B}.near`,new_public_key:$},contractId:"near",deposit:Q,methodName:"create_account"})},async resolve(q){let x=q.toLowerCase().replace(/\.near$/,"");if(!H(x))throw new Y("plugin_near_invalid_name");let D=`${x}.near`,B=J(Z.Near);if(!B)throw new Y("plugin_near_no_connection");try{return await B.provider.query({account_id:D,finality:"final",request_type:"view_account"}),D}catch(F){if(/UNKNOWN_ACCOUNT|does not exist while viewing/.test(F.message))return null;throw F}},transfer(q,x){let D=q.toLowerCase().replace(/\.near$/,"");if(!H(D))throw new Y("plugin_near_invalid_name");return J(Z.Near).callFunction({args:{name:D,new_owner:x},contractId:"near",deposit:"1",methodName:"transfer"})}},async swap(q){let{route:{buyAsset:x,sellAsset:D,inboundAddress:B,sellAmount:F,meta:{near:$}}}=q;if(!(D&&x&&$?.sellAsset))throw new Y("core_swap_asset_not_recognized");if(!B)throw new Y("core_swap_invalid_params",{missing:["inboundAddress"]});let Q=await P.from({asset:D,value:F}),y=Q.chain,U=J(Q.chain);if(y===Z.Near&&!Q.isGasAsset){let j=J(Q.chain);if(!j)throw new Y("core_wallet_connection_not_found");let G=await j.createContractFunctionCall({args:{amount:Q.getBaseValue("string"),msg:JSON.stringify({receiver_id:B}),receiver_id:"intents.near"},attachedDeposit:"1",contractId:Q.address,gas:"250000000000000",methodName:"ft_transfer_call",sender:j.address}),L=await j.signTransaction(G);return j.broadcastTransaction(L)}if(!U)throw new Y("core_wallet_connection_not_found");return await U.transfer({assetValue:Q,isProgramDerivedAddress:!0,recipient:B,sender:U.address})}}),name:"near",properties:{supportedSwapkitProviders:[_.NEAR]}});export{C as NearPlugin};
2
2
 
3
- //# debugId=C431669888F1820764756E2164756E21
3
+ //# debugId=90D41E63816E17BD64756E2164756E21
4
4
  //# sourceMappingURL=index.js.map
@@ -2,10 +2,10 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/near/plugin.ts", "../src/near/nearNames.ts"],
4
4
  "sourcesContent": [
5
- "import { AssetValue, Chain, type CryptoChain, ProviderName, SwapKitError, type SwapParams } from \"@swapkit/helpers\";\nimport type { QuoteResponseRoute } from \"@swapkit/helpers/api\";\nimport type { NearWallet } from \"@swapkit/toolboxes/near\";\nimport { createPlugin } from \"../utils\";\nimport { calculateNearNameCost, validateNearName } from \"./nearNames\";\nimport type { NearAccountInfo, NearNameRegistrationParams } from \"./types\";\n\nexport const NearPlugin = createPlugin({\n methods: ({ getWallet }) => ({\n nearNames: {\n async getInfo(name: string): Promise<NearAccountInfo | null> {\n const normalizedName = name.toLowerCase().replace(/\\.near$/, \"\");\n\n if (!validateNearName(normalizedName)) {\n throw new SwapKitError(\"plugin_near_invalid_name\");\n }\n\n const accountId = `${normalizedName}.near`;\n const wallet = getWallet(Chain.Near);\n\n if (!wallet) {\n throw new SwapKitError(\"plugin_near_no_connection\");\n }\n\n try {\n // Get account info\n const accountInfo = await wallet.provider.query({\n account_id: accountId,\n finality: \"final\",\n request_type: \"view_account\",\n });\n\n // Optionally get the account's public keys\n const keysInfo = await wallet.provider.query({\n account_id: accountId,\n finality: \"final\",\n request_type: \"view_access_key_list\",\n });\n\n return {\n accountId,\n balance: (accountInfo as any).amount,\n codeHash: (accountInfo as any).code_hash,\n publicKeys: (keysInfo as any).keys?.map((k: any) => k.public_key) || [],\n storageUsed: (accountInfo as any).storage_usage,\n };\n } catch (err: any) {\n if (/UNKNOWN_ACCOUNT|does not exist while viewing/.test(err.message)) {\n return null;\n }\n throw err;\n }\n },\n\n async isAvailable(name: string) {\n const owner = await this.resolve(name);\n return owner === null;\n },\n\n async lookupNames(accountId: string) {\n // NEAR doesn't have a central registry to look up all names owned by an account\n // This would require indexing or an external service\n // For now, we can only check if a specific account exists\n const wallet = getWallet(Chain.Near);\n\n if (!wallet) {\n throw new SwapKitError(\"plugin_near_no_connection\");\n }\n\n try {\n // Check if the account exists\n await wallet.provider.query({ account_id: accountId, finality: \"final\", request_type: \"view_account\" });\n\n // If the account ID ends with .near, it's a NEAR name\n if (accountId.endsWith(\".near\")) {\n return [accountId];\n }\n\n // Otherwise, we can't determine what names they own without an indexer\n return [];\n } catch {\n return [];\n }\n },\n\n async register(params: NearNameRegistrationParams) {\n const { name, publicKey: publicKeyOverwrite } = params;\n const normalizedName = name.toLowerCase().replace(/\\.near$/, \"\");\n\n if (!validateNearName(normalizedName)) {\n throw new SwapKitError(\"plugin_near_invalid_name\");\n }\n\n const wallet = getWallet(Chain.Near) as NearWallet;\n\n const newPublicKey = publicKeyOverwrite || (await wallet.getPublicKey());\n\n const cost = calculateNearNameCost(normalizedName);\n\n return wallet.callFunction({\n args: { new_account_id: `${normalizedName}.near`, new_public_key: newPublicKey },\n contractId: \"near\",\n deposit: cost,\n methodName: \"create_account\",\n });\n },\n async resolve(name: string) {\n const normalizedName = name.toLowerCase().replace(/\\.near$/, \"\");\n\n if (!validateNearName(normalizedName)) {\n throw new SwapKitError(\"plugin_near_invalid_name\");\n }\n\n const accountId = `${normalizedName}.near`;\n const wallet = getWallet(Chain.Near);\n\n if (!wallet) {\n throw new SwapKitError(\"plugin_near_no_connection\");\n }\n\n try {\n // Ask RPC whether the account exists\n await wallet.provider.query({ account_id: accountId, finality: \"final\", request_type: \"view_account\" });\n // If no error is thrown, the account exists\n return accountId; // Account is taken, return the account ID as \"owner\"\n } catch (err: any) {\n // UNKNOWN_ACCOUNT means it hasn't been created yet → available\n if (/UNKNOWN_ACCOUNT|does not exist while viewing/.test(err.message)) {\n return null;\n }\n // Re-throw any unexpected errors\n throw err;\n }\n },\n\n transfer(name: string, newOwner: string) {\n const normalizedName = name.toLowerCase().replace(/\\.near$/, \"\");\n\n if (!validateNearName(normalizedName)) {\n throw new SwapKitError(\"plugin_near_invalid_name\");\n }\n\n const wallet = getWallet(Chain.Near) as NearWallet;\n\n return wallet.callFunction({\n args: { name: normalizedName, new_owner: newOwner },\n contractId: \"near\",\n deposit: \"1\",\n methodName: \"transfer\",\n });\n },\n },\n async swap(swapParams: SwapParams<\"near\", QuoteResponseRoute>) {\n const {\n route: {\n buyAsset: buyAssetString,\n sellAsset: sellAssetString,\n inboundAddress,\n sellAmount,\n meta: { near },\n },\n } = swapParams;\n\n if (!(sellAssetString && buyAssetString && near?.sellAsset)) {\n throw new SwapKitError(\"core_swap_asset_not_recognized\");\n }\n\n if (!inboundAddress) {\n throw new SwapKitError(\"core_swap_invalid_params\", { missing: [\"inboundAddress\"] });\n }\n\n const sellAsset = await AssetValue.from({ asset: sellAssetString, value: sellAmount });\n\n const wallet = getWallet(sellAsset.chain as Exclude<CryptoChain, Chain.Radix>);\n\n if (!wallet) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n\n const tx = await wallet.transfer({\n assetValue: sellAsset,\n isProgramDerivedAddress: true,\n recipient: inboundAddress,\n sender: wallet.address,\n });\n\n return tx as string;\n },\n }),\n name: \"near\",\n properties: { supportedSwapkitProviders: [ProviderName.NEAR] },\n});\n",
5
+ "import { AssetValue, Chain, ProviderName, SwapKitError, type SwapParams } from \"@swapkit/helpers\";\nimport type { QuoteResponseRoute } from \"@swapkit/helpers/api\";\nimport type { NearWallet } from \"@swapkit/toolboxes/near\";\nimport { createPlugin } from \"../utils\";\nimport { calculateNearNameCost, validateNearName } from \"./nearNames\";\nimport type { NearAccountInfo, NearNameRegistrationParams } from \"./types\";\n\nexport const NearPlugin = createPlugin({\n methods: ({ getWallet }) => ({\n nearNames: {\n async getInfo(name: string): Promise<NearAccountInfo | null> {\n const normalizedName = name.toLowerCase().replace(/\\.near$/, \"\");\n\n if (!validateNearName(normalizedName)) {\n throw new SwapKitError(\"plugin_near_invalid_name\");\n }\n\n const accountId = `${normalizedName}.near`;\n const wallet = getWallet(Chain.Near);\n\n if (!wallet) {\n throw new SwapKitError(\"plugin_near_no_connection\");\n }\n\n try {\n // Get account info\n const accountInfo = await wallet.provider.query({\n account_id: accountId,\n finality: \"final\",\n request_type: \"view_account\",\n });\n\n // Optionally get the account's public keys\n const keysInfo = await wallet.provider.query({\n account_id: accountId,\n finality: \"final\",\n request_type: \"view_access_key_list\",\n });\n\n return {\n accountId,\n balance: (accountInfo as any).amount,\n codeHash: (accountInfo as any).code_hash,\n publicKeys: (keysInfo as any).keys?.map((k: any) => k.public_key) || [],\n storageUsed: (accountInfo as any).storage_usage,\n };\n } catch (err: any) {\n if (/UNKNOWN_ACCOUNT|does not exist while viewing/.test(err.message)) {\n return null;\n }\n throw err;\n }\n },\n\n async isAvailable(name: string) {\n const owner = await this.resolve(name);\n return owner === null;\n },\n\n async lookupNames(accountId: string) {\n // NEAR doesn't have a central registry to look up all names owned by an account\n // This would require indexing or an external service\n // For now, we can only check if a specific account exists\n const wallet = getWallet(Chain.Near);\n\n if (!wallet) {\n throw new SwapKitError(\"plugin_near_no_connection\");\n }\n\n try {\n // Check if the account exists\n await wallet.provider.query({ account_id: accountId, finality: \"final\", request_type: \"view_account\" });\n\n // If the account ID ends with .near, it's a NEAR name\n if (accountId.endsWith(\".near\")) {\n return [accountId];\n }\n\n // Otherwise, we can't determine what names they own without an indexer\n return [];\n } catch {\n return [];\n }\n },\n\n async register(params: NearNameRegistrationParams) {\n const { name, publicKey: publicKeyOverwrite } = params;\n const normalizedName = name.toLowerCase().replace(/\\.near$/, \"\");\n\n if (!validateNearName(normalizedName)) {\n throw new SwapKitError(\"plugin_near_invalid_name\");\n }\n\n const wallet = getWallet(Chain.Near) as NearWallet;\n\n const newPublicKey = publicKeyOverwrite || (await wallet.getPublicKey());\n\n const cost = calculateNearNameCost(normalizedName);\n\n return wallet.callFunction({\n args: { new_account_id: `${normalizedName}.near`, new_public_key: newPublicKey },\n contractId: \"near\",\n deposit: cost,\n methodName: \"create_account\",\n });\n },\n async resolve(name: string) {\n const normalizedName = name.toLowerCase().replace(/\\.near$/, \"\");\n\n if (!validateNearName(normalizedName)) {\n throw new SwapKitError(\"plugin_near_invalid_name\");\n }\n\n const accountId = `${normalizedName}.near`;\n const wallet = getWallet(Chain.Near);\n\n if (!wallet) {\n throw new SwapKitError(\"plugin_near_no_connection\");\n }\n\n try {\n // Ask RPC whether the account exists\n await wallet.provider.query({ account_id: accountId, finality: \"final\", request_type: \"view_account\" });\n // If no error is thrown, the account exists\n return accountId; // Account is taken, return the account ID as \"owner\"\n } catch (err: any) {\n // UNKNOWN_ACCOUNT means it hasn't been created yet → available\n if (/UNKNOWN_ACCOUNT|does not exist while viewing/.test(err.message)) {\n return null;\n }\n // Re-throw any unexpected errors\n throw err;\n }\n },\n\n transfer(name: string, newOwner: string) {\n const normalizedName = name.toLowerCase().replace(/\\.near$/, \"\");\n\n if (!validateNearName(normalizedName)) {\n throw new SwapKitError(\"plugin_near_invalid_name\");\n }\n\n const wallet = getWallet(Chain.Near) as NearWallet;\n\n return wallet.callFunction({\n args: { name: normalizedName, new_owner: newOwner },\n contractId: \"near\",\n deposit: \"1\",\n methodName: \"transfer\",\n });\n },\n },\n async swap(swapParams: SwapParams<\"near\", QuoteResponseRoute>) {\n const {\n route: {\n buyAsset: buyAssetString,\n sellAsset: sellAssetString,\n inboundAddress,\n sellAmount,\n meta: { near },\n },\n } = swapParams;\n\n if (!(sellAssetString && buyAssetString && near?.sellAsset)) {\n throw new SwapKitError(\"core_swap_asset_not_recognized\");\n }\n\n if (!inboundAddress) {\n throw new SwapKitError(\"core_swap_invalid_params\", { missing: [\"inboundAddress\"] });\n }\n\n const sellAsset = await AssetValue.from({ asset: sellAssetString, value: sellAmount });\n\n const sellAssetChain = sellAsset.chain;\n\n const wallet = getWallet(sellAsset.chain as Exclude<Chain, typeof Chain.Radix>);\n\n if (sellAssetChain === Chain.Near && !sellAsset.isGasAsset) {\n const wallet = getWallet(sellAsset.chain as Chain.Near);\n if (!wallet) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n\n const unsignedTransaction = await wallet.createContractFunctionCall({\n args: {\n amount: sellAsset.getBaseValue(\"string\"),\n msg: JSON.stringify({ receiver_id: inboundAddress }),\n receiver_id: \"intents.near\",\n },\n attachedDeposit: \"1\",\n contractId: sellAsset.address as string,\n gas: \"250000000000000\",\n methodName: \"ft_transfer_call\",\n sender: wallet.address,\n });\n\n const signedTransaction = await wallet.signTransaction(unsignedTransaction);\n return wallet.broadcastTransaction(signedTransaction);\n }\n\n if (!wallet) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n const tx = await wallet.transfer({\n assetValue: sellAsset,\n isProgramDerivedAddress: true,\n recipient: inboundAddress,\n sender: wallet.address,\n });\n\n return tx as string;\n },\n }),\n name: \"near\",\n properties: { supportedSwapkitProviders: [ProviderName.NEAR] },\n});\n",
6
6
  "import { parseNearAmount } from \"near-api-js/lib/utils/format\";\n\nconst MINIMUM_NAME_LENGTH = 2;\nconst MAXIMUM_NAME_LENGTH = 64;\n\nexport function validateNearName(name: string): boolean {\n if (name.length < MINIMUM_NAME_LENGTH || name.length > MAXIMUM_NAME_LENGTH) {\n return false;\n }\n\n // Only lowercase letters, numbers, and hyphens\n // Cannot start or end with hyphen\n // No consecutive hyphens\n return /^[a-z0-9]+(-[a-z0-9]+)*$/.test(name);\n}\n\nexport function calculateNearNameCost(name: string): string {\n // Pricing based on name length\n // These are suggested prices, the actual minimum is ~0.00182 NEAR\n const length = name.length;\n\n let costInNear: string;\n if (length <= 2) {\n costInNear = \"50\"; // 50 NEAR for 2-char names\n } else if (length <= 3) {\n costInNear = \"20\"; // 20 NEAR for 3-char names\n } else if (length <= 4) {\n costInNear = \"5\"; // 5 NEAR for 4-char names\n } else if (length <= 5) {\n costInNear = \"1\"; // 1 NEAR for 5-char names\n } else {\n costInNear = \"0.1\"; // 0.1 NEAR for 6+ characters\n }\n\n // Convert NEAR to yoctoNEAR\n return parseNearAmount(costInNear) || \"0\";\n}\n"
7
7
  ],
8
- "mappings": "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",
9
- "debugId": "C431669888F1820764756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "90D41E63816E17BD64756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -1,4 +1,4 @@
1
- var zx={};qx(zx,{validateAddressType:()=>B,ThorchainPlugin:()=>y,MayachainPlugin:()=>w});module.exports=xx(zx);var x=require("@swapkit/helpers"),M=require("@swapkit/helpers/api"),Y=require("@swapkit/helpers/contracts");var T=require("@swapkit/helpers");function B({chain:R,address:O}){if(!O)return!1;return R===T.Chain.Bitcoin?!O.startsWith("bc1p"):!0}function b({assetValue:R,from:O,memo:U="",...P}){return{...P,assetValue:R,from:O,memo:U}}var t={[x.FeeOption.Average]:1.2,[x.FeeOption.Fast]:1.5,[x.FeeOption.Fastest]:2},s={[x.Chain.Avalanche]:Y.TCAvalancheDepositABI,[x.Chain.Base]:Y.TCBaseDepositABI,[x.Chain.BinanceSmartChain]:Y.TCBscDepositABI,[x.Chain.Ethereum]:Y.TCEthereumVaultAbi},a={[x.Chain.Arbitrum]:Y.MayaArbitrumVaultAbi,[x.Chain.Ethereum]:Y.MayaEthereumVaultAbi},y=S({methods:C(x.Chain.THORChain),name:"thorchain",properties:{supportedSwapkitProviders:[x.ProviderName.THORCHAIN,x.ProviderName.THORCHAIN_STREAMING]}}),w=S({methods:C(x.Chain.Maya),name:"mayachain",properties:{supportedSwapkitProviders:[x.ProviderName.MAYACHAIN,x.ProviderName.MAYACHAIN_STREAMING]}});function e(R){return async function(U){if(R==="thorchain"&&U===x.Chain.THORChain||R==="mayachain"&&U===x.Chain.Maya)return{address:"",chain:U,dust_threshold:"0",gas_rate:"0",halted:!1,router:""};let Z=(await M.SwapKitApi.thornode.getInboundAddresses(R)).find((F)=>F.chain===U);if(!Z)throw new x.SwapKitError("core_inbound_data_not_found");if(Z?.halted)throw new x.SwapKitError("core_chain_halted");return Z}}function C(R){return function({getWallet:U}){let P=R===x.Chain.Maya?"mayachain":"thorchain",Z=e(P);async function F({assetValue:q,type:z="checkOnly"}){let H=(await Z(q.chain)).router,J=q.chain,Q=x.EVMChains.includes(J);if(Q&&q.isGasAsset||!Q||q.isSynthetic)return Promise.resolve(z==="checkOnly"?!0:"approved");let X=U(J);if(!X)throw new x.SwapKitError("core_wallet_connection_not_found");let $=z==="checkOnly"?X.isApproved:X.approve;if(!(q.address&&X.address))throw new x.SwapKitError("core_approve_asset_address_or_from_not_found");return $({amount:q.getBaseValue("bigint"),assetAddress:q.address,from:X.address,spenderAddress:H})}async function k({assetValue:q,recipient:z,router:H,...J}){let Q=P==="thorchain"?s:a,{chain:L,symbol:X,ticker:$}=q,f=U(L);if(!f)throw new x.SwapKitError("core_wallet_connection_not_found");let{address:I}=f;if(!B({address:I,chain:L}))throw new x.SwapKitError("core_transaction_invalid_sender_address");let N=b({assetValue:q,from:I,recipient:z,router:H,...J});try{let j=Q?.[L];if(!j){let v=U(L);return R===L&&z===""?v.deposit(N):v.transfer(N)}let{getChecksumAddressFromAsset:G}=await import("@swapkit/toolboxes/evm");return U(L).call({abi:j,contractAddress:H||(await Z(L)).router,funcName:"depositWithExpiry",funcParams:[z,G({chain:L,symbol:X,ticker:$},L),q.getBaseValue("string"),N.memo,J.expiration||Number.parseInt(`${(Date.now()+900000)/1000}`,10)],txOverrides:{from:N.from,value:q.isGasAsset?q.getBaseValue("bigint"):void 0}})}catch(j){let G=typeof j==="string"?j.toLowerCase():j?.message.toLowerCase(),E=G?.includes("insufficient funds"),v=G?.includes("gas"),W=G?.includes("server"),i=G?.includes("user rejected");throw new x.SwapKitError(E?"core_transaction_deposit_insufficient_funds_error":v?"core_transaction_deposit_gas_error":W?"core_transaction_deposit_server_error":i?"core_transaction_user_rejected":"core_transaction_deposit_error",j)}}async function K({memo:q,assetValue:z}){let H=await M.SwapKitApi.thornode.getMimirInfo(P);if(H.HALTCHAINGLOBAL>=1||H.HALTTHORCHAIN>=1)throw new x.SwapKitError("thorchain_chain_halted");return k({assetValue:z,memo:q,recipient:""})}async function _({assetValue:q,memo:z,feeOptionKey:H=x.FeeOption.Fast}){let{gas_rate:J="0",router:Q,address:L}=await Z(q.chain);return k({assetValue:q,feeRate:Number.parseInt(J,10)*t[H],memo:z,recipient:L,router:Q})}function g({assetValue:q}){return F({assetValue:q,type:x.ApproveMode.Approve})}function A({assetValue:q}){return F({assetValue:q,type:x.ApproveMode.CheckOnly})}function m({assetValue:q,...z}){return K({assetValue:q,memo:x.getMemoForNameRegister(z)})}function c({assetValue:q,payoutAddress:z,name:H,ownerAddress:J}){let Q=z||U(q.chain)?.address;if(!Q)throw new x.SwapKitError("thorchain_preferred_asset_payout_required");return K({assetValue:x.AssetValue.from({chain:R}),memo:x.getMemoForNamePreferredAssetRegister({asset:q.toString(),chain:q.chain,name:H,owner:J,payout:Q})})}function h({type:q,assetValue:z,address:H}){let J=q===x.MemoType.UNBOND?x.getMemoForUnbond({address:H,unbondAmount:z.getBaseValue("number")}):x.getMemoForLeaveAndBond({address:H,type:q}),Q=q===x.MemoType.BOND?z:x.getMinAmountByChain(R);return K({assetValue:Q,memo:J})}async function V({baseAssetValue:q,assetValue:z}){if(q.lte(0)||z.lte(0))throw new x.SwapKitError("core_transaction_create_liquidity_invalid_params");let H=U(z.chain).address,J=U(R).address,Q=await x.wrapWithThrow(()=>{return _({assetValue:q,memo:x.getMemoForDeposit({...z,address:H})})},"core_transaction_create_liquidity_base_error");return{assetTx:await x.wrapWithThrow(()=>{return _({assetValue:z,memo:x.getMemoForDeposit({...z,address:J})})},"core_transaction_create_liquidity_asset_error"),baseAssetTx:Q}}function p({assetValue:q,poolAddress:z,address:H,symmetric:J}){if(J&&!H)throw new x.SwapKitError("core_transaction_add_liquidity_invalid_params");let Q=x.getMemoForDeposit({address:J?H:"",chain:z.split(".")[0],symbol:z.split(".")[1]});return _({assetValue:q,memo:Q})}async function n({baseAssetValue:q,assetValue:z,baseAssetAddr:H,assetAddr:J,isPendingSymmAsset:Q,mode:L="sym"}){let{chain:X,symbol:$}=z,f=L==="sym",I=q?.gt(0)&&(f||L==="baseAsset"),D=z?.gt(0)&&(f||L==="asset"),N=Q||I,j=U(R).address,G=N?H||j:"",E=f||L==="asset"?J||U(X).address:"";if(!(I||D))throw new x.SwapKitError("core_transaction_add_liquidity_invalid_params");if(N&&!G)throw new x.SwapKitError("core_transaction_add_liquidity_base_address");let v=I&&q?await x.wrapWithThrow(()=>{return _({assetValue:q,memo:x.getMemoForDeposit({address:E,chain:X,symbol:$})})},"core_transaction_add_liquidity_base_error"):void 0;return{assetTx:D&&z?await x.wrapWithThrow(()=>{return _({assetValue:z,memo:x.getMemoForDeposit({address:G,chain:X,symbol:$})})},"core_transaction_add_liquidity_asset_error"):void 0,baseAssetTx:v}}function d({memo:q,assetValue:z,percent:H,from:J,to:Q}){let L=Q==="baseAsset"&&J!=="baseAsset"?x.AssetValue.from({chain:R}):J==="sym"&&Q==="sym"||J==="baseAsset"||J==="asset"?void 0:z,X=x.getMinAmountByChain(J==="asset"?z.chain:R),$=q||x.getMemoForWithdraw({basisPoints:Math.min(1e4,Math.round(H*100)),chain:z.chain,symbol:z.symbol,targetAsset:L?.toString(),ticker:z.ticker});return _({assetValue:X,memo:$})}async function u({chain:q,thorAddress:z}){let H=await Z(q),J=H.dust_threshold;return k({assetValue:x.AssetValue.from({chain:q,fromBaseDecimal:Math.min(x.BaseDecimal[q],x.BaseDecimal[x.Chain.THORChain]),value:q!==x.Chain.THORChain?J:0}),memo:x.getMemoForTcyClaim(x.MemoType.CLAIM_TCY,{address:z}),recipient:H.address,router:H.router})}function r(q){if(q.type==="stake"){if(q.assetValue.toString()!=="THOR.TCY")throw new x.SwapKitError("thorchain_asset_is_not_tcy");return k({assetValue:q.assetValue,memo:x.getMemoForTcyStake(x.MemoType.STAKE_TCY,{}),recipient:""})}return k({assetValue:x.AssetValue.from({chain:x.Chain.THORChain}),memo:x.getMemoForTcyStake(x.MemoType.UNSTAKE_TCY,{unstakeBps:q.unstakeBps}),recipient:""})}async function o({feeOptionKey:q,route:z}){let{memo:H,expiration:J,targetAddress:Q}=z,L=await x.AssetValue.from({asset:z.sellAsset,asyncTokenLookup:!0,value:z.sellAmount});if(!L)throw new x.SwapKitError("core_swap_asset_not_recognized");if(!B({address:z.destinationAddress,chain:x.AssetValue.from({asset:z.buyAsset}).chain}))throw new x.SwapKitError("core_transaction_invalid_recipient_address");let{address:$}=await Z(L.chain);return k({assetValue:L,expiration:Number(J),feeOptionKey:q,memo:H,recipient:$,router:Q})}return{addLiquidity:n,addLiquidityPart:p,approveAssetValue:g,claimTcy:u,createLiquidity:V,deposit:k,depositToPool:_,getInboundDataByChain:Z,isAssetValueApproved:A,nodeAction:h,registerName:m,registerPreferredAsset:c,stakeTcyAction:r,swap:o,withdraw:d}}}
1
+ var zx={};qx(zx,{validateAddressType:()=>v,ThorchainPlugin:()=>y,MayachainPlugin:()=>w});module.exports=xx(zx);var x=require("@swapkit/helpers"),M=require("@swapkit/helpers/api"),Y=require("@swapkit/helpers/contracts");var T=require("@swapkit/helpers");function v({chain:R,address:O}){if(!O)return!1;return R===T.Chain.Bitcoin?!O.startsWith("bc1p"):!0}function b({assetValue:R,from:O,memo:U="",...P}){return{...P,assetValue:R,from:O,memo:U}}var t={[x.FeeOption.Average]:1.2,[x.FeeOption.Fast]:1.5,[x.FeeOption.Fastest]:2},s={[x.Chain.Avalanche]:Y.TCAvalancheDepositABI,[x.Chain.Base]:Y.TCBaseDepositABI,[x.Chain.BinanceSmartChain]:Y.TCBscDepositABI,[x.Chain.Ethereum]:Y.TCEthereumVaultAbi},a={[x.Chain.Arbitrum]:Y.MayaArbitrumVaultAbi,[x.Chain.Ethereum]:Y.MayaEthereumVaultAbi},y=S({methods:C(x.Chain.THORChain),name:"thorchain",properties:{supportedSwapkitProviders:[x.ProviderName.THORCHAIN,x.ProviderName.THORCHAIN_STREAMING]}}),w=S({methods:C(x.Chain.Maya),name:"mayachain",properties:{supportedSwapkitProviders:[x.ProviderName.MAYACHAIN,x.ProviderName.MAYACHAIN_STREAMING]}});function e(R){return async function(U){if(R==="thorchain"&&U===x.Chain.THORChain||R==="mayachain"&&U===x.Chain.Maya)return{address:"",chain:U,dust_threshold:"0",gas_rate:"0",halted:!1,router:""};let Z=(await M.SwapKitApi.thornode.getInboundAddresses(R)).find((F)=>F.chain===U);if(!Z)throw new x.SwapKitError("core_inbound_data_not_found");if(Z?.halted)throw new x.SwapKitError("core_chain_halted");return Z}}function C(R){return function({getWallet:U}){let P=R===x.Chain.Maya?"mayachain":"thorchain",Z=e(P);async function F({assetValue:q,type:z="checkOnly"}){let H=(await Z(q.chain)).router,J=q.chain,Q=x.EVMChains.includes(J);if(Q&&q.isGasAsset||!Q||q.isSynthetic)return Promise.resolve(z==="checkOnly"?!0:"approved");let X=U(J);if(!X)throw new x.SwapKitError("core_wallet_connection_not_found");let $=z==="checkOnly"?X.isApproved:X.approve;if(!(q.address&&X.address))throw new x.SwapKitError("core_approve_asset_address_or_from_not_found");return $({amount:q.getBaseValue("bigint"),assetAddress:q.address,from:X.address,spenderAddress:H})}async function k({assetValue:q,recipient:z,router:H,...J}){let Q=P==="thorchain"?s:a,{chain:L,symbol:X,ticker:$}=q,f=U(L);if(!f)throw new x.SwapKitError("core_wallet_connection_not_found");let{address:I}=f;if(!v({address:I,chain:L}))throw new x.SwapKitError("core_transaction_invalid_sender_address");let N=b({assetValue:q,from:I,recipient:z,router:H,...J});try{let j=Q?.[L];if(!j){let B=U(L);return R===L&&z===""?B.deposit(N):B.transfer(N)}let{getChecksumAddressFromAsset:G}=await import("@swapkit/toolboxes/evm");return U(L).call({abi:j,contractAddress:H||(await Z(L)).router,funcName:"depositWithExpiry",funcParams:[z,G({chain:L,symbol:X,ticker:$},L),q.getBaseValue("string"),N.memo,J.expiration||Number.parseInt(`${(Date.now()+900000)/1000}`,10)],txOverrides:{from:N.from,value:q.isGasAsset?q.getBaseValue("bigint"):void 0}})}catch(j){let G=typeof j==="string"?j.toLowerCase():j?.message.toLowerCase(),E=G?.includes("insufficient funds"),B=G?.includes("gas"),W=G?.includes("server"),i=G?.includes("user rejected");throw new x.SwapKitError(E?"core_transaction_deposit_insufficient_funds_error":B?"core_transaction_deposit_gas_error":W?"core_transaction_deposit_server_error":i?"core_transaction_user_rejected":"core_transaction_deposit_error",j)}}async function K({memo:q,assetValue:z}){let H=await M.SwapKitApi.thornode.getMimirInfo(P);if(H.HALTCHAINGLOBAL>=1||H.HALTTHORCHAIN>=1)throw new x.SwapKitError("thorchain_chain_halted");return k({assetValue:z,memo:q,recipient:""})}async function _({assetValue:q,memo:z,feeOptionKey:H=x.FeeOption.Fast}){let{gas_rate:J="0",router:Q,address:L}=await Z(q.chain);return k({assetValue:q,feeRate:Number.parseInt(J,10)*t[H],memo:z,recipient:L,router:Q})}function A({assetValue:q}){return F({assetValue:q,type:x.ApproveMode.Approve})}function g({assetValue:q}){return F({assetValue:q,type:x.ApproveMode.CheckOnly})}function m({assetValue:q,...z}){return K({assetValue:q,memo:x.getMemoForNameRegister(z)})}function c({assetValue:q,payoutAddress:z,name:H,ownerAddress:J}){let Q=z||U(q.chain)?.address;if(!Q)throw new x.SwapKitError("thorchain_preferred_asset_payout_required");return K({assetValue:x.AssetValue.from({chain:R}),memo:x.getMemoForNamePreferredAssetRegister({asset:q.toString(),chain:q.chain,name:H,owner:J,payout:Q})})}function V({type:q,assetValue:z,address:H}){let J=q===x.MemoType.UNBOND?x.getMemoForUnbond({address:H,unbondAmount:z.getBaseValue("number")}):x.getMemoForLeaveAndBond({address:H,type:q}),Q=q===x.MemoType.BOND?z:x.getMinAmountByChain(R);return K({assetValue:Q,memo:J})}async function h({baseAssetValue:q,assetValue:z}){if(q.lte(0)||z.lte(0))throw new x.SwapKitError("core_transaction_create_liquidity_invalid_params");let H=U(z.chain).address,J=U(R).address,Q=await x.wrapWithThrow(()=>{return _({assetValue:q,memo:x.getMemoForDeposit({...z,address:H})})},"core_transaction_create_liquidity_base_error");return{assetTx:await x.wrapWithThrow(()=>{return _({assetValue:z,memo:x.getMemoForDeposit({...z,address:J})})},"core_transaction_create_liquidity_asset_error"),baseAssetTx:Q}}function p({assetValue:q,poolAddress:z,address:H,symmetric:J}){if(J&&!H)throw new x.SwapKitError("core_transaction_add_liquidity_invalid_params");let Q=x.getMemoForDeposit({address:J?H:"",chain:z.split(".")[0],symbol:z.split(".")[1]});return _({assetValue:q,memo:Q})}async function d({baseAssetValue:q,assetValue:z,baseAssetAddr:H,assetAddr:J,isPendingSymmAsset:Q,mode:L="sym"}){let{chain:X,symbol:$}=z,f=L==="sym",I=q?.gt(0)&&(f||L==="baseAsset"),D=z?.gt(0)&&(f||L==="asset"),N=Q||I,j=U(R).address,G=N?H||j:"",E=f||L==="asset"?J||U(X).address:"";if(!(I||D))throw new x.SwapKitError("core_transaction_add_liquidity_invalid_params");if(N&&!G)throw new x.SwapKitError("core_transaction_add_liquidity_base_address");let B=I&&q?await x.wrapWithThrow(()=>{return _({assetValue:q,memo:x.getMemoForDeposit({address:E,chain:X,symbol:$})})},"core_transaction_add_liquidity_base_error"):void 0;return{assetTx:D&&z?await x.wrapWithThrow(()=>{return _({assetValue:z,memo:x.getMemoForDeposit({address:G,chain:X,symbol:$})})},"core_transaction_add_liquidity_asset_error"):void 0,baseAssetTx:B}}function n({memo:q,assetValue:z,percent:H,from:J,to:Q}){let L=Q==="baseAsset"&&J!=="baseAsset"?x.AssetValue.from({chain:R}):J==="sym"&&Q==="sym"||J==="baseAsset"||J==="asset"?void 0:z,X=x.getMinAmountByChain(J==="asset"?z.chain:R),$=q||x.getMemoForWithdraw({basisPoints:Math.min(1e4,Math.round(H*100)),chain:z.chain,symbol:z.symbol,targetAsset:L?.toString(),ticker:z.ticker});return _({assetValue:X,memo:$})}async function u({chain:q,thorAddress:z}){let H=await Z(q),J=H.dust_threshold,{baseDecimal:Q}=x.getChainConfig(q),{baseDecimal:L}=x.getChainConfig(x.Chain.THORChain);return k({assetValue:x.AssetValue.from({chain:q,fromBaseDecimal:Math.min(Q,L),value:q!==x.Chain.THORChain?J:0}),memo:x.getMemoForTcyClaim(x.MemoType.CLAIM_TCY,{address:z}),recipient:H.address,router:H.router})}function r(q){if(q.type==="stake"){if(q.assetValue.toString()!=="THOR.TCY")throw new x.SwapKitError("thorchain_asset_is_not_tcy");return k({assetValue:q.assetValue,memo:x.getMemoForTcyStake(x.MemoType.STAKE_TCY,{}),recipient:""})}return k({assetValue:x.AssetValue.from({chain:x.Chain.THORChain}),memo:x.getMemoForTcyStake(x.MemoType.UNSTAKE_TCY,{unstakeBps:q.unstakeBps}),recipient:""})}async function o({feeOptionKey:q,route:z}){let{memo:H,expiration:J,targetAddress:Q}=z,L=await x.AssetValue.from({asset:z.sellAsset,asyncTokenLookup:!0,value:z.sellAmount});if(!L)throw new x.SwapKitError("core_swap_asset_not_recognized");if(!v({address:z.destinationAddress,chain:x.AssetValue.from({asset:z.buyAsset}).chain}))throw new x.SwapKitError("core_transaction_invalid_recipient_address");let{address:$}=await Z(L.chain);return k({assetValue:L,expiration:Number(J),feeOptionKey:q,memo:H,recipient:$,router:Q})}return{addLiquidity:d,addLiquidityPart:p,approveAssetValue:A,claimTcy:u,createLiquidity:h,deposit:k,depositToPool:_,getInboundDataByChain:Z,isAssetValueApproved:g,nodeAction:V,registerName:m,registerPreferredAsset:c,stakeTcyAction:r,swap:o,withdraw:n}}}
2
2
 
3
- //# debugId=BD59CFE08F31CF9064756E2164756E21
3
+ //# debugId=556ADFA9311BD53664756E2164756E21
4
4
  //# sourceMappingURL=index.cjs.map
@@ -2,10 +2,10 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/thorchain/plugin.ts", "../src/thorchain/shared.ts"],
4
4
  "sourcesContent": [
5
- "import {\n ApproveMode,\n type ApproveReturnType,\n AssetValue,\n BaseDecimal,\n Chain,\n type CryptoChain,\n type ErrorKeys,\n type EVMChain,\n EVMChains,\n FeeOption,\n getMemoForDeposit,\n getMemoForLeaveAndBond,\n getMemoForNamePreferredAssetRegister,\n getMemoForNameRegister,\n getMemoForTcyClaim,\n getMemoForTcyStake,\n getMemoForUnbond,\n getMemoForWithdraw,\n getMinAmountByChain,\n MemoType,\n ProviderName,\n SwapKitError,\n type SwapParams,\n wrapWithThrow,\n} from \"@swapkit/helpers\";\nimport {\n type InboundAddressesItem,\n type QuoteResponseRoute,\n SwapKitApi,\n type THORNodeType,\n} from \"@swapkit/helpers/api\";\nimport {\n MayaArbitrumVaultAbi,\n MayaEthereumVaultAbi,\n TCAvalancheDepositABI,\n TCBaseDepositABI,\n TCBscDepositABI,\n TCEthereumVaultAbi,\n} from \"@swapkit/helpers/contracts\";\nimport type { SwapKitPluginParams } from \"../types\";\nimport { createPlugin } from \"../utils\";\nimport { prepareTxParams, validateAddressType } from \"./shared\";\nimport type {\n AddLiquidityParams,\n AddLiquidityPartParams,\n CoreTxParams,\n CreateLiquidityParams,\n NodeActionParams,\n RegisterThornameParams,\n WithdrawParams,\n} from \"./types\";\n\nconst gasFeeMultiplier: Record<FeeOption, number> = {\n [FeeOption.Average]: 1.2,\n [FeeOption.Fast]: 1.5,\n [FeeOption.Fastest]: 2,\n};\n\nconst TCSpecificAbi = {\n [Chain.Avalanche]: TCAvalancheDepositABI,\n [Chain.Base]: TCBaseDepositABI,\n [Chain.BinanceSmartChain]: TCBscDepositABI,\n [Chain.Ethereum]: TCEthereumVaultAbi,\n};\n\nconst MayaSpecificAbi = { [Chain.Arbitrum]: MayaArbitrumVaultAbi, [Chain.Ethereum]: MayaEthereumVaultAbi };\n\nexport const ThorchainPlugin = createPlugin({\n methods: createTCBasedPlugin(Chain.THORChain),\n name: \"thorchain\",\n properties: { supportedSwapkitProviders: [ProviderName.THORCHAIN, ProviderName.THORCHAIN_STREAMING] },\n});\n\nexport const MayachainPlugin = createPlugin({\n methods: createTCBasedPlugin(Chain.Maya),\n name: \"mayachain\",\n properties: { supportedSwapkitProviders: [ProviderName.MAYACHAIN, ProviderName.MAYACHAIN_STREAMING] },\n});\n\nfunction getInboundDataFunction(type?: THORNodeType) {\n return async function getInboundDataByChain<T extends Chain>(chain: T) {\n if ((type === \"thorchain\" && chain === Chain.THORChain) || (type === \"mayachain\" && chain === Chain.Maya)) {\n return {\n address: \"\",\n chain,\n dust_threshold: \"0\",\n gas_rate: \"0\",\n halted: false,\n router: \"\",\n } as InboundAddressesItem;\n }\n\n const inboundData = await SwapKitApi.thornode.getInboundAddresses(type);\n const chainAddressData = inboundData.find((item) => item.chain === chain);\n\n if (!chainAddressData) throw new SwapKitError(\"core_inbound_data_not_found\");\n if (chainAddressData?.halted) throw new SwapKitError(\"core_chain_halted\");\n\n return chainAddressData;\n };\n}\n\ntype PluginChain = Chain.Maya | Chain.THORChain;\n\nfunction createTCBasedPlugin<T extends PluginChain>(pluginChain: T) {\n return function plugin({ getWallet }: SwapKitPluginParams) {\n const pluginType = pluginChain === Chain.Maya ? \"mayachain\" : \"thorchain\";\n const getInboundDataByChain = getInboundDataFunction(pluginType);\n\n async function approve<T extends ApproveMode>({\n assetValue,\n type = \"checkOnly\" as T,\n }: {\n type: T;\n assetValue: AssetValue;\n }) {\n const router = (await getInboundDataByChain(assetValue.chain)).router as string;\n\n const chain = assetValue.chain as EVMChain;\n\n const isEVMChain = EVMChains.includes(chain as EVMChain);\n const isNativeEVM = isEVMChain && assetValue.isGasAsset;\n\n if (isNativeEVM || !isEVMChain || assetValue.isSynthetic) {\n return Promise.resolve(type === \"checkOnly\" ? true : \"approved\") as ApproveReturnType<T>;\n }\n\n const wallet = getWallet(chain);\n\n if (!wallet) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n\n const walletAction = type === \"checkOnly\" ? wallet.isApproved : wallet.approve;\n\n if (!(assetValue.address && wallet.address)) {\n throw new SwapKitError(\"core_approve_asset_address_or_from_not_found\");\n }\n\n return walletAction({\n amount: assetValue.getBaseValue(\"bigint\"),\n assetAddress: assetValue.address,\n from: wallet.address,\n spenderAddress: router,\n });\n }\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: TODO\n async function deposit({ assetValue, recipient, router, ...rest }: CoreTxParams & { router?: string }) {\n const abis = pluginType === \"thorchain\" ? TCSpecificAbi : MayaSpecificAbi;\n const { chain, symbol, ticker } = assetValue;\n\n const wallet = getWallet(chain as CryptoChain);\n if (!wallet) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n const { address } = wallet;\n const isAddressValidated = validateAddressType({ address, chain });\n if (!isAddressValidated) {\n throw new SwapKitError(\"core_transaction_invalid_sender_address\");\n }\n\n const params = prepareTxParams({ assetValue, from: address, recipient, router, ...rest });\n\n try {\n const abi = abis?.[chain as keyof typeof abis];\n\n if (!abi) {\n const wallet = getWallet(chain as PluginChain);\n const shouldDeposit = pluginChain === chain && recipient === \"\";\n // @Towan: Is that the same action? :)\n return shouldDeposit ? wallet.deposit(params) : wallet.transfer(params);\n }\n\n const { getChecksumAddressFromAsset } = await import(\"@swapkit/toolboxes/evm\");\n const wallet = getWallet(chain as EVMChain);\n\n return wallet.call<string>({\n abi,\n contractAddress: router || ((await getInboundDataByChain(chain)).router as string),\n funcName: \"depositWithExpiry\",\n funcParams: [\n recipient,\n getChecksumAddressFromAsset({ chain, symbol, ticker }, chain as EVMChain),\n assetValue.getBaseValue(\"string\"),\n params.memo,\n rest.expiration || Number.parseInt(`${(Date.now() + 15 * 60 * 1000) / 1000}`, 10),\n ],\n txOverrides: {\n from: params.from,\n value: assetValue.isGasAsset ? assetValue.getBaseValue(\"bigint\") : undefined,\n },\n });\n } catch (error) {\n const errorMessage =\n // @ts-expect-error Fine to use error as string\n typeof error === \"string\" ? error.toLowerCase() : error?.message.toLowerCase();\n const isInsufficientFunds = errorMessage?.includes(\"insufficient funds\");\n const isGas = errorMessage?.includes(\"gas\");\n const isServer = errorMessage?.includes(\"server\");\n const isUserRejected = errorMessage?.includes(\"user rejected\");\n const errorKey: ErrorKeys = isInsufficientFunds\n ? \"core_transaction_deposit_insufficient_funds_error\"\n : isGas\n ? \"core_transaction_deposit_gas_error\"\n : isServer\n ? \"core_transaction_deposit_server_error\"\n : isUserRejected\n ? \"core_transaction_user_rejected\"\n : \"core_transaction_deposit_error\";\n\n throw new SwapKitError(errorKey, error);\n }\n }\n\n async function depositToProtocol({ memo, assetValue }: { assetValue: AssetValue; memo: string }) {\n const mimir = await SwapKitApi.thornode.getMimirInfo(pluginType);\n\n // check if trading is halted or not\n if (mimir.HALTCHAINGLOBAL >= 1 || mimir.HALTTHORCHAIN >= 1) {\n throw new SwapKitError(\"thorchain_chain_halted\");\n }\n\n return deposit({ assetValue, memo, recipient: \"\" });\n }\n\n async function depositToPool({\n assetValue,\n memo,\n feeOptionKey = FeeOption.Fast,\n }: {\n assetValue: AssetValue;\n memo: string;\n feeOptionKey?: FeeOption;\n }) {\n const { gas_rate = \"0\", router, address: poolAddress } = await getInboundDataByChain(assetValue.chain);\n\n return deposit({\n assetValue,\n feeRate: Number.parseInt(gas_rate, 10) * gasFeeMultiplier[feeOptionKey],\n memo,\n recipient: poolAddress,\n router,\n });\n }\n\n function approveAssetValue({ assetValue }: { assetValue: AssetValue }) {\n return approve({ assetValue, type: ApproveMode.Approve });\n }\n\n function isAssetValueApproved({ assetValue }: { assetValue: AssetValue }) {\n return approve({ assetValue, type: ApproveMode.CheckOnly });\n }\n\n function registerName({ assetValue, ...params }: RegisterThornameParams) {\n return depositToProtocol({ assetValue, memo: getMemoForNameRegister(params) });\n }\n\n function registerPreferredAsset({\n assetValue,\n payoutAddress,\n name,\n ownerAddress,\n }: {\n assetValue: AssetValue;\n payoutAddress?: string;\n name: string;\n ownerAddress: string;\n }) {\n const payout = payoutAddress || getWallet(assetValue.chain as CryptoChain)?.address;\n\n if (!payout) {\n throw new SwapKitError(\"thorchain_preferred_asset_payout_required\");\n }\n\n return depositToProtocol({\n assetValue: AssetValue.from({ chain: pluginChain }),\n memo: getMemoForNamePreferredAssetRegister({\n asset: assetValue.toString(),\n chain: assetValue.chain,\n name,\n owner: ownerAddress,\n payout,\n }),\n });\n }\n\n function nodeAction({ type, assetValue, address }: NodeActionParams) {\n const memo =\n type === MemoType.UNBOND\n ? getMemoForUnbond({ address, unbondAmount: assetValue.getBaseValue(\"number\") })\n : getMemoForLeaveAndBond({ address, type });\n\n const assetToTransfer = type === MemoType.BOND ? assetValue : getMinAmountByChain(pluginChain);\n return depositToProtocol({ assetValue: assetToTransfer, memo });\n }\n\n async function createLiquidity({ baseAssetValue, assetValue }: CreateLiquidityParams) {\n if (baseAssetValue.lte(0) || assetValue.lte(0)) {\n throw new SwapKitError(\"core_transaction_create_liquidity_invalid_params\");\n }\n\n const assetAddress = getWallet(assetValue.chain as CryptoChain).address;\n const baseAssetAddress = getWallet(pluginChain).address;\n\n const baseAssetTx = await wrapWithThrow(() => {\n return depositToPool({\n assetValue: baseAssetValue,\n memo: getMemoForDeposit({ ...assetValue, address: assetAddress }),\n });\n }, \"core_transaction_create_liquidity_base_error\");\n\n const assetTx = await wrapWithThrow(() => {\n return depositToPool({ assetValue, memo: getMemoForDeposit({ ...assetValue, address: baseAssetAddress }) });\n }, \"core_transaction_create_liquidity_asset_error\");\n\n return { assetTx, baseAssetTx };\n }\n\n function addLiquidityPart({ assetValue, poolAddress, address, symmetric }: AddLiquidityPartParams) {\n if (symmetric && !address) {\n throw new SwapKitError(\"core_transaction_add_liquidity_invalid_params\");\n }\n const memo = getMemoForDeposit({\n address: symmetric ? address : \"\",\n chain: poolAddress.split(\".\")[0] as Chain,\n symbol: poolAddress.split(\".\")[1] as string,\n });\n\n return depositToPool({ assetValue, memo });\n }\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: TODO\n async function addLiquidity({\n baseAssetValue,\n assetValue,\n baseAssetAddr,\n assetAddr,\n isPendingSymmAsset,\n mode = \"sym\",\n }: AddLiquidityParams) {\n const { chain, symbol } = assetValue;\n const isSym = mode === \"sym\";\n const baseTransfer = baseAssetValue?.gt(0) && (isSym || mode === \"baseAsset\");\n const assetTransfer = assetValue?.gt(0) && (isSym || mode === \"asset\");\n const includeBaseAddress = isPendingSymmAsset || baseTransfer;\n const baseAssetWalletAddress = getWallet(pluginChain).address;\n\n const baseAddress = includeBaseAddress ? baseAssetAddr || baseAssetWalletAddress : \"\";\n const assetAddress = isSym || mode === \"asset\" ? assetAddr || getWallet(chain as CryptoChain).address : \"\";\n\n if (!(baseTransfer || assetTransfer)) {\n throw new SwapKitError(\"core_transaction_add_liquidity_invalid_params\");\n }\n if (includeBaseAddress && !baseAddress) {\n throw new SwapKitError(\"core_transaction_add_liquidity_base_address\");\n }\n\n const baseAssetTx =\n baseTransfer && baseAssetValue\n ? await wrapWithThrow(() => {\n return depositToPool({\n assetValue: baseAssetValue,\n memo: getMemoForDeposit({ address: assetAddress, chain, symbol }),\n });\n }, \"core_transaction_add_liquidity_base_error\")\n : undefined;\n\n const assetTx =\n assetTransfer && assetValue\n ? await wrapWithThrow(() => {\n return depositToPool({ assetValue, memo: getMemoForDeposit({ address: baseAddress, chain, symbol }) });\n }, \"core_transaction_add_liquidity_asset_error\")\n : undefined;\n\n return { assetTx, baseAssetTx };\n }\n\n function withdraw({ memo, assetValue, percent, from, to }: WithdrawParams) {\n const targetAsset =\n to === \"baseAsset\" && from !== \"baseAsset\"\n ? AssetValue.from({ chain: pluginChain })\n : (from === \"sym\" && to === \"sym\") || from === \"baseAsset\" || from === \"asset\"\n ? undefined\n : assetValue;\n\n const value = getMinAmountByChain(from === \"asset\" ? assetValue.chain : pluginChain);\n const memoString =\n memo ||\n getMemoForWithdraw({\n basisPoints: Math.min(10000, Math.round(percent * 100)),\n chain: assetValue.chain,\n symbol: assetValue.symbol,\n targetAsset: targetAsset?.toString(),\n ticker: assetValue.ticker,\n });\n\n return depositToPool({ assetValue: value, memo: memoString });\n }\n\n async function claimTcy({ chain, thorAddress }: { chain: Chain; thorAddress: string }) {\n const inboundData = await getInboundDataByChain(chain);\n const dust_threshold = inboundData.dust_threshold;\n\n return deposit({\n assetValue: AssetValue.from({\n chain,\n fromBaseDecimal: Math.min(BaseDecimal[chain], BaseDecimal[Chain.THORChain]),\n value: chain !== Chain.THORChain ? dust_threshold : 0,\n }),\n memo: getMemoForTcyClaim(MemoType.CLAIM_TCY, { address: thorAddress }),\n recipient: inboundData.address,\n router: inboundData.router,\n });\n }\n\n function stakeTcyAction(\n params: { type: \"unstake\"; unstakeBps: number } | { type: \"stake\"; assetValue: AssetValue },\n ) {\n if (params.type === \"stake\") {\n if (params.assetValue.toString() !== \"THOR.TCY\") {\n throw new SwapKitError(\"thorchain_asset_is_not_tcy\");\n }\n\n return deposit({\n assetValue: params.assetValue,\n memo: getMemoForTcyStake(MemoType.STAKE_TCY, {}),\n recipient: \"\",\n });\n }\n\n return deposit({\n assetValue: AssetValue.from({ chain: Chain.THORChain }),\n memo: getMemoForTcyStake(MemoType.UNSTAKE_TCY, { unstakeBps: params.unstakeBps }),\n recipient: \"\",\n });\n }\n\n async function swap({ feeOptionKey, route }: SwapParams<typeof pluginType, QuoteResponseRoute>) {\n const { memo, expiration, targetAddress } = route;\n\n const assetValue = await AssetValue.from({\n asset: route.sellAsset,\n asyncTokenLookup: true,\n value: route.sellAmount,\n });\n\n if (!assetValue) {\n throw new SwapKitError(\"core_swap_asset_not_recognized\");\n }\n\n const isRecipientValidated = validateAddressType({\n address: route.destinationAddress,\n chain: AssetValue.from({ asset: route.buyAsset }).chain,\n });\n\n if (!isRecipientValidated) {\n throw new SwapKitError(\"core_transaction_invalid_recipient_address\");\n }\n\n const { address: recipient } = await getInboundDataByChain(assetValue.chain);\n\n return deposit({\n assetValue,\n expiration: Number(expiration),\n feeOptionKey,\n memo,\n recipient,\n router: targetAddress,\n });\n }\n\n return {\n addLiquidity,\n addLiquidityPart,\n approveAssetValue,\n claimTcy,\n createLiquidity,\n deposit,\n depositToPool,\n getInboundDataByChain,\n isAssetValueApproved,\n nodeAction,\n registerName,\n registerPreferredAsset,\n stakeTcyAction,\n swap,\n withdraw,\n };\n };\n}\n",
5
+ "import {\n ApproveMode,\n type ApproveReturnType,\n AssetValue,\n Chain,\n type ErrorKeys,\n type EVMChain,\n EVMChains,\n FeeOption,\n getChainConfig,\n getMemoForDeposit,\n getMemoForLeaveAndBond,\n getMemoForNamePreferredAssetRegister,\n getMemoForNameRegister,\n getMemoForTcyClaim,\n getMemoForTcyStake,\n getMemoForUnbond,\n getMemoForWithdraw,\n getMinAmountByChain,\n MemoType,\n ProviderName,\n SwapKitError,\n type SwapParams,\n type TCLikeChain,\n wrapWithThrow,\n} from \"@swapkit/helpers\";\nimport {\n type InboundAddressesItem,\n type QuoteResponseRoute,\n SwapKitApi,\n type THORNodeType,\n} from \"@swapkit/helpers/api\";\nimport {\n MayaArbitrumVaultAbi,\n MayaEthereumVaultAbi,\n TCAvalancheDepositABI,\n TCBaseDepositABI,\n TCBscDepositABI,\n TCEthereumVaultAbi,\n} from \"@swapkit/helpers/contracts\";\nimport type { SwapKitPluginParams } from \"../types\";\nimport { createPlugin } from \"../utils\";\nimport { prepareTxParams, validateAddressType } from \"./shared\";\nimport type {\n AddLiquidityParams,\n AddLiquidityPartParams,\n CoreTxParams,\n CreateLiquidityParams,\n NodeActionParams,\n RegisterThornameParams,\n WithdrawParams,\n} from \"./types\";\n\nconst gasFeeMultiplier: Record<FeeOption, number> = {\n [FeeOption.Average]: 1.2,\n [FeeOption.Fast]: 1.5,\n [FeeOption.Fastest]: 2,\n};\n\nconst TCSpecificAbi = {\n [Chain.Avalanche]: TCAvalancheDepositABI,\n [Chain.Base]: TCBaseDepositABI,\n [Chain.BinanceSmartChain]: TCBscDepositABI,\n [Chain.Ethereum]: TCEthereumVaultAbi,\n};\n\nconst MayaSpecificAbi = { [Chain.Arbitrum]: MayaArbitrumVaultAbi, [Chain.Ethereum]: MayaEthereumVaultAbi };\n\nexport const ThorchainPlugin = createPlugin({\n methods: createTCBasedPlugin(Chain.THORChain),\n name: \"thorchain\",\n properties: { supportedSwapkitProviders: [ProviderName.THORCHAIN, ProviderName.THORCHAIN_STREAMING] },\n});\n\nexport const MayachainPlugin = createPlugin({\n methods: createTCBasedPlugin(Chain.Maya),\n name: \"mayachain\",\n properties: { supportedSwapkitProviders: [ProviderName.MAYACHAIN, ProviderName.MAYACHAIN_STREAMING] },\n});\n\nfunction getInboundDataFunction(type?: THORNodeType) {\n return async function getInboundDataByChain<T extends Chain>(chain: T) {\n if ((type === \"thorchain\" && chain === Chain.THORChain) || (type === \"mayachain\" && chain === Chain.Maya)) {\n return {\n address: \"\",\n chain,\n dust_threshold: \"0\",\n gas_rate: \"0\",\n halted: false,\n router: \"\",\n } as InboundAddressesItem;\n }\n\n const inboundData = await SwapKitApi.thornode.getInboundAddresses(type);\n const chainAddressData = inboundData.find((item) => item.chain === chain);\n\n if (!chainAddressData) throw new SwapKitError(\"core_inbound_data_not_found\");\n if (chainAddressData?.halted) throw new SwapKitError(\"core_chain_halted\");\n\n return chainAddressData;\n };\n}\n\nfunction createTCBasedPlugin<T extends TCLikeChain>(pluginChain: T) {\n return function plugin({ getWallet }: SwapKitPluginParams) {\n const pluginType = pluginChain === Chain.Maya ? \"mayachain\" : \"thorchain\";\n const getInboundDataByChain = getInboundDataFunction(pluginType);\n\n async function approve<T extends ApproveMode>({\n assetValue,\n type = \"checkOnly\" as T,\n }: {\n type: T;\n assetValue: AssetValue;\n }) {\n const router = (await getInboundDataByChain(assetValue.chain)).router as string;\n\n const chain = assetValue.chain as EVMChain;\n\n const isEVMChain = EVMChains.includes(chain as EVMChain);\n const isNativeEVM = isEVMChain && assetValue.isGasAsset;\n\n if (isNativeEVM || !isEVMChain || assetValue.isSynthetic) {\n return Promise.resolve(type === \"checkOnly\" ? true : \"approved\") as ApproveReturnType<T>;\n }\n\n const wallet = getWallet(chain);\n\n if (!wallet) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n\n const walletAction = type === \"checkOnly\" ? wallet.isApproved : wallet.approve;\n\n if (!(assetValue.address && wallet.address)) {\n throw new SwapKitError(\"core_approve_asset_address_or_from_not_found\");\n }\n\n return walletAction({\n amount: assetValue.getBaseValue(\"bigint\"),\n assetAddress: assetValue.address,\n from: wallet.address,\n spenderAddress: router,\n });\n }\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: TODO\n async function deposit({ assetValue, recipient, router, ...rest }: CoreTxParams & { router?: string }) {\n const abis = pluginType === \"thorchain\" ? TCSpecificAbi : MayaSpecificAbi;\n const { chain, symbol, ticker } = assetValue;\n\n const wallet = getWallet(chain);\n if (!wallet) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n const { address } = wallet;\n const isAddressValidated = validateAddressType({ address, chain });\n if (!isAddressValidated) {\n throw new SwapKitError(\"core_transaction_invalid_sender_address\");\n }\n\n const params = prepareTxParams({ assetValue, from: address, recipient, router, ...rest });\n\n try {\n const abi = abis?.[chain as keyof typeof abis];\n\n if (!abi) {\n const wallet = getWallet(chain as TCLikeChain);\n const shouldDeposit = pluginChain === chain && recipient === \"\";\n // @Towan: Is that the same action? :)\n return shouldDeposit ? wallet.deposit(params) : wallet.transfer(params);\n }\n\n const { getChecksumAddressFromAsset } = await import(\"@swapkit/toolboxes/evm\");\n const wallet = getWallet(chain as EVMChain);\n\n return wallet.call<string>({\n abi,\n contractAddress: router || ((await getInboundDataByChain(chain)).router as string),\n funcName: \"depositWithExpiry\",\n funcParams: [\n recipient,\n getChecksumAddressFromAsset({ chain, symbol, ticker }, chain as EVMChain),\n assetValue.getBaseValue(\"string\"),\n params.memo,\n rest.expiration || Number.parseInt(`${(Date.now() + 15 * 60 * 1000) / 1000}`, 10),\n ],\n txOverrides: {\n from: params.from,\n value: assetValue.isGasAsset ? assetValue.getBaseValue(\"bigint\") : undefined,\n },\n });\n } catch (error) {\n const errorMessage =\n // @ts-expect-error Fine to use error as string\n typeof error === \"string\" ? error.toLowerCase() : error?.message.toLowerCase();\n const isInsufficientFunds = errorMessage?.includes(\"insufficient funds\");\n const isGas = errorMessage?.includes(\"gas\");\n const isServer = errorMessage?.includes(\"server\");\n const isUserRejected = errorMessage?.includes(\"user rejected\");\n const errorKey: ErrorKeys = isInsufficientFunds\n ? \"core_transaction_deposit_insufficient_funds_error\"\n : isGas\n ? \"core_transaction_deposit_gas_error\"\n : isServer\n ? \"core_transaction_deposit_server_error\"\n : isUserRejected\n ? \"core_transaction_user_rejected\"\n : \"core_transaction_deposit_error\";\n\n throw new SwapKitError(errorKey, error);\n }\n }\n\n async function depositToProtocol({ memo, assetValue }: { assetValue: AssetValue; memo: string }) {\n const mimir = await SwapKitApi.thornode.getMimirInfo(pluginType);\n\n // check if trading is halted or not\n if (mimir.HALTCHAINGLOBAL >= 1 || mimir.HALTTHORCHAIN >= 1) {\n throw new SwapKitError(\"thorchain_chain_halted\");\n }\n\n return deposit({ assetValue, memo, recipient: \"\" });\n }\n\n async function depositToPool({\n assetValue,\n memo,\n feeOptionKey = FeeOption.Fast,\n }: {\n assetValue: AssetValue;\n memo: string;\n feeOptionKey?: FeeOption;\n }) {\n const { gas_rate = \"0\", router, address: poolAddress } = await getInboundDataByChain(assetValue.chain);\n\n return deposit({\n assetValue,\n feeRate: Number.parseInt(gas_rate, 10) * gasFeeMultiplier[feeOptionKey],\n memo,\n recipient: poolAddress,\n router,\n });\n }\n\n function approveAssetValue({ assetValue }: { assetValue: AssetValue }) {\n return approve({ assetValue, type: ApproveMode.Approve });\n }\n\n function isAssetValueApproved({ assetValue }: { assetValue: AssetValue }) {\n return approve({ assetValue, type: ApproveMode.CheckOnly });\n }\n\n function registerName({ assetValue, ...params }: RegisterThornameParams) {\n return depositToProtocol({ assetValue, memo: getMemoForNameRegister(params) });\n }\n\n function registerPreferredAsset({\n assetValue,\n payoutAddress,\n name,\n ownerAddress,\n }: {\n assetValue: AssetValue;\n payoutAddress?: string;\n name: string;\n ownerAddress: string;\n }) {\n const payout = payoutAddress || getWallet(assetValue.chain)?.address;\n\n if (!payout) {\n throw new SwapKitError(\"thorchain_preferred_asset_payout_required\");\n }\n\n return depositToProtocol({\n assetValue: AssetValue.from({ chain: pluginChain }),\n memo: getMemoForNamePreferredAssetRegister({\n asset: assetValue.toString(),\n chain: assetValue.chain,\n name,\n owner: ownerAddress,\n payout,\n }),\n });\n }\n\n function nodeAction({ type, assetValue, address }: NodeActionParams) {\n const memo =\n type === MemoType.UNBOND\n ? getMemoForUnbond({ address, unbondAmount: assetValue.getBaseValue(\"number\") })\n : getMemoForLeaveAndBond({ address, type });\n\n const assetToTransfer = type === MemoType.BOND ? assetValue : getMinAmountByChain(pluginChain);\n return depositToProtocol({ assetValue: assetToTransfer, memo });\n }\n\n async function createLiquidity({ baseAssetValue, assetValue }: CreateLiquidityParams) {\n if (baseAssetValue.lte(0) || assetValue.lte(0)) {\n throw new SwapKitError(\"core_transaction_create_liquidity_invalid_params\");\n }\n\n const assetAddress = getWallet(assetValue.chain).address;\n const baseAssetAddress = getWallet(pluginChain).address;\n\n const baseAssetTx = await wrapWithThrow(() => {\n return depositToPool({\n assetValue: baseAssetValue,\n memo: getMemoForDeposit({ ...assetValue, address: assetAddress }),\n });\n }, \"core_transaction_create_liquidity_base_error\");\n\n const assetTx = await wrapWithThrow(() => {\n return depositToPool({ assetValue, memo: getMemoForDeposit({ ...assetValue, address: baseAssetAddress }) });\n }, \"core_transaction_create_liquidity_asset_error\");\n\n return { assetTx, baseAssetTx };\n }\n\n function addLiquidityPart({ assetValue, poolAddress, address, symmetric }: AddLiquidityPartParams) {\n if (symmetric && !address) {\n throw new SwapKitError(\"core_transaction_add_liquidity_invalid_params\");\n }\n const memo = getMemoForDeposit({\n address: symmetric ? address : \"\",\n chain: poolAddress.split(\".\")[0] as Chain,\n symbol: poolAddress.split(\".\")[1] as string,\n });\n\n return depositToPool({ assetValue, memo });\n }\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: TODO\n async function addLiquidity({\n baseAssetValue,\n assetValue,\n baseAssetAddr,\n assetAddr,\n isPendingSymmAsset,\n mode = \"sym\",\n }: AddLiquidityParams) {\n const { chain, symbol } = assetValue;\n const isSym = mode === \"sym\";\n const baseTransfer = baseAssetValue?.gt(0) && (isSym || mode === \"baseAsset\");\n const assetTransfer = assetValue?.gt(0) && (isSym || mode === \"asset\");\n const includeBaseAddress = isPendingSymmAsset || baseTransfer;\n const baseAssetWalletAddress = getWallet(pluginChain).address;\n\n const baseAddress = includeBaseAddress ? baseAssetAddr || baseAssetWalletAddress : \"\";\n const assetAddress = isSym || mode === \"asset\" ? assetAddr || getWallet(chain).address : \"\";\n\n if (!(baseTransfer || assetTransfer)) {\n throw new SwapKitError(\"core_transaction_add_liquidity_invalid_params\");\n }\n if (includeBaseAddress && !baseAddress) {\n throw new SwapKitError(\"core_transaction_add_liquidity_base_address\");\n }\n\n const baseAssetTx =\n baseTransfer && baseAssetValue\n ? await wrapWithThrow(() => {\n return depositToPool({\n assetValue: baseAssetValue,\n memo: getMemoForDeposit({ address: assetAddress, chain, symbol }),\n });\n }, \"core_transaction_add_liquidity_base_error\")\n : undefined;\n\n const assetTx =\n assetTransfer && assetValue\n ? await wrapWithThrow(() => {\n return depositToPool({ assetValue, memo: getMemoForDeposit({ address: baseAddress, chain, symbol }) });\n }, \"core_transaction_add_liquidity_asset_error\")\n : undefined;\n\n return { assetTx, baseAssetTx };\n }\n\n function withdraw({ memo, assetValue, percent, from, to }: WithdrawParams) {\n const targetAsset =\n to === \"baseAsset\" && from !== \"baseAsset\"\n ? AssetValue.from({ chain: pluginChain })\n : (from === \"sym\" && to === \"sym\") || from === \"baseAsset\" || from === \"asset\"\n ? undefined\n : assetValue;\n\n const value = getMinAmountByChain(from === \"asset\" ? assetValue.chain : pluginChain);\n const memoString =\n memo ||\n getMemoForWithdraw({\n basisPoints: Math.min(10000, Math.round(percent * 100)),\n chain: assetValue.chain,\n symbol: assetValue.symbol,\n targetAsset: targetAsset?.toString(),\n ticker: assetValue.ticker,\n });\n\n return depositToPool({ assetValue: value, memo: memoString });\n }\n\n async function claimTcy({ chain, thorAddress }: { chain: Chain; thorAddress: string }) {\n const inboundData = await getInboundDataByChain(chain);\n const dust_threshold = inboundData.dust_threshold;\n const { baseDecimal: chainDecimal } = getChainConfig(chain);\n const { baseDecimal: tcDecimal } = getChainConfig(Chain.THORChain);\n\n return deposit({\n assetValue: AssetValue.from({\n chain,\n fromBaseDecimal: Math.min(chainDecimal, tcDecimal),\n value: chain !== Chain.THORChain ? dust_threshold : 0,\n }),\n memo: getMemoForTcyClaim(MemoType.CLAIM_TCY, { address: thorAddress }),\n recipient: inboundData.address,\n router: inboundData.router,\n });\n }\n\n function stakeTcyAction(\n params: { type: \"unstake\"; unstakeBps: number } | { type: \"stake\"; assetValue: AssetValue },\n ) {\n if (params.type === \"stake\") {\n if (params.assetValue.toString() !== \"THOR.TCY\") {\n throw new SwapKitError(\"thorchain_asset_is_not_tcy\");\n }\n\n return deposit({\n assetValue: params.assetValue,\n memo: getMemoForTcyStake(MemoType.STAKE_TCY, {}),\n recipient: \"\",\n });\n }\n\n return deposit({\n assetValue: AssetValue.from({ chain: Chain.THORChain }),\n memo: getMemoForTcyStake(MemoType.UNSTAKE_TCY, { unstakeBps: params.unstakeBps }),\n recipient: \"\",\n });\n }\n\n async function swap({ feeOptionKey, route }: SwapParams<typeof pluginType, QuoteResponseRoute>) {\n const { memo, expiration, targetAddress } = route;\n\n const assetValue = await AssetValue.from({\n asset: route.sellAsset,\n asyncTokenLookup: true,\n value: route.sellAmount,\n });\n\n if (!assetValue) {\n throw new SwapKitError(\"core_swap_asset_not_recognized\");\n }\n\n const isRecipientValidated = validateAddressType({\n address: route.destinationAddress,\n chain: AssetValue.from({ asset: route.buyAsset }).chain,\n });\n\n if (!isRecipientValidated) {\n throw new SwapKitError(\"core_transaction_invalid_recipient_address\");\n }\n\n const { address: recipient } = await getInboundDataByChain(assetValue.chain);\n\n return deposit({\n assetValue,\n expiration: Number(expiration),\n feeOptionKey,\n memo,\n recipient,\n router: targetAddress,\n });\n }\n\n return {\n addLiquidity,\n addLiquidityPart,\n approveAssetValue,\n claimTcy,\n createLiquidity,\n deposit,\n depositToPool,\n getInboundDataByChain,\n isAssetValueApproved,\n nodeAction,\n registerName,\n registerPreferredAsset,\n stakeTcyAction,\n swap,\n withdraw,\n };\n };\n}\n",
6
6
  "import { Chain } from \"@swapkit/helpers\";\nimport type { CoreTxParams } from \"./types\";\n\nexport function validateAddressType({ chain, address }: { chain?: Chain; address?: string }) {\n if (!address) return false;\n\n return chain === Chain.Bitcoin ? !address.startsWith(\"bc1p\") : true;\n}\n\nexport function prepareTxParams({\n assetValue,\n from,\n memo = \"\",\n ...restTxParams\n}: CoreTxParams & { from: string; router?: string }) {\n return { ...restTxParams, assetValue, from, memo };\n}\n"
7
7
  ],
8
- "mappings": "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",
9
- "debugId": "BD59CFE08F31CF9064756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "556ADFA9311BD53664756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -1,4 +1,4 @@
1
- import{a as Hx,b as Jx,c as C}from"../chunk-a0djqfqa.js";import{ApproveMode as A,AssetValue as O,BaseDecimal as m,Chain as Y,EVMChains as Lx,FeeOption as M,getMemoForDeposit as F,getMemoForLeaveAndBond as Qx,getMemoForNamePreferredAssetRegister as Rx,getMemoForNameRegister as Ux,getMemoForTcyClaim as Xx,getMemoForTcyStake as c,getMemoForUnbond as Yx,getMemoForWithdraw as Zx,getMinAmountByChain as h,MemoType as E,ProviderName as T,SwapKitError as U,wrapWithThrow as S}from"@swapkit/helpers";import{SwapKitApi as V}from"@swapkit/helpers/api";import{MayaArbitrumVaultAbi as $x,MayaEthereumVaultAbi as jx,TCAvalancheDepositABI as Gx,TCBaseDepositABI as kx,TCBscDepositABI as _x,TCEthereumVaultAbi as Nx}from"@swapkit/helpers/contracts";import{Chain as zx}from"@swapkit/helpers";function W({chain:Q,address:P}){if(!P)return!1;return Q===zx.Bitcoin?!P.startsWith("bc1p"):!0}function g({assetValue:Q,from:P,memo:R="",...f}){return{...f,assetValue:Q,from:P,memo:R}}var Ox={[M.Average]:1.2,[M.Fast]:1.5,[M.Fastest]:2},Px={[Y.Avalanche]:Gx,[Y.Base]:kx,[Y.BinanceSmartChain]:_x,[Y.Ethereum]:Nx},fx={[Y.Arbitrum]:$x,[Y.Ethereum]:jx},Ix=C({methods:p(Y.THORChain),name:"thorchain",properties:{supportedSwapkitProviders:[T.THORCHAIN,T.THORCHAIN_STREAMING]}}),vx=C({methods:p(Y.Maya),name:"mayachain",properties:{supportedSwapkitProviders:[T.MAYACHAIN,T.MAYACHAIN_STREAMING]}});function Bx(Q){return async function(R){if(Q==="thorchain"&&R===Y.THORChain||Q==="mayachain"&&R===Y.Maya)return{address:"",chain:R,dust_threshold:"0",gas_rate:"0",halted:!1,router:""};let Z=(await V.thornode.getInboundAddresses(Q)).find((K)=>K.chain===R);if(!Z)throw new U("core_inbound_data_not_found");if(Z?.halted)throw new U("core_chain_halted");return Z}}function p(Q){return function({getWallet:R}){let f=Q===Y.Maya?"mayachain":"thorchain",Z=Bx(f);async function K({assetValue:x,type:q="checkOnly"}){let z=(await Z(x.chain)).router,H=x.chain,L=Lx.includes(H);if(L&&x.isGasAsset||!L||x.isSynthetic)return Promise.resolve(q==="checkOnly"?!0:"approved");let X=R(H);if(!X)throw new U("core_wallet_connection_not_found");let $=q==="checkOnly"?X.isApproved:X.approve;if(!(x.address&&X.address))throw new U("core_approve_asset_address_or_from_not_found");return $({amount:x.getBaseValue("bigint"),assetAddress:x.address,from:X.address,spenderAddress:z})}async function k({assetValue:x,recipient:q,router:z,...H}){let L=f==="thorchain"?Px:fx,{chain:J,symbol:X,ticker:$}=x,I=R(J);if(!I)throw new U("core_wallet_connection_not_found");let{address:v}=I;if(!W({address:v,chain:J}))throw new U("core_transaction_invalid_sender_address");let N=g({assetValue:x,from:v,recipient:q,router:z,...H});try{let j=L?.[J];if(!j){let B=R(J);return Q===J&&q===""?B.deposit(N):B.transfer(N)}let{getChecksumAddressFromAsset:G}=await import("@swapkit/toolboxes/evm");return R(J).call({abi:j,contractAddress:z||(await Z(J)).router,funcName:"depositWithExpiry",funcParams:[q,G({chain:J,symbol:X,ticker:$},J),x.getBaseValue("string"),N.memo,H.expiration||Number.parseInt(`${(Date.now()+900000)/1000}`,10)],txOverrides:{from:N.from,value:x.isGasAsset?x.getBaseValue("bigint"):void 0}})}catch(j){let G=typeof j==="string"?j.toLowerCase():j?.message.toLowerCase(),D=G?.includes("insufficient funds"),B=G?.includes("gas"),w=G?.includes("server"),qx=G?.includes("user rejected");throw new U(D?"core_transaction_deposit_insufficient_funds_error":B?"core_transaction_deposit_gas_error":w?"core_transaction_deposit_server_error":qx?"core_transaction_user_rejected":"core_transaction_deposit_error",j)}}async function b({memo:x,assetValue:q}){let z=await V.thornode.getMimirInfo(f);if(z.HALTCHAINGLOBAL>=1||z.HALTTHORCHAIN>=1)throw new U("thorchain_chain_halted");return k({assetValue:q,memo:x,recipient:""})}async function _({assetValue:x,memo:q,feeOptionKey:z=M.Fast}){let{gas_rate:H="0",router:L,address:J}=await Z(x.chain);return k({assetValue:x,feeRate:Number.parseInt(H,10)*Ox[z],memo:q,recipient:J,router:L})}function n({assetValue:x}){return K({assetValue:x,type:A.Approve})}function d({assetValue:x}){return K({assetValue:x,type:A.CheckOnly})}function u({assetValue:x,...q}){return b({assetValue:x,memo:Ux(q)})}function r({assetValue:x,payoutAddress:q,name:z,ownerAddress:H}){let L=q||R(x.chain)?.address;if(!L)throw new U("thorchain_preferred_asset_payout_required");return b({assetValue:O.from({chain:Q}),memo:Rx({asset:x.toString(),chain:x.chain,name:z,owner:H,payout:L})})}function o({type:x,assetValue:q,address:z}){let H=x===E.UNBOND?Yx({address:z,unbondAmount:q.getBaseValue("number")}):Qx({address:z,type:x}),L=x===E.BOND?q:h(Q);return b({assetValue:L,memo:H})}async function i({baseAssetValue:x,assetValue:q}){if(x.lte(0)||q.lte(0))throw new U("core_transaction_create_liquidity_invalid_params");let z=R(q.chain).address,H=R(Q).address,L=await S(()=>{return _({assetValue:x,memo:F({...q,address:z})})},"core_transaction_create_liquidity_base_error");return{assetTx:await S(()=>{return _({assetValue:q,memo:F({...q,address:H})})},"core_transaction_create_liquidity_asset_error"),baseAssetTx:L}}function l({assetValue:x,poolAddress:q,address:z,symmetric:H}){if(H&&!z)throw new U("core_transaction_add_liquidity_invalid_params");let L=F({address:H?z:"",chain:q.split(".")[0],symbol:q.split(".")[1]});return _({assetValue:x,memo:L})}async function t({baseAssetValue:x,assetValue:q,baseAssetAddr:z,assetAddr:H,isPendingSymmAsset:L,mode:J="sym"}){let{chain:X,symbol:$}=q,I=J==="sym",v=x?.gt(0)&&(I||J==="baseAsset"),y=q?.gt(0)&&(I||J==="asset"),N=L||v,j=R(Q).address,G=N?z||j:"",D=I||J==="asset"?H||R(X).address:"";if(!(v||y))throw new U("core_transaction_add_liquidity_invalid_params");if(N&&!G)throw new U("core_transaction_add_liquidity_base_address");let B=v&&x?await S(()=>{return _({assetValue:x,memo:F({address:D,chain:X,symbol:$})})},"core_transaction_add_liquidity_base_error"):void 0;return{assetTx:y&&q?await S(()=>{return _({assetValue:q,memo:F({address:G,chain:X,symbol:$})})},"core_transaction_add_liquidity_asset_error"):void 0,baseAssetTx:B}}function s({memo:x,assetValue:q,percent:z,from:H,to:L}){let J=L==="baseAsset"&&H!=="baseAsset"?O.from({chain:Q}):H==="sym"&&L==="sym"||H==="baseAsset"||H==="asset"?void 0:q,X=h(H==="asset"?q.chain:Q),$=x||Zx({basisPoints:Math.min(1e4,Math.round(z*100)),chain:q.chain,symbol:q.symbol,targetAsset:J?.toString(),ticker:q.ticker});return _({assetValue:X,memo:$})}async function a({chain:x,thorAddress:q}){let z=await Z(x),H=z.dust_threshold;return k({assetValue:O.from({chain:x,fromBaseDecimal:Math.min(m[x],m[Y.THORChain]),value:x!==Y.THORChain?H:0}),memo:Xx(E.CLAIM_TCY,{address:q}),recipient:z.address,router:z.router})}function e(x){if(x.type==="stake"){if(x.assetValue.toString()!=="THOR.TCY")throw new U("thorchain_asset_is_not_tcy");return k({assetValue:x.assetValue,memo:c(E.STAKE_TCY,{}),recipient:""})}return k({assetValue:O.from({chain:Y.THORChain}),memo:c(E.UNSTAKE_TCY,{unstakeBps:x.unstakeBps}),recipient:""})}async function xx({feeOptionKey:x,route:q}){let{memo:z,expiration:H,targetAddress:L}=q,J=await O.from({asset:q.sellAsset,asyncTokenLookup:!0,value:q.sellAmount});if(!J)throw new U("core_swap_asset_not_recognized");if(!W({address:q.destinationAddress,chain:O.from({asset:q.buyAsset}).chain}))throw new U("core_transaction_invalid_recipient_address");let{address:$}=await Z(J.chain);return k({assetValue:J,expiration:Number(H),feeOptionKey:x,memo:z,recipient:$,router:L})}return{addLiquidity:t,addLiquidityPart:l,approveAssetValue:n,claimTcy:a,createLiquidity:i,deposit:k,depositToPool:_,getInboundDataByChain:Z,isAssetValueApproved:d,nodeAction:o,registerName:u,registerPreferredAsset:r,stakeTcyAction:e,swap:xx,withdraw:s}}}export{W as validateAddressType,Ix as ThorchainPlugin,vx as MayachainPlugin};
1
+ import{a as Hx,b as Jx,c as C}from"../chunk-a0djqfqa.js";import{ApproveMode as g,AssetValue as O,Chain as Y,EVMChains as Lx,FeeOption as M,getChainConfig as m,getMemoForDeposit as F,getMemoForLeaveAndBond as Qx,getMemoForNamePreferredAssetRegister as Rx,getMemoForNameRegister as Ux,getMemoForTcyClaim as Xx,getMemoForTcyStake as c,getMemoForUnbond as Yx,getMemoForWithdraw as Zx,getMinAmountByChain as V,MemoType as E,ProviderName as T,SwapKitError as U,wrapWithThrow as S}from"@swapkit/helpers";import{SwapKitApi as h}from"@swapkit/helpers/api";import{MayaArbitrumVaultAbi as $x,MayaEthereumVaultAbi as jx,TCAvalancheDepositABI as Gx,TCBaseDepositABI as kx,TCBscDepositABI as _x,TCEthereumVaultAbi as Nx}from"@swapkit/helpers/contracts";import{Chain as zx}from"@swapkit/helpers";function W({chain:Q,address:P}){if(!P)return!1;return Q===zx.Bitcoin?!P.startsWith("bc1p"):!0}function A({assetValue:Q,from:P,memo:R="",...f}){return{...f,assetValue:Q,from:P,memo:R}}var Ox={[M.Average]:1.2,[M.Fast]:1.5,[M.Fastest]:2},Px={[Y.Avalanche]:Gx,[Y.Base]:kx,[Y.BinanceSmartChain]:_x,[Y.Ethereum]:Nx},fx={[Y.Arbitrum]:$x,[Y.Ethereum]:jx},Ix=C({methods:p(Y.THORChain),name:"thorchain",properties:{supportedSwapkitProviders:[T.THORCHAIN,T.THORCHAIN_STREAMING]}}),Bx=C({methods:p(Y.Maya),name:"mayachain",properties:{supportedSwapkitProviders:[T.MAYACHAIN,T.MAYACHAIN_STREAMING]}});function vx(Q){return async function(R){if(Q==="thorchain"&&R===Y.THORChain||Q==="mayachain"&&R===Y.Maya)return{address:"",chain:R,dust_threshold:"0",gas_rate:"0",halted:!1,router:""};let Z=(await h.thornode.getInboundAddresses(Q)).find((K)=>K.chain===R);if(!Z)throw new U("core_inbound_data_not_found");if(Z?.halted)throw new U("core_chain_halted");return Z}}function p(Q){return function({getWallet:R}){let f=Q===Y.Maya?"mayachain":"thorchain",Z=vx(f);async function K({assetValue:x,type:q="checkOnly"}){let z=(await Z(x.chain)).router,H=x.chain,L=Lx.includes(H);if(L&&x.isGasAsset||!L||x.isSynthetic)return Promise.resolve(q==="checkOnly"?!0:"approved");let X=R(H);if(!X)throw new U("core_wallet_connection_not_found");let $=q==="checkOnly"?X.isApproved:X.approve;if(!(x.address&&X.address))throw new U("core_approve_asset_address_or_from_not_found");return $({amount:x.getBaseValue("bigint"),assetAddress:x.address,from:X.address,spenderAddress:z})}async function k({assetValue:x,recipient:q,router:z,...H}){let L=f==="thorchain"?Px:fx,{chain:J,symbol:X,ticker:$}=x,I=R(J);if(!I)throw new U("core_wallet_connection_not_found");let{address:B}=I;if(!W({address:B,chain:J}))throw new U("core_transaction_invalid_sender_address");let N=A({assetValue:x,from:B,recipient:q,router:z,...H});try{let j=L?.[J];if(!j){let v=R(J);return Q===J&&q===""?v.deposit(N):v.transfer(N)}let{getChecksumAddressFromAsset:G}=await import("@swapkit/toolboxes/evm");return R(J).call({abi:j,contractAddress:z||(await Z(J)).router,funcName:"depositWithExpiry",funcParams:[q,G({chain:J,symbol:X,ticker:$},J),x.getBaseValue("string"),N.memo,H.expiration||Number.parseInt(`${(Date.now()+900000)/1000}`,10)],txOverrides:{from:N.from,value:x.isGasAsset?x.getBaseValue("bigint"):void 0}})}catch(j){let G=typeof j==="string"?j.toLowerCase():j?.message.toLowerCase(),D=G?.includes("insufficient funds"),v=G?.includes("gas"),w=G?.includes("server"),qx=G?.includes("user rejected");throw new U(D?"core_transaction_deposit_insufficient_funds_error":v?"core_transaction_deposit_gas_error":w?"core_transaction_deposit_server_error":qx?"core_transaction_user_rejected":"core_transaction_deposit_error",j)}}async function b({memo:x,assetValue:q}){let z=await h.thornode.getMimirInfo(f);if(z.HALTCHAINGLOBAL>=1||z.HALTTHORCHAIN>=1)throw new U("thorchain_chain_halted");return k({assetValue:q,memo:x,recipient:""})}async function _({assetValue:x,memo:q,feeOptionKey:z=M.Fast}){let{gas_rate:H="0",router:L,address:J}=await Z(x.chain);return k({assetValue:x,feeRate:Number.parseInt(H,10)*Ox[z],memo:q,recipient:J,router:L})}function d({assetValue:x}){return K({assetValue:x,type:g.Approve})}function n({assetValue:x}){return K({assetValue:x,type:g.CheckOnly})}function u({assetValue:x,...q}){return b({assetValue:x,memo:Ux(q)})}function r({assetValue:x,payoutAddress:q,name:z,ownerAddress:H}){let L=q||R(x.chain)?.address;if(!L)throw new U("thorchain_preferred_asset_payout_required");return b({assetValue:O.from({chain:Q}),memo:Rx({asset:x.toString(),chain:x.chain,name:z,owner:H,payout:L})})}function o({type:x,assetValue:q,address:z}){let H=x===E.UNBOND?Yx({address:z,unbondAmount:q.getBaseValue("number")}):Qx({address:z,type:x}),L=x===E.BOND?q:V(Q);return b({assetValue:L,memo:H})}async function i({baseAssetValue:x,assetValue:q}){if(x.lte(0)||q.lte(0))throw new U("core_transaction_create_liquidity_invalid_params");let z=R(q.chain).address,H=R(Q).address,L=await S(()=>{return _({assetValue:x,memo:F({...q,address:z})})},"core_transaction_create_liquidity_base_error");return{assetTx:await S(()=>{return _({assetValue:q,memo:F({...q,address:H})})},"core_transaction_create_liquidity_asset_error"),baseAssetTx:L}}function l({assetValue:x,poolAddress:q,address:z,symmetric:H}){if(H&&!z)throw new U("core_transaction_add_liquidity_invalid_params");let L=F({address:H?z:"",chain:q.split(".")[0],symbol:q.split(".")[1]});return _({assetValue:x,memo:L})}async function t({baseAssetValue:x,assetValue:q,baseAssetAddr:z,assetAddr:H,isPendingSymmAsset:L,mode:J="sym"}){let{chain:X,symbol:$}=q,I=J==="sym",B=x?.gt(0)&&(I||J==="baseAsset"),y=q?.gt(0)&&(I||J==="asset"),N=L||B,j=R(Q).address,G=N?z||j:"",D=I||J==="asset"?H||R(X).address:"";if(!(B||y))throw new U("core_transaction_add_liquidity_invalid_params");if(N&&!G)throw new U("core_transaction_add_liquidity_base_address");let v=B&&x?await S(()=>{return _({assetValue:x,memo:F({address:D,chain:X,symbol:$})})},"core_transaction_add_liquidity_base_error"):void 0;return{assetTx:y&&q?await S(()=>{return _({assetValue:q,memo:F({address:G,chain:X,symbol:$})})},"core_transaction_add_liquidity_asset_error"):void 0,baseAssetTx:v}}function s({memo:x,assetValue:q,percent:z,from:H,to:L}){let J=L==="baseAsset"&&H!=="baseAsset"?O.from({chain:Q}):H==="sym"&&L==="sym"||H==="baseAsset"||H==="asset"?void 0:q,X=V(H==="asset"?q.chain:Q),$=x||Zx({basisPoints:Math.min(1e4,Math.round(z*100)),chain:q.chain,symbol:q.symbol,targetAsset:J?.toString(),ticker:q.ticker});return _({assetValue:X,memo:$})}async function a({chain:x,thorAddress:q}){let z=await Z(x),H=z.dust_threshold,{baseDecimal:L}=m(x),{baseDecimal:J}=m(Y.THORChain);return k({assetValue:O.from({chain:x,fromBaseDecimal:Math.min(L,J),value:x!==Y.THORChain?H:0}),memo:Xx(E.CLAIM_TCY,{address:q}),recipient:z.address,router:z.router})}function e(x){if(x.type==="stake"){if(x.assetValue.toString()!=="THOR.TCY")throw new U("thorchain_asset_is_not_tcy");return k({assetValue:x.assetValue,memo:c(E.STAKE_TCY,{}),recipient:""})}return k({assetValue:O.from({chain:Y.THORChain}),memo:c(E.UNSTAKE_TCY,{unstakeBps:x.unstakeBps}),recipient:""})}async function xx({feeOptionKey:x,route:q}){let{memo:z,expiration:H,targetAddress:L}=q,J=await O.from({asset:q.sellAsset,asyncTokenLookup:!0,value:q.sellAmount});if(!J)throw new U("core_swap_asset_not_recognized");if(!W({address:q.destinationAddress,chain:O.from({asset:q.buyAsset}).chain}))throw new U("core_transaction_invalid_recipient_address");let{address:$}=await Z(J.chain);return k({assetValue:J,expiration:Number(H),feeOptionKey:x,memo:z,recipient:$,router:L})}return{addLiquidity:t,addLiquidityPart:l,approveAssetValue:d,claimTcy:a,createLiquidity:i,deposit:k,depositToPool:_,getInboundDataByChain:Z,isAssetValueApproved:n,nodeAction:o,registerName:u,registerPreferredAsset:r,stakeTcyAction:e,swap:xx,withdraw:s}}}export{W as validateAddressType,Ix as ThorchainPlugin,Bx as MayachainPlugin};
2
2
 
3
- //# debugId=076204608EEAA94D64756E2164756E21
3
+ //# debugId=6A0860E71605559D64756E2164756E21
4
4
  //# sourceMappingURL=index.js.map
@@ -2,10 +2,10 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/thorchain/plugin.ts", "../src/thorchain/shared.ts"],
4
4
  "sourcesContent": [
5
- "import {\n ApproveMode,\n type ApproveReturnType,\n AssetValue,\n BaseDecimal,\n Chain,\n type CryptoChain,\n type ErrorKeys,\n type EVMChain,\n EVMChains,\n FeeOption,\n getMemoForDeposit,\n getMemoForLeaveAndBond,\n getMemoForNamePreferredAssetRegister,\n getMemoForNameRegister,\n getMemoForTcyClaim,\n getMemoForTcyStake,\n getMemoForUnbond,\n getMemoForWithdraw,\n getMinAmountByChain,\n MemoType,\n ProviderName,\n SwapKitError,\n type SwapParams,\n wrapWithThrow,\n} from \"@swapkit/helpers\";\nimport {\n type InboundAddressesItem,\n type QuoteResponseRoute,\n SwapKitApi,\n type THORNodeType,\n} from \"@swapkit/helpers/api\";\nimport {\n MayaArbitrumVaultAbi,\n MayaEthereumVaultAbi,\n TCAvalancheDepositABI,\n TCBaseDepositABI,\n TCBscDepositABI,\n TCEthereumVaultAbi,\n} from \"@swapkit/helpers/contracts\";\nimport type { SwapKitPluginParams } from \"../types\";\nimport { createPlugin } from \"../utils\";\nimport { prepareTxParams, validateAddressType } from \"./shared\";\nimport type {\n AddLiquidityParams,\n AddLiquidityPartParams,\n CoreTxParams,\n CreateLiquidityParams,\n NodeActionParams,\n RegisterThornameParams,\n WithdrawParams,\n} from \"./types\";\n\nconst gasFeeMultiplier: Record<FeeOption, number> = {\n [FeeOption.Average]: 1.2,\n [FeeOption.Fast]: 1.5,\n [FeeOption.Fastest]: 2,\n};\n\nconst TCSpecificAbi = {\n [Chain.Avalanche]: TCAvalancheDepositABI,\n [Chain.Base]: TCBaseDepositABI,\n [Chain.BinanceSmartChain]: TCBscDepositABI,\n [Chain.Ethereum]: TCEthereumVaultAbi,\n};\n\nconst MayaSpecificAbi = { [Chain.Arbitrum]: MayaArbitrumVaultAbi, [Chain.Ethereum]: MayaEthereumVaultAbi };\n\nexport const ThorchainPlugin = createPlugin({\n methods: createTCBasedPlugin(Chain.THORChain),\n name: \"thorchain\",\n properties: { supportedSwapkitProviders: [ProviderName.THORCHAIN, ProviderName.THORCHAIN_STREAMING] },\n});\n\nexport const MayachainPlugin = createPlugin({\n methods: createTCBasedPlugin(Chain.Maya),\n name: \"mayachain\",\n properties: { supportedSwapkitProviders: [ProviderName.MAYACHAIN, ProviderName.MAYACHAIN_STREAMING] },\n});\n\nfunction getInboundDataFunction(type?: THORNodeType) {\n return async function getInboundDataByChain<T extends Chain>(chain: T) {\n if ((type === \"thorchain\" && chain === Chain.THORChain) || (type === \"mayachain\" && chain === Chain.Maya)) {\n return {\n address: \"\",\n chain,\n dust_threshold: \"0\",\n gas_rate: \"0\",\n halted: false,\n router: \"\",\n } as InboundAddressesItem;\n }\n\n const inboundData = await SwapKitApi.thornode.getInboundAddresses(type);\n const chainAddressData = inboundData.find((item) => item.chain === chain);\n\n if (!chainAddressData) throw new SwapKitError(\"core_inbound_data_not_found\");\n if (chainAddressData?.halted) throw new SwapKitError(\"core_chain_halted\");\n\n return chainAddressData;\n };\n}\n\ntype PluginChain = Chain.Maya | Chain.THORChain;\n\nfunction createTCBasedPlugin<T extends PluginChain>(pluginChain: T) {\n return function plugin({ getWallet }: SwapKitPluginParams) {\n const pluginType = pluginChain === Chain.Maya ? \"mayachain\" : \"thorchain\";\n const getInboundDataByChain = getInboundDataFunction(pluginType);\n\n async function approve<T extends ApproveMode>({\n assetValue,\n type = \"checkOnly\" as T,\n }: {\n type: T;\n assetValue: AssetValue;\n }) {\n const router = (await getInboundDataByChain(assetValue.chain)).router as string;\n\n const chain = assetValue.chain as EVMChain;\n\n const isEVMChain = EVMChains.includes(chain as EVMChain);\n const isNativeEVM = isEVMChain && assetValue.isGasAsset;\n\n if (isNativeEVM || !isEVMChain || assetValue.isSynthetic) {\n return Promise.resolve(type === \"checkOnly\" ? true : \"approved\") as ApproveReturnType<T>;\n }\n\n const wallet = getWallet(chain);\n\n if (!wallet) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n\n const walletAction = type === \"checkOnly\" ? wallet.isApproved : wallet.approve;\n\n if (!(assetValue.address && wallet.address)) {\n throw new SwapKitError(\"core_approve_asset_address_or_from_not_found\");\n }\n\n return walletAction({\n amount: assetValue.getBaseValue(\"bigint\"),\n assetAddress: assetValue.address,\n from: wallet.address,\n spenderAddress: router,\n });\n }\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: TODO\n async function deposit({ assetValue, recipient, router, ...rest }: CoreTxParams & { router?: string }) {\n const abis = pluginType === \"thorchain\" ? TCSpecificAbi : MayaSpecificAbi;\n const { chain, symbol, ticker } = assetValue;\n\n const wallet = getWallet(chain as CryptoChain);\n if (!wallet) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n const { address } = wallet;\n const isAddressValidated = validateAddressType({ address, chain });\n if (!isAddressValidated) {\n throw new SwapKitError(\"core_transaction_invalid_sender_address\");\n }\n\n const params = prepareTxParams({ assetValue, from: address, recipient, router, ...rest });\n\n try {\n const abi = abis?.[chain as keyof typeof abis];\n\n if (!abi) {\n const wallet = getWallet(chain as PluginChain);\n const shouldDeposit = pluginChain === chain && recipient === \"\";\n // @Towan: Is that the same action? :)\n return shouldDeposit ? wallet.deposit(params) : wallet.transfer(params);\n }\n\n const { getChecksumAddressFromAsset } = await import(\"@swapkit/toolboxes/evm\");\n const wallet = getWallet(chain as EVMChain);\n\n return wallet.call<string>({\n abi,\n contractAddress: router || ((await getInboundDataByChain(chain)).router as string),\n funcName: \"depositWithExpiry\",\n funcParams: [\n recipient,\n getChecksumAddressFromAsset({ chain, symbol, ticker }, chain as EVMChain),\n assetValue.getBaseValue(\"string\"),\n params.memo,\n rest.expiration || Number.parseInt(`${(Date.now() + 15 * 60 * 1000) / 1000}`, 10),\n ],\n txOverrides: {\n from: params.from,\n value: assetValue.isGasAsset ? assetValue.getBaseValue(\"bigint\") : undefined,\n },\n });\n } catch (error) {\n const errorMessage =\n // @ts-expect-error Fine to use error as string\n typeof error === \"string\" ? error.toLowerCase() : error?.message.toLowerCase();\n const isInsufficientFunds = errorMessage?.includes(\"insufficient funds\");\n const isGas = errorMessage?.includes(\"gas\");\n const isServer = errorMessage?.includes(\"server\");\n const isUserRejected = errorMessage?.includes(\"user rejected\");\n const errorKey: ErrorKeys = isInsufficientFunds\n ? \"core_transaction_deposit_insufficient_funds_error\"\n : isGas\n ? \"core_transaction_deposit_gas_error\"\n : isServer\n ? \"core_transaction_deposit_server_error\"\n : isUserRejected\n ? \"core_transaction_user_rejected\"\n : \"core_transaction_deposit_error\";\n\n throw new SwapKitError(errorKey, error);\n }\n }\n\n async function depositToProtocol({ memo, assetValue }: { assetValue: AssetValue; memo: string }) {\n const mimir = await SwapKitApi.thornode.getMimirInfo(pluginType);\n\n // check if trading is halted or not\n if (mimir.HALTCHAINGLOBAL >= 1 || mimir.HALTTHORCHAIN >= 1) {\n throw new SwapKitError(\"thorchain_chain_halted\");\n }\n\n return deposit({ assetValue, memo, recipient: \"\" });\n }\n\n async function depositToPool({\n assetValue,\n memo,\n feeOptionKey = FeeOption.Fast,\n }: {\n assetValue: AssetValue;\n memo: string;\n feeOptionKey?: FeeOption;\n }) {\n const { gas_rate = \"0\", router, address: poolAddress } = await getInboundDataByChain(assetValue.chain);\n\n return deposit({\n assetValue,\n feeRate: Number.parseInt(gas_rate, 10) * gasFeeMultiplier[feeOptionKey],\n memo,\n recipient: poolAddress,\n router,\n });\n }\n\n function approveAssetValue({ assetValue }: { assetValue: AssetValue }) {\n return approve({ assetValue, type: ApproveMode.Approve });\n }\n\n function isAssetValueApproved({ assetValue }: { assetValue: AssetValue }) {\n return approve({ assetValue, type: ApproveMode.CheckOnly });\n }\n\n function registerName({ assetValue, ...params }: RegisterThornameParams) {\n return depositToProtocol({ assetValue, memo: getMemoForNameRegister(params) });\n }\n\n function registerPreferredAsset({\n assetValue,\n payoutAddress,\n name,\n ownerAddress,\n }: {\n assetValue: AssetValue;\n payoutAddress?: string;\n name: string;\n ownerAddress: string;\n }) {\n const payout = payoutAddress || getWallet(assetValue.chain as CryptoChain)?.address;\n\n if (!payout) {\n throw new SwapKitError(\"thorchain_preferred_asset_payout_required\");\n }\n\n return depositToProtocol({\n assetValue: AssetValue.from({ chain: pluginChain }),\n memo: getMemoForNamePreferredAssetRegister({\n asset: assetValue.toString(),\n chain: assetValue.chain,\n name,\n owner: ownerAddress,\n payout,\n }),\n });\n }\n\n function nodeAction({ type, assetValue, address }: NodeActionParams) {\n const memo =\n type === MemoType.UNBOND\n ? getMemoForUnbond({ address, unbondAmount: assetValue.getBaseValue(\"number\") })\n : getMemoForLeaveAndBond({ address, type });\n\n const assetToTransfer = type === MemoType.BOND ? assetValue : getMinAmountByChain(pluginChain);\n return depositToProtocol({ assetValue: assetToTransfer, memo });\n }\n\n async function createLiquidity({ baseAssetValue, assetValue }: CreateLiquidityParams) {\n if (baseAssetValue.lte(0) || assetValue.lte(0)) {\n throw new SwapKitError(\"core_transaction_create_liquidity_invalid_params\");\n }\n\n const assetAddress = getWallet(assetValue.chain as CryptoChain).address;\n const baseAssetAddress = getWallet(pluginChain).address;\n\n const baseAssetTx = await wrapWithThrow(() => {\n return depositToPool({\n assetValue: baseAssetValue,\n memo: getMemoForDeposit({ ...assetValue, address: assetAddress }),\n });\n }, \"core_transaction_create_liquidity_base_error\");\n\n const assetTx = await wrapWithThrow(() => {\n return depositToPool({ assetValue, memo: getMemoForDeposit({ ...assetValue, address: baseAssetAddress }) });\n }, \"core_transaction_create_liquidity_asset_error\");\n\n return { assetTx, baseAssetTx };\n }\n\n function addLiquidityPart({ assetValue, poolAddress, address, symmetric }: AddLiquidityPartParams) {\n if (symmetric && !address) {\n throw new SwapKitError(\"core_transaction_add_liquidity_invalid_params\");\n }\n const memo = getMemoForDeposit({\n address: symmetric ? address : \"\",\n chain: poolAddress.split(\".\")[0] as Chain,\n symbol: poolAddress.split(\".\")[1] as string,\n });\n\n return depositToPool({ assetValue, memo });\n }\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: TODO\n async function addLiquidity({\n baseAssetValue,\n assetValue,\n baseAssetAddr,\n assetAddr,\n isPendingSymmAsset,\n mode = \"sym\",\n }: AddLiquidityParams) {\n const { chain, symbol } = assetValue;\n const isSym = mode === \"sym\";\n const baseTransfer = baseAssetValue?.gt(0) && (isSym || mode === \"baseAsset\");\n const assetTransfer = assetValue?.gt(0) && (isSym || mode === \"asset\");\n const includeBaseAddress = isPendingSymmAsset || baseTransfer;\n const baseAssetWalletAddress = getWallet(pluginChain).address;\n\n const baseAddress = includeBaseAddress ? baseAssetAddr || baseAssetWalletAddress : \"\";\n const assetAddress = isSym || mode === \"asset\" ? assetAddr || getWallet(chain as CryptoChain).address : \"\";\n\n if (!(baseTransfer || assetTransfer)) {\n throw new SwapKitError(\"core_transaction_add_liquidity_invalid_params\");\n }\n if (includeBaseAddress && !baseAddress) {\n throw new SwapKitError(\"core_transaction_add_liquidity_base_address\");\n }\n\n const baseAssetTx =\n baseTransfer && baseAssetValue\n ? await wrapWithThrow(() => {\n return depositToPool({\n assetValue: baseAssetValue,\n memo: getMemoForDeposit({ address: assetAddress, chain, symbol }),\n });\n }, \"core_transaction_add_liquidity_base_error\")\n : undefined;\n\n const assetTx =\n assetTransfer && assetValue\n ? await wrapWithThrow(() => {\n return depositToPool({ assetValue, memo: getMemoForDeposit({ address: baseAddress, chain, symbol }) });\n }, \"core_transaction_add_liquidity_asset_error\")\n : undefined;\n\n return { assetTx, baseAssetTx };\n }\n\n function withdraw({ memo, assetValue, percent, from, to }: WithdrawParams) {\n const targetAsset =\n to === \"baseAsset\" && from !== \"baseAsset\"\n ? AssetValue.from({ chain: pluginChain })\n : (from === \"sym\" && to === \"sym\") || from === \"baseAsset\" || from === \"asset\"\n ? undefined\n : assetValue;\n\n const value = getMinAmountByChain(from === \"asset\" ? assetValue.chain : pluginChain);\n const memoString =\n memo ||\n getMemoForWithdraw({\n basisPoints: Math.min(10000, Math.round(percent * 100)),\n chain: assetValue.chain,\n symbol: assetValue.symbol,\n targetAsset: targetAsset?.toString(),\n ticker: assetValue.ticker,\n });\n\n return depositToPool({ assetValue: value, memo: memoString });\n }\n\n async function claimTcy({ chain, thorAddress }: { chain: Chain; thorAddress: string }) {\n const inboundData = await getInboundDataByChain(chain);\n const dust_threshold = inboundData.dust_threshold;\n\n return deposit({\n assetValue: AssetValue.from({\n chain,\n fromBaseDecimal: Math.min(BaseDecimal[chain], BaseDecimal[Chain.THORChain]),\n value: chain !== Chain.THORChain ? dust_threshold : 0,\n }),\n memo: getMemoForTcyClaim(MemoType.CLAIM_TCY, { address: thorAddress }),\n recipient: inboundData.address,\n router: inboundData.router,\n });\n }\n\n function stakeTcyAction(\n params: { type: \"unstake\"; unstakeBps: number } | { type: \"stake\"; assetValue: AssetValue },\n ) {\n if (params.type === \"stake\") {\n if (params.assetValue.toString() !== \"THOR.TCY\") {\n throw new SwapKitError(\"thorchain_asset_is_not_tcy\");\n }\n\n return deposit({\n assetValue: params.assetValue,\n memo: getMemoForTcyStake(MemoType.STAKE_TCY, {}),\n recipient: \"\",\n });\n }\n\n return deposit({\n assetValue: AssetValue.from({ chain: Chain.THORChain }),\n memo: getMemoForTcyStake(MemoType.UNSTAKE_TCY, { unstakeBps: params.unstakeBps }),\n recipient: \"\",\n });\n }\n\n async function swap({ feeOptionKey, route }: SwapParams<typeof pluginType, QuoteResponseRoute>) {\n const { memo, expiration, targetAddress } = route;\n\n const assetValue = await AssetValue.from({\n asset: route.sellAsset,\n asyncTokenLookup: true,\n value: route.sellAmount,\n });\n\n if (!assetValue) {\n throw new SwapKitError(\"core_swap_asset_not_recognized\");\n }\n\n const isRecipientValidated = validateAddressType({\n address: route.destinationAddress,\n chain: AssetValue.from({ asset: route.buyAsset }).chain,\n });\n\n if (!isRecipientValidated) {\n throw new SwapKitError(\"core_transaction_invalid_recipient_address\");\n }\n\n const { address: recipient } = await getInboundDataByChain(assetValue.chain);\n\n return deposit({\n assetValue,\n expiration: Number(expiration),\n feeOptionKey,\n memo,\n recipient,\n router: targetAddress,\n });\n }\n\n return {\n addLiquidity,\n addLiquidityPart,\n approveAssetValue,\n claimTcy,\n createLiquidity,\n deposit,\n depositToPool,\n getInboundDataByChain,\n isAssetValueApproved,\n nodeAction,\n registerName,\n registerPreferredAsset,\n stakeTcyAction,\n swap,\n withdraw,\n };\n };\n}\n",
5
+ "import {\n ApproveMode,\n type ApproveReturnType,\n AssetValue,\n Chain,\n type ErrorKeys,\n type EVMChain,\n EVMChains,\n FeeOption,\n getChainConfig,\n getMemoForDeposit,\n getMemoForLeaveAndBond,\n getMemoForNamePreferredAssetRegister,\n getMemoForNameRegister,\n getMemoForTcyClaim,\n getMemoForTcyStake,\n getMemoForUnbond,\n getMemoForWithdraw,\n getMinAmountByChain,\n MemoType,\n ProviderName,\n SwapKitError,\n type SwapParams,\n type TCLikeChain,\n wrapWithThrow,\n} from \"@swapkit/helpers\";\nimport {\n type InboundAddressesItem,\n type QuoteResponseRoute,\n SwapKitApi,\n type THORNodeType,\n} from \"@swapkit/helpers/api\";\nimport {\n MayaArbitrumVaultAbi,\n MayaEthereumVaultAbi,\n TCAvalancheDepositABI,\n TCBaseDepositABI,\n TCBscDepositABI,\n TCEthereumVaultAbi,\n} from \"@swapkit/helpers/contracts\";\nimport type { SwapKitPluginParams } from \"../types\";\nimport { createPlugin } from \"../utils\";\nimport { prepareTxParams, validateAddressType } from \"./shared\";\nimport type {\n AddLiquidityParams,\n AddLiquidityPartParams,\n CoreTxParams,\n CreateLiquidityParams,\n NodeActionParams,\n RegisterThornameParams,\n WithdrawParams,\n} from \"./types\";\n\nconst gasFeeMultiplier: Record<FeeOption, number> = {\n [FeeOption.Average]: 1.2,\n [FeeOption.Fast]: 1.5,\n [FeeOption.Fastest]: 2,\n};\n\nconst TCSpecificAbi = {\n [Chain.Avalanche]: TCAvalancheDepositABI,\n [Chain.Base]: TCBaseDepositABI,\n [Chain.BinanceSmartChain]: TCBscDepositABI,\n [Chain.Ethereum]: TCEthereumVaultAbi,\n};\n\nconst MayaSpecificAbi = { [Chain.Arbitrum]: MayaArbitrumVaultAbi, [Chain.Ethereum]: MayaEthereumVaultAbi };\n\nexport const ThorchainPlugin = createPlugin({\n methods: createTCBasedPlugin(Chain.THORChain),\n name: \"thorchain\",\n properties: { supportedSwapkitProviders: [ProviderName.THORCHAIN, ProviderName.THORCHAIN_STREAMING] },\n});\n\nexport const MayachainPlugin = createPlugin({\n methods: createTCBasedPlugin(Chain.Maya),\n name: \"mayachain\",\n properties: { supportedSwapkitProviders: [ProviderName.MAYACHAIN, ProviderName.MAYACHAIN_STREAMING] },\n});\n\nfunction getInboundDataFunction(type?: THORNodeType) {\n return async function getInboundDataByChain<T extends Chain>(chain: T) {\n if ((type === \"thorchain\" && chain === Chain.THORChain) || (type === \"mayachain\" && chain === Chain.Maya)) {\n return {\n address: \"\",\n chain,\n dust_threshold: \"0\",\n gas_rate: \"0\",\n halted: false,\n router: \"\",\n } as InboundAddressesItem;\n }\n\n const inboundData = await SwapKitApi.thornode.getInboundAddresses(type);\n const chainAddressData = inboundData.find((item) => item.chain === chain);\n\n if (!chainAddressData) throw new SwapKitError(\"core_inbound_data_not_found\");\n if (chainAddressData?.halted) throw new SwapKitError(\"core_chain_halted\");\n\n return chainAddressData;\n };\n}\n\nfunction createTCBasedPlugin<T extends TCLikeChain>(pluginChain: T) {\n return function plugin({ getWallet }: SwapKitPluginParams) {\n const pluginType = pluginChain === Chain.Maya ? \"mayachain\" : \"thorchain\";\n const getInboundDataByChain = getInboundDataFunction(pluginType);\n\n async function approve<T extends ApproveMode>({\n assetValue,\n type = \"checkOnly\" as T,\n }: {\n type: T;\n assetValue: AssetValue;\n }) {\n const router = (await getInboundDataByChain(assetValue.chain)).router as string;\n\n const chain = assetValue.chain as EVMChain;\n\n const isEVMChain = EVMChains.includes(chain as EVMChain);\n const isNativeEVM = isEVMChain && assetValue.isGasAsset;\n\n if (isNativeEVM || !isEVMChain || assetValue.isSynthetic) {\n return Promise.resolve(type === \"checkOnly\" ? true : \"approved\") as ApproveReturnType<T>;\n }\n\n const wallet = getWallet(chain);\n\n if (!wallet) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n\n const walletAction = type === \"checkOnly\" ? wallet.isApproved : wallet.approve;\n\n if (!(assetValue.address && wallet.address)) {\n throw new SwapKitError(\"core_approve_asset_address_or_from_not_found\");\n }\n\n return walletAction({\n amount: assetValue.getBaseValue(\"bigint\"),\n assetAddress: assetValue.address,\n from: wallet.address,\n spenderAddress: router,\n });\n }\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: TODO\n async function deposit({ assetValue, recipient, router, ...rest }: CoreTxParams & { router?: string }) {\n const abis = pluginType === \"thorchain\" ? TCSpecificAbi : MayaSpecificAbi;\n const { chain, symbol, ticker } = assetValue;\n\n const wallet = getWallet(chain);\n if (!wallet) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n const { address } = wallet;\n const isAddressValidated = validateAddressType({ address, chain });\n if (!isAddressValidated) {\n throw new SwapKitError(\"core_transaction_invalid_sender_address\");\n }\n\n const params = prepareTxParams({ assetValue, from: address, recipient, router, ...rest });\n\n try {\n const abi = abis?.[chain as keyof typeof abis];\n\n if (!abi) {\n const wallet = getWallet(chain as TCLikeChain);\n const shouldDeposit = pluginChain === chain && recipient === \"\";\n // @Towan: Is that the same action? :)\n return shouldDeposit ? wallet.deposit(params) : wallet.transfer(params);\n }\n\n const { getChecksumAddressFromAsset } = await import(\"@swapkit/toolboxes/evm\");\n const wallet = getWallet(chain as EVMChain);\n\n return wallet.call<string>({\n abi,\n contractAddress: router || ((await getInboundDataByChain(chain)).router as string),\n funcName: \"depositWithExpiry\",\n funcParams: [\n recipient,\n getChecksumAddressFromAsset({ chain, symbol, ticker }, chain as EVMChain),\n assetValue.getBaseValue(\"string\"),\n params.memo,\n rest.expiration || Number.parseInt(`${(Date.now() + 15 * 60 * 1000) / 1000}`, 10),\n ],\n txOverrides: {\n from: params.from,\n value: assetValue.isGasAsset ? assetValue.getBaseValue(\"bigint\") : undefined,\n },\n });\n } catch (error) {\n const errorMessage =\n // @ts-expect-error Fine to use error as string\n typeof error === \"string\" ? error.toLowerCase() : error?.message.toLowerCase();\n const isInsufficientFunds = errorMessage?.includes(\"insufficient funds\");\n const isGas = errorMessage?.includes(\"gas\");\n const isServer = errorMessage?.includes(\"server\");\n const isUserRejected = errorMessage?.includes(\"user rejected\");\n const errorKey: ErrorKeys = isInsufficientFunds\n ? \"core_transaction_deposit_insufficient_funds_error\"\n : isGas\n ? \"core_transaction_deposit_gas_error\"\n : isServer\n ? \"core_transaction_deposit_server_error\"\n : isUserRejected\n ? \"core_transaction_user_rejected\"\n : \"core_transaction_deposit_error\";\n\n throw new SwapKitError(errorKey, error);\n }\n }\n\n async function depositToProtocol({ memo, assetValue }: { assetValue: AssetValue; memo: string }) {\n const mimir = await SwapKitApi.thornode.getMimirInfo(pluginType);\n\n // check if trading is halted or not\n if (mimir.HALTCHAINGLOBAL >= 1 || mimir.HALTTHORCHAIN >= 1) {\n throw new SwapKitError(\"thorchain_chain_halted\");\n }\n\n return deposit({ assetValue, memo, recipient: \"\" });\n }\n\n async function depositToPool({\n assetValue,\n memo,\n feeOptionKey = FeeOption.Fast,\n }: {\n assetValue: AssetValue;\n memo: string;\n feeOptionKey?: FeeOption;\n }) {\n const { gas_rate = \"0\", router, address: poolAddress } = await getInboundDataByChain(assetValue.chain);\n\n return deposit({\n assetValue,\n feeRate: Number.parseInt(gas_rate, 10) * gasFeeMultiplier[feeOptionKey],\n memo,\n recipient: poolAddress,\n router,\n });\n }\n\n function approveAssetValue({ assetValue }: { assetValue: AssetValue }) {\n return approve({ assetValue, type: ApproveMode.Approve });\n }\n\n function isAssetValueApproved({ assetValue }: { assetValue: AssetValue }) {\n return approve({ assetValue, type: ApproveMode.CheckOnly });\n }\n\n function registerName({ assetValue, ...params }: RegisterThornameParams) {\n return depositToProtocol({ assetValue, memo: getMemoForNameRegister(params) });\n }\n\n function registerPreferredAsset({\n assetValue,\n payoutAddress,\n name,\n ownerAddress,\n }: {\n assetValue: AssetValue;\n payoutAddress?: string;\n name: string;\n ownerAddress: string;\n }) {\n const payout = payoutAddress || getWallet(assetValue.chain)?.address;\n\n if (!payout) {\n throw new SwapKitError(\"thorchain_preferred_asset_payout_required\");\n }\n\n return depositToProtocol({\n assetValue: AssetValue.from({ chain: pluginChain }),\n memo: getMemoForNamePreferredAssetRegister({\n asset: assetValue.toString(),\n chain: assetValue.chain,\n name,\n owner: ownerAddress,\n payout,\n }),\n });\n }\n\n function nodeAction({ type, assetValue, address }: NodeActionParams) {\n const memo =\n type === MemoType.UNBOND\n ? getMemoForUnbond({ address, unbondAmount: assetValue.getBaseValue(\"number\") })\n : getMemoForLeaveAndBond({ address, type });\n\n const assetToTransfer = type === MemoType.BOND ? assetValue : getMinAmountByChain(pluginChain);\n return depositToProtocol({ assetValue: assetToTransfer, memo });\n }\n\n async function createLiquidity({ baseAssetValue, assetValue }: CreateLiquidityParams) {\n if (baseAssetValue.lte(0) || assetValue.lte(0)) {\n throw new SwapKitError(\"core_transaction_create_liquidity_invalid_params\");\n }\n\n const assetAddress = getWallet(assetValue.chain).address;\n const baseAssetAddress = getWallet(pluginChain).address;\n\n const baseAssetTx = await wrapWithThrow(() => {\n return depositToPool({\n assetValue: baseAssetValue,\n memo: getMemoForDeposit({ ...assetValue, address: assetAddress }),\n });\n }, \"core_transaction_create_liquidity_base_error\");\n\n const assetTx = await wrapWithThrow(() => {\n return depositToPool({ assetValue, memo: getMemoForDeposit({ ...assetValue, address: baseAssetAddress }) });\n }, \"core_transaction_create_liquidity_asset_error\");\n\n return { assetTx, baseAssetTx };\n }\n\n function addLiquidityPart({ assetValue, poolAddress, address, symmetric }: AddLiquidityPartParams) {\n if (symmetric && !address) {\n throw new SwapKitError(\"core_transaction_add_liquidity_invalid_params\");\n }\n const memo = getMemoForDeposit({\n address: symmetric ? address : \"\",\n chain: poolAddress.split(\".\")[0] as Chain,\n symbol: poolAddress.split(\".\")[1] as string,\n });\n\n return depositToPool({ assetValue, memo });\n }\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: TODO\n async function addLiquidity({\n baseAssetValue,\n assetValue,\n baseAssetAddr,\n assetAddr,\n isPendingSymmAsset,\n mode = \"sym\",\n }: AddLiquidityParams) {\n const { chain, symbol } = assetValue;\n const isSym = mode === \"sym\";\n const baseTransfer = baseAssetValue?.gt(0) && (isSym || mode === \"baseAsset\");\n const assetTransfer = assetValue?.gt(0) && (isSym || mode === \"asset\");\n const includeBaseAddress = isPendingSymmAsset || baseTransfer;\n const baseAssetWalletAddress = getWallet(pluginChain).address;\n\n const baseAddress = includeBaseAddress ? baseAssetAddr || baseAssetWalletAddress : \"\";\n const assetAddress = isSym || mode === \"asset\" ? assetAddr || getWallet(chain).address : \"\";\n\n if (!(baseTransfer || assetTransfer)) {\n throw new SwapKitError(\"core_transaction_add_liquidity_invalid_params\");\n }\n if (includeBaseAddress && !baseAddress) {\n throw new SwapKitError(\"core_transaction_add_liquidity_base_address\");\n }\n\n const baseAssetTx =\n baseTransfer && baseAssetValue\n ? await wrapWithThrow(() => {\n return depositToPool({\n assetValue: baseAssetValue,\n memo: getMemoForDeposit({ address: assetAddress, chain, symbol }),\n });\n }, \"core_transaction_add_liquidity_base_error\")\n : undefined;\n\n const assetTx =\n assetTransfer && assetValue\n ? await wrapWithThrow(() => {\n return depositToPool({ assetValue, memo: getMemoForDeposit({ address: baseAddress, chain, symbol }) });\n }, \"core_transaction_add_liquidity_asset_error\")\n : undefined;\n\n return { assetTx, baseAssetTx };\n }\n\n function withdraw({ memo, assetValue, percent, from, to }: WithdrawParams) {\n const targetAsset =\n to === \"baseAsset\" && from !== \"baseAsset\"\n ? AssetValue.from({ chain: pluginChain })\n : (from === \"sym\" && to === \"sym\") || from === \"baseAsset\" || from === \"asset\"\n ? undefined\n : assetValue;\n\n const value = getMinAmountByChain(from === \"asset\" ? assetValue.chain : pluginChain);\n const memoString =\n memo ||\n getMemoForWithdraw({\n basisPoints: Math.min(10000, Math.round(percent * 100)),\n chain: assetValue.chain,\n symbol: assetValue.symbol,\n targetAsset: targetAsset?.toString(),\n ticker: assetValue.ticker,\n });\n\n return depositToPool({ assetValue: value, memo: memoString });\n }\n\n async function claimTcy({ chain, thorAddress }: { chain: Chain; thorAddress: string }) {\n const inboundData = await getInboundDataByChain(chain);\n const dust_threshold = inboundData.dust_threshold;\n const { baseDecimal: chainDecimal } = getChainConfig(chain);\n const { baseDecimal: tcDecimal } = getChainConfig(Chain.THORChain);\n\n return deposit({\n assetValue: AssetValue.from({\n chain,\n fromBaseDecimal: Math.min(chainDecimal, tcDecimal),\n value: chain !== Chain.THORChain ? dust_threshold : 0,\n }),\n memo: getMemoForTcyClaim(MemoType.CLAIM_TCY, { address: thorAddress }),\n recipient: inboundData.address,\n router: inboundData.router,\n });\n }\n\n function stakeTcyAction(\n params: { type: \"unstake\"; unstakeBps: number } | { type: \"stake\"; assetValue: AssetValue },\n ) {\n if (params.type === \"stake\") {\n if (params.assetValue.toString() !== \"THOR.TCY\") {\n throw new SwapKitError(\"thorchain_asset_is_not_tcy\");\n }\n\n return deposit({\n assetValue: params.assetValue,\n memo: getMemoForTcyStake(MemoType.STAKE_TCY, {}),\n recipient: \"\",\n });\n }\n\n return deposit({\n assetValue: AssetValue.from({ chain: Chain.THORChain }),\n memo: getMemoForTcyStake(MemoType.UNSTAKE_TCY, { unstakeBps: params.unstakeBps }),\n recipient: \"\",\n });\n }\n\n async function swap({ feeOptionKey, route }: SwapParams<typeof pluginType, QuoteResponseRoute>) {\n const { memo, expiration, targetAddress } = route;\n\n const assetValue = await AssetValue.from({\n asset: route.sellAsset,\n asyncTokenLookup: true,\n value: route.sellAmount,\n });\n\n if (!assetValue) {\n throw new SwapKitError(\"core_swap_asset_not_recognized\");\n }\n\n const isRecipientValidated = validateAddressType({\n address: route.destinationAddress,\n chain: AssetValue.from({ asset: route.buyAsset }).chain,\n });\n\n if (!isRecipientValidated) {\n throw new SwapKitError(\"core_transaction_invalid_recipient_address\");\n }\n\n const { address: recipient } = await getInboundDataByChain(assetValue.chain);\n\n return deposit({\n assetValue,\n expiration: Number(expiration),\n feeOptionKey,\n memo,\n recipient,\n router: targetAddress,\n });\n }\n\n return {\n addLiquidity,\n addLiquidityPart,\n approveAssetValue,\n claimTcy,\n createLiquidity,\n deposit,\n depositToPool,\n getInboundDataByChain,\n isAssetValueApproved,\n nodeAction,\n registerName,\n registerPreferredAsset,\n stakeTcyAction,\n swap,\n withdraw,\n };\n };\n}\n",
6
6
  "import { Chain } from \"@swapkit/helpers\";\nimport type { CoreTxParams } from \"./types\";\n\nexport function validateAddressType({ chain, address }: { chain?: Chain; address?: string }) {\n if (!address) return false;\n\n return chain === Chain.Bitcoin ? !address.startsWith(\"bc1p\") : true;\n}\n\nexport function prepareTxParams({\n assetValue,\n from,\n memo = \"\",\n ...restTxParams\n}: CoreTxParams & { from: string; router?: string }) {\n return { ...restTxParams, assetValue, from, memo };\n}\n"
7
7
  ],
8
- "mappings": "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",
9
- "debugId": "076204608EEAA94D64756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "6A0860E71605559D64756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -2,7 +2,7 @@ import { AssetValue, Chain } from "@swapkit/helpers";
2
2
  import type { getEvmToolbox } from "@swapkit/toolboxes/evm";
3
3
  import type { getSubstrateToolbox } from "@swapkit/toolboxes/substrate";
4
4
  import type { WithdrawFeeResponse } from "./types";
5
- type ChainflipToolbox = Awaited<ReturnType<typeof getSubstrateToolbox<Chain.Chainflip>>>;
5
+ type ChainflipToolbox = Awaited<ReturnType<typeof getSubstrateToolbox<typeof Chain.Chainflip>>>;
6
6
  export declare const assetIdentifierToChainflipTicker: Map<string, string>;
7
7
  export declare const ChainflipBroker: (chainflipToolbox: ChainflipToolbox) => {
8
8
  fundStateChainAccount: ({ evmToolbox, stateChainAccount, assetValue, }: {
@@ -1 +1 @@
1
- {"version":3,"file":"broker.d.ts","sourceRoot":"","sources":["../../../src/chainflip/broker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,KAAK,EAA+B,MAAM,kBAAkB,CAAC;AAClF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAExE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,KAAK,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAEzF,eAAO,MAAM,gCAAgC,qBAW3C,CAAC;AAsFH,eAAO,MAAM,eAAe,GAAI,kBAAkB,gBAAgB;4EA3B7D;QACD,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC;QACtD,iBAAiB,EAAE,MAAM,CAAC;QAC1B,UAAU,EAAE,UAAU,CAAC;KACxB;;2CAjDyB;QAAE,QAAQ,EAAE,UAAU,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;CA4ErE,CAAC"}
1
+ {"version":3,"file":"broker.d.ts","sourceRoot":"","sources":["../../../src/chainflip/broker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,KAAK,EAA+B,MAAM,kBAAkB,CAAC;AAClF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAExE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,KAAK,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAEhG,eAAO,MAAM,gCAAgC,qBAW3C,CAAC;AAsFH,eAAO,MAAM,eAAe,GAAI,kBAAkB,gBAAgB;4EA3B7D;QACD,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC;QACtD,iBAAiB,EAAE,MAAM,CAAC;QAC1B,UAAU,EAAE,UAAU,CAAC;KACxB;;2CAjDyB;QAAE,QAAQ,EAAE,UAAU,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;CA4ErE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/chainflip/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4C,YAAY,EAAgB,MAAM,kBAAkB,CAAC;AAGxG,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,SAAS,CAAC;AAE/D,eAAO,MAAM,eAAe;;;;2BAEuB,+BAA+B;;CA4ChF,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/chainflip/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,YAAY,EAAgB,MAAM,kBAAkB,CAAC;AAGtF,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,SAAS,CAAC;AAE/D,eAAO,MAAM,eAAe;;;;2BAEuB,+BAA+B;;CA4ChF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/near/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,YAAY,EAAgB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACpH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI/D,OAAO,KAAK,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAE3E,eAAO,MAAM,UAAU;;;;;0BAGG,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;8BA4CpC,MAAM;mCAKD,MAAM;6BA0BZ,0BAA0B;0BAqB7B,MAAM;2BA6BX,MAAM,YAAY,MAAM;;yBAiBlB,UAAU,CAAC,MAAM,EAAE,kBAAkB,CAAC;;CAuC/D,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/near/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,YAAY,EAAgB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAClG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI/D,OAAO,KAAK,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAE3E,eAAO,MAAM,UAAU;;;;;0BAGG,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;8BA4CpC,MAAM;mCAKD,MAAM;6BA0BZ,0BAA0B;0BAqB7B,MAAM;2BA6BX,MAAM,YAAY,MAAM;;yBAiBlB,UAAU,CAAC,MAAM,EAAE,kBAAkB,CAAC;;CA+D/D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/thorchain/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EAEV,KAAK,EAKL,SAAS,EAWT,YAAY,EAEZ,KAAK,UAAU,EAEhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EAGxB,MAAM,sBAAsB,CAAC;AAS9B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAGpD,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,EACZ,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACf,MAAM,SAAS,CAAC;AAiBjB,eAAO,MAAM,eAAe;;;;4GAiRrB,kBAAkB;;;;4EArBsD,sBAAsB;;wBAzExC,UAAU;;;mBA0JV,KAAK;yBAAe,MAAM;;0DAvGpB,qBAAqB;;;;;qBArJS,MAAM;;;wBAmFrF,UAAU;kBAChB,MAAM;2BACG,SAAS;;gCAzJgB,CAAC,SAAS,KAAK,SAAS,CAAC;;wBA0KP,UAAU;;oDAqCnB,gBAAgB;kDAjClB,sBAAsB;;wBAUzD,UAAU;4BACN,MAAM;kBAChB,MAAM;0BACE,MAAM;;;kBAsJJ,SAAS;wBAAc,MAAM;;kBAAa,OAAO;wBAAc,UAAU;;wCAqB9C,UAAU,4BAAoB,kBAAkB,CAAC;4DA5DnC,cAAc;;CAnT3E,CAAC;AAEH,eAAO,MAAM,eAAe;;;;4GA2QrB,kBAAkB;;;;4EArBsD,sBAAsB;;wBAzExC,UAAU;;;mBA0JV,KAAK;yBAAe,MAAM;;0DAvGpB,qBAAqB;;;;;qBArJS,MAAM;;;wBAmFrF,UAAU;kBAChB,MAAM;2BACG,SAAS;;gCAzJgB,CAAC,SAAS,KAAK,SAAS,CAAC;;wBA0KP,UAAU;;oDAqCnB,gBAAgB;kDAjClB,sBAAsB;;wBAUzD,UAAU;4BACN,MAAM;kBAChB,MAAM;0BACE,MAAM;;;kBAsJJ,SAAS;wBAAc,MAAM;;kBAAa,OAAO;wBAAc,UAAU;;wCAqB9C,UAAU,4BAAoB,kBAAkB,CAAC;4DA5DnC,cAAc;;CA7S3E,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/thorchain/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACV,KAAK,EAIL,SAAS,EAYT,YAAY,EAEZ,KAAK,UAAU,EAGhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EAGxB,MAAM,sBAAsB,CAAC;AAS9B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAGpD,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,EACZ,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACf,MAAM,SAAS,CAAC;AAiBjB,eAAO,MAAM,eAAe;;;;4GA+QrB,kBAAkB;;;;4EArBsD,sBAAsB;;wBAzExC,UAAU;;;mBA0JV,KAAK;yBAAe,MAAM;;0DAvGpB,qBAAqB;;;;;qBArJS,MAAM;;;wBAmFrF,UAAU;kBAChB,MAAM;2BACG,SAAS;;gCAvJgB,CAAC,SAAS,KAAK,SAAS,CAAC;;wBAwKP,UAAU;;oDAqCnB,gBAAgB;kDAjClB,sBAAsB;;wBAUzD,UAAU;4BACN,MAAM;kBAChB,MAAM;0BACE,MAAM;;;kBAwJJ,SAAS;wBAAc,MAAM;;kBAAa,OAAO;wBAAc,UAAU;;wCAqB9C,UAAU,4BAAoB,kBAAkB,CAAC;4DA9DnC,cAAc;;CAjT3E,CAAC;AAEH,eAAO,MAAM,eAAe;;;;4GAyQrB,kBAAkB;;;;4EArBsD,sBAAsB;;wBAzExC,UAAU;;;mBA0JV,KAAK;yBAAe,MAAM;;0DAvGpB,qBAAqB;;;;;qBArJS,MAAM;;;wBAmFrF,UAAU;kBAChB,MAAM;2BACG,SAAS;;gCAvJgB,CAAC,SAAS,KAAK,SAAS,CAAC;;wBAwKP,UAAU;;oDAqCnB,gBAAgB;kDAjClB,sBAAsB;;wBAUzD,UAAU;4BACN,MAAM;kBAChB,MAAM;0BACE,MAAM;;;kBAwJJ,SAAS;wBAAc,MAAM;;kBAAa,OAAO;wBAAc,UAAU;;wCAqB9C,UAAU,4BAAoB,kBAAkB,CAAC;4DA9DnC,cAAc;;CA3S3E,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { CryptoChain } from "@swapkit/helpers";
1
+ import type { Chain } from "@swapkit/helpers";
2
2
  import type { FullWallet } from "@swapkit/toolboxes";
3
3
  import type { ChainflipPlugin } from "./chainflip";
4
4
  import type { EVMPlugin } from "./evm";
@@ -11,6 +11,6 @@ export type * from "./thorchain/types";
11
11
  export type SKPlugins = typeof ChainflipPlugin & typeof ThorchainPlugin & typeof RadixPlugin & typeof SolanaPlugin & typeof EVMPlugin & typeof NearPlugin;
12
12
  export type PluginName = keyof SKPlugins;
13
13
  export type SwapKitPluginParams = {
14
- getWallet: <T extends CryptoChain>(chain: T) => FullWallet[T];
14
+ getWallet: <T extends Chain>(chain: T) => FullWallet[T];
15
15
  };
16
16
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,mBAAmB,mBAAmB,CAAC;AACvC,mBAAmB,mBAAmB,CAAC;AAEvC,MAAM,MAAM,SAAS,GAAG,OAAO,eAAe,GAC5C,OAAO,eAAe,GACtB,OAAO,WAAW,GAClB,OAAO,YAAY,GACnB,OAAO,SAAS,GAChB,OAAO,UAAU,CAAC;AAEpB,MAAM,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC;AAEzC,MAAM,MAAM,mBAAmB,GAAG;IAAE,SAAS,EAAE,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,mBAAmB,mBAAmB,CAAC;AACvC,mBAAmB,mBAAmB,CAAC;AAEvC,MAAM,MAAM,SAAS,GAAG,OAAO,eAAe,GAC5C,OAAO,eAAe,GACtB,OAAO,WAAW,GAClB,OAAO,YAAY,GACnB,OAAO,SAAS,GAChB,OAAO,UAAU,CAAC;AAEpB,MAAM,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC;AAEzC,MAAM,MAAM,mBAAmB,GAAG;IAAE,SAAS,EAAE,CAAC,CAAC,SAAS,KAAK,EAAE,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC"}
package/package.json CHANGED
@@ -4,8 +4,8 @@
4
4
  "@polkadot/keyring": "~13.5.0",
5
5
  "@polkadot/util": "~13.5.0",
6
6
  "@solana/web3.js": "~1.98.0",
7
- "@swapkit/helpers": "4.0.20",
8
- "@swapkit/toolboxes": "4.0.20",
7
+ "@swapkit/helpers": "4.0.21",
8
+ "@swapkit/toolboxes": "4.0.21",
9
9
  "ts-pattern": "~5.8.0"
10
10
  },
11
11
  "description": "SwapKit Plugin - Chainflip",
@@ -61,5 +61,5 @@
61
61
  "type-check:go": "tsgo"
62
62
  },
63
63
  "type": "module",
64
- "version": "4.0.22"
64
+ "version": "4.0.23"
65
65
  }