@galacticcouncil/xc-cfg 2.5.0 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/index.mjs CHANGED
@@ -1 +1 @@
1
- var kr=Object.defineProperty;var Jt=(t,e)=>{for(var n in e)kr(t,n,{get:e[n],enumerable:!0})};import{Asset as b}from"@galacticcouncil/xc-core";var se=new b({key:"aave",originSymbol:"AAVE"}),zn=new b({key:"ajun",originSymbol:"AJUN"}),oe=new b({key:"apyusd",originSymbol:"apyUSD"}),I=new b({key:"astr",originSymbol:"ASTR"}),F=new b({key:"bnc",originSymbol:"BNC"}),jn=new b({key:"bsx",originSymbol:"BSX"}),ae=new b({key:"cfg_new",originSymbol:"CFG"}),$n=new b({key:"cru",originSymbol:"CRU"}),We=new b({key:"dai",originSymbol:"DAI"}),je=new b({...We,key:"dai_wh"}),x=new b({key:"dot",originSymbol:"DOT"}),k=new b({key:"eth",originSymbol:"ETH"}),re=new b({key:"ena",originSymbol:"ENA"}),De=new b({key:"eurc",originSymbol:"EURC"}),Oe=new b({...De,key:"eurc_wh"}),lt=new b({key:"glmr",originSymbol:"GLMR"}),Rt=new b({key:"hdx",originSymbol:"HDX"}),L=new b({key:"ibtc",originSymbol:"IBTC"}),Pe=new b({key:"intr",originSymbol:"INTR"}),we=new b({key:"jitoSol",originSymbol:"jitoSOL"}),T=new b({key:"ksm",originSymbol:"KSM"}),ie=new b({key:"ldo",originSymbol:"LDO"}),ce=new b({key:"lbtc",originSymbol:"LBTC"}),Ce=new b({key:"ewt",originSymbol:"EWT"}),me=new b({key:"link",originSymbol:"LINK"}),X=new b({key:"myth",originSymbol:"MYTH"}),Ge=new b({key:"neuro",originSymbol:"NEURO"}),_e=new b({key:"pen",originSymbol:"PEN"}),ue=new b({key:"paxg",originSymbol:"PAXG"}),Ee=new b({key:"prime",originSymbol:"PRIME"}),de=new b({key:"sky",originSymbol:"SKY"}),le=new b({key:"sol",originSymbol:"SOL"}),fe=new b({key:"sui",originSymbol:"SUI"}),pe=new b({key:"susde",originSymbol:"sUSDe"}),Be=new b({key:"susds",originSymbol:"sUSDS"}),$e=new b({...Be,key:"susds_wh"}),he=new b({key:"tbtc",originSymbol:"tBTC"}),ge=new b({key:"trac",originSymbol:"TRAC"}),Ue=new b({key:"unq",originSymbol:"UNQ"}),y=new b({key:"usdt",originSymbol:"USDT"}),Je=new b({...y,key:"usdt_wh"}),ot=new b({...y,key:"usdt_eth"}),E=new b({key:"usdc",originSymbol:"USDC"}),Qe=new b({...E,key:"usdc_wh"}),at=new b({...E,key:"usdc_eth"}),O=new b({key:"vastr",originSymbol:"vASTR"}),G=new b({key:"vdot",originSymbol:"vDOT"}),Ye=new b({key:"weth",originSymbol:"WETH"}),ve=new b({...Ye,key:"weth_wh"}),Se=new b({key:"wbtc",originSymbol:"WBTC"}),Ze=new b({...Se,key:"wbtc_wh"}),Lt=new b({key:"wsol",originSymbol:"wSOL"}),ye=new b({key:"wsteth",originSymbol:"wstETH"}),rt=new b({key:"wud",originSymbol:"WUD"}),Tr=[se,zn,oe,I,jn,ae,$n,F,We,je,x,re,De,Oe,k,lt,Rt,L,Pe,T,ie,ce,Ce,we,me,X,Ge,ue,_e,Ee,de,le,fe,pe,Be,$e,ge,he,Ue,E,Qe,at,y,Je,ot,O,G,Se,Ze,Ye,ve,Lt,ye,rt],Pr=new Map(Tr.map(t=>[t.key,t]));import{ChainEcosystem as _r,EvmChain as Br,EvmBalanceType as Ks}from"@galacticcouncil/xc-core";import{base as Sr}from"viem/chains";var kt=new Br({id:8453,key:"base",name:"Base",assetsData:[{asset:k,decimals:18,id:"0x4200000000000000000000000000000000000006"},{asset:De,decimals:6,id:"0x60a3e35cc302bfa44cb288bc5a4f316fdb1adb42"},{asset:E,decimals:6,id:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}],balance:Ks.Erc20,balanceOverrides:{[k.key]:Ks.Native},ecosystem:_r.Ethereum,evmChain:Sr,explorer:"https://basescan.org/",rpcs:["https://stylish-quick-firefly.base-mainnet.quiknode.pro/"],basejump:{address:"0xf5b9334e44f800382cb47fc19669401d694e529b"},wormhole:{id:30,coreBridge:"0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6",executor:"0x9E1936E91A4a5AE5A5F75fFc472D6cb8e93597ea",nttExecutor:"0x27db1967D469D89318B7119Ced5609f327095de4",ntt:{[De.key]:{token:"0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42",manager:"0xD1dc3517732c98502b5c1ba2389AcA9E9016d89a",transceiver:{wormhole:"0xa84b362290b0CFdB55e877dfc633284091e0B3F7"}}}}});import{ChainEcosystem as Fr,EvmChain as Ir,EvmBalanceType as zs}from"@galacticcouncil/xc-core";import{mainnet as Dr}from"viem/chains";var A=new Ir({id:1,key:"ethereum",name:"Ethereum",assetsData:[{asset:k,decimals:18,id:"0x0000000000000000000000000000000000000000"},{asset:se,decimals:18,id:"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"},{asset:oe,decimals:18,id:"0x38eeb52f0771140d10c4e9a9a72349a329fe8a6a"},{asset:ae,decimals:18,id:"0xcccccccccc33d538dbc2ee4feab0a7a1ff4e8a94"},{asset:Ye,decimals:18,id:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"},{asset:We,decimals:18,id:"0x6B175474E89094C44Da98b954EedeAC495271d0F"},{asset:re,decimals:18,id:"0x57e114b691db790c35207b2e685d4a43181e6061"},{asset:pe,decimals:18,id:"0x9d39a5de30e57443bff2a8307a4256c8797a3497"},{asset:Be,decimals:18,id:"0xa3931d71877c0e7a3148cb7eb4463524fec27fbd"},{asset:he,decimals:18,id:"0x18084fba666a33d37592fa2633fd49a74dd93a88"},{asset:Se,decimals:8,id:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"},{asset:ce,decimals:8,id:"0x8236a87084f8b84306f72007f36f2618a5634494"},{asset:E,decimals:6,id:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"},{asset:y,decimals:6,id:"0xdAC17F958D2ee523a2206206994597C13D831ec7"},{asset:ie,decimals:18,id:"0x5a98fcbea516cf06857215779fd812ca3bef1b32"},{asset:me,decimals:18,id:"0x514910771af9ca656af840dff83e8264ecf986ca"},{asset:ue,decimals:18,id:"0x45804880de22913dafe09f4980848ece6ecbaf78"},{asset:de,decimals:18,id:"0x56072c95faa701256059aa122697b133aded9279"},{asset:ge,decimals:18,id:"0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F"},{asset:ye,decimals:18,id:"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"}],balance:zs.Erc20,balanceOverrides:{[k.key]:zs.Native},ecosystem:Fr.Ethereum,evmChain:Dr,explorer:"https://etherscan.io/",rpcs:["https://ethereum-rpc.publicnode.com","https://cosmopolitan-dimensional-diagram.quiknode.pro"],snowbridge:{id:1,gateway:"0x27ca963c279c93801941e1eb8799c23f407d68e7"},wormhole:{id:2,coreBridge:"0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B",executor:"0x84EEe8dBa37C36947397E1E11251cA9A06Fc6F8a",nttExecutor:"0xC079bFA54F348199bA51B2717595fE24e96f1542",ntt:{[We.key]:{token:"0x6B175474E89094C44Da98b954EedeAC495271d0F",manager:"0x804F123f75cCa0A9c0Cba341F82f4A4DA86a5259",transceiver:{wormhole:"0x99673a01C5779Ebf59399B4B228c1825c0113571"}},[Be.key]:{token:"0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD",manager:"0x5085A4863f89eC9553F70187EE73B5aAe0fd14b5",transceiver:{wormhole:"0x7C236d237BEbBE1b7902131B31b7b3270005a810"}},[E.key]:{token:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",manager:"0x447b2c7485A3d6813F8197E605b10BcCD8dd8398",transceiver:{wormhole:"0xA108BD5dBc6CE665aEbB6895351e0609c76F8EFc"}},[y.key]:{token:"0xdAC17F958D2ee523a2206206994597C13D831ec7",manager:"0x9fbd9F16cE7Fa17097E91cc36DC1B7b47aDCa9De",transceiver:{wormhole:"0x45c566f6595CF93e639E77cc1bbE57A8D27901c2"}},[Se.key]:{token:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",manager:"0x081b76AC3cFb65DCe93961d66cea44A74EC8Ef28",transceiver:{wormhole:"0x3FE8fBB8505c8dB2264f6Ebc5559c7C2b2647218"}},[Ye.key]:{token:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",manager:"0x283B14B5Dd352e32154Df014EA96834F395E04b6",transceiver:{wormhole:"0xbA0Cd32131b8206AF4feB79A1A3aaF0AEfe18b48"}},[k.key]:{token:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",manager:"0x283B14B5Dd352e32154Df014EA96834F395E04b6",transceiver:{wormhole:"0xbA0Cd32131b8206AF4feB79A1A3aaF0AEfe18b48"}}}}});var js=[kt,A];import{ChainEcosystem as Xr,Parachain as $s,SubstrateBalanceType as ln,SubstrateMinType as Rr}from"@galacticcouncil/xc-core";var Js={assetsData:[{asset:x,decimals:10,id:0,xcmLocation:{parents:1,interior:"Here"}},{asset:y,decimals:6,id:1984,min:.7,xcmLocation:{parents:0,interior:{X2:[{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:E,decimals:6,id:1337,min:.7,xcmLocation:{parents:0,interior:{X2:[{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:rt,decimals:10,id:31337,xcmLocation:{parents:0,interior:{X2:[{PalletInstance:50},{GeneralIndex:31337}]}}},{asset:X,decimals:18,min:3e-8,xcmLocation:{parents:1,interior:{X1:[{Parachain:3369}]}}},{asset:T,decimals:12,min:1e-4,xcmLocation:{parents:2,interior:{X1:[{GlobalConsensus:"Kusama"}]}}}],balance:ln.Assets,balanceOverrides:{[x.key]:ln.System,[T.key]:ln.ForeignAssets,[X.key]:ln.ForeignAssets},min:Rr.Assets,ecosystem:Xr.Polkadot,explorer:"https://assethub-polkadot.subscan.io",genesisHash:"0x68d56f15f85d3136970ec16946040bc1752654e906147f7e43e9d539d7c3de2f",name:"AssetHub",parachainId:1e3,ss58Format:0,treasury:"14xmwinmCEz6oRrFdczHKqHgWNMiCysE2KrA4jXXAAM1Eogk",usesDeliveryFee:!0,ws:["wss://asset-hub-polkadot-rpc.n.dwellir.com","wss://polkadot-asset-hub-rpc.polkadot.io"]},_=new $s({...Js,key:"assethub",name:"AssetHub Polkadot"}),ft=new $s({...Js,key:"assethub_cex",name:"AssetHub (CEX)",usesSignerFee:!0,isTestChain:!0,balanceOverrides:{}});import{ChainEcosystem as Lr,Parachain as Nr,SubstrateBalanceType as Qs}from"@galacticcouncil/xc-core";var Y=new Nr({assetsData:[{asset:I,xcmLocation:{parents:0,interior:"Here"}},{asset:x,id:"340282366920938463463374607431768211455",decimals:10,min:1e-4,xcmLocation:{parents:1,interior:"Here"}},{asset:y,id:"4294969280",decimals:6,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:E,id:"4294969281",decimals:6,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:F,id:"18446744073709551623",decimals:12,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:lt,id:"18446744073709551619",decimals:18,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:L,id:"18446744073709551620",decimals:8,min:1e-6,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:Pe,id:"18446744073709551621",decimals:10,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0002000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:G,id:"18446744073709551624",decimals:10,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:O,id:"18446744073709551632",decimals:18,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}}],balance:Qs.Assets,balanceOverrides:{[I.key]:Qs.System},ecosystem:Lr.Polkadot,explorer:"https://astar.subscan.io",genesisHash:"0x9eb76c5184c4ab8679d2d5d819fdf90b9c001403e9e17da2e14b6d8aec4029c6",key:"astar",name:"Astar",parachainId:2006,ss58Format:5,ws:"wss://rpc.astar.network"});import{ChainEcosystem as Vr,Parachain as Hr,SubstrateBalanceType as Ys}from"@galacticcouncil/xc-core";var Mr=["wss://eu.bifrost-polkadot-rpc.liebi.com/ws","wss://hk.p.bifrost-rpc.liebi.com/ws","wss://bifrost-polkadot.dotters.network"],R=new Hr({assetsData:[{asset:F,id:{Native:F.originSymbol},xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:G,id:{VToken2:0},decimals:10,min:1e-4,xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:O,id:{VToken2:3},decimals:18,min:.01,xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:x,id:{Token2:0},decimals:10,min:1e-4,xcmLocation:{parents:1,interior:"Here"}},{asset:y,id:{Token2:2},decimals:6,min:.001,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:E,id:{Token2:5},decimals:6,min:.001,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:I,id:{Token2:3},decimals:18,min:.01,xcmLocation:{parents:1,interior:{X1:{Parachain:2006}}}},{asset:lt,id:{Token2:1},decimals:18,min:1e-5,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:L,id:{Token2:6},decimals:8,min:1e-6,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}}],balance:Ys.Tokens,balanceOverrides:{[F.key]:Ys.System},ecosystem:Vr.Polkadot,explorer:"https://bifrost.subscan.io",genesisHash:"0x262e1b2ad728475fd6fe88e62d34c200abe6fd693931ddad144059b1eb884e5b",key:"bifrost",name:"Bifrost",parachainId:2030,ss58Format:6,ws:Mr});import{ChainEcosystem as Ur,EvmParachain as qr,SubstrateBalanceType as eo}from"@galacticcouncil/xc-core";import{defineChain as Kr}from"viem";import{h160 as Wr}from"@galacticcouncil/common";import{AccountId as Or}from"polkadot-api";var{isEvmAccount:Gr,H160:Zs}=Wr,fn=class{async toH160(e,n){if(Gr(e))return Zs.fromAccount(e);let s=Zs.fromSS58(e);if(n&&await this.isBound(n,s,e))return s;throw new Error(`Account ${e} is not an EVM (ETH\\0 prefixed) account nor bound to its EVM address`)}async isBound(e,n,s){let a=await e.getUnsafeApi().query.EVMAccounts.AccountExtension.getValue(n);if(!a)return!1;let r=Or().enc(s),i=this.asBytes(a);return Buffer.from(i).equals(Buffer.from(r.subarray(20)))}asBytes(e){return e instanceof Uint8Array?e:typeof e=="string"?Buffer.from(e.replace("0x",""),"hex"):e.asBytes()}};var zr=new fn,Jn=["https://hydration-rpc.n.dwellir.com","https://rpc.kril.hydration.cloud","https://hydration.rotko.net","https://rpc.sin.hydration.cloud","https://rpc.coke.hydration.cloud"],Qn=["wss://hydration-rpc.n.dwellir.com","wss://rpc.kril.hydration.cloud","wss://hydration.rotko.net","wss://rpc.sin.hydration.cloud","wss://rpc.coke.hydration.cloud"],jr=Kr({id:222222,name:"Hydration",network:"hydration",nativeCurrency:{decimals:18,name:"WETH",symbol:"WETH"},rpcUrls:{public:{http:Jn,webSocket:Qn},default:{http:Jn,webSocket:Qn}},blockExplorers:{default:{name:"Hydration Explorer",url:"https://hydration.subscan.io"}},testnet:!1}),h=new qr({assetsData:[{asset:Rt,id:0,xcmLocation:{parents:0,interior:{X1:[{GeneralIndex:0}]}}},{asset:se,decimals:18,id:1000624,min:6e-5,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"}}]}}},{asset:zn,decimals:12,id:32,min:.11,xcmLocation:{parents:1,interior:{X2:[{Parachain:2051},{GeneralKey:{length:4,data:"0x414a554e00000000000000000000000000000000000000000000000000000000"}}]}}},{asset:I,decimals:18,id:9,min:.15,xcmLocation:{parents:1,interior:{X1:{Parachain:2006}}}},{asset:F,decimals:12,id:14,min:.069,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:ae,decimals:18,id:41,min:.1,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xcccccccccc33d538dbc2ee4feab0a7a1ff4e8a94"}}]}}},{asset:$n,decimals:12,id:27,min:.0079,xcmLocation:{parents:1,interior:{X1:{Parachain:2008}}}},{asset:x,decimals:10,id:5,min:.0018,xcmLocation:{parents:1,interior:"Here"}},{asset:je,decimals:18,id:18,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f"}}]}}},{asset:k,decimals:18,id:34,min:55e-7,xcmLocation:{parents:2,interior:{X1:{GlobalConsensus:{Ethereum:{chain_id:1}}}}}},{asset:oe,decimals:18,id:46,min:.0147058823529412,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x38eeb52f0771140d10c4e9a9a72349a329fe8a6a"}}]}}},{asset:re,decimals:18,id:38,min:.037,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x57e114b691db790c35207b2e685d4a43181e6061"}}]}}},{asset:lt,decimals:18,id:16,min:.035,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:L,decimals:8,id:11,min:36e-8,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:Pe,decimals:10,id:17,min:.62,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0002000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:we,decimals:9,id:40,min:27e-7,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:1},{GeneralKey:{length:32,data:"0xfcd141e9832caf10ad917495ca0f271b5b293cd47027ea737007ed40eb39a0bd"}}]}}},{asset:Ee,decimals:6,id:43,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:1},{GeneralKey:{length:32,data:"0x26759f460ee5f743ed66d27c8f2a5623bf39d53ed575955320661e6e13e0e3da"}}]}}},{asset:Ce,decimals:18,id:252525,min:.022,xcmLocation:{parents:1,interior:{X1:{Parachain:3345}}}},{asset:ie,decimals:18,id:1000796,min:.013,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x5a98fcbea516cf06857215779fd812ca3bef1b32"}}]}}},{asset:T,decimals:12,id:1000771,min:35e-5,xcmLocation:{parents:2,interior:{X1:{GlobalConsensus:"Kusama"}}}},{asset:ce,decimals:8,id:1000851,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x8236a87084f8b84306f72007f36f2618a5634494"}}]}}},{asset:me,decimals:18,id:1000794,min:.001,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x514910771af9ca656af840dff83e8264ecf986ca"}}]}}},{asset:ue,decimals:18,id:39,min:5e-6,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x45804880de22913dafe09f4980848ece6ecbaf78"}}]}}},{asset:X,decimals:18,id:30,min:.022,xcmLocation:{parents:1,interior:{X1:{Parachain:3369}}}},{asset:Ge,decimals:12,id:36,min:.001,xcmLocation:{parents:1,interior:{X2:[{Parachain:2043},{PalletInstance:10}]}}},{asset:_e,decimals:12,id:1000081,min:.16,xcmLocation:{parents:1,interior:{X2:[{Parachain:2094},{PalletInstance:10}]}}},{asset:de,decimals:18,id:1000795,min:.52,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x56072c95faa701256059aa122697b133aded9279"}}]}}},{asset:le,decimals:9,id:1000752,min:47e-6,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:1},{GeneralKey:{length:32,data:"0x069b8857feab8184fb687f634618c035dac439dc1aeb3b5598a0f00000000001"}}]}}},{asset:fe,decimals:9,id:1000753,min:.003,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:21},{GeneralKey:{length:32,data:"0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3"}}]}}},{asset:pe,decimals:18,id:1000625,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x9d39a5de30e57443bff2a8307a4256c8797a3497"}}]}}},{asset:Be,decimals:18,id:1000626,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xa3931d71877c0e7a3148cb7eb4463524fec27fbd"}}]}}},{asset:$e,decimals:18,id:1000745,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000a3931d71877c0e7a3148cb7eb4463524fec27fbd"}}]}}},{asset:he,decimals:18,id:1000765,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x18084fba666a33d37592fa2633fd49a74dd93a88"}}]}}},{asset:ge,decimals:18,id:35,min:.028,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F"}}]}}},{asset:Ue,decimals:18,id:25,min:1.23,xcmLocation:{parents:1,interior:{X1:{Parachain:2037}}}},{asset:E,decimals:6,id:22,min:.01,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:Qe,decimals:6,id:21,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"}}]}}},{asset:Oe,decimals:6,id:44,min:.014,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:30},{GeneralKey:{length:32,data:"0x00000000000000000000000060a3e35cc302bfa44cb288bc5a4f316fdb1adb42"}}]}}},{asset:at,decimals:6,id:1000766,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"}}]}}},{asset:y,decimals:6,id:10,min:.01,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:Je,decimals:6,id:23,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7"}}]}}},{asset:ot,decimals:6,id:1000767,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xdac17f958d2ee523a2206206994597c13d831ec7"}}]}}},{asset:O,decimals:18,id:33,min:.14,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:G,decimals:10,id:15,min:.0019,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:Se,decimals:8,id:1000190,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"}}]}}},{asset:Ze,decimals:8,id:19,min:34e-8,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599"}}]}}},{asset:Ye,decimals:18,id:1000189,min:61e-7,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"}}]}}},{asset:ve,decimals:18,id:20,min:54e-7,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"}}]}}},{asset:ye,decimals:18,id:1000809,min:635e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"}}]}}},{asset:rt,decimals:10,id:1000085,min:2e4,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:31337}]}}}],balance:eo.Tokens,balanceOverrides:{[Rt.key]:eo.System},ecosystem:Ur.Polkadot,evmChain:jr,evmResolver:zr,explorer:"https://hydration.subscan.io",genesisHash:"0xafdc188f45c71dacbaa0b62e16a91f726c7b8699a9748cdf715459de6b7f366d",key:"hydration",name:"Hydration",parachainId:2034,ss58Format:63,wormhole:{id:73,coreBridge:"0x3792a6d63c31941B2805181771795D9176fA82A1",executor:"0xd633d8d1ceee8c8252196d44857c0f41b8dcb0d9",nttExecutor:"0xd3Dda7c8608Ea251C42c6E0A2A686aDc5e9C0C03",ntt:{[je.key]:{token:"0x0000000000000000000000000000000100000012",manager:"0xcFd576F88C90844AEBF45378Fd09931281D8b14d",transceiver:{wormhole:"0xe8660CA48f6f4D98BC48DB7Dd07C1a8E555801eA"}},[Oe.key]:{token:"0x000000000000000000000000000000010000002C",manager:"0x8dd1286A29dF5a2785FB638d6fB1598144Cfbc4C",transceiver:{wormhole:"0x2e84fac378D67Dc2e11026fB4919E80263a87375"}},[we.key]:{token:"0x0000000000000000000000000000000100000028",manager:"0xcE73C15B9ED02413066DE5B904A36F8e8f9B5331",transceiver:{wormhole:"0xF38D9C3bA6999Dc331b32B416083Fd7e02D17B04"}},[Ee.key]:{token:"0x000000000000000000000000000000010000002B",manager:"0xFCaF4aA069C565d25539028970703F01e47D3E0B",transceiver:{wormhole:"0x4e7b1E55D2354d4Dc6ABD876096Dc201de0541D1"}},[le.key]:{token:"0x00000000000000000000000000000001000F4530",manager:"0x9e200C0f28D92D296b201D96C8269d3CAFFfA9FF",transceiver:{wormhole:"0x2F04AcF249091425d51e67EeA3C3161ccE283202"}},[fe.key]:{token:"0x00000000000000000000000000000001000F4531",manager:"0x978443f00cAB6b09445140321EC73a221ebFF5F8",transceiver:{wormhole:"0xA224D6f4e0E276b34D91bfE6c3A5fE6838322AF7"}},[$e.key]:{token:"0x00000000000000000000000000000001000F4529",manager:"0x1973E7044d9A7C7bB2d6ea1693A296a9e4B7E448",transceiver:{wormhole:"0x68Ecadd7934D4FcFEABAfB209C95D379B96400cb"}},[Qe.key]:{token:"0x0000000000000000000000000000000100000015",manager:"0xEcEab64542A875C4472671D9Ed1E690cdD4e28fC",transceiver:{wormhole:"0x0d7488B39AA64468a709eC3b3d354DeFE539eD97"}},[Je.key]:{token:"0x0000000000000000000000000000000100000017",manager:"0x5E6C488103b47F804824AE15861638af4C436795",transceiver:{wormhole:"0xd2a16B736F32Df7C0DE72838837656FE0f85Ac0F"}},[Ze.key]:{token:"0x0000000000000000000000000000000100000013",manager:"0x6BFca089916c045b0Ca4A09B655aF9F926189993",transceiver:{wormhole:"0x9a8a1ab288f6749Ce5626DEE1B5d59441BdC187F"}},[ve.key]:{token:"0x0000000000000000000000000000000100000014",manager:"0xB5cEf790D52A57fa619eD96eDd64c5328F3DCFb7",transceiver:{wormhole:"0x8acce9CA511d5D7213F8C3f813B8916087cd00ae"}}}},ws:Qn,rpcs:Jn});import{ChainEcosystem as $r,Parachain as Jr,SubstrateBalanceType as Qr}from"@galacticcouncil/xc-core";var pt=new Jr({assetsData:[{asset:X,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:Qr.System,ecosystem:$r.Polkadot,explorer:"https://mythos.subscan.io",genesisHash:"0xf6ee56e9c5277df5b4ce6ae9983ee88f3cbed27d31beeb98f9f84f997a1ab0b9",key:"mythos",name:"Mythos",parachainId:3369,ss58Format:29972,usesH160Acc:!0,ws:"wss://mythos-rpc.dmarket.com"});import{ChainEcosystem as Yr,Parachain as Zr,SubstrateBalanceType as ei}from"@galacticcouncil/xc-core";var Nt=new Zr({assetsData:[{asset:Ge,xcmLocation:{parents:0,interior:{X1:{PalletInstance:10}}}}],balance:ei.System,ecosystem:Yr.Polkadot,explorer:"https://neuroweb.subscan.io",genesisHash:"0xe7e0962324a3b86c83404dbea483f25fb5dab4c224791c81b756cfc948006174",key:"neuroweb",name:"Neuroweb",parachainId:2043,ss58Format:101,ws:"wss://parachain-rpc.origin-trail.network"});import{ChainEcosystem as ti,Parachain as ni,XcmVersion as si,SubstrateBalanceType as oi}from"@galacticcouncil/xc-core";var Vt=new ni({assetsData:[{asset:_e,id:"Native",xcmLocation:{parents:0,interior:{X1:{PalletInstance:10}}}}],balance:oi.System,ecosystem:ti.Polkadot,explorer:"https://pendulum.subscan.io",genesisHash:"0x5d3c298622d5634ed019bf61ea4b71655030015bde9beb0d6a24743714462c86",key:"pendulum",name:"Pendulum",parachainId:2094,ss58Format:56,ws:"wss://rpc-pendulum.prd.pendulumchain.tech",xcmVersion:si.v3});import{ChainEcosystem as ai,Parachain as ri,SubstrateBalanceType as ii}from"@galacticcouncil/xc-core";var ci={assetsData:[{asset:x,xcmLocation:{parents:0,interior:"Here"}}],balance:ii.System,ecosystem:ai.Polkadot,explorer:"https://polkadot.subscan.io",genesisHash:"0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3",name:"Polkadot",parachainId:0,ss58Format:0,treasury:"13UVJyLnbVp9RBZYFwFGyDvVd1y27Tt8tkntv6Q7JVPhFsTB",usesDeliveryFee:!0,ws:"wss://polkadot-rpc.n.dwellir.com"},to=new ri({...ci,key:"polkadot"});import{ChainEcosystem as mi,Parachain as ui,SubstrateBalanceType as di}from"@galacticcouncil/xc-core";var Ht=new ui({assetsData:[{asset:Ue,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:di.System,ecosystem:mi.Polkadot,explorer:"https://unique.subscan.io",genesisHash:"0x84322d9cddbf35088f1e54e9a85c967a41a56a4f43445768125e61af166c7d31",key:"unique",name:"Unique network",parachainId:2037,ss58Format:7391,ws:"wss://ws.unique.network"});import{ChainEcosystem as li,Parachain as fi,XcmVersion as pi,SubstrateBalanceType as hi}from"@galacticcouncil/xc-core";var Mt=new fi({assetsData:[{asset:Ce,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:hi.System,ecosystem:li.Polkadot,explorer:"https://energywebx.subscan.io",genesisHash:"0x5a51e04b88a4784d205091aa7bada002f3e5da3045e5b05655ee4db2589c33b5",key:"energywebx",name:"Energy Web X",parachainId:3345,ss58Format:42,ws:"wss://wnp-rpc.mainnet.energywebx.com",xcmVersion:pi.v3});var no=[_,ft,Y,R,h,Nt,pt,Vt,to,Ht,Mt];import{ChainEcosystem as gi,SolanaChain as yi,SolanaBalanceType as so}from"@galacticcouncil/xc-core";var qe=new yi({id:101,key:"solana",name:"Solana",assetsData:[{asset:le,decimals:9},{asset:Lt,id:"So11111111111111111111111111111111111111112",decimals:9},{asset:we,id:"J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",decimals:9},{asset:Ee,id:"3b8X44fLF9ooXaUm3hhSgjpmVs6rZZ3pPoGnGahc3Uu7",decimals:6}],balance:so.Token,balanceOverrides:{[le.key]:so.Native},ecosystem:gi.Solana,explorer:"https://explorer.solana.com/",rpcUrls:{http:["https://wispy-palpable-market.solana-mainnet.quiknode.pro"],webSocket:["wss://wispy-palpable-market.solana-mainnet.quiknode.pro"]},wormhole:{id:1,coreBridge:"worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth",ntt:{[le.key]:{token:"So11111111111111111111111111111111111111112",manager:"DiGxk55uAQNVzzg2FucPgdrQ4azb5SDvWQvzpzJD3o7J",transceiver:{wormhole:"5J12e7mMcbbN3VkCrUPfZp2bDHMH3t1rKvxGcwuN53wx"},emitter:"2WUYeRrK2JctBEvNVXY4mRG2ewMzhidi7L4Y5dCwqY9D"},[Lt.key]:{token:"So11111111111111111111111111111111111111112",manager:"DiGxk55uAQNVzzg2FucPgdrQ4azb5SDvWQvzpzJD3o7J",transceiver:{wormhole:"5J12e7mMcbbN3VkCrUPfZp2bDHMH3t1rKvxGcwuN53wx"},emitter:"2WUYeRrK2JctBEvNVXY4mRG2ewMzhidi7L4Y5dCwqY9D"},[we.key]:{token:"J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",manager:"9HFvXujdkXubvmf93gyzkH1g3VPowDrmp85sWsfdcBTh",transceiver:{wormhole:"HgxvrPomT84AxgxknddAcC1iW9ysqHxmeoiKNZmQcovs"},emitter:"9Ss1eMHE8iDv9kCxERH5nabp9tx75AVoUWWEKaGgMrh9"},[Ee.key]:{token:"3b8X44fLF9ooXaUm3hhSgjpmVs6rZZ3pPoGnGahc3Uu7",manager:"4T5m5NtRVewiCVzP2mnfeUoMYRqncfkrS21X2dhVCNRT",transceiver:{wormhole:"GiTY93vtrK4jZZchrxdV9r28JByRs7Ary2rsTPyPabJc"},emitter:"HuvSXe6hQaSMgo5dc8GYzavcS3aB4Bix9XYgVdfsq2sY"}},platformAddressFormat:"base58"}});var oo=[qe];import{ChainEcosystem as bi,SuiChain as xi,SuiBalanceType as Ai}from"@galacticcouncil/xc-core";var Tt=new xi({id:"0x35834a8a",key:"sui",name:"Sui",assetsData:[{asset:fe,decimals:9}],balance:Ai.Native,ecosystem:bi.Sui,explorer:"https://suiscan.xyz/",rpc:"https://rpc-mainnet.suiscan.xyz",wormhole:{id:21,coreBridge:"0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c",ntt:{[fe.key]:{token:"0x2::sui::SUI",manager:"0xa0bc45e0384140dc125f273eda89cad1434f5dee430726cf6364bdcceba1e9a3",transceiver:{wormhole:"0x6afb4a6a9c4e5b6eeed568381ce95a79590f0c17ab8d0c59295826f2775bf832"},emitter:"0x25437da9f99dfab32c1a275663f51cd5c99eb867ab4d1f630e3799c5e68215da"}}}});var ao=[Tt];import{ChainEcosystem as wi,Parachain as Ci,SubstrateBalanceType as Yn,SubstrateMinType as Ei}from"@galacticcouncil/xc-core";var Ke=new Ci({assetsData:[{asset:T,decimals:12,id:0,xcmLocation:{parents:1,interior:"Here"}},{asset:x,decimals:10,min:.001,xcmLocation:{parents:2,interior:{X1:[{GlobalConsensus:"Polkadot"}]}}},{asset:y,decimals:6,id:1984,xcmLocation:{parents:1,interior:{X2:[{PalletInstance:50},{GeneralIndex:1984}]}}}],balance:Yn.Assets,balanceOverrides:{[T.key]:Yn.System,[x.key]:Yn.ForeignAssets},min:Ei.Assets,ecosystem:wi.Kusama,explorer:"https://assethub-kusama.subscan.io",genesisHash:"0x48239ef607d7928874027a43a67689209727dfb3d3dc5e5b03a39bdc2eda771a",key:"assethub_kusama",name:"AssetHub Kusama",parachainId:1e3,ss58Format:2,treasury:"HWZmQq6zMMk7TxixHfseFT2ewicT6UofPa68VCn3gkXrdJF",usesDeliveryFee:!0,ws:"wss://asset-hub-kusama-rpc.n.dwellir.com"});import{ChainEcosystem as vi,Parachain as ki,SubstrateBalanceType as Ti}from"@galacticcouncil/xc-core";var Wt=new ki({assetsData:[{asset:jn,id:0,xcmLocation:{parents:0,interior:"Here"}},{asset:T,decimals:12,id:1,xcmLocation:{parents:1,interior:"Here"}},{asset:y,decimals:6,id:14,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}}],balance:Ti.Tokens,ecosystem:vi.Kusama,explorer:"https://basilisk.subscan.io",genesisHash:"0xa85cfb9b9fd4d622a5b28289a02347af987d8f73fa3108450e2b4a11c1ce5755",key:"basilisk",name:"Basilisk",parachainId:2090,ss58Format:10041,ws:"wss://basilisk-rpc.n.dwellir.com"});var ro=[Ke,Wt];var Pi=[...js,...no,...oo,...ao,...ro],_i=new Map(Pi.map(t=>[t.key,t]));import{ChainRoutes as Dm}from"@galacticcouncil/xc-core";import{AssetRoute as Ls}from"@galacticcouncil/xc-core";var La={};Jt(La,{ContractBuilder:()=>z,ExtrinsicBuilder:()=>f,ExtrinsicDecorator:()=>ut,FeeAmountBuilder:()=>P,FeeAssetBuilder:()=>an,MoveBuilder:()=>Xs,ProgramBuilder:()=>Rs,XcmTransferType:()=>Fe,XcmVersion:()=>mt});import{Abi as io,ContractConfig as Bi,Precompile as Si}from"@galacticcouncil/xc-core";import{encodeFunctionData as Fi}from"viem";var Ii=t=>({build:async e=>{let s=(await Promise.all(t.map(i=>i.build(e)))).flat(),o=s.map(i=>i.address),a=[0,0],r=s.map(i=>Fi({abi:io[i.module],functionName:i.func,args:i.args}));return[new Bi({abi:io.Batch,address:Si.Batch,args:[o,a,r,[]],func:"batchAll",module:"Batch"})]}}),co=()=>({batchAll:Ii});import{Abi as Di,ContractConfig as Xi,Wormhole as Ri}from"@galacticcouncil/xc-core";function U(t,e){if(e<0||e>100)throw Error(`padPercent ${e} not in range of 0 to 100.`);return t+t*e/100n}function Pt(t){return typeof t=="object"?Object.values(t)[0]:t}function mo(){return{approve:t=>({build:async e=>{let{amount:n,asset:s,source:o}=e,a=o.chain,r=Ri.fromChain(a),i=a.getAssetId(s);return[new Xi({abi:Di.Erc20,address:Pt(i).toString(),args:[t(r),n],func:"approve",module:"Erc20"})]}})}}import{Abi as Li,Basejump as Ni,ContractConfig as Vi}from"@galacticcouncil/xc-core";import{h160 as Hi}from"@galacticcouncil/common";import{AccountId as Mi}from"polkadot-api";import{toHex as Wi}from"@polkadot-api/utils";var{H160:Oi,isEvmAddress:Gi}=Hi;function Ui(t){let e=Gi(t)?Oi.toAccount(t):t;return Wi(Mi().enc(e))}var qi=()=>({build:async t=>{let{address:e,amount:n,asset:s,source:o}=t,a=o.chain,r=Ni.fromChain(a),i=a.getAssetId(s);return[new Vi({abi:Li.Basejump,address:r.getAddress(),args:[Pt(i),n,Ui(e)],func:"bridgeViaWormhole",module:"Basejump"})]}}),uo=()=>({bridgeViaWormhole:qi});import{addr as Ki,Abi as lo,ContractConfig as fo,Precompile as po}from"@galacticcouncil/xc-core";import{big as zi}from"@galacticcouncil/common";var{Ss58Addr:ho}=Ki;function ji(t){if(t.startsWith("0x"))return t;if(!/^\d{38,39}$/.test(t))throw new Error(`Asset id: ${t} must be a string and have 38-39 digits`);return`0xffffffff${BigInt(t).toString(16).padStart(32,"0")}`}function Zn(t,e){let n=t.getAssetId(e);return typeof n=="string"?ji(n):n}function go(){return{transferAssetsToPara32:()=>({build:async({address:t,amount:e,asset:n,destination:s,source:o})=>{let a=Zn(o.chain,n);return[new fo({abi:lo.PolkadotXcm,address:po.PolkadotXcm,args:[s.chain.parachainId,ho.getPubKey(t),[{asset:a,amount:e}],0],func:"transferAssetsToPara32",module:"PolkadotXcm"})]}}),transferAssetsToPara32WithFee:()=>({build:async({address:t,amount:e,asset:n,destination:s,source:o})=>{let a=Zn(o.chain,n),r=Zn(o.chain,o.destinationFeeBalance),i=zi.toBigInt(s.fee.amount,s.fee.decimals);return[new fo({abi:lo.PolkadotXcm,address:po.PolkadotXcm,args:[s.chain.parachainId,ho.getPubKey(t),[{asset:a,amount:e},{asset:r,amount:i}],1],func:"transferAssetsToPara32",module:"PolkadotXcm"})]}})}}import{addr as tc,Abi as Eo,ContractConfig as vo,Snowbridge as ko}from"@galacticcouncil/xc-core";import{XcmV5Junctions as nc,XcmV5Junction as sc,XcmVersionedXcm as oc,XcmVersionedLocation as ac}from"@galacticcouncil/descriptors";import{Blake2256 as rc}from"@polkadot-api/substrate-bindings";import{toHex as as}from"@polkadot-api/utils";import{encodeAbiParameters as ic}from"viem";import{codec as $i}from"@galacticcouncil/xc-core";var pn=null;async function yo(){if(pn)return pn;let t=await $i.getHubCodecs();return pn={message:t.tx.PolkadotXcm.send.inner.message,location:t.tx.PolkadotXcm.send.inner.dest},pn}import{multiloc as Qi}from"@galacticcouncil/xc-core";import{XcmV3MultiassetFungibility as be,XcmV5AssetFilter as Z,XcmV5Instruction as S,XcmV5Junctions as gt,XcmV5Junction as tt,XcmV5NetworkId as es,XcmV5WildAsset as et,XcmVersionedXcm as Yi}from"@galacticcouncil/descriptors";import{getSs58AddressInfo as Zi}from"@polkadot-api/substrate-bindings";import{toHex as ec}from"@polkadot-api/utils";import{XcmV3Junctions as Ji}from"@galacticcouncil/descriptors";var q=340282366920938463463374607431768211455n,ze="0x0000000000000000000000000000000000000000000000000000000000000000",M={parents:1,interior:Ji.Here()},bo=0,ht=1e3,hn=1002,Xe=1,_t="5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY",xo="0x0000000000000000000000000000000000000000000000000000000000000000",Ao="0x0000000000000000000000000000000000000000";var ts="0x0000000000000000000000000000000000000000",Ot=t=>({parents:2,interior:gt.X1(tt.GlobalConsensus(es.Ethereum({chain_id:BigInt(t)})))}),ns=(t,e)=>({parents:2,interior:gt.X2([tt.GlobalConsensus(es.Ethereum({chain_id:BigInt(t)})),tt.AccountKey20({key:e,network:void 0})])});function wo(t,e){let n=Ot(t),s=ns(t,"0x"+"00".repeat(20)),o=1000000000000n,a=1000000000n,r=[S.ReserveAssetDeposited([{id:n,fun:be.Fungible(o)},{id:s,fun:be.Fungible(o)}]),S.ExchangeAsset({give:Z.Wild(et.AllOf({id:n,fun:{type:"Fungible",value:void 0}})),want:[{id:M,fun:be.Fungible(a)}],maximal:!1}),S.PayFees({asset:{id:M,fun:be.Fungible(a)}})],i=ss({ethChainId:t,destinationParaId:e,tokenAddress:"0x"+"00".repeat(20),beneficiaryHex:"0x"+"00".repeat(32),tokenAmount:o,hydrationDotFee:a,topic:"0x"+"00".repeat(32)});return[...r,...i]}function ss(t){let{ethChainId:e,destinationParaId:n,tokenAddress:s,beneficiaryHex:o,tokenAmount:a,hydrationDotFee:r,topic:i}=t,c=Ot(e),m=s===ts?c:ns(e,s),u=o.length===42&&o.startsWith("0x")?tt.AccountKey20({key:o,network:void 0}):tt.AccountId32({id:o,network:void 0}),l={parents:0,interior:gt.X1(u)};return[S.SetAppendix([S.RefundSurplus(),S.DepositAsset({assets:Z.Wild(et.All()),beneficiary:l})]),S.ExchangeAsset({give:Z.Wild(et.AllOf({id:c,fun:{type:"Fungible",value:void 0}})),want:[{id:M,fun:be.Fungible(r)}],maximal:!1}),S.InitiateTransfer({destination:{parents:1,interior:gt.X1(tt.Parachain(n))},remote_fees:{type:"ReserveDeposit",value:Z.Definite([{id:M,fun:be.Fungible(r)}])},preserve_origin:!1,assets:[{type:"ReserveDeposit",value:Z.Definite([{id:m,fun:be.Fungible(a)}])}],remote_xcm:[S.DepositAsset({assets:Z.Wild(et.AllCounted(3)),beneficiary:l}),S.SetTopic(i)]}),S.RefundSurplus(),S.DepositAsset({assets:Z.Wild(et.All()),beneficiary:l}),S.SetTopic(i)]}function os(t){let{tokenAddress:e,senderPubKey:n,beneficiaryHex:s,tokenAmount:o,sourceExecutionFee:a,dotRemoteFee:r,dotToEtherSwapAmount:i,etherFeeAmount:c,topic:m}=t,d=Ot(Xe),u=e===ts?d:ns(Xe,e),l={parents:0,interior:gt.X1(tt.AccountId32({id:n,network:void 0}))},p={parents:0,interior:gt.X1(tt.AccountKey20({key:s,network:void 0}))},g={parents:2,interior:gt.X1(tt.GlobalConsensus(es.Ethereum({chain_id:BigInt(Xe)})))},w=[S.DepositAsset({assets:Z.Wild(et.AllCounted(3)),beneficiary:p}),S.SetTopic(m)],B=[S.SetAppendix([S.SetHints({hints:[{type:"AssetClaimer",value:{location:l}}]}),S.RefundSurplus(),S.DepositAsset({assets:Z.Wild(et.All()),beneficiary:l})])];B.push(S.ExchangeAsset({give:Z.Definite([{id:M,fun:be.Fungible(i)}]),want:[{id:d,fun:be.Fungible(c)}],maximal:!1}));let v=[{type:"ReserveWithdraw",value:Z.Wild(et.AllOf({id:u,fun:{type:"Fungible",value:void 0}}))}],V=Z.Definite([{id:d,fun:be.Fungible(c)}]);B.push(S.InitiateTransfer({destination:g,remote_fees:{type:"ReserveWithdraw",value:V},preserve_origin:!0,assets:v,remote_xcm:w}),S.SetTopic(m));let D=a+r+i,H=[{id:M,fun:be.Fungible(D)},{id:u,fun:be.Fungible(o)}],K=[{id:M,fun:be.Fungible(a)}],C={type:"ReserveWithdraw",value:Z.Wild(et.AllOf({id:u,fun:{type:"Fungible",value:void 0}}))},Me=[{type:"ReserveWithdraw",value:Z.Definite([{id:M,fun:be.Fungible(i)}])},C];return[S.WithdrawAsset(H),S.PayFees({asset:K[0]}),S.SetAppendix([S.SetHints({hints:[{type:"AssetClaimer",value:{location:l}}]}),S.RefundSurplus(),S.DepositAsset({assets:Z.Wild(et.All()),beneficiary:l})]),S.InitiateTransfer({destination:{parents:1,interior:gt.X1(tt.Parachain(ht))},remote_fees:{type:"ReserveWithdraw",value:Z.Definite([{id:M,fun:be.Fungible(r)}])},preserve_origin:!0,assets:Me,remote_xcm:B}),S.SetTopic(m)]}function Co(t){let{address:e,amount:n,asset:s,sender:o,source:a,destination:r,messageId:i}=t,c=a.chain,m=Zi(o);if(!m.isValid)throw new Error(`Invalid SS58 address: ${o}`);let d=ec(m.publicKey),u=c.getAssetXcmLocation(s),l=u?Qi.findNestedKey(u,"key"):void 0,p=l?l.key:ts,g=r.feeBreakdown,w=g.sourceExecutionFee??0n,B=g.dotRemoteFee??0n,v=g.dotToEtherSwapAmount??0n,V=g.etherFeeAmount??0n,H=os({tokenAddress:p,senderPubKey:d,beneficiaryHex:e,tokenAmount:n,sourceExecutionFee:w,dotRemoteFee:B,dotToEtherSwapAmount:v,etherFeeAmount:V,topic:i??"0x0000000000000000000000000000000000000000000000000000000000000000"});return Yi.V5(H)}var{Ss58Addr:To}=tc,cc="0x0000000000000000000000000000000000000000",mc=()=>({build:async t=>{let{address:e,amount:n,asset:s,sender:o,source:a,destination:r}=t,i=a.chain,c=r.chain,m=ko.fromChain(i),d=i.getAssetId(s),u=Pt(d),l=s.originSymbol==="ETH",p=r.feeBreakdown.executionFee,g=r.feeBreakdown.relayerFee,w=r.feeBreakdown.hydrationDotFee,B=r.fee.amount,v=To.getPubKey(e),V=new TextEncoder().encode(`${c.parachainId}${o}${u}${v}${n}${Date.now()}`),D=as(rc(V)),H=ss({ethChainId:Xe,destinationParaId:c.parachainId,tokenAddress:l?cc:u,beneficiaryHex:v,tokenAmount:n,hydrationDotFee:w,topic:D}),K=await yo(),C=as(K.message.enc(oc.V5(H))),Me=[];l||Me.push(ic([{type:"uint8"},{type:"address"},{type:"uint128"}],[0,u,n]));let st=K.location.enc(ac.V5({parents:0,interior:nc.X1(sc.AccountId32({id:v,network:void 0}))})),dt=as(st.slice(1));return[new vo({abi:Eo.Snowbridge,address:m.getGateway(),args:[C,Me,dt,p,g],value:l?B+n:B,func:"v2_sendMessage",module:"Snowbridge"})]}}),uc=()=>({build:async t=>{let{address:e,amount:n,asset:s,source:o,destination:a}=t,r=o.chain,i=a.chain,c=ko.fromChain(r),m=r.getAssetId(s),d=Pt(m),u=s.originSymbol==="ETH",l=a.feeBreakdown.bridgeFeeInDot,p=a.fee.amount;return[new vo({abi:Eo.Snowbridge,address:c.getGateway(),args:[d,i.parachainId,[1,To.getPubKey(e)],l,n],value:u?p+n:p,func:"sendToken",module:"Snowbridge"})]}}),Po=()=>({v2SendMessage:mc,sendToken:uc});import{Abi as Ut,ContractConfig as bn,EvmBalanceType as Jc,EvmParachain as us,Ntt as Wo,Wormhole as ds}from"@galacticcouncil/xc-core";import{encoding as _o,serializeLayout as dc}from"@wormhole-foundation/sdk-base";import{RequestPrefix as lc,UniversalAddress as fc}from"@wormhole-foundation/sdk-definitions";var Qt="0x00",rs=8,Bo="https://executor.labsapis.com",pc=[{name:"prefix",binary:"bytes",size:4},{name:"srcChain",binary:"uint",size:2},{name:"srcManager",binary:"bytes",size:32},{name:"messageId",binary:"uint",size:32}],So=(t,e,n)=>{let s=dc(pc,{prefix:_o.bytes.encode(lc.ERN1),srcChain:t,srcManager:new fc(e,"hex").toUint8Array(),messageId:n});return _o.hex.encode(s,!0)};var Mo={};Jt(Mo,{ASSET_LOCKDOWN_PERIOD_BLOCKS:()=>Do,AssethubClient:()=>ke,BaseClient:()=>Re,ExecutorClient:()=>yn,HydrationClient:()=>xe,NttEvmClient:()=>Zt,NttSolanaClient:()=>tn,NttSuiClient:()=>nn,UNMETERED:()=>it,capacityAt:()=>Yt,executorClient:()=>Gt,getAllAssetDepositLimits:()=>cs,getAssetDepositLimit:()=>is,getGlobalWithdrawLimit:()=>ms,nttClient:()=>ct,nttDef:()=>yt});import{encodeLocation as Fo}from"@galacticcouncil/common";import{hub as hc,XcmVersionedAssetId as Io}from"@galacticcouncil/descriptors";var Re=class{chain;descriptor;constructor(e,n){this.chain=e,this.descriptor=n??hc}get client(){return this.chain.client}api(){return this.client.getTypedApi(this.descriptor)}get refApi(){return this.api()}async getSystemAccountBalance(e){let s=(await this.refApi.query.System.Account.getValue(e)).data,{free:o,frozen:a}=s;return BigInt(o)-BigInt(a)}async calculateDestinationFee(e,n){let s=await this.refApi.apis.XcmPaymentApi.query_xcm_weight({type:"V4",value:e});if(!s.success)throw Error("Can't query XCM weight.");let o=this.chain.getAssetXcmLocation(n);if(!o)throw Error(`Can't get XCM location for asset ${n.originSymbol}`);let a=Fo(o),r=await this.refApi.apis.XcmPaymentApi.query_weight_to_asset_fee(s.value,Io.V4(a));if(!r.success)throw Error(`Can't convert weight to fee in ${n.originSymbol}`);return BigInt(r.value)}async calculateDestinationFeeV5(e,n){let s=await this.refApi.apis.XcmPaymentApi.query_xcm_weight({type:"V5",value:e});if(!s.success)throw Error("Can't query XCM weight (V5).");let o=this.chain.getAssetXcmLocation(n);if(!o)throw Error(`Can't get XCM location for asset ${n.originSymbol}`);let a=Fo(o),r=await this.refApi.apis.XcmPaymentApi.query_weight_to_asset_fee(s.value,Io.V4(a));if(!r.success)throw Error(`Can't convert weight to fee in ${n.originSymbol}`);return BigInt(r.value)}};import{XcmV5Junctions as gn,XcmV5Junction as gc,XcmVersionedLocation as yc,XcmVersionedXcm as bc,XcmVersionedAssetId as xc}from"@galacticcouncil/descriptors";import{encodeLocation as Ac}from"@galacticcouncil/common";import{Twox128 as wc,u128 as Cc}from"@polkadot-api/substrate-bindings";import{toHex as Ec}from"@polkadot-api/utils";var ke=class extends Re{constructor(e){super(e)}async checkIfSufficient(e){let n=this.chain.getAssetId(e),s=this.chain.getAssetXcmLocation(e),o=Ac(s);if(n===0)return!0;let a=n===e.originSymbol?await this.api().query.ForeignAssets.Asset.getValue(o):await this.api().query.Assets.Asset.getValue(Number(n));return a&&a.is_sufficient||!1}async checkIfFrozen(e,n){let s=this.chain.getAssetId(n);if(s===n.originSymbol)return!1;let o=await this.api().query.Assets.Account.getValue(Number(s),e);return o&&o.status.type==="Frozen"||!1}async getBridgeDeliveryFee(e={defaultFee:150000000000n}){return this.readBridgeBaseFee(":BridgeHubEthereumBaseFeeV2:",e.defaultFee)}async getBridgeDeliveryFeeV1(e={defaultFee:2750872500000n}){return this.readBridgeBaseFee(":BridgeHubEthereumBaseFee:",e.defaultFee)}async readBridgeBaseFee(e,n){let s=new TextEncoder().encode(e),o=Ec(wc(s)),a=await this.client._request("state_getStorage",[o]);if(!a)return n;let r=Cc.dec(a);return r===0n?n:r}async calculateDeliveryFee(e,n){let s=yc.V5({parents:1,interior:gn.X1(gc.Parachain(n))}),o=xc.V5({parents:1,interior:{type:"Here",value:void 0}}),a=await this.api().apis.XcmPaymentApi.query_delivery_fees(s,bc.V4(e),o);if(!a.success)throw Error("Can't query XCM delivery fee.");let r=a.value.value.find(c=>{let m=c.id;return m&&m.parents&&m.parents===1&&m.interior.type==="Here"});if(!r)throw Error("Can't find XCM delivery fee in DOT.");let i=r.fun.value;if(typeof i=="bigint")return i;throw Error("Can't parse delivery fee.")}async quoteDotToEther(e,n){let s={parents:1,interior:gn.Here()},o=await this.api().apis.AssetConversionApi.quote_price_exact_tokens_for_tokens(s,e,n,!0);if(o===void 0)throw Error("Can't quote DOT to Ether conversion.");return o}async quoteEtherForDot(e,n){let s={parents:1,interior:gn.Here()},o=await this.api().apis.AssetConversionApi.quote_price_tokens_for_exact_tokens(e,s,n,!0);if(o===void 0)throw Error("Can't quote Ether for DOT conversion.");return o}async quoteDotForExactEther(e,n){let s={parents:1,interior:gn.Here()},o=await this.api().apis.AssetConversionApi.quote_price_tokens_for_exact_tokens(s,e,n,!0);if(o===void 0)throw Error("Can't quote DOT for Ether conversion.");return o}};import{hydration as vc}from"@galacticcouncil/descriptors";var Do=14400;function Xo(t,e,n,s,o,a){let r=e?.xcm_rate_limit!=null?BigInt(e.xcm_rate_limit):null,i=e?.symbol?new TextDecoder().decode(e.symbol):`#${t}`,c=e?.decimals??12,m=!1,d,u,l;n&&(n.type==="Locked"?(d=n.value,m=o<n.value):(u=n.value[0],l=n.value[1]));let p=s?.type==="Local"?"Local":"External",g=!m&&u!==void 0&&u+Do<=o,w=null;if(r!==null)if(m)w=0n;else if(g)w=r;else{let B=l??a,v=a>B?a-B:0n;w=r>v?r-v:0n}return{assetId:t,symbol:i,decimals:c,limit:r,locked:m,lockedUntilBlock:d,lastResetBlock:u,baselineIssuance:l,currentIssuance:a,headroom:w,category:p,periodExpired:g}}async function is(t,e){let n=e===0?t.query.Balances.TotalIssuance.getValue({at:"best"}):t.query.Tokens.TotalIssuance.getValue(e,{at:"best"}),[s,o,a,r,i]=await Promise.all([t.query.AssetRegistry.Assets.getValue(e,{at:"best"}),t.query.CircuitBreaker.AssetLockdownState.getValue(e,{at:"best"}),t.query.CircuitBreaker.GlobalAssetOverrides.getValue(e,{at:"best"}),t.query.System.Number.getValue({at:"best"}),n]);return Xo(e,s,o,a,r,i)}async function cs(t){let[e,n,s,o,a,r]=await Promise.all([t.query.AssetRegistry.Assets.getEntries({at:"best"}),t.query.CircuitBreaker.AssetLockdownState.getEntries({at:"best"}),t.query.CircuitBreaker.GlobalAssetOverrides.getEntries({at:"best"}),t.query.System.Number.getValue({at:"best"}),t.query.Balances.TotalIssuance.getValue({at:"best"}),t.query.Tokens.TotalIssuance.getEntries({at:"best"})]),i=new Map(n.map(u=>[u.keyArgs[0],u.value])),c=new Map(s.map(u=>[u.keyArgs[0],u.value])),m=new Map(r.map(u=>[u.keyArgs[0],u.value])),d=new Map;for(let u of e){let l=u.keyArgs[0],p=u.value;if(p?.xcm_rate_limit==null)continue;let g=l===0?a:m.get(l)??0n,w=Xo(l,p,i.get(l),c.get(l),o,g);d.set(l.toString(),w)}return d}async function ms(t){let[e,n,s,o]=await Promise.all([t.query.CircuitBreaker.GlobalWithdrawLimitConfig.getValue({at:"best"}),t.query.CircuitBreaker.WithdrawLimitAccumulator.getValue({at:"best"}),t.query.CircuitBreaker.WithdrawLockdownUntil.getValue({at:"best"}),t.query.Timestamp.Now.getValue({at:"best"})]),a=s??void 0,r=a!==void 0&&o<a,[i,c]=n;if(!e)return{configured:!1,limit:0n,windowMs:0n,used:0n,lastUpdateMs:c,headroom:0n,lockdown:r,lockdownUntilMs:a};let{limit:m,window:d}=e,u=i;if(!r&&d>0n){let p=o>c?o-c:0n;if(p>0n){let g=p>d?d:p,w=i*g/d;u=i>w?i-w:0n}}let l=r||u>=m?0n:m-u;return{configured:!0,limit:m,windowMs:d,used:u,lastUpdateMs:c,headroom:l,lockdown:r,lockdownUntilMs:a}}var xe=class extends Re{constructor(e){super(e,vc)}async checkIfSufficient(e){let n=this.chain.getAssetId(e),s=Number(n),o=await this.api().query.AssetRegistry.Assets.getValue(s);return o?o.is_sufficient||!1:!0}async getFeeAsset(e){let n=await this.api().query.MultiTransactionPayment.AccountCurrencyMap.getValue(e);return n?n.toString():"0"}async getAssetBalance(e,n){return n==="0"?this.getSystemAccountBalance(e):this.getTokensAccountsBalance(e,n)}async getSystemAccountBalance(e){let s=(await this.api().query.System.Account.getValue(e)).data,{free:o,frozen:a}=s;return BigInt(o)-BigInt(a)}async getTokensAccountsBalance(e,n){let s=Number(n),o=await this.api().query.Tokens.Accounts.getValue(e,s),{free:a,frozen:r}=o;return BigInt(a)-BigInt(r)}getAssetDepositLimit(e){let n=typeof e=="number"?e:Number(this.chain.getAssetId(e));return is(this.api(),n)}getAllAssetDepositLimits(){return cs(this.api())}getGlobalWithdrawLimit(){return ms(this.api())}};import{SolanaChain as Oc,SuiChain as Gc}from"@galacticcouncil/xc-core";import{Abi as Tc,Wormhole as Pc}from"@galacticcouncil/xc-core";import{big as _c}from"@galacticcouncil/common";import{Ntt as kc}from"@galacticcouncil/xc-core";var it={capacity:0n,limit:0n,windowMs:0,capacityAtLastTx:0n,lastTxMs:0};function yt(t,e){if(!e)throw new Error("No ntt asset given for "+t.name+".");return kc.fromChain(t,e)}function Yt(t,e,n,s,o){let a=s>n?s-n:0n,r=e+t*a/o;return r<t?r:t}var Bc=500000n;function Ro(t,e){let n=t>>8n,s=Number(t&0xffn);return n*_c.pow10(e-s)}var Zt=class{constructor(e,n){this.chain=e;this.asset=n}getOutboundLimit(){return this.getLimit()}getInboundLimit(e){return this.getLimit(Pc.fromChain(e).getWormholeId())}async getRedeemBudget(){return{gasLimit:Bc,msgValue:0n}}async getLimit(e){let n=this.chain.evmClient.getProvider(),s=Tc.NttManager,o=yt(this.chain,this.asset).manager,[a,r,i,c]=await Promise.all([n.readContract({abi:s,address:o,functionName:"rateLimitDuration"}),n.readContract({abi:s,address:o,functionName:"tokenDecimals"}),e===void 0?n.readContract({abi:s,address:o,functionName:"getCurrentOutboundCapacity"}):n.readContract({abi:s,address:o,functionName:"getCurrentInboundCapacity",args:[e]}),e===void 0?n.readContract({abi:s,address:o,functionName:"getOutboundLimitParams"}):n.readContract({abi:s,address:o,functionName:"getInboundLimitParams",args:[e]})]);return a===0n?it:{capacity:i,limit:Ro(c.limit,r),windowMs:Number(a)*1e3,capacityAtLastTx:Ro(c.currentCapacity,r),lastTxMs:Number(c.lastTxTimestamp)*1e3}}};import{spl as Sc,Wormhole as Fc}from"@galacticcouncil/xc-core";import{getMinimumBalanceForRentExemptAccount as Ic}from"@solana/spl-token";import{PublicKey as en}from"@solana/web3.js";var Dc=250000n,Xc=10000000n,Rc=2039280n,Lo=3600*24,Lc=8,Nc=9;function Vc(t,e){let n=new DataView(t.buffer,t.byteOffset,t.byteLength);return{limit:n.getBigUint64(e,!0),capacityAtLastTx:n.getBigUint64(e+8,!0),lastTxTimestamp:n.getBigInt64(e+16,!0)}}var tn=class{constructor(e,n){this.chain=e;this.asset=n}getOutboundLimit(){return this.getLimit()}getInboundLimit(e){return this.getLimit(Fc.fromChain(e).getWormholeId())}async getRedeemBudget(e){let{connection:n}=this.chain,s={gasLimit:Dc,msgValue:Xc};if(!this.asset||!e)return{...s,msgValue:s.msgValue+Rc};let o=new en(yt(this.chain,this.asset).token),{ata:a}=await Sc.getTokenAccount(n,o,new en(e));if(await n.getAccountInfo(a))return s;let i=await Ic(n);return{...s,msgValue:s.msgValue+BigInt(i)}}async getLimit(e){let{pda:n,offset:s}=this.rateLimitPda(e),o=await this.chain.connection.getAccountInfo(n);if(!o)return it;let{limit:a,capacityAtLastTx:r,lastTxTimestamp:i}=Vc(o.data,s),c=BigInt(Math.floor(Date.now()/1e3));return{capacity:Yt(a,r,i,c,BigInt(Lo)),limit:a,windowMs:Lo*1e3,capacityAtLastTx:r,lastTxMs:Number(i)*1e3}}rateLimitPda(e){let n=new en(yt(this.chain,this.asset).manager),s=new TextEncoder;if(e===void 0){let[r]=en.findProgramAddressSync([s.encode("outbox_rate_limit")],n);return{pda:r,offset:Lc}}let o=new Uint8Array(2);new DataView(o.buffer).setUint16(0,e,!1);let[a]=en.findProgramAddressSync([s.encode("inbox_rate_limit"),o],n);return{pda:a,offset:Nc}}};import{suiPkg as Hc,Wormhole as Mc}from"@galacticcouncil/xc-core";var Wc=10000000n,No=3600*24*1e3;function Vo(t){let e=BigInt(t.limit),n=BigInt(t.capacity_at_last_tx),s=BigInt(t.last_tx_timestamp),o=BigInt(Date.now());return{capacity:Yt(e,n,s,o,BigInt(No)),limit:e,windowMs:No,capacityAtLastTx:n,lastTxMs:Number(s)}}var nn=class{constructor(e,n){this.chain=e;this.asset=n}getOutboundLimit(){return this.getLimit()}getInboundLimit(e){return this.getLimit(Mc.fromChain(e).getWormholeId())}async getRedeemBudget(){return{gasLimit:Wc,msgValue:0n}}async getLimit(e){let n=this.chain.client,s=yt(this.chain,this.asset).manager,o=await Hc.getObject(n,s);if(e===void 0){let m=o.fields.outbox?.fields?.rate_limit?.fields;return m?Vo(m):it}let a=o.fields.peers?.fields?.id?.id;if(!a)return it;let{data:r}=await n.getDynamicFieldObject({parentId:a,name:{type:"u16",value:e}}),c=r?.content?.fields?.value?.fields?.inbound_rate_limit?.fields;return c?Vo(c):it}};function ct(t,e){return t instanceof Oc?new tn(t,e):t instanceof Gc?new nn(t,e):new Zt(t,e)}import{deserializeLayout as Uc,encoding as Ho,serializeLayout as qc}from"@wormhole-foundation/sdk-base";import{relayInstructionsLayout as Kc,signedQuoteLayout as zc}from"@wormhole-foundation/sdk-definitions";var jc=300*1e3,$c=t=>{try{let{quote:e}=Uc(zc,Ho.hex.decode(t));return e.expiryTime.getTime()}catch{return 0}},yn=class{quotes=new Map;async quote(e,n,s){let{gasLimit:o,msgValue:a}=s,r=[e,n,o,a].join(":"),i=this.quotes.get(r);if(i&&$c(i.signedQuote)-Date.now()>jc)return i;let c=Ho.hex.encode(qc(Kc,{requests:[{request:{type:"GasInstruction",gasLimit:o,msgValue:a}}]}),!0),m=await fetch(Bo+"/v0/quote",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({srcChain:e,dstChain:n,relayInstructions:c})});if(!m.ok)throw new Error("Executor quote failed ["+e+"->"+n+"]");let{signedQuote:d,estimatedCost:u}=await m.json();if(!d||!u)throw new Error("Executor quote incomplete");let l={signedQuote:d,estimatedCost:BigInt(u),relayInstructions:c};return this.quotes.set(r,l),l}},Gt=new yn;var ls=async t=>{let{address:e,amount:n,asset:s,source:o,destination:a}=t,r=o.chain,i=a.chain,c=Wo.fromChain(r,s),m=ds.fromChain(i),d=e;i instanceof us&&(d=await i.getDerivatedAddress(e));let u=await r.evmClient.getProvider().readContract({abi:Ut.NttManager,address:c.manager,args:[m.getWormholeId(),Qt],functionName:"quoteDeliveryPrice"}),l=r.getAssetDecimals(s)??0,p=n;if(l>rs){let g=10n**BigInt(l-rs);p=n-n%g}return{ctx:r,ntt:c,rcvWh:m,rcvAddress:d,transferAmount:p,deliveryPrice:u[1],wrapNative:r.getBalanceType(s)===Jc.Native}},Qc=()=>({build:async t=>{let{ntt:e,rcvWh:n,rcvAddress:s,transferAmount:o,deliveryPrice:a,wrapNative:r}=await ls(t);return[new bn({abi:Ut.NttManager,address:e.manager,args:[o,n.getWormholeId(),n.normalizeAddress(s)],token:e.token,wrapNative:r,value:a,func:"transfer",module:"NttManager"})]}}),Yc=()=>({build:async t=>{let{ctx:e,ntt:n,rcvWh:s,rcvAddress:o,transferAmount:a,deliveryPrice:r,wrapNative:i}=await ls(t),c=ds.fromChain(e),m=c.getNttExecutor(),d=e instanceof us?await e.getDerivatedAddress(t.sender):t.sender,u=await ct(t.destination.chain,t.destination.balance).getRedeemBudget(t.address),{signedQuote:l,estimatedCost:p,relayInstructions:g}=await Gt.quote(c.getWormholeId(),s.getWormholeId(),u),w=s.normalizeAddress(o),B={value:p,refundAddress:d,signedQuote:l,instructions:g},v={transferTokenFee:0n,nativeTokenFee:0n,payee:d};return[new bn({abi:Ut.NttManagerWithExecutor,address:m,args:[n.manager,a,s.getWormholeId(),w,w,Qt,B,v],token:n.token,wrapNative:i,value:r+p,func:"transfer",module:"NttManagerWithExecutor"})]}}),Zc=()=>({build:async t=>{let{ctx:e,ntt:n,rcvWh:s,rcvAddress:o,transferAmount:a,deliveryPrice:r,wrapNative:i}=await ls(t),c=ds.fromChain(e),m=t.destination.chain,d=Wo.find(m,t.destination.balance.key);if(!d)throw new Error("Ntt deployment missing on "+m.key);let u=e instanceof us?await e.getDerivatedAddress(t.sender):t.sender,l=await ct(m,t.destination.balance).getRedeemBudget(t.address),[p,g]=await Promise.all([Gt.quote(c.getWormholeId(),s.getWormholeId(),l),e.evmClient.getProvider().readContract({abi:Ut.NttManager,address:n.manager,functionName:"nextMessageSequence"})]);return[new bn({abi:Ut.NttManager,address:n.manager,args:[a,s.getWormholeId(),s.normalizeAddress(o)],token:n.token,wrapNative:i,value:r,func:"transfer",module:"NttManager"}),new bn({abi:Ut.Executor,address:c.getExecutor(),args:[s.getWormholeId(),s.normalizeAddress(d.manager),u,p.signedQuote,So(c.getWormholeId(),n.manager,BigInt(g)),p.relayInstructions],value:p.estimatedCost,func:"requestExecution",module:"Executor"})]}}),Oo=()=>({transfer:Qc,transferWithExecutor:Yc,transferViaExecutor:Zc});function Go(){return{Ntt:Oo}}function z(){return{Batch:co,Erc20:mo,Basejump:uo,PolkadotXcm:go,Snowbridge:Po,Wormhole:Go}}import{encodeLocation as Uo}from"@galacticcouncil/common";import{ExtrinsicConfig as e0}from"@galacticcouncil/xc-core";var qo="AssetConversion",t0=t=>{let e="swap_tokens_for_exact_tokens";return{build:async({address:n,source:s})=>{let{chain:o}=s,a=s.destinationFeeSwap||s.feeSwap;if(!a)throw new Error("Swap context not found.");let{aIn:r,aOut:i}=a,c=o,m=Uo(c.getAssetXcmLocation(r)),d=Uo(c.getAssetXcmLocation(i)),u=r.amount+r.amount*BigInt(t.slippage)/100n,l=i.amount;return new e0({module:qo,func:e,getTx:p=>p.getUnsafeApi().tx[qo][e]({path:[m,d],amount_out:l,amount_in_max:u,send_to:n,keep_alive:!0})})}}},Ko=()=>({swapTokensForExactTokens:t0});import{hub as n0,MultiAddress as s0}from"@galacticcouncil/descriptors";import{ExtrinsicConfig as o0}from"@galacticcouncil/xc-core";var a0="Assets",r0=()=>{let t="transfer";return{build:async({asset:e,amount:n,address:s,destination:o})=>{let a=o.chain,{fee:r}=o,i=n>r.amount?n-r.amount:n,c=a.getMetadataAssetId(e);return new o0({module:a0,func:t,getTx:m=>m.getTypedApi(n0).tx.Assets.transfer({id:Number(c),target:s0.Id(s),amount:i})})}}},zo=()=>({transfer:r0});import{ExtrinsicConfig as i0}from"@galacticcouncil/xc-core";var jo="Balances",c0=(t=!1)=>{let e="transfer_all";return{build:async({address:n})=>new i0({module:jo,func:e,getTx:s=>s.getUnsafeApi().tx[jo][e]({dest:n,keep_alive:t})})}},$o=()=>({transferAll:c0});import{ExtrinsicConfig as m0,Gas as u0,getEvmPrerequisites as d0}from"@galacticcouncil/xc-core";import{Binary as l0}from"polkadot-api";var Jo="EVM",xn=(1n<<64n)-1n,Qo=t=>[t&xn,t>>64n&xn,t>>128n&xn,t>>192n&xn],f0=t=>({build:async e=>{let n=e.source.chain,s=n.evmClient,o=await t.build(e),[a,r]=await Promise.all([n.getDerivatedAddress(e.sender),s.getProvider().getGasPrice()]),i=r+r/10n,m=[...await d0(s,a,e.amount,o[0]),...o.map(u=>({to:u.address,data:u.encodeFunctionData(),value:u.value,gas:u0.transfer}))],d=m.length>1;return new m0({module:d?"Utility":Jo,func:d?"batch_all":"call",getTx:u=>{let l=u.getUnsafeApi(),p=m.map(g=>l.tx[Jo].call({source:a,target:g.to,input:l0.fromHex(g.data),value:Qo(g.value??0n),gas_limit:g.gas,max_fee_per_gas:Qo(i),max_priority_fee_per_gas:void 0,nonce:void 0,access_list:[],authorization_list:[]}));return d?l.tx.Utility.batch_all({calls:p.map(g=>g.decodedCall)}):p[0]}})}}),Yo=()=>({call:f0});import{hydration as p0}from"@galacticcouncil/descriptors";import{ExtrinsicConfig as h0}from"@galacticcouncil/xc-core";var g0="Router",y0=t=>({build:async({source:n})=>{let{chain:s,destinationFeeSwap:o}=n;if(!o)throw new Error("Swap context not found.");let{aIn:a,aOut:r,route:i}=o,c=s,m=c.getMetadataAssetId(a),d=c.getMetadataAssetId(r),u=r.amount,l=a.amount+a.amount*BigInt(t.slippage)/100n;return new h0({module:g0,func:"buy",getTx:p=>p.getTypedApi(p0).tx.Router.buy({asset_in:Number(m),asset_out:Number(d),amount_out:u,max_amount_in:l,route:i})})}}),Zo=()=>({buy:y0});import{ExtrinsicConfig as b0}from"@galacticcouncil/xc-core";var fs="Utility",ea=t=>t?.type===fs&&t?.value?.type==="batch_all"?t.value.value.calls.flatMap(ea):[t],x0=t=>{let e="batch_all";return{build:async n=>{let s=await Promise.all(t.map(o=>o.build(n)));return new b0({module:fs,func:e,getTx:o=>{let a=s.flatMap(r=>ea(r.getTx(o).decodedCall));return o.getUnsafeApi().tx[fs][e]({calls:a})}})}}},ta=()=>({batchAll:x0});import{ExtrinsicConfig as jt}from"@galacticcouncil/xc-core";import{big as j0}from"@galacticcouncil/common";import{multiloc as pa,ChainEcosystem as ks}from"@galacticcouncil/xc-core";import{XcmV3Junctions as Ie,XcmV3Junction as Bt,XcmV3JunctionNetworkId as la,XcmV3MultiassetFungibility as Ts,XcmV4Instruction as Te,XcmV4AssetAssetFilter as Kt,XcmV4AssetWildAsset as zt,XcmV3WeightLimit as ha,XcmV2MultiassetWildFungibility as G0}from"@galacticcouncil/descriptors";import{XcmV3Junctions as D0,XcmV3MultiassetFungibility as hs,XcmV3WeightLimit as X0,XcmV4AssetAssetFilter as R0,XcmV4AssetWildAsset as L0,XcmV4Instruction as sn}from"@galacticcouncil/descriptors";import{acc as A0}from"@galacticcouncil/common";import{XcmV3Junction as na}from"@galacticcouncil/descriptors";import{getSs58AddressInfo as w0}from"@polkadot-api/substrate-bindings";import{toHex as C0}from"@polkadot-api/utils";function j(t){if(t.length===42&&t.startsWith("0x"))return na.AccountKey20({key:t,network:void 0});let n=w0(t);if(!n.isValid)throw new Error(`Invalid SS58 address: ${t}`);return na.AccountId32({id:C0(n.publicKey),network:void 0})}function An(t,e,n){return A0.getMultilocationDerivatedAccount(t.parachainId,e,n.parachainId===0?0:1,n.usesH160Acc)}import{multiloc as sa}from"@galacticcouncil/xc-core";function oa(t,e){let n=sa.findNestedKey(t,"GeneralIndex"),s=sa.findNestedKey(e,"GeneralIndex"),o=n&&n.GeneralIndex,a=s&&s.GeneralIndex;return Number.isNaN(o)||Number.isNaN(a)?!1:Number(o)>Number(a)}function N(t,e){let n=t.getAssetXcmLocation(e);if(!n)throw new Error(e.originSymbol+" location config is missing.");return n}var En={};Jt(En,{ETHER_TOKEN_ADDRESS:()=>ps,erc20Location:()=>k0,erc20LocationReanchored:()=>T0,ethereumLocation:()=>ra,parachainLocation:()=>v0});import{XcmV3Junctions as wn,XcmV3Junction as Cn,XcmV3JunctionNetworkId as E0}from"@galacticcouncil/descriptors";var ps="0x0000000000000000000000000000000000000000",aa=t=>Cn.GlobalConsensus(E0.Ethereum({chain_id:BigInt(t)}));function ra(t){return{parents:2,interior:wn.X1(aa(t))}}function v0(t){return{parents:1,interior:wn.X1(Cn.Parachain(t))}}function k0(t,e){return e===ps?ra(t):{parents:2,interior:wn.X2([aa(t),Cn.AccountKey20({key:e})])}}function T0(t){return t===ps?{parents:0,interior:{type:"Here"}}:{parents:0,interior:wn.X1(Cn.AccountKey20({key:t}))}}import{encodeLocation as ia}from"@galacticcouncil/common";import{multiloc as P0}from"@galacticcouncil/xc-core";function W(t,e){return _0(e)>=4?ia(t):B0(t)}function _0(t){let e=t.toString().replace("V","").replace("v","");return Number(e)}function B0(t){return{type:"Concrete",value:ia(t)}}var S0=1e3;function F0(t){let{parents:e,interior:n}=t;return e===1&&n==="Here"?!0:e===2&&n&&n!=="Here"?Object.values(n).flat().some(o=>o&&typeof o=="object"&&"GlobalConsensus"in o):!1}function I0(t){if(t)return F0(t)?S0:P0.findParachain(t)}function ca(t,e,n,s){let o=e.getAssetXcmLocation(t),a=I0(o),r=s?.parachainId??n.parachainId;if(a&&r!==a)throw new Error(s?`Wrong reserve for "${t.originSymbol}": expected chain ${a}, got ${s.name} (${s.parachainId})`:`Reserve chain ${a} required for "${t.originSymbol}"`)}var mt=(a=>(a.v1="V1",a.v2="V2",a.v3="V3",a.v4="V4",a.v5="V5",a))(mt||{}),Fe=(o=>(o.Teleport="Teleport",o.LocalReserve="LocalReserve",o.DestinationReserve="DestinationReserve",o.RemoteReserve="RemoteReserve",o))(Fe||{});function vn(t,e){let n="V4",s=W(N(e,t),n),o=ze;return[sn.ReserveAssetDeposited([{id:M,fun:hs.Fungible(q)},{id:s,fun:hs.Fungible(q)}]),sn.ClearOrigin(),sn.BuyExecution({fees:{id:M,fun:hs.Fungible(q)},weight_limit:X0.Unlimited()}),sn.DepositAsset({assets:R0.Wild(L0.AllCounted(2)),beneficiary:{parents:0,interior:D0.X1(j(_t))}}),sn.SetTopic(o)]}import{XcmV4Instruction as gs,XcmV3MultiassetFungibility as ys,XcmV3WeightLimit as N0}from"@galacticcouncil/descriptors";function bs(t,e){let n="V4",s=W(N(e,t),n),o=kn("V4",j(Ao),j(_t),s,ze);return[gs.WithdrawAsset([{id:M,fun:ys.Fungible(q)},{id:s,fun:ys.Fungible(q)}]),gs.ClearOrigin(),gs.BuyExecution({fees:{id:M,fun:ys.Fungible(q)},weight_limit:N0.Unlimited()}),...o.value]}import{XcmV3Junctions as xs,XcmV3Junction as V0,XcmV3MultiassetFungibility as on,XcmV3WeightLimit as As,XcmV4AssetAssetFilter as ws,XcmV4AssetWildAsset as Cs,XcmV4Instruction as Le}from"@galacticcouncil/descriptors";function ma(t,e){let n="V4",s=W(N(e,t),n),o=ze;return[Le.WithdrawAsset([{id:s,fun:on.Fungible(q)}]),Le.ClearOrigin(),Le.BuyExecution({fees:{id:s,fun:on.Fungible(q)},weight_limit:As.Unlimited()}),Le.DepositAsset({assets:ws.Wild(Cs.AllCounted(1)),beneficiary:{parents:0,interior:xs.X1(j(_t))}}),Le.SetTopic(o)]}function Es(t,e){let n="V4",s=W(N(e,t),n);return[Le.BuyExecution({fees:{id:s,fun:on.Fungible(q)},weight_limit:As.Unlimited()}),Le.DepositAsset({assets:ws.Wild(Cs.AllCounted(1)),beneficiary:{parents:0,interior:xs.X1(j(_t))}})]}function ua(t,e,n){let s="V4",o=W(N(e,t),s),a=ze,r=Es(t,n);return[Le.WithdrawAsset([{id:o,fun:on.Fungible(q)}]),Le.ClearOrigin(),Le.BuyExecution({fees:{id:o,fun:on.Fungible(q)},weight_limit:As.Unlimited()}),Le.DepositReserveAsset({assets:ws.Wild(Cs.AllCounted(1)),dest:{parents:1,interior:xs.X1(V0.Parachain(n.parachainId))},xcm:r}),Le.SetTopic(a)]}import{XcmV3MultiassetFungibility as vs,XcmV5AssetFilter as H0,XcmV5Instruction as qt,XcmV5Junctions as M0,XcmV5Junction as W0,XcmV5WildAsset as O0}from"@galacticcouncil/descriptors";function da(t,e){let n="V5",s=W(N(e,t),n),o={parents:0,interior:M0.X1(W0.AccountId32({id:xo,network:void 0}))};return[qt.ReserveAssetDeposited([{id:M,fun:vs.Fungible(q)}]),qt.PayFees({asset:{id:M,fun:vs.Fungible(q)}}),qt.ReserveAssetDeposited([{id:s,fun:vs.Fungible(q)}]),qt.ClearOrigin(),qt.DepositAsset({assets:H0.Wild(O0.AllCounted(3)),beneficiary:o}),qt.SetTopic(ze)]}var fa=[ks.Polkadot,ks.Kusama],U0={parents:1,interior:Ie.X1(Bt.Parachain(1e3))},q0=t=>{let{parents:e,interior:n}=t;return e!==1?!1:n==="Here"||n?.type==="Here"},ga=(t,e)=>!t.ecosystem||!e.ecosystem?!1:fa.includes(t.ecosystem)&&fa.includes(e.ecosystem)&&t.ecosystem!==e.ecosystem,ya=t=>{let{interior:e}=t;if(e.type==="X1"&&e.value.type==="GlobalConsensus")return e.value.value.type==="Ethereum";if(e.type==="X2"&&Array.isArray(e.value)){let n=e.value[0];return n.type==="GlobalConsensus"&&n.value.type==="Ethereum"}return!1},bt=(t,e,n)=>{if(ga(e,n))return{type:t,value:Ps(n.ecosystem,n.parachainId)};if(n.parachainId===bo)return{type:t,value:{parents:1,interior:Ie.Here()}};let s=n.key==="ethereum"?ht:n.parachainId;return{type:t,value:{parents:1,interior:Ie.X1(Bt.Parachain(s))}}},K0=t=>t===ks.Kusama?la.Kusama():la.Polkadot(),Ps=(t,e)=>({parents:2,interior:Ie.X2([Bt.GlobalConsensus(K0(t)),Bt.Parachain(e)])}),ba=(t,e,n,s)=>{if(ga(e,n)){if(e.parachainId!==ht){let o=pa.findGlobalConsensus(N(e,s)),a=typeof o=="string"&&o===n.ecosystem;return{dest:{type:t,value:{parents:1,interior:Ie.X1(Bt.Parachain(ht))}},mode:a?"bridge-withdraw":"bridge-deposit"}}if(n.parachainId!==ht)return{dest:{type:t,value:Ps(n.ecosystem,ht)},mode:"onward"}}},St=(t,e)=>({type:t,value:{parents:0,interior:Ie.X1(e)}}),_s=(t,e,n)=>e==="RemoteReserve"?{type:"RemoteReserve",value:{type:t,value:q0(n)?U0:n}}:{type:e},xt=(t,e)=>({id:t,fun:Ts.Fungible(e)}),xa=(t,e,n)=>({type:t,value:[Te.DepositAsset({assets:Kt.Wild(zt.AllCounted(n)),beneficiary:{parents:0,interior:Ie.X1(e)}})]}),kn=(t,e,n,s,o)=>{let a=o;return{type:t,value:[Te.SetAppendix([Te.DepositAsset({assets:Kt.Wild(zt.All()),beneficiary:{parents:0,interior:Ie.X1(n)}})]),Te.InitiateReserveWithdraw({assets:Kt.Wild(zt.AllOf({id:s,fun:G0.Fungible()})),reserve:En.ethereumLocation(Xe),xcm:[Te.BuyExecution({fees:{id:z0(s),fun:Ts.Fungible(1n)},weight_limit:ha.Unlimited()}),Te.DepositAsset({assets:Kt.Wild(zt.AllCounted(1)),beneficiary:{parents:0,interior:Ie.X1(e)}}),Te.SetTopic(a)]}),Te.SetTopic(a)]}},Aa=(t,e,n,s,o,a)=>{let r=s==="onward"?{parents:1,interior:Ie.X1(Bt.Parachain(n.parachainId))}:Ps(n.ecosystem,n.parachainId),i={parents:0,interior:Ie.X1(e)},c=Kt.Wild(zt.AllCounted(1)),m=[Te.BuyExecution({fees:{id:o,fun:Ts.Fungible(a)},weight_limit:ha.Unlimited()}),Te.DepositAsset({assets:c,beneficiary:i})],d=s==="bridge-withdraw"?Te.InitiateReserveWithdraw({assets:c,reserve:r,xcm:m}):Te.DepositReserveAsset({assets:c,dest:r,xcm:m});return{type:t,value:[Te.SetAppendix([Te.DepositAsset({assets:Kt.Wild(zt.All()),beneficiary:i})]),d]}},z0=t=>{let e=pa.findNestedKey(t,"key");return e?{parents:0,interior:Ie.X1(Bt.AccountKey20({key:e.key}))}:{parents:0,interior:Ie.Here()}};var Ne="PolkadotXcm",$0=()=>({build:async({address:t,amount:e,asset:n,destination:s,source:o})=>{let a=j(t),r=o.chain,i=s.chain,c="V4",m=N(r,n),d=N(r,s.fee),u=W(m,c),l=W(d,c),p=xt(u,e),g=xt(l,s.fee.amount),w="limited_reserve_transfer_assets";return new jt({module:Ne,func:w,getTx:B=>{let v=B.getUnsafeApi().tx[Ne][w];return n.key===s.fee.key?v({dest:bt(c,r,i),beneficiary:St(c,a),assets:{type:c,value:[p]},fee_asset_item:0,weight_limit:{type:"Unlimited"}}):oa(m,d)?v({dest:bt(c,r,i),beneficiary:St(c,a),assets:{type:c,value:[g,p]},fee_asset_item:0,weight_limit:{type:"Unlimited"}}):v({dest:bt(c,r,i),beneficiary:St(c,a),assets:{type:c,value:[p,g]},fee_asset_item:1,weight_limit:{type:"Unlimited"}})}})}}),J0=()=>({build:async({address:t,amount:e,asset:n,destination:s,source:o})=>{let a=j(t),r=o.chain,i=s.chain,c="V4",m=W(N(r,n),c),d=xt(m,e),u=bt(c,r,i),l=St(c,a),p={type:c,value:[d]},g="limited_teleport_assets";return new jt({module:Ne,func:g,getTx:w=>w.getUnsafeApi().tx[Ne][g]({dest:u,beneficiary:l,assets:p,fee_asset_item:0,weight_limit:{type:"Unlimited"}})})}}),Q0=()=>({build:async({address:t,amount:e,asset:n,destination:s,source:o})=>{let a=j(t),r=o.chain,i=s.chain,c=r.xcmVersion??"V4",m=W(N(r,n),c),d=xt(m,e),u=bt(c,r,i),l=St(c,a),p={type:c,value:[d]},g="reserve_transfer_assets";return new jt({module:Ne,func:g,getTx:w=>w.getUnsafeApi().tx[Ne][g]({dest:u,beneficiary:l,assets:p,fee_asset_item:0})})}}),Y0=()=>({build:async({address:t,amount:e,asset:n,destination:s,source:o})=>{let a=j(t),r=o.chain,i=s.chain,c="V4",m=W(N(r,n),c),d=xt(m,e),u=bt(c,r,i),l=St(c,a),p={type:c,value:[d]},g="transfer_assets";return new jt({module:Ne,func:g,getTx:w=>w.getUnsafeApi().tx[Ne][g]({dest:u,beneficiary:l,assets:p,fee_asset_item:0,weight_limit:{type:"Unlimited"}})})}}),Z0=t=>({build:async({address:e,asset:n,amount:s,destination:o,messageId:a,sender:r,source:i})=>{let c="V4",m=i.chain,d=o.chain,u=o.fee.amount,l=o.fee,p=j(r),g=d.usesCexForwarding?An(m,r,d):e,w=j(g),{transferType:B}=t,v=W(N(m,n),c),V=W(N(m,l),c),D=xt(v,s),H=xt(V,u),K=n.isEqual(l),C=ba(c,m,d,n),Me=C?.dest??bt(c,m,d),st={type:c,value:K?[D]:[H,D]},dt=_s(c,B,v),un={type:c,value:K?v:V},qn=_s(c,B,V),Xt;if(ya(v)&&o.chain.isEvmChain())Xt=kn(c,w,p,v,a);else if(C){let $t=j0.toBigInt(t.executionFee??o.fee.amount,o.fee.decimals),Kn=W(N(d,n),c);Xt=Aa(c,w,d,C.mode,Kn,$t)}else Xt=xa(c,w,st.value.length);let dn="transfer_assets_using_type_and_then";return new jt({module:Ne,func:dn,getTx:$t=>$t.getUnsafeApi().tx[Ne][dn]({dest:Me,assets:st,assets_transfer_type:dt,remote_fees_id:un,fees_transfer_type:qn,custom_xcm_on_dest:Xt,weight_limit:{type:"Unlimited"}})})}});function em(t){let e=n=>({build:async s=>{let o=n(s),a="execute";return new jt({module:Ne,func:a,getTx:r=>r.getUnsafeApi().tx[Ne][a]({message:o,max_weight:{ref_time:20000000000n,proof_size:500000n}})})}});return t?e(t):{viaSnowbridge:()=>e(Co)}}var Bs=()=>({limitedReserveTransferAssets:$0,limitedTeleportAssets:J0,reserveTransferAssets:Q0,transferAssets:Y0,transferAssetsUsingTypeAndThen:Z0,execute:em});import{ExtrinsicConfig as nm}from"@galacticcouncil/xc-core";import{encodeAssetId as sm}from"@galacticcouncil/common";import{XcmV3Junctions as wa,XcmV3Junction as tm}from"@galacticcouncil/descriptors";var Ca=(t,e,n)=>e.parachainId===0?{type:t,value:{parents:1,interior:wa.X1(n)}}:{type:t,value:{parents:1,interior:wa.X2([tm.Parachain(e.parachainId),n])}};var Ea="XTokens",om=()=>({build:async({address:t,amount:e,asset:n,destination:s,sender:o,source:a})=>{let r=a.chain,i=s.chain,c="V3",m=i.usesCexForwarding?An(r,o,i):t,d=j(m),u=r.getAssetId(n),l=sm(u),p="transfer";return new nm({module:Ea,func:p,getTx:g=>g.getUnsafeApi().tx[Ea][p]({currency_id:l,amount:e,dest:Ca(c,i,d),dest_weight_limit:{type:"Unlimited"}})})}}),Ss=()=>({transfer:om});function f(){return{assetConversion:Ko,assets:zo,balances:$o,evm:Yo,polkadotXcm:Bs,router:Zo,utility:ta,xTokens:Ss}}function ut(t,e){return{prior:function(n){return{build:async s=>t(s)?f().utility().batchAll([e,n]).build(s):n.build(s)}},priorMulti:function(n){return{build:async s=>t(s)?f().utility().batchAll([e,...n]).build(s):f().utility().batchAll([...n]).build(s)}}}}import{Abi as Is,Ntt as am,Snowbridge as rm,Basejump as im,Wormhole as _a}from"@galacticcouncil/xc-core";var va=80000n,ka=120000n,Ta=100000n,Pa=2000000n,Fs=15000000000000n;function cm(){return{calculateInboundFee:t=>({build:async({feeAsset:e,destination:n})=>{let s=n,o=new xe(s),a=new ke(t.hub),r=vn(e,s),i=da(e,s),c=Ot(Xe),m=250000000n,d=wo(Xe,s.parachainId),[u,l,p,g]=await Promise.all([o.calculateDestinationFeeV5(i,x),a.calculateDeliveryFee(r,s.parachainId),a.calculateDeliveryFee(r,hn),a.calculateDestinationFeeV5(d,x)]),w=U(u,33n),B=U(l,33n),v=U(p,33n),D=U(g,33n)+B,H=w,K=await a.quoteEtherForDot(c,D),C=U(K,30n),Me=C<Fs*2n?Fs*2n:C,st=U(await a.quoteEtherForDot(c,H),100n),dt=U(await a.quoteDotToEther(c,m+v),30n);return{amount:Me+dt+st,breakdown:{executionFee:Me,relayerFee:dt,remoteEtherFee:st,hydrationDotFee:H}}}}),calculateOutboundFee:t=>({build:async({transferAsset:e,feeAsset:n,source:s,destination:o})=>{let a=s,r=o,i=new ke(t.hub),c=Ot(Xe),m=bs(e,a),[d,u,l]=await Promise.all([i.getBridgeDeliveryFee(),i.calculateDeliveryFee(m,hn),i.calculateDestinationFee(m,n)]),p=await r.evmClient.getProvider().getGasPrice(),g=Pa+ka+va+Ta,w=p*g,B=U(w,10n),v=d+U(u,33n)+U(l,33n),V=U(await i.quoteDotForExactEther(c,B),20n),D=new xe(a),H=os({tokenAddress:"0x0000000000000000000000000000000000000000",senderPubKey:"0x"+"00".repeat(32),beneficiaryHex:"0x"+"00".repeat(20),tokenAmount:1000000000000n,sourceExecutionFee:1000000000n,dotRemoteFee:1000000000n,dotToEtherSwapAmount:1000000000n,etherFeeAmount:1000000000n,topic:ze}),K=U(await D.calculateDestinationFeeV5(H,x),33n);return{amount:v+V+K,breakdown:{dotRemoteFee:v,dotToEtherSwapAmount:V,etherFeeAmount:B,sourceExecutionFee:K}}}}),calculateInboundFeeV1:t=>({build:async({feeAsset:e,destination:n,source:s})=>{let o=s,a=n,r=rm.fromChain(o),i=new Re(a),c=new ke(t.hub),m=vn(e,a),[d,u]=await Promise.all([i.calculateDestinationFee(m,x),c.calculateDeliveryFee(m,a.parachainId)]),l=u+U(d,25n),p=o.getAssetId(e);return{amount:await o.evmClient.getProvider().readContract({abi:Is.Snowbridge,address:r.getGateway(),args:[p,a.parachainId,l],functionName:"quoteSendTokenFee"}),breakdown:{bridgeFeeInDot:l}}}}),calculateOutboundFeeV1:t=>({build:async({transferAsset:e,feeAsset:n,source:s})=>{let o=s,a=new ke(t.hub),r=bs(e,o),i=vn(e,o),[c,m,d,u,l]=await Promise.all([a.getBridgeDeliveryFeeV1(),a.calculateDeliveryFee(r,hn),a.calculateDestinationFee(r,n),a.calculateDeliveryFee(i,o.parachainId),a.calculateDestinationFee(i,n)]);return{amount:c+m+U(d,25n)+u+U(l,25n),breakdown:{bridgeDeliveryFee:c,bridgeHubDeliveryFee:m,assetHubDestinationFee:d,returnToSenderDeliveryFee:u,returnToSenderDestinationFee:l}}}})}}function mm(){return{calculateDestFee:t=>({build:async({feeAsset:e,source:n,destination:s})=>{let o=n,a=s,r=t?.reserve;if(ca(e,o,a,r),r){let l=new Re(a),p=new Re(r),g=Es(e,a),w=ua(e,r,a),[B,v]=await Promise.all([l.calculateDestinationFee(g,e),p.calculateDestinationFee(w,e)]),V=v+B,D=U(V,20n),H=D-V;return{amount:D,breakdown:{reserveFee:v,destinationFee:B,margin:H}}}let i=new Re(a),c=ma(e,a),m=await i.calculateDestinationFee(c,e),d=U(m,20n),u=d-m;return{amount:d,breakdown:{totalFee:m,margin:u}}}})}}function um(){return{quoteExecutorCost:()=>({build:async({address:t,destinationAsset:e,transferAsset:n,source:s,destination:o})=>{let a=s,r=am.fromChain(a,n),i=_a.fromChain(a),c=_a.fromChain(o),m=await ct(o,e).getRedeemBudget(t),[d,u]=await Promise.all([a.evmClient.getProvider().readContract({abi:Is.NttManager,address:r.manager,args:[c.getWormholeId(),Qt],functionName:"quoteDeliveryPrice"}),Gt.quote(i.getWormholeId(),c.getWormholeId(),m)]);return{amount:d[1]+u.estimatedCost,breakdown:{deliveryPrice:d[1],executorCost:u.estimatedCost}}}})}}function dm(){return{quoteFee:()=>({build:async({feeAsset:t,source:e})=>{let n=e,s=im.fromChain(n),o=n.getAssetId(t);return{amount:await n.evmClient.getProvider().readContract({abi:Is.Basejump,address:s.getAddress(),args:[o],functionName:"quoteFee"})}}})}}function P(){return{Basejump:dm,XcmPaymentApi:mm,Snowbridge:cm,Wormhole:um}}var lm="0";function fm(){return{build:async({address:t,chain:e})=>{let s=await new xe(e).api().query.MultiTransactionPayment.AccountCurrencyMap.getValue(t),o=s?s.toString():lm,a=e.findAssetById(o);return a?a.asset:Rt}}}var pm=()=>({accountCurrencyMap:fm});function an(){return{multiTransactionPayment:pm}}import{EvmParachain as hm,MoveConfig as gm,Ntt as ym,suiPkg as Tn,Wormhole as Ba}from"@galacticcouncil/xc-core";import{Transaction as bm}from"@mysten/sui/transactions";import{SUI_CLOCK_OBJECT_ID as Ds}from"@mysten/sui/utils";import{encoding as xm}from"@wormhole-foundation/sdk-base";var Am=()=>({build:async t=>{let{address:e,amount:n,asset:s,source:o,destination:a}=t,r=o.chain,i=a.chain,c=ym.fromChain(r,s),m=Ba.fromChain(r),d=Ba.fromChain(i),u=r.client,l=e;i instanceof hm&&(l=await i.getDerivatedAddress(e));let p=xm.hex.decode(d.normalizeAddress(l)),g=m.getCoreBridge(),w=c.manager,B=c.transceiver.wormhole,v=c.token,[V,D,H,K]=await Promise.all([Tn.getWormholePackageId(u,g),Tn.getCurrentPackageId(u,w),Tn.getCurrentPackageId(u,B),Tn.getCoinMetadataId(u,v)]),C=new bm,[Me]=C.splitCoins(C.gas,[C.pure.u64(n)]),[st]=C.moveCall({target:`${D}::upgrades::new_version_gated`,arguments:[]}),[dt,un]=C.moveCall({target:`${D}::ntt::prepare_transfer`,typeArguments:[v],arguments:[C.object(w),Me,C.object(K),C.pure.u16(d.getWormholeId()),C.pure.vector("u8",Array.from(p)),C.pure.option("vector<u8>",null),C.pure.bool(!1)]}),[qn]=C.moveCall({target:`${D}::state::get_next_sequence`,typeArguments:[v],arguments:[C.object(w)]});C.moveCall({target:`${D}::ntt::transfer_tx_sender`,typeArguments:[v],arguments:[C.object(w),st,C.object(K),dt,C.object(Ds)]});let[Xt]=C.moveCall({target:`${D}::state::create_transceiver_message`,typeArguments:[`${H}::wormhole_transceiver::TransceiverAuth`,v],arguments:[C.object(w),qn,C.object(Ds)]}),[dn]=C.moveCall({target:`${H}::wormhole_transceiver::release_outbound`,typeArguments:[`${D}::auth::ManagerAuth`],arguments:[C.object(B),Xt]}),[$t]=C.splitCoins(C.gas,[C.pure.u64(0n)]);C.moveCall({target:`${V}::publish_message::publish_message`,arguments:[C.object(g),$t,dn,C.object(Ds)]});let[Kn]=C.moveCall({target:"0x2::coin::from_balance",typeArguments:[v],arguments:[un]});return C.mergeCoins(C.gas,[Kn]),[new gm({transaction:C,func:"transfer",module:"NttManager"})]}}),Sa=()=>({transfer:Am});function Fa(){return{Ntt:Sa}}function Xs(){return{Wormhole:Fa}}import{EvmParachain as wm,Ntt as Cm,ProgramConfig as Da,SolanaBalanceType as Em,Wormhole as Ia}from"@galacticcouncil/xc-core";import{getMinimumBalanceForRentExemptAccount as vm}from"@solana/spl-token";import{Keypair as km,TransactionMessage as Tm}from"@solana/web3.js";import{toChain as Pm}from"@wormhole-foundation/sdk-base";import{UniversalAddress as _m}from"@wormhole-foundation/sdk-definitions";import{SolanaAddress as Bm}from"@wormhole-foundation/sdk-solana";import"@wormhole-foundation/sdk-definitions-ntt";async function Sm(t,e){return!("message"in e)||e.message.version==="legacy"?[]:(await Promise.all(e.message.addressTableLookups.map(s=>t.getAddressLookupTable(s.accountKey)))).map(s=>s.value).filter(s=>s!==null)}async function Fm(t,e,n){let s=await Sm(t,e),o="message"in e?Tm.decompile(e.message,{addressLookupTableAccounts:s}).instructions:e.instructions;return new Da({instructions:o,signers:n,lookupTables:s,func:"transfer",module:"NttManager"})}var Im=()=>({build:async t=>{let{address:e,amount:n,asset:s,sender:o,source:a,destination:r}=t,i=a.chain,c=r.chain,m=Cm.fromChain(i,s),d=Ia.fromChain(i),u=Ia.fromChain(c),l=e;c instanceof wm&&(l=await c.getDerivatedAddress(e));let{SolanaNtt:p}=await import("@wormhole-foundation/sdk-solana-ntt"),g=new p("Mainnet","Solana",i.connection,{coreBridge:d.getCoreBridge(),ntt:{manager:m.manager,token:m.token,transceiver:{wormhole:m.transceiver.wormhole}}}),w=i.getBalanceType(s)===Em.Native,B=km.generate(),v=[];for await(let H of g.transfer(new Bm(o),n,{chain:Pm(u.getWormholeId()),address:new _m(u.normalizeAddress(l))},{queue:!1,automatic:!1,wrapNative:w},B)){let{transaction:K,signers:C}=H.transaction;v.push(await Fm(i.connection,K,C??[]))}let V=w?BigInt(await vm(i.connection)):0n,D=v[v.length-1];return[...v.slice(0,-1),new Da({instructions:D.instructions,signers:D.signers,lookupTables:D.lookupTables,rentReserve:V,func:"transfer",module:"NttManager"})]}}),Xa=()=>({transfer:Im});function Ra(){return{Ntt:Xa}}function Rs(){return{Wormhole:Ra}}var Na={};Jt(Na,{Tag:()=>At});var At=(i=>(i.Basejump="Basejump",i.Ntt="Ntt",i.NttExecutor="NttExecutor",i.Wormhole="Wormhole",i.Relayer="Relayer",i.Snowbridge="Snowbridge",i.SnowbridgeV1="SnowbridgeV1",i))(At||{});function Va(t,e){return new Ls({source:{asset:t,fee:{asset:k}},destination:{chain:h,asset:e,fee:{amount:0,asset:t}},contract:z().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function Ha(t,e){return new Ls({source:{asset:t,fee:{asset:k}},destination:{chain:h,asset:e,fee:{amount:P().Wormhole().quoteExecutorCost(),asset:k}},contract:z().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}function Ma(t,e){return new Ls({source:{asset:t,fee:{asset:k},destinationFee:t},destination:{chain:h,asset:e,fee:{amount:P().Basejump().quoteFee(),asset:t}},contract:z().Basejump().bridgeViaWormhole(),tags:["Basejump"]})}var Xm=[Ma(De,Oe)],Rm=[Va(De,Oe)],Lm=[Ha(De,Oe)],Wa=new Dm({chain:kt,routes:[...Rm,...Lm,...Xm]});import{AssetRoute as Ga,ChainRoutes as Nm}from"@galacticcouncil/xc-core";import{AssetRoute as rn}from"@galacticcouncil/xc-core";function wt(t,e){return new rn({source:{asset:t,fee:{asset:k}},destination:{chain:h,asset:e,fee:{amount:0,asset:t}},contract:z().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function Ft(t,e){return new rn({source:{asset:t,fee:{asset:k}},destination:{chain:h,asset:e,fee:{amount:P().Wormhole().quoteExecutorCost(),asset:k}},contract:z().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}function Oa(t,e){return new rn({source:{asset:t,fee:{asset:k}},destination:{chain:h,asset:e,fee:{amount:0,asset:t}},contract:z().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}function ee(t,e){return new rn({source:{asset:t,fee:{asset:k}},destination:{chain:h,asset:e,fee:{amount:P().Snowbridge().calculateInboundFee({hub:_}),asset:k}},contract:z().Snowbridge().v2SendMessage(),tags:["Snowbridge"]})}function te(t,e){return new rn({source:{asset:t,fee:{asset:k}},destination:{chain:h,asset:e,fee:{amount:P().Snowbridge().calculateInboundFeeV1({hub:_}),asset:k}},contract:z().Snowbridge().sendToken(),tags:["Snowbridge","SnowbridgeV1"]})}var Vm=[wt(We,je),wt(Be,$e),wt(E,Qe),wt(y,Je),wt(Se,Ze),wt(Ye,ve),wt(k,ve)],Hm=[Ft(We,je),Ft(Be,$e),Ft(E,Qe),Ft(y,Je),Ft(Se,Ze),Ft(Ye,ve),Oa(k,ve)],Mm=[new Ga({source:{asset:k,fee:{asset:k}},destination:{chain:h,asset:k,fee:{amount:P().Snowbridge().calculateInboundFee({hub:_}),asset:k}},contract:z().Snowbridge().v2SendMessage(),tags:["Snowbridge"]}),ee(se,se),ee(oe,oe),ee(ae,ae),ee(re,re),ee(ue,ue),ee(pe,pe),ee(he,he),ee(ce,ce),ee(ie,ie),ee(me,me),ee(de,de),ee(ge,ge),ee(ye,ye),ee(E,at),ee(y,ot)],Wm=[new Ga({source:{asset:k,fee:{asset:k}},destination:{chain:h,asset:k,fee:{amount:P().Snowbridge().calculateInboundFeeV1({hub:_}),asset:k}},contract:z().Snowbridge().sendToken(),tags:["Snowbridge","SnowbridgeV1"]}),te(se,se),te(oe,oe),te(ae,ae),te(re,re),te(ue,ue),te(pe,pe),te(he,he),te(ce,ce),te(ie,ie),te(me,me),te(de,de),te(ge,ge),te(ye,ye),te(E,at),te(y,ot)],Ua=new Nm({chain:A,routes:[...Vm,...Hm,...Mm,...Wm]});var qa=[Wa,Ua];import{AssetRoute as Bn,ChainRoutes as za}from"@galacticcouncil/xc-core";import{AssetRoute as Ns}from"@galacticcouncil/xc-core";var It=0,Om=t=>{let{source:e}=t;return!!e.feeSwap},Gm=t=>{let{source:e}=t,{enabled:n}=e.destinationFeeSwap||{};return!!n},Ka=f().assetConversion().swapTokensForExactTokens({slippage:30});function Um(t,e,n){return new Ns({source:{asset:t,fee:{asset:x,extra:It}},destination:{chain:e,asset:t,fee:{amount:n,asset:y}},extrinsic:ut(Gm,Ka).prior(f().polkadotXcm().limitedReserveTransferAssets())})}function Pn(t,e,n){return new Ns({source:{asset:t,fee:{asset:t,swap:!t.isEqual(x)}},destination:{chain:e,asset:t,fee:{amount:n,asset:t}},extrinsic:ut(Om,Ka).prior(f().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"}))})}function cn(t,e,n){return new Ns({source:{asset:t,fee:{asset:x,extra:It}},destination:{chain:e,asset:t,fee:{amount:n,asset:t}},extrinsic:f().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})})}function _n(t){return Um(t,h,.02)}var qm=[new Bn({source:{asset:x,fee:{asset:x,extra:It}},destination:{chain:h,asset:x,fee:{amount:.001,asset:x}},extrinsic:f().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),new Bn({source:{asset:T,fee:{asset:x,extra:It}},destination:{chain:h,asset:T,fee:{amount:1e-4,asset:T}},extrinsic:f().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),cn(y,h,.02),cn(E,h,.02),_n(rt)],Km=[new Bn({source:{asset:T,fee:{asset:x,extra:It}},destination:{chain:Ke,asset:T,fee:{amount:.001,asset:T}},extrinsic:f().polkadotXcm().transferAssets()})],zm=[cn(y,R,.03),cn(E,R,.03)],jm=[new Bn({source:{asset:X,fee:{asset:x,extra:It}},destination:{chain:pt,asset:X,fee:{amount:2.5,asset:X}},extrinsic:f().polkadotXcm().limitedTeleportAssets()})],ja=new za({chain:ft,routes:[Pn(y,h,.02),Pn(E,h,.02),Pn(x,h,.001)]}),$a=new za({chain:_,routes:[...qm,...Km,...zm,...jm]});import{AssetRoute as Ct,ChainRoutes as $m}from"@galacticcouncil/xc-core";var Jm=[new Ct({source:{asset:I},destination:{chain:h,asset:I,fee:{amount:.044306118,asset:I}},extrinsic:f().polkadotXcm().reserveTransferAssets()}),new Ct({source:{asset:F,fee:{asset:I}},destination:{chain:h,asset:F,fee:{amount:P().XcmPaymentApi().calculateDestFee({reserve:R}),asset:F}},extrinsic:f().polkadotXcm().limitedReserveTransferAssets()}),new Ct({source:{asset:L,fee:{asset:I}},destination:{chain:h,asset:L,fee:{amount:2e-6,asset:L}},extrinsic:f().polkadotXcm().limitedReserveTransferAssets()}),new Ct({source:{asset:Pe,fee:{asset:I}},destination:{chain:h,asset:Pe,fee:{amount:.01,asset:Pe}},extrinsic:f().polkadotXcm().limitedReserveTransferAssets()}),new Ct({source:{asset:G,fee:{asset:I}},destination:{chain:h,asset:G,fee:{amount:P().XcmPaymentApi().calculateDestFee({reserve:R}),asset:G}},extrinsic:f().polkadotXcm().limitedReserveTransferAssets()}),new Ct({source:{asset:O,fee:{asset:I}},destination:{chain:h,asset:O,fee:{amount:P().XcmPaymentApi().calculateDestFee({reserve:R}),asset:O}},extrinsic:f().polkadotXcm().limitedReserveTransferAssets()}),new Ct({source:{asset:y,fee:{asset:I}},destination:{chain:h,asset:y,fee:{amount:P().XcmPaymentApi().calculateDestFee({reserve:_}),asset:y}},extrinsic:f().polkadotXcm().limitedReserveTransferAssets()}),new Ct({source:{asset:E,fee:{asset:I}},destination:{chain:h,asset:E,fee:{amount:P().XcmPaymentApi().calculateDestFee({reserve:_}),asset:E}},extrinsic:f().polkadotXcm().limitedReserveTransferAssets()})],Ja=new $m({chain:Y,routes:[...Jm]});import{AssetRoute as nt,ChainRoutes as Qm}from"@galacticcouncil/xc-core";var Ym=[new nt({source:{asset:F},destination:{chain:h,asset:F,fee:{amount:P().XcmPaymentApi().calculateDestFee(),asset:F}},extrinsic:f().polkadotXcm().limitedReserveTransferAssets()}),new nt({source:{asset:G,fee:{asset:F}},destination:{chain:h,asset:G,fee:{amount:P().XcmPaymentApi().calculateDestFee(),asset:G}},extrinsic:f().polkadotXcm().limitedReserveTransferAssets()}),new nt({source:{asset:O,fee:{asset:F}},destination:{chain:h,asset:O,fee:{amount:P().XcmPaymentApi().calculateDestFee(),asset:O}},extrinsic:f().polkadotXcm().limitedReserveTransferAssets()}),new nt({source:{asset:x,fee:{asset:F}},destination:{chain:h,asset:x,fee:{amount:P().XcmPaymentApi().calculateDestFee({reserve:_}),asset:x}},extrinsic:f().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"RemoteReserve"})}),new nt({source:{asset:I,fee:{asset:F}},destination:{chain:h,asset:I,fee:{amount:P().XcmPaymentApi().calculateDestFee({reserve:Y}),asset:I}},extrinsic:f().polkadotXcm().limitedReserveTransferAssets()}),new nt({source:{asset:L,fee:{asset:F}},destination:{chain:h,asset:L,fee:{amount:625e-8,asset:L}},extrinsic:f().polkadotXcm().limitedReserveTransferAssets()}),new nt({source:{asset:y,fee:{asset:F}},destination:{chain:h,asset:y,fee:{amount:P().XcmPaymentApi().calculateDestFee({reserve:_}),asset:y}},extrinsic:f().polkadotXcm().limitedReserveTransferAssets()}),new nt({source:{asset:E,fee:{asset:F}},destination:{chain:h,asset:E,fee:{amount:P().XcmPaymentApi().calculateDestFee({reserve:_}),asset:E}},extrinsic:f().polkadotXcm().limitedReserveTransferAssets()})],Zm=[new nt({source:{asset:y,fee:{asset:F}},destination:{chain:_,asset:y,fee:{amount:P().XcmPaymentApi().calculateDestFee(),asset:y}},extrinsic:f().polkadotXcm().limitedReserveTransferAssets()}),new nt({source:{asset:E,fee:{asset:F}},destination:{chain:_,asset:E,fee:{amount:P().XcmPaymentApi().calculateDestFee(),asset:E}},extrinsic:f().polkadotXcm().limitedReserveTransferAssets()})],Qa=new Qm({chain:R,routes:[...Ym,...Zm]});import{AssetRoute as Dt,ChainRoutes as tu}from"@galacticcouncil/xc-core";var $=()=>({asset:an().multiTransactionPayment().accountCurrencyMap()});import{AssetRoute as Et}from"@galacticcouncil/xc-core";var eu=.02,Sn=t=>{let{source:e}=t,{enabled:n}=e.destinationFeeSwap||{};return!!n},Fn=f().router().buy({slippage:30});function Ae(t,e,n){return new Et({source:{asset:t,fee:$()},destination:{chain:e,asset:t,fee:{amount:P().XcmPaymentApi().calculateDestFee(n?{reserve:n}:void 0),asset:t}},extrinsic:f().polkadotXcm().limitedReserveTransferAssets()})}function vt(t,e){return new Et({source:{asset:t,fee:$()},destination:{chain:e,asset:t,fee:{amount:P().XcmPaymentApi().calculateDestFee(),asset:t}},extrinsic:f().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})})}function In(t){return new Et({source:{asset:t,fee:$()},destination:{chain:_,asset:t,fee:{amount:eu,asset:y}},extrinsic:ut(Sn,Fn).prior(f().polkadotXcm().limitedReserveTransferAssets())})}function Vs(t,e,n){return new Et({source:{asset:t,fee:$()},destination:{chain:Ke,asset:t,fee:{amount:e,asset:t}},extrinsic:f().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve",executionFee:n})})}function Ve(t,e,n){let s=z().Wormhole().Ntt().transfer();return new Et({source:{asset:t,fee:$()},destination:{chain:n,asset:e,fee:{amount:0,asset:t}},contract:s,extrinsic:f().evm().call(s),tags:["Wormhole","Ntt"]})}function He(t,e,n){let s=z().Wormhole().Ntt().transferViaExecutor();return new Et({source:{asset:t,fee:$()},destination:{chain:n,asset:e,fee:{amount:P().Wormhole().quoteExecutorCost(),asset:ve}},contract:s,extrinsic:ut(Sn,Fn).prior(f().evm().call(s)),tags:["Wormhole","Ntt","NttExecutor"]})}function J(t,e,n){return new Et({source:{asset:t,fee:$()},destination:{chain:n,asset:e,fee:{amount:P().Snowbridge().calculateOutboundFee({hub:_}),asset:x}},extrinsic:ut(Sn,Fn).prior(f().polkadotXcm().execute().viaSnowbridge()),tags:["Snowbridge"]})}function Q(t,e,n){return new Et({source:{asset:t,fee:$()},destination:{chain:n,asset:e,fee:{amount:P().Snowbridge().calculateOutboundFeeV1({hub:_}),asset:x}},extrinsic:ut(Sn,Fn).prior(f().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})),tags:["Snowbridge","SnowbridgeV1"]})}var nu=[vt(x,_),vt(T,_),vt(y,_),vt(E,_),In(rt)],su=[Vs(T,.05,.005),Vs(x,.2,.02)],ou=[Ae(I,Y),Ae(F,Y,R),new Dt({source:{asset:L,fee:$()},destination:{chain:Y,asset:L,fee:{amount:2e-6,asset:L}},extrinsic:f().polkadotXcm().limitedReserveTransferAssets()}),new Dt({source:{asset:Pe,fee:$()},destination:{chain:Y,asset:Pe,fee:{amount:.01,asset:Pe}},extrinsic:f().polkadotXcm().limitedReserveTransferAssets()}),Ae(G,Y,R),Ae(O,Y,R),Ae(y,Y,_),Ae(E,Y,_)],au=[Ae(F,R),Ae(G,R),Ae(O,R),Ae(I,R,Y),new Dt({source:{asset:L,fee:$()},destination:{chain:R,asset:L,fee:{amount:5e-6,asset:L}},extrinsic:f().polkadotXcm().limitedReserveTransferAssets()}),Ae(y,R,_),Ae(E,R,_),new Dt({source:{asset:x,fee:$()},destination:{chain:R,asset:x,fee:{amount:P().XcmPaymentApi().calculateDestFee({reserve:_}),asset:x}},extrinsic:f().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"RemoteReserve"})})],ru=[new Dt({source:{asset:X,fee:$()},destination:{chain:pt,asset:X,fee:{amount:2.5,asset:X}},extrinsic:f().polkadotXcm().limitedReserveTransferAssets()})],iu=[Ae(Ue,Ht)],cu=[new Dt({source:{asset:Ce,fee:$()},destination:{chain:Mt,asset:Ce,fee:{amount:.02,asset:Ce}},extrinsic:f().polkadotXcm().limitedReserveTransferAssets()})],mu=[new Dt({source:{asset:_e,fee:$()},destination:{chain:Vt,asset:_e,fee:{amount:1.1,asset:_e}},extrinsic:f().polkadotXcm().limitedReserveTransferAssets()})],uu=[Ae(Ge,Nt)],du=[Ve(je,We,A),Ve($e,Be,A),Ve(Qe,E,A),Ve(Je,y,A),Ve(Ze,Se,A),Ve(ve,k,A)],lu=[Ve(Oe,De,kt)],fu=[Ve(le,le,qe),Ve(we,we,qe),Ve(Ee,Ee,qe)],pu=[Ve(fe,fe,Tt)],hu=[He(je,We,A),He($e,Be,A),He(Qe,E,A),He(Je,y,A),He(Ze,Se,A),He(ve,k,A),He(Oe,De,kt),He(le,Lt,qe),He(we,we,qe),He(Ee,Ee,qe),He(fe,fe,Tt)],gu=[J(k,k,A),J(se,se,A),J(oe,oe,A),J(ae,ae,A),J(re,re,A),J(ue,ue,A),J(pe,pe,A),J(he,he,A),J(ge,ge,A),J(ce,ce,A),J(ie,ie,A),J(me,me,A),J(de,de,A),J(ye,ye,A),J(at,E,A),J(ot,y,A)],yu=[Q(k,k,A),Q(se,se,A),Q(oe,oe,A),Q(ae,ae,A),Q(re,re,A),Q(ue,ue,A),Q(pe,pe,A),Q(he,he,A),Q(ge,ge,A),Q(ce,ce,A),Q(ie,ie,A),Q(me,me,A),Q(de,de,A),Q(ye,ye,A),Q(at,E,A),Q(ot,y,A)],bu=[vt(x,ft),vt(y,ft),vt(E,ft)],Ya=new tu({chain:h,routes:[...nu,...ou,...au,...bu,...lu,...du,...gu,...fu,...pu,...hu,...yu,...cu,...su,...ru,...uu,...mu,...iu]});import{AssetRoute as Za,ChainRoutes as xu}from"@galacticcouncil/xc-core";var Au=[new Za({source:{asset:X},destination:{chain:h,asset:X,fee:{amount:.01,asset:X}},extrinsic:f().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})})],wu=[new Za({source:{asset:X},destination:{chain:_,asset:X,fee:{amount:.1,asset:X}},extrinsic:f().polkadotXcm().limitedTeleportAssets()})],er=new xu({chain:pt,routes:[...Au,...wu]});import{AssetRoute as Cu,ChainRoutes as Eu}from"@galacticcouncil/xc-core";var vu=[new Cu({source:{asset:Ue},destination:{chain:h,asset:Ue,fee:{amount:P().XcmPaymentApi().calculateDestFee(),asset:Ue}},extrinsic:f().polkadotXcm().limitedReserveTransferAssets()})],tr=new Eu({chain:Ht,routes:[...vu]});import{AssetRoute as ku,ChainRoutes as Tu}from"@galacticcouncil/xc-core";var Pu=[new ku({source:{asset:_e},destination:{chain:h,asset:_e,fee:{amount:.2,asset:_e}},extrinsic:f().polkadotXcm().reserveTransferAssets()})],nr=new Tu({chain:Vt,routes:[...Pu]});import{AssetRoute as _u,ChainRoutes as Bu}from"@galacticcouncil/xc-core";var Su=[new _u({source:{asset:Ce,fee:{asset:Ce,extra:.030555}},destination:{chain:h,asset:Ce,fee:{amount:.03,asset:Ce}},extrinsic:f().polkadotXcm().reserveTransferAssets()})],sr=new Bu({chain:Mt,routes:[...Su]});import{AssetRoute as Fu,ChainRoutes as Iu}from"@galacticcouncil/xc-core";var Du=[new Fu({source:{asset:Ge},destination:{chain:h,asset:Ge,fee:{amount:.205,asset:Ge}},extrinsic:f().polkadotXcm().reserveTransferAssets()})],or=new Iu({chain:Nt,routes:[...Du]});var ar=[$a,ja,Ja,Qa,Ya,er,or,tr,nr,sr];import{AssetRoute as Xu,ChainRoutes as Ru}from"@galacticcouncil/xc-core";function Hs(t){return new Xu({source:{asset:t,fee:{asset:le}},destination:{chain:h,asset:t,fee:{amount:0,asset:t}},program:Rs().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}var Lu=[Hs(le),Hs(we),Hs(Ee)],rr=new Ru({chain:qe,routes:[...Lu]});var ir=[rr];import{AssetRoute as Nu,ChainRoutes as Vu}from"@galacticcouncil/xc-core";function Hu(t){return new Nu({source:{asset:t,fee:{asset:fe}},destination:{chain:h,asset:t,fee:{amount:0,asset:t}},move:Xs().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}var Mu=[Hu(fe)],cr=new Vu({chain:Tt,routes:[...Mu]});var mr=[cr];import{AssetRoute as Dn,ChainRoutes as Wu}from"@galacticcouncil/xc-core";import{AssetRoute as L1}from"@galacticcouncil/xc-core";var mn=.0015;var Ou=new Dn({source:{asset:T,fee:{asset:T,extra:mn}},destination:{chain:_,asset:T,fee:{amount:.002,asset:T}},extrinsic:f().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),Gu=new Dn({source:{asset:T,fee:{asset:T,extra:mn}},destination:{chain:Wt,asset:T,fee:{amount:.0012,asset:T}},extrinsic:f().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),Uu=[new Dn({source:{asset:T,fee:{asset:T,extra:mn}},destination:{chain:h,asset:T,fee:{amount:.04,asset:T}},extrinsic:f().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve",executionFee:.005})}),new Dn({source:{asset:x,fee:{asset:T,extra:mn}},destination:{chain:h,asset:x,fee:{amount:.15,asset:x}},extrinsic:f().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve",executionFee:.01})})],ur=new Wu({chain:Ke,routes:[Gu,Ou,...Uu]});import{AssetRoute as dr,ChainRoutes as qu}from"@galacticcouncil/xc-core";var Ms=()=>({asset:an().multiTransactionPayment().accountCurrencyMap()});var Ku=[new dr({source:{asset:y,fee:Ms()},destination:{chain:Ke,asset:y,fee:{amount:P().XcmPaymentApi().calculateDestFee(),asset:y}},extrinsic:f().polkadotXcm().limitedReserveTransferAssets()})],zu=[new dr({source:{asset:T,fee:Ms()},destination:{chain:Ke,asset:T,fee:{amount:.0012,asset:T}},extrinsic:f().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})})],lr=new qu({chain:Wt,routes:[...Ku,...zu]});var fr=[ur,lr];var ju=[...qa,...ar,...ir,...mr,...fr],$u=new Map(ju.map(t=>[t.chain.key,t]));import{Parachain as Ar}from"@galacticcouncil/xc-core";import{Parachain as Ju,TransferValidation as pr,TransferValidationError as hr}from"@galacticcouncil/xc-core";var Xn=class extends pr{async validate(e){let{source:n}=e,{chain:s,fee:o,feeBalance:a}=n;if(a.amount<o.amount)throw new hr("Insufficient_Fee_Balance",{amount:o.toDecimal(),asset:o.symbol,chain:s.name,error:"fee.insufficientBalance"})}},Rn=class extends pr{async skipFor(e){let{asset:n,source:s}=e,{enabled:o}=s.destinationFeeSwap||{};return n.isEqual(s.destinationFee)||!!o}async validate(e){if(await this.skipFor(e))return;let{source:s}=e,{chain:o,destinationFee:a,destinationFeeBalance:r}=s,i=await this.getMin(o,a),c=a.copyWith({amount:a.amount+i});if(r.amount<c.amount)throw new hr("Insufficient_Fee_Balance",{amount:c.toDecimal(),asset:c.symbol,chain:o.name,error:"destFee.insufficientBalance"})}async getMin(e,n){if(e instanceof Ju)return(await e.getMin(n)).amount;let s=e.getAssetMin(n);return BigInt(s*10**n.decimals)}};import{Ntt as gr,TransferValidation as Qu,TransferValidationError as Ws}from"@galacticcouncil/xc-core";import{big as Yu}from"@galacticcouncil/common";function yr(t,e){throw new Ws("Ntt_Limit_Unreachable",{asset:t.originSymbol,chain:e.name,error:"ntt.limitUnreachable"})}var Ln=class extends Qu{skipFor(e){let{asset:n,destination:s,source:o}=e;return!gr.isKnown(o.chain,n)||!gr.isKnown(s.chain,s.balance)}async validate(e){if(this.skipFor(e))return;let{amount:n,asset:s,destination:o,source:a}=e,[r,i]=await Promise.all([ct(a.chain,s).getOutboundLimit().catch(()=>yr(s,a.chain)),ct(o.chain,o.balance).getInboundLimit(a.chain).catch(()=>yr(o.balance,o.chain))]);if(r.windowMs>0&&n>r.capacity)throw new Ws("Ntt_Outbound_Limit_Exceeded",{asset:s.originSymbol,chain:a.chain.name,decimals:a.balance.decimals,headroom:r.capacity,limit:r.limit,windowMs:r.windowMs,error:"ntt.outboundLimitExceeded"});let c=Yu.convertDecimals(n,a.balance.decimals,o.balance.decimals);if(i.windowMs>0&&c>i.capacity)throw new Ws("Ntt_Inbound_Limit_Exceeded",{asset:o.balance.originSymbol,chain:o.chain.name,decimals:o.balance.decimals,headroom:i.capacity,limit:i.limit,windowMs:i.windowMs,error:"ntt.inboundLimitExceeded"})}};import{TransferValidation as br,TransferValidationError as xr}from"@galacticcouncil/xc-core";var Nn=class extends br{async skipFor(e){let{asset:n,destination:s}=e,o=s.chain;return await new ke(o).checkIfSufficient(n)}async validate(e){if(await this.skipFor(e))return;let{address:s,destination:o}=e,a=o.chain;if(await new ke(a).getSystemAccountBalance(s)===0n)throw new xr("Insufficient_Ed",{amount:"0.1",asset:"DOT",chain:o.chain.name,error:"account.insufficientDeposit"})}},Vn=class extends br{async validate(e){let{asset:n,sender:s,source:o}=e,a=o.chain;if(await new ke(a).checkIfFrozen(s,n))throw new xr("Asset_Frozen",{asset:n.originSymbol,chain:o.chain.name,error:"asset.frozen"})}};import{TransferValidation as Os,TransferValidationError as Hn}from"@galacticcouncil/xc-core";var Zu=12,ed=1,Mn=class extends Os{async skipFor(e){let{destination:n}=e,s=n.chain,o=new xe(s),a=n.balance.amount>0n,r=await o.checkIfSufficient(n.balance);return a||r}async validate(e){if(await this.skipFor(e))return;let{address:s,destination:o}=e,a=o.chain,r=new xe(a),i=await r.getFeeAsset(s),c=a.findAssetById(i),m=c.min||ed,d=c.decimals||Zu,u=m*Math.pow(10,d),l=await r.getAssetBalance(s,i);if(BigInt(u*1.1)>l)throw new Hn("Insufficient_Ed",{amount:u,asset:c.asset.originSymbol,chain:a.name,error:"account.insufficientDeposit"})}},Wn=class extends Os{async validate(e){let{amount:n,asset:s,destination:o}=e,a=o.chain,i=await new xe(a).getAssetDepositLimit(s);if(i.locked)throw new Hn("Deposit_Asset_Lockdown",{asset:s.originSymbol,chain:a.name,lockedUntilBlock:i.lockedUntilBlock,error:"circuitBreaker.assetLockdown"});if(i.headroom!==null&&n>i.headroom)throw new Hn("Deposit_Limit_Exceeded",{asset:s.originSymbol,chain:a.name,headroom:i.headroom,limit:i.limit,error:"circuitBreaker.depositLimitExceeded"})}},On=class extends Os{async validate(e){let{source:n}=e,s=n.chain,a=await new xe(s).getGlobalWithdrawLimit();if(a.lockdown)throw new Hn("Withdraw_Lockdown_Active",{chain:s.name,lockdownUntilMs:a.lockdownUntilMs,error:"circuitBreaker.withdrawLockdown"})}};var ne={isAny:()=>!0,isHydration:t=>t instanceof Ar&&t.parachainId===2034,isHub:t=>t instanceof Ar&&t.parachainId===1e3,isEvm:t=>t.isEvmChain()},td=[new Xn(ne.isAny,ne.isAny),new Rn(ne.isAny,ne.isAny),new Nn(ne.isAny,ne.isHub),new Vn(ne.isHub,ne.isAny),new Mn(ne.isAny,ne.isHydration),new Wn(ne.isAny,ne.isHydration),new On(ne.isHydration,ne.isAny),new Ln(ne.isAny,ne.isAny)];var Cr={};Jt(Cr,{AssethubDex:()=>Us,HydrationDex:()=>Gs});import{pool as nd,sor as sd,tx as od}from"@galacticcouncil/sdk-next";import{RUNTIME_DECIMALS as ad}from"@galacticcouncil/common";import{Binary as rd}from"polkadot-api";import{memoize1 as id}from"@thi.ng/memoize";var{PoolType:Gn}=nd,{TradeRouteBuilder:cd,TradeRouter:md}=sd,{TxBuilderFactory:ud}=od,Gs=class{chain;client;poolCtx;txBuilder;getCtx=id(async e=>{console.log("init swap router",e,"\u2705");let n=new md(this.poolCtx);return n.withFilter({useOnly:[Gn.Aave,Gn.Omni,Gn.Stable,Gn.XYK]}),n});constructor(e,n){this.chain=e,this.poolCtx=n,this.client=new xe(this.chain),this.txBuilder=new ud(n.client,n.evm)}async getCalldata(e,n,s,o,a=0){let r=Number(this.chain.getMetadataAssetId(n)),i=Number(this.chain.getMetadataAssetId(s)),c=o.amount,m=await this.getCtx(1),d=await m.getMostLiquidRoute(r,i),u=await m.getBuy(r,i,c,d),g=await(await this.txBuilder.trade(u).withBeneficiary(e).withSlippage(a).build()).get().getEncodedData();return rd.toHex(g)}async getQuote(e,n,s,o){let a=Number(this.chain.getMetadataAssetId(e)),r=Number(this.chain.getMetadataAssetId(n)),i=s.amount,c=await this.getCtx(1);try{let m=await c.getMostLiquidRoute(a,r),d=await c.getBuy(a,r,i,m);return{amount:d.amountIn,route:cd.build(d.swaps)}}catch(m){if(o)return{amount:await this.getFallbackPrice(e,s.amount)};throw m}}async getFallbackPrice(e,n){let s=this.chain.getAssetId(e),o=await this.client.api().query.MultiTransactionPayment.AcceptedCurrencies.getValue(Number(s));if(!o)throw new Error(`No price found for asset ${e.key}`);let a=o*n,r=Math.pow(10,ad);return a/BigInt(r)}};import{encodeLocation as wr}from"@galacticcouncil/common";var Us=class{chain;client;constructor(e){this.chain=e,this.client=new ke(this.chain)}async getCalldata(e,n,s,o){throw Error("Not supported for "+this.chain.key)}async getQuote(e,n,s){let o=this.chain.getAssetXcmLocation(e),a=this.chain.getAssetXcmLocation(n),r=await this.client.api().apis.AssetConversionApi.quote_price_tokens_for_exact_tokens(wr(o),wr(a),s.amount,!0);if(!r)throw new Error("Failed to get swap quote");return{amount:r}}};import{ConfigService as ld}from"@galacticcouncil/xc-core";import{Asset as dd}from"@galacticcouncil/xc-core";function Un(t){let{id:e,origin:n,symbol:s}=t,o=s.toLowerCase();return new dd({key:[o,n,e].join("_"),originSymbol:s})}function Er(t){let{decimals:e,id:n}=t;return{asset:Un(t),decimals:e,id:n,xcmLocation:{parents:0,interior:{type:"X2",value:[{type:"PalletInstance",value:50},{type:"GeneralIndex",value:n}]}}}}function vr(t){let{decimals:e,id:n,internalId:s,origin:o}=t;return{asset:Un(t),decimals:e,id:s,xcmLocation:{parents:1,interior:{type:"X3",value:[{type:"Parachain",value:o},{type:"PalletInstance",value:50},{type:"GeneralIndex",value:n}]}}}}var qs=class extends ld{registerExternal(e){let n=this.getChain("hydration"),s=this.getChain("assethub"),o=a=>!!n.findAssetById(a.internalId.toString());e.filter(a=>!o(a)&&a.origin===1e3).forEach(a=>{let r=Un(a),i=Er(a),c=vr(a);console.log("\u{1F480} Registering "+r.key),s.updateAsset(i),n.updateAsset(c),this.updateAsset(r),this.updateChainRoute(s,_n(r)),this.updateChainRoute(n,In(r))})}};export{qs as HydrationConfigService,Pr as assetsMap,La as builders,_i as chainsMap,Mo as clients,Cr as dex,$u as routesMap,Na as tags,td as validations};
1
+ var Fr=Object.defineProperty;var Jt=(t,e)=>{for(var n in e)Fr(t,n,{get:e[n],enumerable:!0})};import{Asset as y}from"@galacticcouncil/xc-core";var se=new y({key:"aave",originSymbol:"AAVE"}),zn=new y({key:"ajun",originSymbol:"AJUN"}),oe=new y({key:"apyusd",originSymbol:"apyUSD"}),I=new y({key:"astr",originSymbol:"ASTR"}),F=new y({key:"bnc",originSymbol:"BNC"}),jn=new y({key:"bsx",originSymbol:"BSX"}),ae=new y({key:"cfg_new",originSymbol:"CFG"}),$n=new y({key:"cru",originSymbol:"CRU"}),We=new y({key:"dai",originSymbol:"DAI"}),je=new y({...We,key:"dai_wh"}),x=new y({key:"dot",originSymbol:"DOT"}),k=new y({key:"eth",originSymbol:"ETH"}),re=new y({key:"ena",originSymbol:"ENA"}),De=new y({key:"eurc",originSymbol:"EURC"}),Oe=new y({...De,key:"eurc_wh"}),lt=new y({key:"glmr",originSymbol:"GLMR"}),Rt=new y({key:"hdx",originSymbol:"HDX"}),L=new y({key:"ibtc",originSymbol:"IBTC"}),Pe=new y({key:"intr",originSymbol:"INTR"}),we=new y({key:"jitoSol",originSymbol:"jitoSOL"}),T=new y({key:"ksm",originSymbol:"KSM"}),ie=new y({key:"ldo",originSymbol:"LDO"}),ce=new y({key:"lbtc",originSymbol:"LBTC"}),Ce=new y({key:"ewt",originSymbol:"EWT"}),me=new y({key:"link",originSymbol:"LINK"}),X=new y({key:"myth",originSymbol:"MYTH"}),Jn=new y({key:"near",originSymbol:"NEAR"}),Ge=new y({key:"neuro",originSymbol:"NEURO"}),_e=new y({key:"pen",originSymbol:"PEN"}),ue=new y({key:"paxg",originSymbol:"PAXG"}),Ee=new y({key:"prime",originSymbol:"PRIME"}),de=new y({key:"sky",originSymbol:"SKY"}),le=new y({key:"sol",originSymbol:"SOL"}),pe=new y({key:"sui",originSymbol:"SUI"}),fe=new y({key:"susde",originSymbol:"sUSDe"}),Be=new y({key:"susds",originSymbol:"sUSDS"}),$e=new y({...Be,key:"susds_wh"}),he=new y({key:"tbtc",originSymbol:"tBTC"}),ge=new y({key:"trac",originSymbol:"TRAC"}),Ue=new y({key:"unq",originSymbol:"UNQ"}),b=new y({key:"usdt",originSymbol:"USDT"}),Je=new y({...b,key:"usdt_wh"}),ot=new y({...b,key:"usdt_eth"}),E=new y({key:"usdc",originSymbol:"USDC"}),Qe=new y({...E,key:"usdc_wh"}),at=new y({...E,key:"usdc_eth"}),O=new y({key:"vastr",originSymbol:"vASTR"}),G=new y({key:"vdot",originSymbol:"vDOT"}),Ye=new y({key:"weth",originSymbol:"WETH"}),ve=new y({...Ye,key:"weth_wh"}),Se=new y({key:"wbtc",originSymbol:"WBTC"}),Ze=new y({...Se,key:"wbtc_wh"}),Lt=new y({key:"wsol",originSymbol:"wSOL"}),ye=new y({key:"wsteth",originSymbol:"wstETH"}),rt=new y({key:"wud",originSymbol:"WUD"}),Qn=new y({key:"zec",originSymbol:"ZEC"}),Ir=[se,zn,oe,I,jn,ae,$n,F,We,je,x,re,De,Oe,k,lt,Rt,L,Pe,T,ie,ce,Ce,we,me,X,Jn,Ge,ue,_e,Ee,de,le,pe,fe,Be,$e,ge,he,Ue,E,Qe,at,b,Je,ot,O,G,Se,Ze,Ye,ve,Lt,ye,rt,Qn],Dr=new Map(Ir.map(t=>[t.key,t]));import{ChainEcosystem as Xr,EvmChain as Rr,EvmBalanceType as js}from"@galacticcouncil/xc-core";import{base as Lr}from"viem/chains";var kt=new Rr({id:8453,key:"base",name:"Base",assetsData:[{asset:k,decimals:18,id:"0x4200000000000000000000000000000000000006"},{asset:De,decimals:6,id:"0x60a3e35cc302bfa44cb288bc5a4f316fdb1adb42"},{asset:E,decimals:6,id:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}],balance:js.Erc20,balanceOverrides:{[k.key]:js.Native},ecosystem:Xr.Ethereum,evmChain:Lr,explorer:"https://basescan.org/",rpcs:["https://stylish-quick-firefly.base-mainnet.quiknode.pro/"],basejump:{address:"0xf5b9334e44f800382cb47fc19669401d694e529b"},wormhole:{id:30,coreBridge:"0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6",executor:"0x9E1936E91A4a5AE5A5F75fFc472D6cb8e93597ea",nttExecutor:"0x27db1967D469D89318B7119Ced5609f327095de4",ntt:{[De.key]:{token:"0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42",manager:"0xD1dc3517732c98502b5c1ba2389AcA9E9016d89a",transceiver:{wormhole:"0xa84b362290b0CFdB55e877dfc633284091e0B3F7"}}}}});import{ChainEcosystem as Nr,EvmChain as Vr,EvmBalanceType as $s}from"@galacticcouncil/xc-core";import{mainnet as Hr}from"viem/chains";var A=new Vr({id:1,key:"ethereum",name:"Ethereum",assetsData:[{asset:k,decimals:18,id:"0x0000000000000000000000000000000000000000"},{asset:se,decimals:18,id:"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"},{asset:oe,decimals:18,id:"0x38eeb52f0771140d10c4e9a9a72349a329fe8a6a"},{asset:ae,decimals:18,id:"0xcccccccccc33d538dbc2ee4feab0a7a1ff4e8a94"},{asset:Ye,decimals:18,id:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"},{asset:We,decimals:18,id:"0x6B175474E89094C44Da98b954EedeAC495271d0F"},{asset:re,decimals:18,id:"0x57e114b691db790c35207b2e685d4a43181e6061"},{asset:fe,decimals:18,id:"0x9d39a5de30e57443bff2a8307a4256c8797a3497"},{asset:Be,decimals:18,id:"0xa3931d71877c0e7a3148cb7eb4463524fec27fbd"},{asset:he,decimals:18,id:"0x18084fba666a33d37592fa2633fd49a74dd93a88"},{asset:Se,decimals:8,id:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"},{asset:ce,decimals:8,id:"0x8236a87084f8b84306f72007f36f2618a5634494"},{asset:E,decimals:6,id:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"},{asset:b,decimals:6,id:"0xdAC17F958D2ee523a2206206994597C13D831ec7"},{asset:ie,decimals:18,id:"0x5a98fcbea516cf06857215779fd812ca3bef1b32"},{asset:me,decimals:18,id:"0x514910771af9ca656af840dff83e8264ecf986ca"},{asset:ue,decimals:18,id:"0x45804880de22913dafe09f4980848ece6ecbaf78"},{asset:de,decimals:18,id:"0x56072c95faa701256059aa122697b133aded9279"},{asset:ge,decimals:18,id:"0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F"},{asset:ye,decimals:18,id:"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"}],balance:$s.Erc20,balanceOverrides:{[k.key]:$s.Native},ecosystem:Nr.Ethereum,evmChain:Hr,explorer:"https://etherscan.io/",rpcs:["https://ethereum-rpc.publicnode.com","https://cosmopolitan-dimensional-diagram.quiknode.pro"],snowbridge:{id:1,gateway:"0x27ca963c279c93801941e1eb8799c23f407d68e7"},wormhole:{id:2,coreBridge:"0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B",executor:"0x84EEe8dBa37C36947397E1E11251cA9A06Fc6F8a",nttExecutor:"0xC079bFA54F348199bA51B2717595fE24e96f1542",ntt:{[We.key]:{token:"0x6B175474E89094C44Da98b954EedeAC495271d0F",manager:"0x804F123f75cCa0A9c0Cba341F82f4A4DA86a5259",transceiver:{wormhole:"0x99673a01C5779Ebf59399B4B228c1825c0113571"}},[Be.key]:{token:"0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD",manager:"0x5085A4863f89eC9553F70187EE73B5aAe0fd14b5",transceiver:{wormhole:"0x7C236d237BEbBE1b7902131B31b7b3270005a810"}},[E.key]:{token:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",manager:"0x447b2c7485A3d6813F8197E605b10BcCD8dd8398",transceiver:{wormhole:"0xA108BD5dBc6CE665aEbB6895351e0609c76F8EFc"}},[b.key]:{token:"0xdAC17F958D2ee523a2206206994597C13D831ec7",manager:"0x9fbd9F16cE7Fa17097E91cc36DC1B7b47aDCa9De",transceiver:{wormhole:"0x45c566f6595CF93e639E77cc1bbE57A8D27901c2"}},[Se.key]:{token:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",manager:"0x081b76AC3cFb65DCe93961d66cea44A74EC8Ef28",transceiver:{wormhole:"0x3FE8fBB8505c8dB2264f6Ebc5559c7C2b2647218"}},[Ye.key]:{token:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",manager:"0x283B14B5Dd352e32154Df014EA96834F395E04b6",transceiver:{wormhole:"0xbA0Cd32131b8206AF4feB79A1A3aaF0AEfe18b48"}},[k.key]:{token:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",manager:"0x283B14B5Dd352e32154Df014EA96834F395E04b6",transceiver:{wormhole:"0xbA0Cd32131b8206AF4feB79A1A3aaF0AEfe18b48"}}}}});var Js=[kt,A];import{ChainEcosystem as Mr,Parachain as Qs,SubstrateBalanceType as ln,SubstrateMinType as Wr}from"@galacticcouncil/xc-core";var Ys={assetsData:[{asset:x,decimals:10,id:0,xcmLocation:{parents:1,interior:"Here"}},{asset:b,decimals:6,id:1984,min:.7,xcmLocation:{parents:0,interior:{X2:[{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:E,decimals:6,id:1337,min:.7,xcmLocation:{parents:0,interior:{X2:[{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:rt,decimals:10,id:31337,xcmLocation:{parents:0,interior:{X2:[{PalletInstance:50},{GeneralIndex:31337}]}}},{asset:X,decimals:18,min:3e-8,xcmLocation:{parents:1,interior:{X1:[{Parachain:3369}]}}},{asset:T,decimals:12,min:1e-4,xcmLocation:{parents:2,interior:{X1:[{GlobalConsensus:"Kusama"}]}}}],balance:ln.Assets,balanceOverrides:{[x.key]:ln.System,[T.key]:ln.ForeignAssets,[X.key]:ln.ForeignAssets},min:Wr.Assets,ecosystem:Mr.Polkadot,explorer:"https://assethub-polkadot.subscan.io",genesisHash:"0x68d56f15f85d3136970ec16946040bc1752654e906147f7e43e9d539d7c3de2f",name:"AssetHub",parachainId:1e3,ss58Format:0,treasury:"14xmwinmCEz6oRrFdczHKqHgWNMiCysE2KrA4jXXAAM1Eogk",usesDeliveryFee:!0,ws:["wss://asset-hub-polkadot-rpc.n.dwellir.com","wss://polkadot-asset-hub-rpc.polkadot.io"]},_=new Qs({...Ys,key:"assethub",name:"AssetHub Polkadot"}),pt=new Qs({...Ys,key:"assethub_cex",name:"AssetHub (CEX)",usesSignerFee:!0,isTestChain:!0,balanceOverrides:{}});import{ChainEcosystem as Or,Parachain as Gr,SubstrateBalanceType as Zs}from"@galacticcouncil/xc-core";var Y=new Gr({assetsData:[{asset:I,xcmLocation:{parents:0,interior:"Here"}},{asset:x,id:"340282366920938463463374607431768211455",decimals:10,min:1e-4,xcmLocation:{parents:1,interior:"Here"}},{asset:b,id:"4294969280",decimals:6,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:E,id:"4294969281",decimals:6,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:F,id:"18446744073709551623",decimals:12,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:lt,id:"18446744073709551619",decimals:18,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:L,id:"18446744073709551620",decimals:8,min:1e-6,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:Pe,id:"18446744073709551621",decimals:10,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0002000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:G,id:"18446744073709551624",decimals:10,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:O,id:"18446744073709551632",decimals:18,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}}],balance:Zs.Assets,balanceOverrides:{[I.key]:Zs.System},ecosystem:Or.Polkadot,explorer:"https://astar.subscan.io",genesisHash:"0x9eb76c5184c4ab8679d2d5d819fdf90b9c001403e9e17da2e14b6d8aec4029c6",key:"astar",name:"Astar",parachainId:2006,ss58Format:5,ws:"wss://rpc.astar.network"});import{ChainEcosystem as Ur,Parachain as qr,SubstrateBalanceType as eo}from"@galacticcouncil/xc-core";var Kr=["wss://eu.bifrost-polkadot-rpc.liebi.com/ws","wss://hk.p.bifrost-rpc.liebi.com/ws","wss://bifrost-polkadot.dotters.network"],R=new qr({assetsData:[{asset:F,id:{Native:F.originSymbol},xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:G,id:{VToken2:0},decimals:10,min:1e-4,xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:O,id:{VToken2:3},decimals:18,min:.01,xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:x,id:{Token2:0},decimals:10,min:1e-4,xcmLocation:{parents:1,interior:"Here"}},{asset:b,id:{Token2:2},decimals:6,min:.001,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:E,id:{Token2:5},decimals:6,min:.001,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:I,id:{Token2:3},decimals:18,min:.01,xcmLocation:{parents:1,interior:{X1:{Parachain:2006}}}},{asset:lt,id:{Token2:1},decimals:18,min:1e-5,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:L,id:{Token2:6},decimals:8,min:1e-6,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}}],balance:eo.Tokens,balanceOverrides:{[F.key]:eo.System},ecosystem:Ur.Polkadot,explorer:"https://bifrost.subscan.io",genesisHash:"0x262e1b2ad728475fd6fe88e62d34c200abe6fd693931ddad144059b1eb884e5b",key:"bifrost",name:"Bifrost",parachainId:2030,ss58Format:6,ws:Kr});import{ChainEcosystem as Jr,EvmParachain as Qr,SubstrateBalanceType as no}from"@galacticcouncil/xc-core";import{defineChain as Yr}from"viem";import{h160 as zr}from"@galacticcouncil/common";import{AccountId as jr}from"polkadot-api";var{isEvmAccount:$r,H160:to}=zr,pn=class{async toH160(e,n){if($r(e))return to.fromAccount(e);let s=to.fromSS58(e);if(n&&await this.isBound(n,s,e))return s;throw new Error(`Account ${e} is not an EVM (ETH\\0 prefixed) account nor bound to its EVM address`)}async isBound(e,n,s){let a=await e.getUnsafeApi().query.EVMAccounts.AccountExtension.getValue(n);if(!a)return!1;let r=jr().enc(s),i=this.asBytes(a);return Buffer.from(i).equals(Buffer.from(r.subarray(20)))}asBytes(e){return e instanceof Uint8Array?e:typeof e=="string"?Buffer.from(e.replace("0x",""),"hex"):e.asBytes()}};var Zr=new pn,Yn=["https://hydration-rpc.n.dwellir.com","https://rpc.kril.hydration.cloud","https://hydration.rotko.net","https://rpc.sin.hydration.cloud","https://rpc.coke.hydration.cloud"],Zn=["wss://hydration-rpc.n.dwellir.com","wss://rpc.kril.hydration.cloud","wss://hydration.rotko.net","wss://rpc.sin.hydration.cloud","wss://rpc.coke.hydration.cloud"],ei=Yr({id:222222,name:"Hydration",network:"hydration",nativeCurrency:{decimals:18,name:"WETH",symbol:"WETH"},rpcUrls:{public:{http:Yn,webSocket:Zn},default:{http:Yn,webSocket:Zn}},blockExplorers:{default:{name:"Hydration Explorer",url:"https://hydration.subscan.io"}},testnet:!1}),h=new Qr({assetsData:[{asset:Rt,id:0,xcmLocation:{parents:0,interior:{X1:[{GeneralIndex:0}]}}},{asset:se,decimals:18,id:1000624,min:6e-5,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"}}]}}},{asset:zn,decimals:12,id:32,min:.11,xcmLocation:{parents:1,interior:{X2:[{Parachain:2051},{GeneralKey:{length:4,data:"0x414a554e00000000000000000000000000000000000000000000000000000000"}}]}}},{asset:I,decimals:18,id:9,min:.15,xcmLocation:{parents:1,interior:{X1:{Parachain:2006}}}},{asset:F,decimals:12,id:14,min:.069,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:ae,decimals:18,id:41,min:.1,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xcccccccccc33d538dbc2ee4feab0a7a1ff4e8a94"}}]}}},{asset:$n,decimals:12,id:27,min:.0079,xcmLocation:{parents:1,interior:{X1:{Parachain:2008}}}},{asset:x,decimals:10,id:5,min:.0018,xcmLocation:{parents:1,interior:"Here"}},{asset:je,decimals:18,id:18,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f"}}]}}},{asset:k,decimals:18,id:34,min:55e-7,xcmLocation:{parents:2,interior:{X1:{GlobalConsensus:{Ethereum:{chain_id:1}}}}}},{asset:oe,decimals:18,id:46,min:.0147058823529412,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x38eeb52f0771140d10c4e9a9a72349a329fe8a6a"}}]}}},{asset:re,decimals:18,id:38,min:.037,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x57e114b691db790c35207b2e685d4a43181e6061"}}]}}},{asset:lt,decimals:18,id:16,min:.035,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:L,decimals:8,id:11,min:36e-8,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:Pe,decimals:10,id:17,min:.62,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0002000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:we,decimals:9,id:40,min:27e-7,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:1},{GeneralKey:{length:32,data:"0xfcd141e9832caf10ad917495ca0f271b5b293cd47027ea737007ed40eb39a0bd"}}]}}},{asset:Ee,decimals:6,id:43,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:1},{GeneralKey:{length:32,data:"0x26759f460ee5f743ed66d27c8f2a5623bf39d53ed575955320661e6e13e0e3da"}}]}}},{asset:Ce,decimals:18,id:252525,min:.022,xcmLocation:{parents:1,interior:{X1:{Parachain:3345}}}},{asset:ie,decimals:18,id:1000796,min:.013,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x5a98fcbea516cf06857215779fd812ca3bef1b32"}}]}}},{asset:T,decimals:12,id:1000771,min:35e-5,xcmLocation:{parents:2,interior:{X1:{GlobalConsensus:"Kusama"}}}},{asset:ce,decimals:8,id:1000851,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x8236a87084f8b84306f72007f36f2618a5634494"}}]}}},{asset:me,decimals:18,id:1000794,min:.001,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x514910771af9ca656af840dff83e8264ecf986ca"}}]}}},{asset:ue,decimals:18,id:39,min:5e-6,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x45804880de22913dafe09f4980848ece6ecbaf78"}}]}}},{asset:X,decimals:18,id:30,min:.022,xcmLocation:{parents:1,interior:{X1:{Parachain:3369}}}},{asset:Ge,decimals:12,id:36,min:.001,xcmLocation:{parents:1,interior:{X2:[{Parachain:2043},{PalletInstance:10}]}}},{asset:_e,decimals:12,id:1000081,min:.16,xcmLocation:{parents:1,interior:{X2:[{Parachain:2094},{PalletInstance:10}]}}},{asset:de,decimals:18,id:1000795,min:.52,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x56072c95faa701256059aa122697b133aded9279"}}]}}},{asset:le,decimals:9,id:1000752,min:47e-6,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:1},{GeneralKey:{length:32,data:"0x069b8857feab8184fb687f634618c035dac439dc1aeb3b5598a0f00000000001"}}]}}},{asset:pe,decimals:9,id:1000753,min:.003,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:21},{GeneralKey:{length:32,data:"0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3"}}]}}},{asset:fe,decimals:18,id:1000625,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x9d39a5de30e57443bff2a8307a4256c8797a3497"}}]}}},{asset:Be,decimals:18,id:1000626,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xa3931d71877c0e7a3148cb7eb4463524fec27fbd"}}]}}},{asset:$e,decimals:18,id:1000745,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000a3931d71877c0e7a3148cb7eb4463524fec27fbd"}}]}}},{asset:he,decimals:18,id:1000765,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x18084fba666a33d37592fa2633fd49a74dd93a88"}}]}}},{asset:ge,decimals:18,id:35,min:.028,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F"}}]}}},{asset:Ue,decimals:18,id:25,min:1.23,xcmLocation:{parents:1,interior:{X1:{Parachain:2037}}}},{asset:E,decimals:6,id:22,min:.01,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:Qe,decimals:6,id:21,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"}}]}}},{asset:Oe,decimals:6,id:44,min:.014,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:30},{GeneralKey:{length:32,data:"0x00000000000000000000000060a3e35cc302bfa44cb288bc5a4f316fdb1adb42"}}]}}},{asset:at,decimals:6,id:1000766,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"}}]}}},{asset:b,decimals:6,id:10,min:.01,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:Je,decimals:6,id:23,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7"}}]}}},{asset:ot,decimals:6,id:1000767,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xdac17f958d2ee523a2206206994597c13d831ec7"}}]}}},{asset:O,decimals:18,id:33,min:.14,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:G,decimals:10,id:15,min:.0019,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:Se,decimals:8,id:1000190,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"}}]}}},{asset:Ze,decimals:8,id:19,min:34e-8,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599"}}]}}},{asset:Ye,decimals:18,id:1000189,min:61e-7,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"}}]}}},{asset:ve,decimals:18,id:20,min:54e-7,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"}}]}}},{asset:ye,decimals:18,id:1000809,min:635e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"}}]}}},{asset:rt,decimals:10,id:1000085,min:2e4,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:31337}]}}}],balance:no.Tokens,balanceOverrides:{[Rt.key]:no.System},ecosystem:Jr.Polkadot,evmChain:ei,evmResolver:Zr,explorer:"https://hydration.subscan.io",genesisHash:"0xafdc188f45c71dacbaa0b62e16a91f726c7b8699a9748cdf715459de6b7f366d",key:"hydration",name:"Hydration",parachainId:2034,ss58Format:63,wormhole:{id:73,coreBridge:"0x3792a6d63c31941B2805181771795D9176fA82A1",executor:"0xd633d8d1ceee8c8252196d44857c0f41b8dcb0d9",nttExecutor:"0xd3Dda7c8608Ea251C42c6E0A2A686aDc5e9C0C03",ntt:{[je.key]:{token:"0x0000000000000000000000000000000100000012",manager:"0xcFd576F88C90844AEBF45378Fd09931281D8b14d",transceiver:{wormhole:"0xe8660CA48f6f4D98BC48DB7Dd07C1a8E555801eA"}},[Oe.key]:{token:"0x000000000000000000000000000000010000002C",manager:"0x8dd1286A29dF5a2785FB638d6fB1598144Cfbc4C",transceiver:{wormhole:"0x2e84fac378D67Dc2e11026fB4919E80263a87375"}},[we.key]:{token:"0x0000000000000000000000000000000100000028",manager:"0xcE73C15B9ED02413066DE5B904A36F8e8f9B5331",transceiver:{wormhole:"0xF38D9C3bA6999Dc331b32B416083Fd7e02D17B04"}},[Ee.key]:{token:"0x000000000000000000000000000000010000002B",manager:"0xFCaF4aA069C565d25539028970703F01e47D3E0B",transceiver:{wormhole:"0x4e7b1E55D2354d4Dc6ABD876096Dc201de0541D1"}},[le.key]:{token:"0x00000000000000000000000000000001000F4530",manager:"0x9e200C0f28D92D296b201D96C8269d3CAFFfA9FF",transceiver:{wormhole:"0x2F04AcF249091425d51e67EeA3C3161ccE283202"}},[pe.key]:{token:"0x00000000000000000000000000000001000F4531",manager:"0x978443f00cAB6b09445140321EC73a221ebFF5F8",transceiver:{wormhole:"0xA224D6f4e0E276b34D91bfE6c3A5fE6838322AF7"}},[$e.key]:{token:"0x00000000000000000000000000000001000F4529",manager:"0x1973E7044d9A7C7bB2d6ea1693A296a9e4B7E448",transceiver:{wormhole:"0x68Ecadd7934D4FcFEABAfB209C95D379B96400cb"}},[Qe.key]:{token:"0x0000000000000000000000000000000100000015",manager:"0xEcEab64542A875C4472671D9Ed1E690cdD4e28fC",transceiver:{wormhole:"0x0d7488B39AA64468a709eC3b3d354DeFE539eD97"}},[Je.key]:{token:"0x0000000000000000000000000000000100000017",manager:"0x5E6C488103b47F804824AE15861638af4C436795",transceiver:{wormhole:"0xd2a16B736F32Df7C0DE72838837656FE0f85Ac0F"}},[Ze.key]:{token:"0x0000000000000000000000000000000100000013",manager:"0x6BFca089916c045b0Ca4A09B655aF9F926189993",transceiver:{wormhole:"0x9a8a1ab288f6749Ce5626DEE1B5d59441BdC187F"}},[ve.key]:{token:"0x0000000000000000000000000000000100000014",manager:"0xB5cEf790D52A57fa619eD96eDd64c5328F3DCFb7",transceiver:{wormhole:"0x8acce9CA511d5D7213F8C3f813B8916087cd00ae"}}}},ws:Zn,rpcs:Yn});import{ChainEcosystem as ti,Parachain as ni,SubstrateBalanceType as si}from"@galacticcouncil/xc-core";var ft=new ni({assetsData:[{asset:X,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:si.System,ecosystem:ti.Polkadot,explorer:"https://mythos.subscan.io",genesisHash:"0xf6ee56e9c5277df5b4ce6ae9983ee88f3cbed27d31beeb98f9f84f997a1ab0b9",key:"mythos",name:"Mythos",parachainId:3369,ss58Format:29972,usesH160Acc:!0,ws:"wss://mythos-rpc.dmarket.com"});import{ChainEcosystem as oi,Parachain as ai,SubstrateBalanceType as ri}from"@galacticcouncil/xc-core";var Nt=new ai({assetsData:[{asset:Ge,xcmLocation:{parents:0,interior:{X1:{PalletInstance:10}}}}],balance:ri.System,ecosystem:oi.Polkadot,explorer:"https://neuroweb.subscan.io",genesisHash:"0xe7e0962324a3b86c83404dbea483f25fb5dab4c224791c81b756cfc948006174",key:"neuroweb",name:"Neuroweb",parachainId:2043,ss58Format:101,ws:"wss://parachain-rpc.origin-trail.network"});import{ChainEcosystem as ii,Parachain as ci,XcmVersion as mi,SubstrateBalanceType as ui}from"@galacticcouncil/xc-core";var Vt=new ci({assetsData:[{asset:_e,id:"Native",xcmLocation:{parents:0,interior:{X1:{PalletInstance:10}}}}],balance:ui.System,ecosystem:ii.Polkadot,explorer:"https://pendulum.subscan.io",genesisHash:"0x5d3c298622d5634ed019bf61ea4b71655030015bde9beb0d6a24743714462c86",key:"pendulum",name:"Pendulum",parachainId:2094,ss58Format:56,ws:"wss://rpc-pendulum.prd.pendulumchain.tech",xcmVersion:mi.v3});import{ChainEcosystem as di,Parachain as li,SubstrateBalanceType as pi}from"@galacticcouncil/xc-core";var fi={assetsData:[{asset:x,xcmLocation:{parents:0,interior:"Here"}}],balance:pi.System,ecosystem:di.Polkadot,explorer:"https://polkadot.subscan.io",genesisHash:"0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3",name:"Polkadot",parachainId:0,ss58Format:0,treasury:"13UVJyLnbVp9RBZYFwFGyDvVd1y27Tt8tkntv6Q7JVPhFsTB",usesDeliveryFee:!0,ws:"wss://polkadot-rpc.n.dwellir.com"},so=new li({...fi,key:"polkadot"});import{ChainEcosystem as hi,Parachain as gi,SubstrateBalanceType as yi}from"@galacticcouncil/xc-core";var Ht=new gi({assetsData:[{asset:Ue,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:yi.System,ecosystem:hi.Polkadot,explorer:"https://unique.subscan.io",genesisHash:"0x84322d9cddbf35088f1e54e9a85c967a41a56a4f43445768125e61af166c7d31",key:"unique",name:"Unique network",parachainId:2037,ss58Format:7391,ws:"wss://ws.unique.network"});import{ChainEcosystem as bi,Parachain as xi,XcmVersion as Ai,SubstrateBalanceType as wi}from"@galacticcouncil/xc-core";var Mt=new xi({assetsData:[{asset:Ce,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:wi.System,ecosystem:bi.Polkadot,explorer:"https://energywebx.subscan.io",genesisHash:"0x5a51e04b88a4784d205091aa7bada002f3e5da3045e5b05655ee4db2589c33b5",key:"energywebx",name:"Energy Web X",parachainId:3345,ss58Format:42,ws:"wss://wnp-rpc.mainnet.energywebx.com",xcmVersion:Ai.v3});var oo=[_,pt,Y,R,h,Nt,ft,Vt,so,Ht,Mt];import{ChainEcosystem as Ci,SolanaChain as Ei,SolanaBalanceType as ao}from"@galacticcouncil/xc-core";var qe=new Ei({id:101,key:"solana",name:"Solana",assetsData:[{asset:le,decimals:9},{asset:Lt,id:"So11111111111111111111111111111111111111112",decimals:9},{asset:we,id:"J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",decimals:9},{asset:Ee,id:"3b8X44fLF9ooXaUm3hhSgjpmVs6rZZ3pPoGnGahc3Uu7",decimals:6}],balance:ao.Token,balanceOverrides:{[le.key]:ao.Native},ecosystem:Ci.Solana,explorer:"https://explorer.solana.com/",rpcUrls:{http:["https://wispy-palpable-market.solana-mainnet.quiknode.pro"],webSocket:["wss://wispy-palpable-market.solana-mainnet.quiknode.pro"]},wormhole:{id:1,coreBridge:"worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth",ntt:{[le.key]:{token:"So11111111111111111111111111111111111111112",manager:"DiGxk55uAQNVzzg2FucPgdrQ4azb5SDvWQvzpzJD3o7J",transceiver:{wormhole:"5J12e7mMcbbN3VkCrUPfZp2bDHMH3t1rKvxGcwuN53wx"},emitter:"2WUYeRrK2JctBEvNVXY4mRG2ewMzhidi7L4Y5dCwqY9D"},[Lt.key]:{token:"So11111111111111111111111111111111111111112",manager:"DiGxk55uAQNVzzg2FucPgdrQ4azb5SDvWQvzpzJD3o7J",transceiver:{wormhole:"5J12e7mMcbbN3VkCrUPfZp2bDHMH3t1rKvxGcwuN53wx"},emitter:"2WUYeRrK2JctBEvNVXY4mRG2ewMzhidi7L4Y5dCwqY9D"},[we.key]:{token:"J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",manager:"9HFvXujdkXubvmf93gyzkH1g3VPowDrmp85sWsfdcBTh",transceiver:{wormhole:"HgxvrPomT84AxgxknddAcC1iW9ysqHxmeoiKNZmQcovs"},emitter:"9Ss1eMHE8iDv9kCxERH5nabp9tx75AVoUWWEKaGgMrh9"},[Ee.key]:{token:"3b8X44fLF9ooXaUm3hhSgjpmVs6rZZ3pPoGnGahc3Uu7",manager:"4T5m5NtRVewiCVzP2mnfeUoMYRqncfkrS21X2dhVCNRT",transceiver:{wormhole:"GiTY93vtrK4jZZchrxdV9r28JByRs7Ary2rsTPyPabJc"},emitter:"HuvSXe6hQaSMgo5dc8GYzavcS3aB4Bix9XYgVdfsq2sY"}},platformAddressFormat:"base58"}});var ro=[qe];import{ChainEcosystem as vi,SuiChain as ki,SuiBalanceType as Ti}from"@galacticcouncil/xc-core";var Tt=new ki({id:"0x35834a8a",key:"sui",name:"Sui",assetsData:[{asset:pe,decimals:9}],balance:Ti.Native,ecosystem:vi.Sui,explorer:"https://suiscan.xyz/",rpc:"https://rpc-mainnet.suiscan.xyz",wormhole:{id:21,coreBridge:"0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c",ntt:{[pe.key]:{token:"0x2::sui::SUI",manager:"0xa0bc45e0384140dc125f273eda89cad1434f5dee430726cf6364bdcceba1e9a3",transceiver:{wormhole:"0x6afb4a6a9c4e5b6eeed568381ce95a79590f0c17ab8d0c59295826f2775bf832"},emitter:"0x25437da9f99dfab32c1a275663f51cd5c99eb867ab4d1f630e3799c5e68215da"}}}});var io=[Tt];import{ChainEcosystem as Pi,Parachain as _i,SubstrateBalanceType as es,SubstrateMinType as Bi}from"@galacticcouncil/xc-core";var Ke=new _i({assetsData:[{asset:T,decimals:12,id:0,xcmLocation:{parents:1,interior:"Here"}},{asset:x,decimals:10,min:.001,xcmLocation:{parents:2,interior:{X1:[{GlobalConsensus:"Polkadot"}]}}},{asset:b,decimals:6,id:1984,xcmLocation:{parents:1,interior:{X2:[{PalletInstance:50},{GeneralIndex:1984}]}}}],balance:es.Assets,balanceOverrides:{[T.key]:es.System,[x.key]:es.ForeignAssets},min:Bi.Assets,ecosystem:Pi.Kusama,explorer:"https://assethub-kusama.subscan.io",genesisHash:"0x48239ef607d7928874027a43a67689209727dfb3d3dc5e5b03a39bdc2eda771a",key:"assethub_kusama",name:"AssetHub Kusama",parachainId:1e3,ss58Format:2,treasury:"HWZmQq6zMMk7TxixHfseFT2ewicT6UofPa68VCn3gkXrdJF",usesDeliveryFee:!0,ws:"wss://asset-hub-kusama-rpc.n.dwellir.com"});import{ChainEcosystem as Si,Parachain as Fi,SubstrateBalanceType as Ii}from"@galacticcouncil/xc-core";var Wt=new Fi({assetsData:[{asset:jn,id:0,xcmLocation:{parents:0,interior:"Here"}},{asset:T,decimals:12,id:1,xcmLocation:{parents:1,interior:"Here"}},{asset:b,decimals:6,id:14,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}}],balance:Ii.Tokens,ecosystem:Si.Kusama,explorer:"https://basilisk.subscan.io",genesisHash:"0xa85cfb9b9fd4d622a5b28289a02347af987d8f73fa3108450e2b4a11c1ce5755",key:"basilisk",name:"Basilisk",parachainId:2090,ss58Format:10041,ws:"wss://basilisk-rpc.n.dwellir.com"});var co=[Ke,Wt];import{ChainEcosystem as Di,NearChain as Xi,NearBalanceType as Ri}from"@galacticcouncil/xc-core";var mo=new Xi({key:"near",name:"NEAR",assetsData:[{asset:Jn,decimals:24}],balance:Ri.Native,ecosystem:Di.Near,explorer:"https://nearblocks.io/",rpc:"https://free.rpc.fastnear.com"});var uo=[mo];import{ChainEcosystem as Li,ZecChain as Ni,ZecBalanceType as Vi}from"@galacticcouncil/xc-core";var lo=new Ni({key:"zec",name:"Zcash",assetsData:[{asset:Qn,decimals:8}],balance:Vi.Transparent,ecosystem:Li.Zcash,explorer:"https://mainnet.zcashexplorer.app/"});var po=[lo];var Hi=[...Js,...oo,...ro,...io,...co,...uo,...po],Mi=new Map(Hi.map(t=>[t.key,t]));import{ChainRoutes as qm}from"@galacticcouncil/xc-core";import{AssetRoute as Vs}from"@galacticcouncil/xc-core";var Oa={};Jt(Oa,{ContractBuilder:()=>z,ExtrinsicBuilder:()=>p,ExtrinsicDecorator:()=>ut,FeeAmountBuilder:()=>P,FeeAssetBuilder:()=>an,MoveBuilder:()=>Ls,ProgramBuilder:()=>Ns,XcmTransferType:()=>Fe,XcmVersion:()=>mt});import{Abi as fo,ContractConfig as Wi,Precompile as Oi}from"@galacticcouncil/xc-core";import{encodeFunctionData as Gi}from"viem";var Ui=t=>({build:async e=>{let s=(await Promise.all(t.map(i=>i.build(e)))).flat(),o=s.map(i=>i.address),a=[0,0],r=s.map(i=>Gi({abi:fo[i.module],functionName:i.func,args:i.args}));return[new Wi({abi:fo.Batch,address:Oi.Batch,args:[o,a,r,[]],func:"batchAll",module:"Batch"})]}}),ho=()=>({batchAll:Ui});import{Abi as qi,ContractConfig as Ki,Wormhole as zi}from"@galacticcouncil/xc-core";function U(t,e){if(e<0||e>100)throw Error(`padPercent ${e} not in range of 0 to 100.`);return t+t*e/100n}function Pt(t){return typeof t=="object"?Object.values(t)[0]:t}function go(){return{approve:t=>({build:async e=>{let{amount:n,asset:s,source:o}=e,a=o.chain,r=zi.fromChain(a),i=a.getAssetId(s);return[new Ki({abi:qi.Erc20,address:Pt(i).toString(),args:[t(r),n],func:"approve",module:"Erc20"})]}})}}import{Abi as ji,Basejump as $i,ContractConfig as Ji}from"@galacticcouncil/xc-core";import{h160 as Qi}from"@galacticcouncil/common";import{AccountId as Yi}from"polkadot-api";import{toHex as Zi}from"@polkadot-api/utils";var{H160:ec,isEvmAddress:tc}=Qi;function nc(t){let e=tc(t)?ec.toAccount(t):t;return Zi(Yi().enc(e))}var sc=()=>({build:async t=>{let{address:e,amount:n,asset:s,source:o}=t,a=o.chain,r=$i.fromChain(a),i=a.getAssetId(s);return[new Ji({abi:ji.Basejump,address:r.getAddress(),args:[Pt(i),n,nc(e)],func:"bridgeViaWormhole",module:"Basejump"})]}}),yo=()=>({bridgeViaWormhole:sc});import{addr as oc,Abi as bo,ContractConfig as xo,Precompile as Ao}from"@galacticcouncil/xc-core";import{big as ac}from"@galacticcouncil/common";var{Ss58Addr:wo}=oc;function rc(t){if(t.startsWith("0x"))return t;if(!/^\d{38,39}$/.test(t))throw new Error(`Asset id: ${t} must be a string and have 38-39 digits`);return`0xffffffff${BigInt(t).toString(16).padStart(32,"0")}`}function ts(t,e){let n=t.getAssetId(e);return typeof n=="string"?rc(n):n}function Co(){return{transferAssetsToPara32:()=>({build:async({address:t,amount:e,asset:n,destination:s,source:o})=>{let a=ts(o.chain,n);return[new xo({abi:bo.PolkadotXcm,address:Ao.PolkadotXcm,args:[s.chain.parachainId,wo.getPubKey(t),[{asset:a,amount:e}],0],func:"transferAssetsToPara32",module:"PolkadotXcm"})]}}),transferAssetsToPara32WithFee:()=>({build:async({address:t,amount:e,asset:n,destination:s,source:o})=>{let a=ts(o.chain,n),r=ts(o.chain,o.destinationFeeBalance),i=ac.toBigInt(s.fee.amount,s.fee.decimals);return[new xo({abi:bo.PolkadotXcm,address:Ao.PolkadotXcm,args:[s.chain.parachainId,wo.getPubKey(t),[{asset:a,amount:e},{asset:r,amount:i}],1],func:"transferAssetsToPara32",module:"PolkadotXcm"})]}})}}import{addr as pc,Abi as Bo,ContractConfig as So,Snowbridge as Fo}from"@galacticcouncil/xc-core";import{XcmV5Junctions as fc,XcmV5Junction as hc,XcmVersionedXcm as gc,XcmVersionedLocation as yc}from"@galacticcouncil/descriptors";import{Blake2256 as bc}from"@polkadot-api/substrate-bindings";import{toHex as is}from"@polkadot-api/utils";import{encodeAbiParameters as xc}from"viem";import{codec as ic}from"@galacticcouncil/xc-core";var fn=null;async function Eo(){if(fn)return fn;let t=await ic.getHubCodecs();return fn={message:t.tx.PolkadotXcm.send.inner.message,location:t.tx.PolkadotXcm.send.inner.dest},fn}import{multiloc as mc}from"@galacticcouncil/xc-core";import{XcmV3MultiassetFungibility as be,XcmV5AssetFilter as Z,XcmV5Instruction as S,XcmV5Junctions as gt,XcmV5Junction as tt,XcmV5NetworkId as ns,XcmV5WildAsset as et,XcmVersionedXcm as uc}from"@galacticcouncil/descriptors";import{getSs58AddressInfo as dc}from"@polkadot-api/substrate-bindings";import{toHex as lc}from"@polkadot-api/utils";import{XcmV3Junctions as cc}from"@galacticcouncil/descriptors";var q=340282366920938463463374607431768211455n,ze="0x0000000000000000000000000000000000000000000000000000000000000000",M={parents:1,interior:cc.Here()},vo=0,ht=1e3,hn=1002,Xe=1,_t="5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY",ko="0x0000000000000000000000000000000000000000000000000000000000000000",To="0x0000000000000000000000000000000000000000";var ss="0x0000000000000000000000000000000000000000",Ot=t=>({parents:2,interior:gt.X1(tt.GlobalConsensus(ns.Ethereum({chain_id:BigInt(t)})))}),os=(t,e)=>({parents:2,interior:gt.X2([tt.GlobalConsensus(ns.Ethereum({chain_id:BigInt(t)})),tt.AccountKey20({key:e,network:void 0})])});function Po(t,e){let n=Ot(t),s=os(t,"0x"+"00".repeat(20)),o=1000000000000n,a=1000000000n,r=[S.ReserveAssetDeposited([{id:n,fun:be.Fungible(o)},{id:s,fun:be.Fungible(o)}]),S.ExchangeAsset({give:Z.Wild(et.AllOf({id:n,fun:{type:"Fungible",value:void 0}})),want:[{id:M,fun:be.Fungible(a)}],maximal:!1}),S.PayFees({asset:{id:M,fun:be.Fungible(a)}})],i=as({ethChainId:t,destinationParaId:e,tokenAddress:"0x"+"00".repeat(20),beneficiaryHex:"0x"+"00".repeat(32),tokenAmount:o,hydrationDotFee:a,topic:"0x"+"00".repeat(32)});return[...r,...i]}function as(t){let{ethChainId:e,destinationParaId:n,tokenAddress:s,beneficiaryHex:o,tokenAmount:a,hydrationDotFee:r,topic:i}=t,c=Ot(e),m=s===ss?c:os(e,s),u=o.length===42&&o.startsWith("0x")?tt.AccountKey20({key:o,network:void 0}):tt.AccountId32({id:o,network:void 0}),l={parents:0,interior:gt.X1(u)};return[S.SetAppendix([S.RefundSurplus(),S.DepositAsset({assets:Z.Wild(et.All()),beneficiary:l})]),S.ExchangeAsset({give:Z.Wild(et.AllOf({id:c,fun:{type:"Fungible",value:void 0}})),want:[{id:M,fun:be.Fungible(r)}],maximal:!1}),S.InitiateTransfer({destination:{parents:1,interior:gt.X1(tt.Parachain(n))},remote_fees:{type:"ReserveDeposit",value:Z.Definite([{id:M,fun:be.Fungible(r)}])},preserve_origin:!1,assets:[{type:"ReserveDeposit",value:Z.Definite([{id:m,fun:be.Fungible(a)}])}],remote_xcm:[S.DepositAsset({assets:Z.Wild(et.AllCounted(3)),beneficiary:l}),S.SetTopic(i)]}),S.RefundSurplus(),S.DepositAsset({assets:Z.Wild(et.All()),beneficiary:l}),S.SetTopic(i)]}function rs(t){let{tokenAddress:e,senderPubKey:n,beneficiaryHex:s,tokenAmount:o,sourceExecutionFee:a,dotRemoteFee:r,dotToEtherSwapAmount:i,etherFeeAmount:c,topic:m}=t,d=Ot(Xe),u=e===ss?d:os(Xe,e),l={parents:0,interior:gt.X1(tt.AccountId32({id:n,network:void 0}))},f={parents:0,interior:gt.X1(tt.AccountKey20({key:s,network:void 0}))},g={parents:2,interior:gt.X1(tt.GlobalConsensus(ns.Ethereum({chain_id:BigInt(Xe)})))},w=[S.DepositAsset({assets:Z.Wild(et.AllCounted(3)),beneficiary:f}),S.SetTopic(m)],B=[S.SetAppendix([S.SetHints({hints:[{type:"AssetClaimer",value:{location:l}}]}),S.RefundSurplus(),S.DepositAsset({assets:Z.Wild(et.All()),beneficiary:l})])];B.push(S.ExchangeAsset({give:Z.Definite([{id:M,fun:be.Fungible(i)}]),want:[{id:d,fun:be.Fungible(c)}],maximal:!1}));let v=[{type:"ReserveWithdraw",value:Z.Wild(et.AllOf({id:u,fun:{type:"Fungible",value:void 0}}))}],V=Z.Definite([{id:d,fun:be.Fungible(c)}]);B.push(S.InitiateTransfer({destination:g,remote_fees:{type:"ReserveWithdraw",value:V},preserve_origin:!0,assets:v,remote_xcm:w}),S.SetTopic(m));let D=a+r+i,H=[{id:M,fun:be.Fungible(D)},{id:u,fun:be.Fungible(o)}],K=[{id:M,fun:be.Fungible(a)}],C={type:"ReserveWithdraw",value:Z.Wild(et.AllOf({id:u,fun:{type:"Fungible",value:void 0}}))},Me=[{type:"ReserveWithdraw",value:Z.Definite([{id:M,fun:be.Fungible(i)}])},C];return[S.WithdrawAsset(H),S.PayFees({asset:K[0]}),S.SetAppendix([S.SetHints({hints:[{type:"AssetClaimer",value:{location:l}}]}),S.RefundSurplus(),S.DepositAsset({assets:Z.Wild(et.All()),beneficiary:l})]),S.InitiateTransfer({destination:{parents:1,interior:gt.X1(tt.Parachain(ht))},remote_fees:{type:"ReserveWithdraw",value:Z.Definite([{id:M,fun:be.Fungible(r)}])},preserve_origin:!0,assets:Me,remote_xcm:B}),S.SetTopic(m)]}function _o(t){let{address:e,amount:n,asset:s,sender:o,source:a,destination:r,messageId:i}=t,c=a.chain,m=dc(o);if(!m.isValid)throw new Error(`Invalid SS58 address: ${o}`);let d=lc(m.publicKey),u=c.getAssetXcmLocation(s),l=u?mc.findNestedKey(u,"key"):void 0,f=l?l.key:ss,g=r.feeBreakdown,w=g.sourceExecutionFee??0n,B=g.dotRemoteFee??0n,v=g.dotToEtherSwapAmount??0n,V=g.etherFeeAmount??0n,H=rs({tokenAddress:f,senderPubKey:d,beneficiaryHex:e,tokenAmount:n,sourceExecutionFee:w,dotRemoteFee:B,dotToEtherSwapAmount:v,etherFeeAmount:V,topic:i??"0x0000000000000000000000000000000000000000000000000000000000000000"});return uc.V5(H)}var{Ss58Addr:Io}=pc,Ac="0x0000000000000000000000000000000000000000",wc=()=>({build:async t=>{let{address:e,amount:n,asset:s,sender:o,source:a,destination:r}=t,i=a.chain,c=r.chain,m=Fo.fromChain(i),d=i.getAssetId(s),u=Pt(d),l=s.originSymbol==="ETH",f=r.feeBreakdown.executionFee,g=r.feeBreakdown.relayerFee,w=r.feeBreakdown.hydrationDotFee,B=r.fee.amount,v=Io.getPubKey(e),V=new TextEncoder().encode(`${c.parachainId}${o}${u}${v}${n}${Date.now()}`),D=is(bc(V)),H=as({ethChainId:Xe,destinationParaId:c.parachainId,tokenAddress:l?Ac:u,beneficiaryHex:v,tokenAmount:n,hydrationDotFee:w,topic:D}),K=await Eo(),C=is(K.message.enc(gc.V5(H))),Me=[];l||Me.push(xc([{type:"uint8"},{type:"address"},{type:"uint128"}],[0,u,n]));let st=K.location.enc(yc.V5({parents:0,interior:fc.X1(hc.AccountId32({id:v,network:void 0}))})),dt=is(st.slice(1));return[new So({abi:Bo.Snowbridge,address:m.getGateway(),args:[C,Me,dt,f,g],value:l?B+n:B,func:"v2_sendMessage",module:"Snowbridge"})]}}),Cc=()=>({build:async t=>{let{address:e,amount:n,asset:s,source:o,destination:a}=t,r=o.chain,i=a.chain,c=Fo.fromChain(r),m=r.getAssetId(s),d=Pt(m),u=s.originSymbol==="ETH",l=a.feeBreakdown.bridgeFeeInDot,f=a.fee.amount;return[new So({abi:Bo.Snowbridge,address:c.getGateway(),args:[d,i.parachainId,[1,Io.getPubKey(e)],l,n],value:u?f+n:f,func:"sendToken",module:"Snowbridge"})]}}),Do=()=>({v2SendMessage:wc,sendToken:Cc});import{Abi as Ut,ContractConfig as bn,EvmBalanceType as c0,EvmParachain as ls,Ntt as zo,Wormhole as ps}from"@galacticcouncil/xc-core";import{encoding as Xo,serializeLayout as Ec}from"@wormhole-foundation/sdk-base";import{RequestPrefix as vc,UniversalAddress as kc}from"@wormhole-foundation/sdk-definitions";var Qt="0x00",cs=8,Ro="https://executor.labsapis.com",Tc=[{name:"prefix",binary:"bytes",size:4},{name:"srcChain",binary:"uint",size:2},{name:"srcManager",binary:"bytes",size:32},{name:"messageId",binary:"uint",size:32}],Lo=(t,e,n)=>{let s=Ec(Tc,{prefix:Xo.bytes.encode(vc.ERN1),srcChain:t,srcManager:new kc(e,"hex").toUint8Array(),messageId:n});return Xo.hex.encode(s,!0)};var Ko={};Jt(Ko,{ASSET_LOCKDOWN_PERIOD_BLOCKS:()=>Ho,AssethubClient:()=>ke,BaseClient:()=>Re,ExecutorClient:()=>yn,HydrationClient:()=>xe,NttEvmClient:()=>Zt,NttSolanaClient:()=>tn,NttSuiClient:()=>nn,UNMETERED:()=>it,capacityAt:()=>Yt,executorClient:()=>Gt,getAllAssetDepositLimits:()=>us,getAssetDepositLimit:()=>ms,getGlobalWithdrawLimit:()=>ds,nttClient:()=>ct,nttDef:()=>yt});import{encodeLocation as No}from"@galacticcouncil/common";import{hub as Pc,XcmVersionedAssetId as Vo}from"@galacticcouncil/descriptors";var Re=class{chain;descriptor;constructor(e,n){this.chain=e,this.descriptor=n??Pc}get client(){return this.chain.client}api(){return this.client.getTypedApi(this.descriptor)}get refApi(){return this.api()}async getSystemAccountBalance(e){let s=(await this.refApi.query.System.Account.getValue(e)).data,{free:o,frozen:a}=s;return BigInt(o)-BigInt(a)}async calculateDestinationFee(e,n){let s=await this.refApi.apis.XcmPaymentApi.query_xcm_weight({type:"V4",value:e});if(!s.success)throw Error("Can't query XCM weight.");let o=this.chain.getAssetXcmLocation(n);if(!o)throw Error(`Can't get XCM location for asset ${n.originSymbol}`);let a=No(o),r=await this.refApi.apis.XcmPaymentApi.query_weight_to_asset_fee(s.value,Vo.V4(a));if(!r.success)throw Error(`Can't convert weight to fee in ${n.originSymbol}`);return BigInt(r.value)}async calculateDestinationFeeV5(e,n){let s=await this.refApi.apis.XcmPaymentApi.query_xcm_weight({type:"V5",value:e});if(!s.success)throw Error("Can't query XCM weight (V5).");let o=this.chain.getAssetXcmLocation(n);if(!o)throw Error(`Can't get XCM location for asset ${n.originSymbol}`);let a=No(o),r=await this.refApi.apis.XcmPaymentApi.query_weight_to_asset_fee(s.value,Vo.V4(a));if(!r.success)throw Error(`Can't convert weight to fee in ${n.originSymbol}`);return BigInt(r.value)}};import{XcmV5Junctions as gn,XcmV5Junction as _c,XcmVersionedLocation as Bc,XcmVersionedXcm as Sc,XcmVersionedAssetId as Fc}from"@galacticcouncil/descriptors";import{encodeLocation as Ic}from"@galacticcouncil/common";import{Twox128 as Dc,u128 as Xc}from"@polkadot-api/substrate-bindings";import{toHex as Rc}from"@polkadot-api/utils";var ke=class extends Re{constructor(e){super(e)}async checkIfSufficient(e){let n=this.chain.getAssetId(e),s=this.chain.getAssetXcmLocation(e),o=Ic(s);if(n===0)return!0;let a=n===e.originSymbol?await this.api().query.ForeignAssets.Asset.getValue(o):await this.api().query.Assets.Asset.getValue(Number(n));return a&&a.is_sufficient||!1}async checkIfFrozen(e,n){let s=this.chain.getAssetId(n);if(s===n.originSymbol)return!1;let o=await this.api().query.Assets.Account.getValue(Number(s),e);return o&&o.status.type==="Frozen"||!1}async getBridgeDeliveryFee(e={defaultFee:150000000000n}){return this.readBridgeBaseFee(":BridgeHubEthereumBaseFeeV2:",e.defaultFee)}async getBridgeDeliveryFeeV1(e={defaultFee:2750872500000n}){return this.readBridgeBaseFee(":BridgeHubEthereumBaseFee:",e.defaultFee)}async readBridgeBaseFee(e,n){let s=new TextEncoder().encode(e),o=Rc(Dc(s)),a=await this.client._request("state_getStorage",[o]);if(!a)return n;let r=Xc.dec(a);return r===0n?n:r}async calculateDeliveryFee(e,n){let s=Bc.V5({parents:1,interior:gn.X1(_c.Parachain(n))}),o=Fc.V5({parents:1,interior:{type:"Here",value:void 0}}),a=await this.api().apis.XcmPaymentApi.query_delivery_fees(s,Sc.V4(e),o);if(!a.success)throw Error("Can't query XCM delivery fee.");let r=a.value.value.find(c=>{let m=c.id;return m&&m.parents&&m.parents===1&&m.interior.type==="Here"});if(!r)throw Error("Can't find XCM delivery fee in DOT.");let i=r.fun.value;if(typeof i=="bigint")return i;throw Error("Can't parse delivery fee.")}async quoteDotToEther(e,n){let s={parents:1,interior:gn.Here()},o=await this.api().apis.AssetConversionApi.quote_price_exact_tokens_for_tokens(s,e,n,!0);if(o===void 0)throw Error("Can't quote DOT to Ether conversion.");return o}async quoteEtherForDot(e,n){let s={parents:1,interior:gn.Here()},o=await this.api().apis.AssetConversionApi.quote_price_tokens_for_exact_tokens(e,s,n,!0);if(o===void 0)throw Error("Can't quote Ether for DOT conversion.");return o}async quoteDotForExactEther(e,n){let s={parents:1,interior:gn.Here()},o=await this.api().apis.AssetConversionApi.quote_price_tokens_for_exact_tokens(s,e,n,!0);if(o===void 0)throw Error("Can't quote DOT for Ether conversion.");return o}};import{hydration as Lc}from"@galacticcouncil/descriptors";var Ho=14400;function Mo(t,e,n,s,o,a){let r=e?.xcm_rate_limit!=null?BigInt(e.xcm_rate_limit):null,i=e?.symbol?new TextDecoder().decode(e.symbol):`#${t}`,c=e?.decimals??12,m=!1,d,u,l;n&&(n.type==="Locked"?(d=n.value,m=o<n.value):(u=n.value[0],l=n.value[1]));let f=s?.type==="Local"?"Local":"External",g=!m&&u!==void 0&&u+Ho<=o,w=null;if(r!==null)if(m)w=0n;else if(g)w=r;else{let B=l??a,v=a>B?a-B:0n;w=r>v?r-v:0n}return{assetId:t,symbol:i,decimals:c,limit:r,locked:m,lockedUntilBlock:d,lastResetBlock:u,baselineIssuance:l,currentIssuance:a,headroom:w,category:f,periodExpired:g}}async function ms(t,e){let n=e===0?t.query.Balances.TotalIssuance.getValue({at:"best"}):t.query.Tokens.TotalIssuance.getValue(e,{at:"best"}),[s,o,a,r,i]=await Promise.all([t.query.AssetRegistry.Assets.getValue(e,{at:"best"}),t.query.CircuitBreaker.AssetLockdownState.getValue(e,{at:"best"}),t.query.CircuitBreaker.GlobalAssetOverrides.getValue(e,{at:"best"}),t.query.System.Number.getValue({at:"best"}),n]);return Mo(e,s,o,a,r,i)}async function us(t){let[e,n,s,o,a,r]=await Promise.all([t.query.AssetRegistry.Assets.getEntries({at:"best"}),t.query.CircuitBreaker.AssetLockdownState.getEntries({at:"best"}),t.query.CircuitBreaker.GlobalAssetOverrides.getEntries({at:"best"}),t.query.System.Number.getValue({at:"best"}),t.query.Balances.TotalIssuance.getValue({at:"best"}),t.query.Tokens.TotalIssuance.getEntries({at:"best"})]),i=new Map(n.map(u=>[u.keyArgs[0],u.value])),c=new Map(s.map(u=>[u.keyArgs[0],u.value])),m=new Map(r.map(u=>[u.keyArgs[0],u.value])),d=new Map;for(let u of e){let l=u.keyArgs[0],f=u.value;if(f?.xcm_rate_limit==null)continue;let g=l===0?a:m.get(l)??0n,w=Mo(l,f,i.get(l),c.get(l),o,g);d.set(l.toString(),w)}return d}async function ds(t){let[e,n,s,o]=await Promise.all([t.query.CircuitBreaker.GlobalWithdrawLimitConfig.getValue({at:"best"}),t.query.CircuitBreaker.WithdrawLimitAccumulator.getValue({at:"best"}),t.query.CircuitBreaker.WithdrawLockdownUntil.getValue({at:"best"}),t.query.Timestamp.Now.getValue({at:"best"})]),a=s??void 0,r=a!==void 0&&o<a,[i,c]=n;if(!e)return{configured:!1,limit:0n,windowMs:0n,used:0n,lastUpdateMs:c,headroom:0n,lockdown:r,lockdownUntilMs:a};let{limit:m,window:d}=e,u=i;if(!r&&d>0n){let f=o>c?o-c:0n;if(f>0n){let g=f>d?d:f,w=i*g/d;u=i>w?i-w:0n}}let l=r||u>=m?0n:m-u;return{configured:!0,limit:m,windowMs:d,used:u,lastUpdateMs:c,headroom:l,lockdown:r,lockdownUntilMs:a}}var xe=class extends Re{constructor(e){super(e,Lc)}async checkIfSufficient(e){let n=this.chain.getAssetId(e),s=Number(n),o=await this.api().query.AssetRegistry.Assets.getValue(s);return o?o.is_sufficient||!1:!0}async getFeeAsset(e){let n=await this.api().query.MultiTransactionPayment.AccountCurrencyMap.getValue(e);return n?n.toString():"0"}async getAssetBalance(e,n){return n==="0"?this.getSystemAccountBalance(e):this.getTokensAccountsBalance(e,n)}async getSystemAccountBalance(e){let s=(await this.api().query.System.Account.getValue(e)).data,{free:o,frozen:a}=s;return BigInt(o)-BigInt(a)}async getTokensAccountsBalance(e,n){let s=Number(n),o=await this.api().query.Tokens.Accounts.getValue(e,s),{free:a,frozen:r}=o;return BigInt(a)-BigInt(r)}getAssetDepositLimit(e){let n=typeof e=="number"?e:Number(this.chain.getAssetId(e));return ms(this.api(),n)}getAllAssetDepositLimits(){return us(this.api())}getGlobalWithdrawLimit(){return ds(this.api())}};import{SolanaChain as e0,SuiChain as t0}from"@galacticcouncil/xc-core";import{Abi as Vc,Wormhole as Hc}from"@galacticcouncil/xc-core";import{big as Mc}from"@galacticcouncil/common";import{Ntt as Nc}from"@galacticcouncil/xc-core";var it={capacity:0n,limit:0n,windowMs:0,capacityAtLastTx:0n,lastTxMs:0};function yt(t,e){if(!e)throw new Error("No ntt asset given for "+t.name+".");return Nc.fromChain(t,e)}function Yt(t,e,n,s,o){let a=s>n?s-n:0n,r=e+t*a/o;return r<t?r:t}var Wc=500000n;function Wo(t,e){let n=t>>8n,s=Number(t&0xffn);return n*Mc.pow10(e-s)}var Zt=class{constructor(e,n){this.chain=e;this.asset=n}getOutboundLimit(){return this.getLimit()}getInboundLimit(e){return this.getLimit(Hc.fromChain(e).getWormholeId())}async getRedeemBudget(){return{gasLimit:Wc,msgValue:0n}}async getLimit(e){let n=this.chain.evmClient.getProvider(),s=Vc.NttManager,o=yt(this.chain,this.asset).manager,[a,r,i,c]=await Promise.all([n.readContract({abi:s,address:o,functionName:"rateLimitDuration"}),n.readContract({abi:s,address:o,functionName:"tokenDecimals"}),e===void 0?n.readContract({abi:s,address:o,functionName:"getCurrentOutboundCapacity"}):n.readContract({abi:s,address:o,functionName:"getCurrentInboundCapacity",args:[e]}),e===void 0?n.readContract({abi:s,address:o,functionName:"getOutboundLimitParams"}):n.readContract({abi:s,address:o,functionName:"getInboundLimitParams",args:[e]})]);return a===0n?it:{capacity:i,limit:Wo(c.limit,r),windowMs:Number(a)*1e3,capacityAtLastTx:Wo(c.currentCapacity,r),lastTxMs:Number(c.lastTxTimestamp)*1e3}}};import{spl as Oc,Wormhole as Gc}from"@galacticcouncil/xc-core";import{getMinimumBalanceForRentExemptAccount as Uc}from"@solana/spl-token";import{PublicKey as en}from"@solana/web3.js";var qc=250000n,Kc=10000000n,zc=2039280n,Oo=3600*24,jc=8,$c=9;function Jc(t,e){let n=new DataView(t.buffer,t.byteOffset,t.byteLength);return{limit:n.getBigUint64(e,!0),capacityAtLastTx:n.getBigUint64(e+8,!0),lastTxTimestamp:n.getBigInt64(e+16,!0)}}var tn=class{constructor(e,n){this.chain=e;this.asset=n}getOutboundLimit(){return this.getLimit()}getInboundLimit(e){return this.getLimit(Gc.fromChain(e).getWormholeId())}async getRedeemBudget(e){let{connection:n}=this.chain,s={gasLimit:qc,msgValue:Kc};if(!this.asset||!e)return{...s,msgValue:s.msgValue+zc};let o=new en(yt(this.chain,this.asset).token),{ata:a}=await Oc.getTokenAccount(n,o,new en(e));if(await n.getAccountInfo(a))return s;let i=await Uc(n);return{...s,msgValue:s.msgValue+BigInt(i)}}async getLimit(e){let{pda:n,offset:s}=this.rateLimitPda(e),o=await this.chain.connection.getAccountInfo(n);if(!o)return it;let{limit:a,capacityAtLastTx:r,lastTxTimestamp:i}=Jc(o.data,s),c=BigInt(Math.floor(Date.now()/1e3));return{capacity:Yt(a,r,i,c,BigInt(Oo)),limit:a,windowMs:Oo*1e3,capacityAtLastTx:r,lastTxMs:Number(i)*1e3}}rateLimitPda(e){let n=new en(yt(this.chain,this.asset).manager),s=new TextEncoder;if(e===void 0){let[r]=en.findProgramAddressSync([s.encode("outbox_rate_limit")],n);return{pda:r,offset:jc}}let o=new Uint8Array(2);new DataView(o.buffer).setUint16(0,e,!1);let[a]=en.findProgramAddressSync([s.encode("inbox_rate_limit"),o],n);return{pda:a,offset:$c}}};import{suiPkg as Qc,Wormhole as Yc}from"@galacticcouncil/xc-core";var Zc=10000000n,Go=3600*24*1e3;function Uo(t){let e=BigInt(t.limit),n=BigInt(t.capacity_at_last_tx),s=BigInt(t.last_tx_timestamp),o=BigInt(Date.now());return{capacity:Yt(e,n,s,o,BigInt(Go)),limit:e,windowMs:Go,capacityAtLastTx:n,lastTxMs:Number(s)}}var nn=class{constructor(e,n){this.chain=e;this.asset=n}getOutboundLimit(){return this.getLimit()}getInboundLimit(e){return this.getLimit(Yc.fromChain(e).getWormholeId())}async getRedeemBudget(){return{gasLimit:Zc,msgValue:0n}}async getLimit(e){let n=this.chain.client,s=yt(this.chain,this.asset).manager,o=await Qc.getObject(n,s);if(e===void 0){let m=o.fields.outbox?.fields?.rate_limit?.fields;return m?Uo(m):it}let a=o.fields.peers?.fields?.id?.id;if(!a)return it;let{data:r}=await n.getDynamicFieldObject({parentId:a,name:{type:"u16",value:e}}),c=r?.content?.fields?.value?.fields?.inbound_rate_limit?.fields;return c?Uo(c):it}};function ct(t,e){return t instanceof e0?new tn(t,e):t instanceof t0?new nn(t,e):new Zt(t,e)}import{deserializeLayout as n0,encoding as qo,serializeLayout as s0}from"@wormhole-foundation/sdk-base";import{relayInstructionsLayout as o0,signedQuoteLayout as a0}from"@wormhole-foundation/sdk-definitions";var r0=300*1e3,i0=t=>{try{let{quote:e}=n0(a0,qo.hex.decode(t));return e.expiryTime.getTime()}catch{return 0}},yn=class{quotes=new Map;async quote(e,n,s){let{gasLimit:o,msgValue:a}=s,r=[e,n,o,a].join(":"),i=this.quotes.get(r);if(i&&i0(i.signedQuote)-Date.now()>r0)return i;let c=qo.hex.encode(s0(o0,{requests:[{request:{type:"GasInstruction",gasLimit:o,msgValue:a}}]}),!0),m=await fetch(Ro+"/v0/quote",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({srcChain:e,dstChain:n,relayInstructions:c})});if(!m.ok)throw new Error("Executor quote failed ["+e+"->"+n+"]");let{signedQuote:d,estimatedCost:u}=await m.json();if(!d||!u)throw new Error("Executor quote incomplete");let l={signedQuote:d,estimatedCost:BigInt(u),relayInstructions:c};return this.quotes.set(r,l),l}},Gt=new yn;var fs=async t=>{let{address:e,amount:n,asset:s,source:o,destination:a}=t,r=o.chain,i=a.chain,c=zo.fromChain(r,s),m=ps.fromChain(i),d=e;i instanceof ls&&(d=await i.getDerivatedAddress(e));let u=await r.evmClient.getProvider().readContract({abi:Ut.NttManager,address:c.manager,args:[m.getWormholeId(),Qt],functionName:"quoteDeliveryPrice"}),l=r.getAssetDecimals(s)??0,f=n;if(l>cs){let g=10n**BigInt(l-cs);f=n-n%g}return{ctx:r,ntt:c,rcvWh:m,rcvAddress:d,transferAmount:f,deliveryPrice:u[1],wrapNative:r.getBalanceType(s)===c0.Native}},m0=()=>({build:async t=>{let{ntt:e,rcvWh:n,rcvAddress:s,transferAmount:o,deliveryPrice:a,wrapNative:r}=await fs(t);return[new bn({abi:Ut.NttManager,address:e.manager,args:[o,n.getWormholeId(),n.normalizeAddress(s)],token:e.token,wrapNative:r,value:a,func:"transfer",module:"NttManager"})]}}),u0=()=>({build:async t=>{let{ctx:e,ntt:n,rcvWh:s,rcvAddress:o,transferAmount:a,deliveryPrice:r,wrapNative:i}=await fs(t),c=ps.fromChain(e),m=c.getNttExecutor(),d=e instanceof ls?await e.getDerivatedAddress(t.sender):t.sender,u=await ct(t.destination.chain,t.destination.balance).getRedeemBudget(t.address),{signedQuote:l,estimatedCost:f,relayInstructions:g}=await Gt.quote(c.getWormholeId(),s.getWormholeId(),u),w=s.normalizeAddress(o),B={value:f,refundAddress:d,signedQuote:l,instructions:g},v={transferTokenFee:0n,nativeTokenFee:0n,payee:d};return[new bn({abi:Ut.NttManagerWithExecutor,address:m,args:[n.manager,a,s.getWormholeId(),w,w,Qt,B,v],token:n.token,wrapNative:i,value:r+f,func:"transfer",module:"NttManagerWithExecutor"})]}}),d0=()=>({build:async t=>{let{ctx:e,ntt:n,rcvWh:s,rcvAddress:o,transferAmount:a,deliveryPrice:r,wrapNative:i}=await fs(t),c=ps.fromChain(e),m=t.destination.chain,d=zo.find(m,t.destination.balance.key);if(!d)throw new Error("Ntt deployment missing on "+m.key);let u=e instanceof ls?await e.getDerivatedAddress(t.sender):t.sender,l=await ct(m,t.destination.balance).getRedeemBudget(t.address),[f,g]=await Promise.all([Gt.quote(c.getWormholeId(),s.getWormholeId(),l),e.evmClient.getProvider().readContract({abi:Ut.NttManager,address:n.manager,functionName:"nextMessageSequence"})]);return[new bn({abi:Ut.NttManager,address:n.manager,args:[a,s.getWormholeId(),s.normalizeAddress(o)],token:n.token,wrapNative:i,value:r,func:"transfer",module:"NttManager"}),new bn({abi:Ut.Executor,address:c.getExecutor(),args:[s.getWormholeId(),s.normalizeAddress(d.manager),u,f.signedQuote,Lo(c.getWormholeId(),n.manager,BigInt(g)),f.relayInstructions],value:f.estimatedCost,func:"requestExecution",module:"Executor"})]}}),jo=()=>({transfer:m0,transferWithExecutor:u0,transferViaExecutor:d0});function $o(){return{Ntt:jo}}function z(){return{Batch:ho,Erc20:go,Basejump:yo,PolkadotXcm:Co,Snowbridge:Do,Wormhole:$o}}import{encodeLocation as Jo}from"@galacticcouncil/common";import{ExtrinsicConfig as l0}from"@galacticcouncil/xc-core";var Qo="AssetConversion",p0=t=>{let e="swap_tokens_for_exact_tokens";return{build:async({address:n,source:s})=>{let{chain:o}=s,a=s.destinationFeeSwap||s.feeSwap;if(!a)throw new Error("Swap context not found.");let{aIn:r,aOut:i}=a,c=o,m=Jo(c.getAssetXcmLocation(r)),d=Jo(c.getAssetXcmLocation(i)),u=r.amount+r.amount*BigInt(t.slippage)/100n,l=i.amount;return new l0({module:Qo,func:e,getTx:f=>f.getUnsafeApi().tx[Qo][e]({path:[m,d],amount_out:l,amount_in_max:u,send_to:n,keep_alive:!0})})}}},Yo=()=>({swapTokensForExactTokens:p0});import{hub as f0,MultiAddress as h0}from"@galacticcouncil/descriptors";import{ExtrinsicConfig as g0}from"@galacticcouncil/xc-core";var y0="Assets",b0=()=>{let t="transfer";return{build:async({asset:e,amount:n,address:s,destination:o})=>{let a=o.chain,{fee:r}=o,i=n>r.amount?n-r.amount:n,c=a.getMetadataAssetId(e);return new g0({module:y0,func:t,getTx:m=>m.getTypedApi(f0).tx.Assets.transfer({id:Number(c),target:h0.Id(s),amount:i})})}}},Zo=()=>({transfer:b0});import{ExtrinsicConfig as x0}from"@galacticcouncil/xc-core";var ea="Balances",A0=(t=!1)=>{let e="transfer_all";return{build:async({address:n})=>new x0({module:ea,func:e,getTx:s=>s.getUnsafeApi().tx[ea][e]({dest:n,keep_alive:t})})}},ta=()=>({transferAll:A0});import{ExtrinsicConfig as w0,Gas as C0,getEvmPrerequisites as E0}from"@galacticcouncil/xc-core";import{Binary as v0}from"polkadot-api";var na="EVM",xn=(1n<<64n)-1n,sa=t=>[t&xn,t>>64n&xn,t>>128n&xn,t>>192n&xn],k0=t=>({build:async e=>{let n=e.source.chain,s=n.evmClient,o=await t.build(e),[a,r]=await Promise.all([n.getDerivatedAddress(e.sender),s.getProvider().getGasPrice()]),i=r+r/10n,m=[...await E0(s,a,e.amount,o[0]),...o.map(u=>({to:u.address,data:u.encodeFunctionData(),value:u.value,gas:C0.transfer}))],d=m.length>1;return new w0({module:d?"Utility":na,func:d?"batch_all":"call",getTx:u=>{let l=u.getUnsafeApi(),f=m.map(g=>l.tx[na].call({source:a,target:g.to,input:v0.fromHex(g.data),value:sa(g.value??0n),gas_limit:g.gas,max_fee_per_gas:sa(i),max_priority_fee_per_gas:void 0,nonce:void 0,access_list:[],authorization_list:[]}));return d?l.tx.Utility.batch_all({calls:f.map(g=>g.decodedCall)}):f[0]}})}}),oa=()=>({call:k0});import{hydration as T0}from"@galacticcouncil/descriptors";import{ExtrinsicConfig as P0}from"@galacticcouncil/xc-core";var _0="Router",B0=t=>({build:async({source:n})=>{let{chain:s,destinationFeeSwap:o}=n;if(!o)throw new Error("Swap context not found.");let{aIn:a,aOut:r,route:i}=o,c=s,m=c.getMetadataAssetId(a),d=c.getMetadataAssetId(r),u=r.amount,l=a.amount+a.amount*BigInt(t.slippage)/100n;return new P0({module:_0,func:"buy",getTx:f=>f.getTypedApi(T0).tx.Router.buy({asset_in:Number(m),asset_out:Number(d),amount_out:u,max_amount_in:l,route:i})})}}),aa=()=>({buy:B0});import{ExtrinsicConfig as S0}from"@galacticcouncil/xc-core";var hs="Utility",ra=t=>t?.type===hs&&t?.value?.type==="batch_all"?t.value.value.calls.flatMap(ra):[t],F0=t=>{let e="batch_all";return{build:async n=>{let s=await Promise.all(t.map(o=>o.build(n)));return new S0({module:hs,func:e,getTx:o=>{let a=s.flatMap(r=>ra(r.getTx(o).decodedCall));return o.getUnsafeApi().tx[hs][e]({calls:a})}})}}},ia=()=>({batchAll:F0});import{ExtrinsicConfig as jt}from"@galacticcouncil/xc-core";import{big as rm}from"@galacticcouncil/common";import{multiloc as Aa,ChainEcosystem as Ps}from"@galacticcouncil/xc-core";import{XcmV3Junctions as Ie,XcmV3Junction as Bt,XcmV3JunctionNetworkId as ba,XcmV3MultiassetFungibility as _s,XcmV4Instruction as Te,XcmV4AssetAssetFilter as Kt,XcmV4AssetWildAsset as zt,XcmV3WeightLimit as wa,XcmV2MultiassetWildFungibility as tm}from"@galacticcouncil/descriptors";import{XcmV3Junctions as q0,XcmV3MultiassetFungibility as ys,XcmV3WeightLimit as K0,XcmV4AssetAssetFilter as z0,XcmV4AssetWildAsset as j0,XcmV4Instruction as sn}from"@galacticcouncil/descriptors";import{acc as I0}from"@galacticcouncil/common";import{XcmV3Junction as ca}from"@galacticcouncil/descriptors";import{getSs58AddressInfo as D0}from"@polkadot-api/substrate-bindings";import{toHex as X0}from"@polkadot-api/utils";function j(t){if(t.length===42&&t.startsWith("0x"))return ca.AccountKey20({key:t,network:void 0});let n=D0(t);if(!n.isValid)throw new Error(`Invalid SS58 address: ${t}`);return ca.AccountId32({id:X0(n.publicKey),network:void 0})}function An(t,e,n){return I0.getMultilocationDerivatedAccount(t.parachainId,e,n.parachainId===0?0:1,n.usesH160Acc)}import{multiloc as ma}from"@galacticcouncil/xc-core";function ua(t,e){let n=ma.findNestedKey(t,"GeneralIndex"),s=ma.findNestedKey(e,"GeneralIndex"),o=n&&n.GeneralIndex,a=s&&s.GeneralIndex;return Number.isNaN(o)||Number.isNaN(a)?!1:Number(o)>Number(a)}function N(t,e){let n=t.getAssetXcmLocation(e);if(!n)throw new Error(e.originSymbol+" location config is missing.");return n}var En={};Jt(En,{ETHER_TOKEN_ADDRESS:()=>gs,erc20Location:()=>N0,erc20LocationReanchored:()=>V0,ethereumLocation:()=>la,parachainLocation:()=>L0});import{XcmV3Junctions as wn,XcmV3Junction as Cn,XcmV3JunctionNetworkId as R0}from"@galacticcouncil/descriptors";var gs="0x0000000000000000000000000000000000000000",da=t=>Cn.GlobalConsensus(R0.Ethereum({chain_id:BigInt(t)}));function la(t){return{parents:2,interior:wn.X1(da(t))}}function L0(t){return{parents:1,interior:wn.X1(Cn.Parachain(t))}}function N0(t,e){return e===gs?la(t):{parents:2,interior:wn.X2([da(t),Cn.AccountKey20({key:e})])}}function V0(t){return t===gs?{parents:0,interior:{type:"Here"}}:{parents:0,interior:wn.X1(Cn.AccountKey20({key:t}))}}import{encodeLocation as pa}from"@galacticcouncil/common";import{multiloc as H0}from"@galacticcouncil/xc-core";function W(t,e){return M0(e)>=4?pa(t):W0(t)}function M0(t){let e=t.toString().replace("V","").replace("v","");return Number(e)}function W0(t){return{type:"Concrete",value:pa(t)}}var O0=1e3;function G0(t){let{parents:e,interior:n}=t;return e===1&&n==="Here"?!0:e===2&&n&&n!=="Here"?Object.values(n).flat().some(o=>o&&typeof o=="object"&&"GlobalConsensus"in o):!1}function U0(t){if(t)return G0(t)?O0:H0.findParachain(t)}function fa(t,e,n,s){let o=e.getAssetXcmLocation(t),a=U0(o),r=s?.parachainId??n.parachainId;if(a&&r!==a)throw new Error(s?`Wrong reserve for "${t.originSymbol}": expected chain ${a}, got ${s.name} (${s.parachainId})`:`Reserve chain ${a} required for "${t.originSymbol}"`)}var mt=(a=>(a.v1="V1",a.v2="V2",a.v3="V3",a.v4="V4",a.v5="V5",a))(mt||{}),Fe=(o=>(o.Teleport="Teleport",o.LocalReserve="LocalReserve",o.DestinationReserve="DestinationReserve",o.RemoteReserve="RemoteReserve",o))(Fe||{});function vn(t,e){let n="V4",s=W(N(e,t),n),o=ze;return[sn.ReserveAssetDeposited([{id:M,fun:ys.Fungible(q)},{id:s,fun:ys.Fungible(q)}]),sn.ClearOrigin(),sn.BuyExecution({fees:{id:M,fun:ys.Fungible(q)},weight_limit:K0.Unlimited()}),sn.DepositAsset({assets:z0.Wild(j0.AllCounted(2)),beneficiary:{parents:0,interior:q0.X1(j(_t))}}),sn.SetTopic(o)]}import{XcmV4Instruction as bs,XcmV3MultiassetFungibility as xs,XcmV3WeightLimit as $0}from"@galacticcouncil/descriptors";function As(t,e){let n="V4",s=W(N(e,t),n),o=kn("V4",j(To),j(_t),s,ze);return[bs.WithdrawAsset([{id:M,fun:xs.Fungible(q)},{id:s,fun:xs.Fungible(q)}]),bs.ClearOrigin(),bs.BuyExecution({fees:{id:M,fun:xs.Fungible(q)},weight_limit:$0.Unlimited()}),...o.value]}import{XcmV3Junctions as ws,XcmV3Junction as J0,XcmV3MultiassetFungibility as on,XcmV3WeightLimit as Cs,XcmV4AssetAssetFilter as Es,XcmV4AssetWildAsset as vs,XcmV4Instruction as Le}from"@galacticcouncil/descriptors";function ha(t,e){let n="V4",s=W(N(e,t),n),o=ze;return[Le.WithdrawAsset([{id:s,fun:on.Fungible(q)}]),Le.ClearOrigin(),Le.BuyExecution({fees:{id:s,fun:on.Fungible(q)},weight_limit:Cs.Unlimited()}),Le.DepositAsset({assets:Es.Wild(vs.AllCounted(1)),beneficiary:{parents:0,interior:ws.X1(j(_t))}}),Le.SetTopic(o)]}function ks(t,e){let n="V4",s=W(N(e,t),n);return[Le.BuyExecution({fees:{id:s,fun:on.Fungible(q)},weight_limit:Cs.Unlimited()}),Le.DepositAsset({assets:Es.Wild(vs.AllCounted(1)),beneficiary:{parents:0,interior:ws.X1(j(_t))}})]}function ga(t,e,n){let s="V4",o=W(N(e,t),s),a=ze,r=ks(t,n);return[Le.WithdrawAsset([{id:o,fun:on.Fungible(q)}]),Le.ClearOrigin(),Le.BuyExecution({fees:{id:o,fun:on.Fungible(q)},weight_limit:Cs.Unlimited()}),Le.DepositReserveAsset({assets:Es.Wild(vs.AllCounted(1)),dest:{parents:1,interior:ws.X1(J0.Parachain(n.parachainId))},xcm:r}),Le.SetTopic(a)]}import{XcmV3MultiassetFungibility as Ts,XcmV5AssetFilter as Q0,XcmV5Instruction as qt,XcmV5Junctions as Y0,XcmV5Junction as Z0,XcmV5WildAsset as em}from"@galacticcouncil/descriptors";function ya(t,e){let n="V5",s=W(N(e,t),n),o={parents:0,interior:Y0.X1(Z0.AccountId32({id:ko,network:void 0}))};return[qt.ReserveAssetDeposited([{id:M,fun:Ts.Fungible(q)}]),qt.PayFees({asset:{id:M,fun:Ts.Fungible(q)}}),qt.ReserveAssetDeposited([{id:s,fun:Ts.Fungible(q)}]),qt.ClearOrigin(),qt.DepositAsset({assets:Q0.Wild(em.AllCounted(3)),beneficiary:o}),qt.SetTopic(ze)]}var xa=[Ps.Polkadot,Ps.Kusama],nm={parents:1,interior:Ie.X1(Bt.Parachain(1e3))},sm=t=>{let{parents:e,interior:n}=t;return e!==1?!1:n==="Here"||n?.type==="Here"},Ca=(t,e)=>!t.ecosystem||!e.ecosystem?!1:xa.includes(t.ecosystem)&&xa.includes(e.ecosystem)&&t.ecosystem!==e.ecosystem,Ea=t=>{let{interior:e}=t;if(e.type==="X1"&&e.value.type==="GlobalConsensus")return e.value.value.type==="Ethereum";if(e.type==="X2"&&Array.isArray(e.value)){let n=e.value[0];return n.type==="GlobalConsensus"&&n.value.type==="Ethereum"}return!1},bt=(t,e,n)=>{if(Ca(e,n))return{type:t,value:Bs(n.ecosystem,n.parachainId)};if(n.parachainId===vo)return{type:t,value:{parents:1,interior:Ie.Here()}};let s=n.key==="ethereum"?ht:n.parachainId;return{type:t,value:{parents:1,interior:Ie.X1(Bt.Parachain(s))}}},om=t=>t===Ps.Kusama?ba.Kusama():ba.Polkadot(),Bs=(t,e)=>({parents:2,interior:Ie.X2([Bt.GlobalConsensus(om(t)),Bt.Parachain(e)])}),va=(t,e,n,s)=>{if(Ca(e,n)){if(e.parachainId!==ht){let o=Aa.findGlobalConsensus(N(e,s)),a=typeof o=="string"&&o===n.ecosystem;return{dest:{type:t,value:{parents:1,interior:Ie.X1(Bt.Parachain(ht))}},mode:a?"bridge-withdraw":"bridge-deposit"}}if(n.parachainId!==ht)return{dest:{type:t,value:Bs(n.ecosystem,ht)},mode:"onward"}}},St=(t,e)=>({type:t,value:{parents:0,interior:Ie.X1(e)}}),Ss=(t,e,n)=>e==="RemoteReserve"?{type:"RemoteReserve",value:{type:t,value:sm(n)?nm:n}}:{type:e},xt=(t,e)=>({id:t,fun:_s.Fungible(e)}),ka=(t,e,n)=>({type:t,value:[Te.DepositAsset({assets:Kt.Wild(zt.AllCounted(n)),beneficiary:{parents:0,interior:Ie.X1(e)}})]}),kn=(t,e,n,s,o)=>{let a=o;return{type:t,value:[Te.SetAppendix([Te.DepositAsset({assets:Kt.Wild(zt.All()),beneficiary:{parents:0,interior:Ie.X1(n)}})]),Te.InitiateReserveWithdraw({assets:Kt.Wild(zt.AllOf({id:s,fun:tm.Fungible()})),reserve:En.ethereumLocation(Xe),xcm:[Te.BuyExecution({fees:{id:am(s),fun:_s.Fungible(1n)},weight_limit:wa.Unlimited()}),Te.DepositAsset({assets:Kt.Wild(zt.AllCounted(1)),beneficiary:{parents:0,interior:Ie.X1(e)}}),Te.SetTopic(a)]}),Te.SetTopic(a)]}},Ta=(t,e,n,s,o,a)=>{let r=s==="onward"?{parents:1,interior:Ie.X1(Bt.Parachain(n.parachainId))}:Bs(n.ecosystem,n.parachainId),i={parents:0,interior:Ie.X1(e)},c=Kt.Wild(zt.AllCounted(1)),m=[Te.BuyExecution({fees:{id:o,fun:_s.Fungible(a)},weight_limit:wa.Unlimited()}),Te.DepositAsset({assets:c,beneficiary:i})],d=s==="bridge-withdraw"?Te.InitiateReserveWithdraw({assets:c,reserve:r,xcm:m}):Te.DepositReserveAsset({assets:c,dest:r,xcm:m});return{type:t,value:[Te.SetAppendix([Te.DepositAsset({assets:Kt.Wild(zt.All()),beneficiary:i})]),d]}},am=t=>{let e=Aa.findNestedKey(t,"key");return e?{parents:0,interior:Ie.X1(Bt.AccountKey20({key:e.key}))}:{parents:0,interior:Ie.Here()}};var Ne="PolkadotXcm",im=()=>({build:async({address:t,amount:e,asset:n,destination:s,source:o})=>{let a=j(t),r=o.chain,i=s.chain,c="V4",m=N(r,n),d=N(r,s.fee),u=W(m,c),l=W(d,c),f=xt(u,e),g=xt(l,s.fee.amount),w="limited_reserve_transfer_assets";return new jt({module:Ne,func:w,getTx:B=>{let v=B.getUnsafeApi().tx[Ne][w];return n.key===s.fee.key?v({dest:bt(c,r,i),beneficiary:St(c,a),assets:{type:c,value:[f]},fee_asset_item:0,weight_limit:{type:"Unlimited"}}):ua(m,d)?v({dest:bt(c,r,i),beneficiary:St(c,a),assets:{type:c,value:[g,f]},fee_asset_item:0,weight_limit:{type:"Unlimited"}}):v({dest:bt(c,r,i),beneficiary:St(c,a),assets:{type:c,value:[f,g]},fee_asset_item:1,weight_limit:{type:"Unlimited"}})}})}}),cm=()=>({build:async({address:t,amount:e,asset:n,destination:s,source:o})=>{let a=j(t),r=o.chain,i=s.chain,c="V4",m=W(N(r,n),c),d=xt(m,e),u=bt(c,r,i),l=St(c,a),f={type:c,value:[d]},g="limited_teleport_assets";return new jt({module:Ne,func:g,getTx:w=>w.getUnsafeApi().tx[Ne][g]({dest:u,beneficiary:l,assets:f,fee_asset_item:0,weight_limit:{type:"Unlimited"}})})}}),mm=()=>({build:async({address:t,amount:e,asset:n,destination:s,source:o})=>{let a=j(t),r=o.chain,i=s.chain,c=r.xcmVersion??"V4",m=W(N(r,n),c),d=xt(m,e),u=bt(c,r,i),l=St(c,a),f={type:c,value:[d]},g="reserve_transfer_assets";return new jt({module:Ne,func:g,getTx:w=>w.getUnsafeApi().tx[Ne][g]({dest:u,beneficiary:l,assets:f,fee_asset_item:0})})}}),um=()=>({build:async({address:t,amount:e,asset:n,destination:s,source:o})=>{let a=j(t),r=o.chain,i=s.chain,c="V4",m=W(N(r,n),c),d=xt(m,e),u=bt(c,r,i),l=St(c,a),f={type:c,value:[d]},g="transfer_assets";return new jt({module:Ne,func:g,getTx:w=>w.getUnsafeApi().tx[Ne][g]({dest:u,beneficiary:l,assets:f,fee_asset_item:0,weight_limit:{type:"Unlimited"}})})}}),dm=t=>({build:async({address:e,asset:n,amount:s,destination:o,messageId:a,sender:r,source:i})=>{let c="V4",m=i.chain,d=o.chain,u=o.fee.amount,l=o.fee,f=j(r),g=d.usesCexForwarding?An(m,r,d):e,w=j(g),{transferType:B}=t,v=W(N(m,n),c),V=W(N(m,l),c),D=xt(v,s),H=xt(V,u),K=n.isEqual(l),C=va(c,m,d,n),Me=C?.dest??bt(c,m,d),st={type:c,value:K?[D]:[H,D]},dt=Ss(c,B,v),un={type:c,value:K?v:V},qn=Ss(c,B,V),Xt;if(Ea(v)&&o.chain.isEvmChain())Xt=kn(c,w,f,v,a);else if(C){let $t=rm.toBigInt(t.executionFee??o.fee.amount,o.fee.decimals),Kn=W(N(d,n),c);Xt=Ta(c,w,d,C.mode,Kn,$t)}else Xt=ka(c,w,st.value.length);let dn="transfer_assets_using_type_and_then";return new jt({module:Ne,func:dn,getTx:$t=>$t.getUnsafeApi().tx[Ne][dn]({dest:Me,assets:st,assets_transfer_type:dt,remote_fees_id:un,fees_transfer_type:qn,custom_xcm_on_dest:Xt,weight_limit:{type:"Unlimited"}})})}});function lm(t){let e=n=>({build:async s=>{let o=n(s),a="execute";return new jt({module:Ne,func:a,getTx:r=>r.getUnsafeApi().tx[Ne][a]({message:o,max_weight:{ref_time:20000000000n,proof_size:500000n}})})}});return t?e(t):{viaSnowbridge:()=>e(_o)}}var Fs=()=>({limitedReserveTransferAssets:im,limitedTeleportAssets:cm,reserveTransferAssets:mm,transferAssets:um,transferAssetsUsingTypeAndThen:dm,execute:lm});import{ExtrinsicConfig as fm}from"@galacticcouncil/xc-core";import{encodeAssetId as hm}from"@galacticcouncil/common";import{XcmV3Junctions as Pa,XcmV3Junction as pm}from"@galacticcouncil/descriptors";var _a=(t,e,n)=>e.parachainId===0?{type:t,value:{parents:1,interior:Pa.X1(n)}}:{type:t,value:{parents:1,interior:Pa.X2([pm.Parachain(e.parachainId),n])}};var Ba="XTokens",gm=()=>({build:async({address:t,amount:e,asset:n,destination:s,sender:o,source:a})=>{let r=a.chain,i=s.chain,c="V3",m=i.usesCexForwarding?An(r,o,i):t,d=j(m),u=r.getAssetId(n),l=hm(u),f="transfer";return new fm({module:Ba,func:f,getTx:g=>g.getUnsafeApi().tx[Ba][f]({currency_id:l,amount:e,dest:_a(c,i,d),dest_weight_limit:{type:"Unlimited"}})})}}),Is=()=>({transfer:gm});function p(){return{assetConversion:Yo,assets:Zo,balances:ta,evm:oa,polkadotXcm:Fs,router:aa,utility:ia,xTokens:Is}}function ut(t,e){return{prior:function(n){return{build:async s=>t(s)?p().utility().batchAll([e,n]).build(s):n.build(s)}},priorMulti:function(n){return{build:async s=>t(s)?p().utility().batchAll([e,...n]).build(s):p().utility().batchAll([...n]).build(s)}}}}import{Abi as Xs,Ntt as ym,Snowbridge as bm,Basejump as xm,Wormhole as Xa}from"@galacticcouncil/xc-core";var Sa=80000n,Fa=120000n,Ia=100000n,Da=2000000n,Ds=15000000000000n;function Am(){return{calculateInboundFee:t=>({build:async({feeAsset:e,destination:n})=>{let s=n,o=new xe(s),a=new ke(t.hub),r=vn(e,s),i=ya(e,s),c=Ot(Xe),m=250000000n,d=Po(Xe,s.parachainId),[u,l,f,g]=await Promise.all([o.calculateDestinationFeeV5(i,x),a.calculateDeliveryFee(r,s.parachainId),a.calculateDeliveryFee(r,hn),a.calculateDestinationFeeV5(d,x)]),w=U(u,33n),B=U(l,33n),v=U(f,33n),D=U(g,33n)+B,H=w,K=await a.quoteEtherForDot(c,D),C=U(K,30n),Me=C<Ds*2n?Ds*2n:C,st=U(await a.quoteEtherForDot(c,H),100n),dt=U(await a.quoteDotToEther(c,m+v),30n);return{amount:Me+dt+st,breakdown:{executionFee:Me,relayerFee:dt,remoteEtherFee:st,hydrationDotFee:H}}}}),calculateOutboundFee:t=>({build:async({transferAsset:e,feeAsset:n,source:s,destination:o})=>{let a=s,r=o,i=new ke(t.hub),c=Ot(Xe),m=As(e,a),[d,u,l]=await Promise.all([i.getBridgeDeliveryFee(),i.calculateDeliveryFee(m,hn),i.calculateDestinationFee(m,n)]),f=await r.evmClient.getProvider().getGasPrice(),g=Da+Fa+Sa+Ia,w=f*g,B=U(w,10n),v=d+U(u,33n)+U(l,33n),V=U(await i.quoteDotForExactEther(c,B),20n),D=new xe(a),H=rs({tokenAddress:"0x0000000000000000000000000000000000000000",senderPubKey:"0x"+"00".repeat(32),beneficiaryHex:"0x"+"00".repeat(20),tokenAmount:1000000000000n,sourceExecutionFee:1000000000n,dotRemoteFee:1000000000n,dotToEtherSwapAmount:1000000000n,etherFeeAmount:1000000000n,topic:ze}),K=U(await D.calculateDestinationFeeV5(H,x),33n);return{amount:v+V+K,breakdown:{dotRemoteFee:v,dotToEtherSwapAmount:V,etherFeeAmount:B,sourceExecutionFee:K}}}}),calculateInboundFeeV1:t=>({build:async({feeAsset:e,destination:n,source:s})=>{let o=s,a=n,r=bm.fromChain(o),i=new Re(a),c=new ke(t.hub),m=vn(e,a),[d,u]=await Promise.all([i.calculateDestinationFee(m,x),c.calculateDeliveryFee(m,a.parachainId)]),l=u+U(d,25n),f=o.getAssetId(e);return{amount:await o.evmClient.getProvider().readContract({abi:Xs.Snowbridge,address:r.getGateway(),args:[f,a.parachainId,l],functionName:"quoteSendTokenFee"}),breakdown:{bridgeFeeInDot:l}}}}),calculateOutboundFeeV1:t=>({build:async({transferAsset:e,feeAsset:n,source:s})=>{let o=s,a=new ke(t.hub),r=As(e,o),i=vn(e,o),[c,m,d,u,l]=await Promise.all([a.getBridgeDeliveryFeeV1(),a.calculateDeliveryFee(r,hn),a.calculateDestinationFee(r,n),a.calculateDeliveryFee(i,o.parachainId),a.calculateDestinationFee(i,n)]);return{amount:c+m+U(d,25n)+u+U(l,25n),breakdown:{bridgeDeliveryFee:c,bridgeHubDeliveryFee:m,assetHubDestinationFee:d,returnToSenderDeliveryFee:u,returnToSenderDestinationFee:l}}}})}}function wm(){return{calculateDestFee:t=>({build:async({feeAsset:e,source:n,destination:s})=>{let o=n,a=s,r=t?.reserve;if(fa(e,o,a,r),r){let l=new Re(a),f=new Re(r),g=ks(e,a),w=ga(e,r,a),[B,v]=await Promise.all([l.calculateDestinationFee(g,e),f.calculateDestinationFee(w,e)]),V=v+B,D=U(V,20n),H=D-V;return{amount:D,breakdown:{reserveFee:v,destinationFee:B,margin:H}}}let i=new Re(a),c=ha(e,a),m=await i.calculateDestinationFee(c,e),d=U(m,20n),u=d-m;return{amount:d,breakdown:{totalFee:m,margin:u}}}})}}function Cm(){return{quoteExecutorCost:()=>({build:async({address:t,destinationAsset:e,transferAsset:n,source:s,destination:o})=>{let a=s,r=ym.fromChain(a,n),i=Xa.fromChain(a),c=Xa.fromChain(o),m=await ct(o,e).getRedeemBudget(t),[d,u]=await Promise.all([a.evmClient.getProvider().readContract({abi:Xs.NttManager,address:r.manager,args:[c.getWormholeId(),Qt],functionName:"quoteDeliveryPrice"}),Gt.quote(i.getWormholeId(),c.getWormholeId(),m)]);return{amount:d[1]+u.estimatedCost,breakdown:{deliveryPrice:d[1],executorCost:u.estimatedCost}}}})}}function Em(){return{quoteFee:()=>({build:async({feeAsset:t,source:e})=>{let n=e,s=xm.fromChain(n),o=n.getAssetId(t);return{amount:await n.evmClient.getProvider().readContract({abi:Xs.Basejump,address:s.getAddress(),args:[o],functionName:"quoteFee"})}}})}}function P(){return{Basejump:Em,XcmPaymentApi:wm,Snowbridge:Am,Wormhole:Cm}}var vm="0";function km(){return{build:async({address:t,chain:e})=>{let s=await new xe(e).api().query.MultiTransactionPayment.AccountCurrencyMap.getValue(t),o=s?s.toString():vm,a=e.findAssetById(o);return a?a.asset:Rt}}}var Tm=()=>({accountCurrencyMap:km});function an(){return{multiTransactionPayment:Tm}}import{EvmParachain as Pm,MoveConfig as _m,Ntt as Bm,suiPkg as Tn,Wormhole as Ra}from"@galacticcouncil/xc-core";import{Transaction as Sm}from"@mysten/sui/transactions";import{SUI_CLOCK_OBJECT_ID as Rs}from"@mysten/sui/utils";import{encoding as Fm}from"@wormhole-foundation/sdk-base";var Im=()=>({build:async t=>{let{address:e,amount:n,asset:s,source:o,destination:a}=t,r=o.chain,i=a.chain,c=Bm.fromChain(r,s),m=Ra.fromChain(r),d=Ra.fromChain(i),u=r.client,l=e;i instanceof Pm&&(l=await i.getDerivatedAddress(e));let f=Fm.hex.decode(d.normalizeAddress(l)),g=m.getCoreBridge(),w=c.manager,B=c.transceiver.wormhole,v=c.token,[V,D,H,K]=await Promise.all([Tn.getWormholePackageId(u,g),Tn.getCurrentPackageId(u,w),Tn.getCurrentPackageId(u,B),Tn.getCoinMetadataId(u,v)]),C=new Sm,[Me]=C.splitCoins(C.gas,[C.pure.u64(n)]),[st]=C.moveCall({target:`${D}::upgrades::new_version_gated`,arguments:[]}),[dt,un]=C.moveCall({target:`${D}::ntt::prepare_transfer`,typeArguments:[v],arguments:[C.object(w),Me,C.object(K),C.pure.u16(d.getWormholeId()),C.pure.vector("u8",Array.from(f)),C.pure.option("vector<u8>",null),C.pure.bool(!1)]}),[qn]=C.moveCall({target:`${D}::state::get_next_sequence`,typeArguments:[v],arguments:[C.object(w)]});C.moveCall({target:`${D}::ntt::transfer_tx_sender`,typeArguments:[v],arguments:[C.object(w),st,C.object(K),dt,C.object(Rs)]});let[Xt]=C.moveCall({target:`${D}::state::create_transceiver_message`,typeArguments:[`${H}::wormhole_transceiver::TransceiverAuth`,v],arguments:[C.object(w),qn,C.object(Rs)]}),[dn]=C.moveCall({target:`${H}::wormhole_transceiver::release_outbound`,typeArguments:[`${D}::auth::ManagerAuth`],arguments:[C.object(B),Xt]}),[$t]=C.splitCoins(C.gas,[C.pure.u64(0n)]);C.moveCall({target:`${V}::publish_message::publish_message`,arguments:[C.object(g),$t,dn,C.object(Rs)]});let[Kn]=C.moveCall({target:"0x2::coin::from_balance",typeArguments:[v],arguments:[un]});return C.mergeCoins(C.gas,[Kn]),[new _m({transaction:C,func:"transfer",module:"NttManager"})]}}),La=()=>({transfer:Im});function Na(){return{Ntt:La}}function Ls(){return{Wormhole:Na}}import{EvmParachain as Dm,Ntt as Xm,ProgramConfig as Ha,SolanaBalanceType as Rm,Wormhole as Va}from"@galacticcouncil/xc-core";import{getMinimumBalanceForRentExemptAccount as Lm}from"@solana/spl-token";import{Keypair as Nm,TransactionMessage as Vm}from"@solana/web3.js";import{toChain as Hm}from"@wormhole-foundation/sdk-base";import{UniversalAddress as Mm}from"@wormhole-foundation/sdk-definitions";import{SolanaAddress as Wm}from"@wormhole-foundation/sdk-solana";import"@wormhole-foundation/sdk-definitions-ntt";async function Om(t,e){return!("message"in e)||e.message.version==="legacy"?[]:(await Promise.all(e.message.addressTableLookups.map(s=>t.getAddressLookupTable(s.accountKey)))).map(s=>s.value).filter(s=>s!==null)}async function Gm(t,e,n){let s=await Om(t,e),o="message"in e?Vm.decompile(e.message,{addressLookupTableAccounts:s}).instructions:e.instructions;return new Ha({instructions:o,signers:n,lookupTables:s,func:"transfer",module:"NttManager"})}var Um=()=>({build:async t=>{let{address:e,amount:n,asset:s,sender:o,source:a,destination:r}=t,i=a.chain,c=r.chain,m=Xm.fromChain(i,s),d=Va.fromChain(i),u=Va.fromChain(c),l=e;c instanceof Dm&&(l=await c.getDerivatedAddress(e));let{SolanaNtt:f}=await import("@wormhole-foundation/sdk-solana-ntt"),g=new f("Mainnet","Solana",i.connection,{coreBridge:d.getCoreBridge(),ntt:{manager:m.manager,token:m.token,transceiver:{wormhole:m.transceiver.wormhole}}}),w=i.getBalanceType(s)===Rm.Native,B=Nm.generate(),v=[];for await(let H of g.transfer(new Wm(o),n,{chain:Hm(u.getWormholeId()),address:new Mm(u.normalizeAddress(l))},{queue:!1,automatic:!1,wrapNative:w},B)){let{transaction:K,signers:C}=H.transaction;v.push(await Gm(i.connection,K,C??[]))}let V=w?BigInt(await Lm(i.connection)):0n,D=v[v.length-1];return[...v.slice(0,-1),new Ha({instructions:D.instructions,signers:D.signers,lookupTables:D.lookupTables,rentReserve:V,func:"transfer",module:"NttManager"})]}}),Ma=()=>({transfer:Um});function Wa(){return{Ntt:Ma}}function Ns(){return{Wormhole:Wa}}var Ga={};Jt(Ga,{Tag:()=>At});var At=(i=>(i.Basejump="Basejump",i.Ntt="Ntt",i.NttExecutor="NttExecutor",i.Wormhole="Wormhole",i.Relayer="Relayer",i.Snowbridge="Snowbridge",i.SnowbridgeV1="SnowbridgeV1",i))(At||{});function Ua(t,e){return new Vs({source:{asset:t,fee:{asset:k}},destination:{chain:h,asset:e,fee:{amount:0,asset:t}},contract:z().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function qa(t,e){return new Vs({source:{asset:t,fee:{asset:k}},destination:{chain:h,asset:e,fee:{amount:P().Wormhole().quoteExecutorCost(),asset:k}},contract:z().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}function Ka(t,e){return new Vs({source:{asset:t,fee:{asset:k},destinationFee:t},destination:{chain:h,asset:e,fee:{amount:P().Basejump().quoteFee(),asset:t}},contract:z().Basejump().bridgeViaWormhole(),tags:["Basejump"]})}var Km=[Ka(De,Oe)],zm=[Ua(De,Oe)],jm=[qa(De,Oe)],za=new qm({chain:kt,routes:[...zm,...jm,...Km]});import{AssetRoute as $a,ChainRoutes as $m}from"@galacticcouncil/xc-core";import{AssetRoute as rn}from"@galacticcouncil/xc-core";function wt(t,e){return new rn({source:{asset:t,fee:{asset:k}},destination:{chain:h,asset:e,fee:{amount:0,asset:t}},contract:z().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function Ft(t,e){return new rn({source:{asset:t,fee:{asset:k}},destination:{chain:h,asset:e,fee:{amount:P().Wormhole().quoteExecutorCost(),asset:k}},contract:z().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}function ja(t,e){return new rn({source:{asset:t,fee:{asset:k}},destination:{chain:h,asset:e,fee:{amount:0,asset:t}},contract:z().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}function ee(t,e){return new rn({source:{asset:t,fee:{asset:k}},destination:{chain:h,asset:e,fee:{amount:P().Snowbridge().calculateInboundFee({hub:_}),asset:k}},contract:z().Snowbridge().v2SendMessage(),tags:["Snowbridge"]})}function te(t,e){return new rn({source:{asset:t,fee:{asset:k}},destination:{chain:h,asset:e,fee:{amount:P().Snowbridge().calculateInboundFeeV1({hub:_}),asset:k}},contract:z().Snowbridge().sendToken(),tags:["Snowbridge","SnowbridgeV1"]})}var Jm=[wt(We,je),wt(Be,$e),wt(E,Qe),wt(b,Je),wt(Se,Ze),wt(Ye,ve),wt(k,ve)],Qm=[Ft(We,je),Ft(Be,$e),Ft(E,Qe),Ft(b,Je),Ft(Se,Ze),Ft(Ye,ve),ja(k,ve)],Ym=[new $a({source:{asset:k,fee:{asset:k}},destination:{chain:h,asset:k,fee:{amount:P().Snowbridge().calculateInboundFee({hub:_}),asset:k}},contract:z().Snowbridge().v2SendMessage(),tags:["Snowbridge"]}),ee(se,se),ee(oe,oe),ee(ae,ae),ee(re,re),ee(ue,ue),ee(fe,fe),ee(he,he),ee(ce,ce),ee(ie,ie),ee(me,me),ee(de,de),ee(ge,ge),ee(ye,ye),ee(E,at),ee(b,ot)],Zm=[new $a({source:{asset:k,fee:{asset:k}},destination:{chain:h,asset:k,fee:{amount:P().Snowbridge().calculateInboundFeeV1({hub:_}),asset:k}},contract:z().Snowbridge().sendToken(),tags:["Snowbridge","SnowbridgeV1"]}),te(se,se),te(oe,oe),te(ae,ae),te(re,re),te(ue,ue),te(fe,fe),te(he,he),te(ce,ce),te(ie,ie),te(me,me),te(de,de),te(ge,ge),te(ye,ye),te(E,at),te(b,ot)],Ja=new $m({chain:A,routes:[...Jm,...Qm,...Ym,...Zm]});var Qa=[za,Ja];import{AssetRoute as Bn,ChainRoutes as Za}from"@galacticcouncil/xc-core";import{AssetRoute as Hs}from"@galacticcouncil/xc-core";var It=0,eu=t=>{let{source:e}=t;return!!e.feeSwap},tu=t=>{let{source:e}=t,{enabled:n}=e.destinationFeeSwap||{};return!!n},Ya=p().assetConversion().swapTokensForExactTokens({slippage:30});function nu(t,e,n){return new Hs({source:{asset:t,fee:{asset:x,extra:It}},destination:{chain:e,asset:t,fee:{amount:n,asset:b}},extrinsic:ut(tu,Ya).prior(p().polkadotXcm().limitedReserveTransferAssets())})}function Pn(t,e,n){return new Hs({source:{asset:t,fee:{asset:t,swap:!t.isEqual(x)}},destination:{chain:e,asset:t,fee:{amount:n,asset:t}},extrinsic:ut(eu,Ya).prior(p().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"}))})}function cn(t,e,n){return new Hs({source:{asset:t,fee:{asset:x,extra:It}},destination:{chain:e,asset:t,fee:{amount:n,asset:t}},extrinsic:p().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})})}function _n(t){return nu(t,h,.02)}var su=[new Bn({source:{asset:x,fee:{asset:x,extra:It}},destination:{chain:h,asset:x,fee:{amount:.001,asset:x}},extrinsic:p().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),new Bn({source:{asset:T,fee:{asset:x,extra:It}},destination:{chain:h,asset:T,fee:{amount:1e-4,asset:T}},extrinsic:p().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),cn(b,h,.02),cn(E,h,.02),_n(rt)],ou=[new Bn({source:{asset:T,fee:{asset:x,extra:It}},destination:{chain:Ke,asset:T,fee:{amount:.001,asset:T}},extrinsic:p().polkadotXcm().transferAssets()})],au=[cn(b,R,.03),cn(E,R,.03)],ru=[new Bn({source:{asset:X,fee:{asset:x,extra:It}},destination:{chain:ft,asset:X,fee:{amount:2.5,asset:X}},extrinsic:p().polkadotXcm().limitedTeleportAssets()})],er=new Za({chain:pt,routes:[Pn(b,h,.02),Pn(E,h,.02),Pn(x,h,.001)]}),tr=new Za({chain:_,routes:[...su,...ou,...au,...ru]});import{AssetRoute as Ct,ChainRoutes as iu}from"@galacticcouncil/xc-core";var cu=[new Ct({source:{asset:I},destination:{chain:h,asset:I,fee:{amount:.044306118,asset:I}},extrinsic:p().polkadotXcm().reserveTransferAssets()}),new Ct({source:{asset:F,fee:{asset:I}},destination:{chain:h,asset:F,fee:{amount:P().XcmPaymentApi().calculateDestFee({reserve:R}),asset:F}},extrinsic:p().polkadotXcm().limitedReserveTransferAssets()}),new Ct({source:{asset:L,fee:{asset:I}},destination:{chain:h,asset:L,fee:{amount:2e-6,asset:L}},extrinsic:p().polkadotXcm().limitedReserveTransferAssets()}),new Ct({source:{asset:Pe,fee:{asset:I}},destination:{chain:h,asset:Pe,fee:{amount:.01,asset:Pe}},extrinsic:p().polkadotXcm().limitedReserveTransferAssets()}),new Ct({source:{asset:G,fee:{asset:I}},destination:{chain:h,asset:G,fee:{amount:P().XcmPaymentApi().calculateDestFee({reserve:R}),asset:G}},extrinsic:p().polkadotXcm().limitedReserveTransferAssets()}),new Ct({source:{asset:O,fee:{asset:I}},destination:{chain:h,asset:O,fee:{amount:P().XcmPaymentApi().calculateDestFee({reserve:R}),asset:O}},extrinsic:p().polkadotXcm().limitedReserveTransferAssets()}),new Ct({source:{asset:b,fee:{asset:I}},destination:{chain:h,asset:b,fee:{amount:P().XcmPaymentApi().calculateDestFee({reserve:_}),asset:b}},extrinsic:p().polkadotXcm().limitedReserveTransferAssets()}),new Ct({source:{asset:E,fee:{asset:I}},destination:{chain:h,asset:E,fee:{amount:P().XcmPaymentApi().calculateDestFee({reserve:_}),asset:E}},extrinsic:p().polkadotXcm().limitedReserveTransferAssets()})],nr=new iu({chain:Y,routes:[...cu]});import{AssetRoute as nt,ChainRoutes as mu}from"@galacticcouncil/xc-core";var uu=[new nt({source:{asset:F},destination:{chain:h,asset:F,fee:{amount:P().XcmPaymentApi().calculateDestFee(),asset:F}},extrinsic:p().polkadotXcm().limitedReserveTransferAssets()}),new nt({source:{asset:G,fee:{asset:F}},destination:{chain:h,asset:G,fee:{amount:P().XcmPaymentApi().calculateDestFee(),asset:G}},extrinsic:p().polkadotXcm().limitedReserveTransferAssets()}),new nt({source:{asset:O,fee:{asset:F}},destination:{chain:h,asset:O,fee:{amount:P().XcmPaymentApi().calculateDestFee(),asset:O}},extrinsic:p().polkadotXcm().limitedReserveTransferAssets()}),new nt({source:{asset:x,fee:{asset:F}},destination:{chain:h,asset:x,fee:{amount:P().XcmPaymentApi().calculateDestFee({reserve:_}),asset:x}},extrinsic:p().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"RemoteReserve"})}),new nt({source:{asset:I,fee:{asset:F}},destination:{chain:h,asset:I,fee:{amount:P().XcmPaymentApi().calculateDestFee({reserve:Y}),asset:I}},extrinsic:p().polkadotXcm().limitedReserveTransferAssets()}),new nt({source:{asset:L,fee:{asset:F}},destination:{chain:h,asset:L,fee:{amount:625e-8,asset:L}},extrinsic:p().polkadotXcm().limitedReserveTransferAssets()}),new nt({source:{asset:b,fee:{asset:F}},destination:{chain:h,asset:b,fee:{amount:P().XcmPaymentApi().calculateDestFee({reserve:_}),asset:b}},extrinsic:p().polkadotXcm().limitedReserveTransferAssets()}),new nt({source:{asset:E,fee:{asset:F}},destination:{chain:h,asset:E,fee:{amount:P().XcmPaymentApi().calculateDestFee({reserve:_}),asset:E}},extrinsic:p().polkadotXcm().limitedReserveTransferAssets()})],du=[new nt({source:{asset:b,fee:{asset:F}},destination:{chain:_,asset:b,fee:{amount:P().XcmPaymentApi().calculateDestFee(),asset:b}},extrinsic:p().polkadotXcm().limitedReserveTransferAssets()}),new nt({source:{asset:E,fee:{asset:F}},destination:{chain:_,asset:E,fee:{amount:P().XcmPaymentApi().calculateDestFee(),asset:E}},extrinsic:p().polkadotXcm().limitedReserveTransferAssets()})],sr=new mu({chain:R,routes:[...uu,...du]});import{AssetRoute as Dt,ChainRoutes as pu}from"@galacticcouncil/xc-core";var $=()=>({asset:an().multiTransactionPayment().accountCurrencyMap()});import{AssetRoute as Et}from"@galacticcouncil/xc-core";var lu=.02,Sn=t=>{let{source:e}=t,{enabled:n}=e.destinationFeeSwap||{};return!!n},Fn=p().router().buy({slippage:30});function Ae(t,e,n){return new Et({source:{asset:t,fee:$()},destination:{chain:e,asset:t,fee:{amount:P().XcmPaymentApi().calculateDestFee(n?{reserve:n}:void 0),asset:t}},extrinsic:p().polkadotXcm().limitedReserveTransferAssets()})}function vt(t,e){return new Et({source:{asset:t,fee:$()},destination:{chain:e,asset:t,fee:{amount:P().XcmPaymentApi().calculateDestFee(),asset:t}},extrinsic:p().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})})}function In(t){return new Et({source:{asset:t,fee:$()},destination:{chain:_,asset:t,fee:{amount:lu,asset:b}},extrinsic:ut(Sn,Fn).prior(p().polkadotXcm().limitedReserveTransferAssets())})}function Ms(t,e,n){return new Et({source:{asset:t,fee:$()},destination:{chain:Ke,asset:t,fee:{amount:e,asset:t}},extrinsic:p().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve",executionFee:n})})}function Ve(t,e,n){let s=z().Wormhole().Ntt().transfer();return new Et({source:{asset:t,fee:$()},destination:{chain:n,asset:e,fee:{amount:0,asset:t}},contract:s,extrinsic:p().evm().call(s),tags:["Wormhole","Ntt"]})}function He(t,e,n){let s=z().Wormhole().Ntt().transferViaExecutor();return new Et({source:{asset:t,fee:$()},destination:{chain:n,asset:e,fee:{amount:P().Wormhole().quoteExecutorCost(),asset:ve}},contract:s,extrinsic:ut(Sn,Fn).prior(p().evm().call(s)),tags:["Wormhole","Ntt","NttExecutor"]})}function J(t,e,n){return new Et({source:{asset:t,fee:$()},destination:{chain:n,asset:e,fee:{amount:P().Snowbridge().calculateOutboundFee({hub:_}),asset:x}},extrinsic:ut(Sn,Fn).prior(p().polkadotXcm().execute().viaSnowbridge()),tags:["Snowbridge"]})}function Q(t,e,n){return new Et({source:{asset:t,fee:$()},destination:{chain:n,asset:e,fee:{amount:P().Snowbridge().calculateOutboundFeeV1({hub:_}),asset:x}},extrinsic:ut(Sn,Fn).prior(p().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})),tags:["Snowbridge","SnowbridgeV1"]})}var fu=[vt(x,_),vt(T,_),vt(b,_),vt(E,_),In(rt)],hu=[Ms(T,.05,.005),Ms(x,.2,.02)],gu=[Ae(I,Y),Ae(F,Y,R),new Dt({source:{asset:L,fee:$()},destination:{chain:Y,asset:L,fee:{amount:2e-6,asset:L}},extrinsic:p().polkadotXcm().limitedReserveTransferAssets()}),new Dt({source:{asset:Pe,fee:$()},destination:{chain:Y,asset:Pe,fee:{amount:.01,asset:Pe}},extrinsic:p().polkadotXcm().limitedReserveTransferAssets()}),Ae(G,Y,R),Ae(O,Y,R),Ae(b,Y,_),Ae(E,Y,_)],yu=[Ae(F,R),Ae(G,R),Ae(O,R),Ae(I,R,Y),new Dt({source:{asset:L,fee:$()},destination:{chain:R,asset:L,fee:{amount:5e-6,asset:L}},extrinsic:p().polkadotXcm().limitedReserveTransferAssets()}),Ae(b,R,_),Ae(E,R,_),new Dt({source:{asset:x,fee:$()},destination:{chain:R,asset:x,fee:{amount:P().XcmPaymentApi().calculateDestFee({reserve:_}),asset:x}},extrinsic:p().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"RemoteReserve"})})],bu=[new Dt({source:{asset:X,fee:$()},destination:{chain:ft,asset:X,fee:{amount:2.5,asset:X}},extrinsic:p().polkadotXcm().limitedReserveTransferAssets()})],xu=[Ae(Ue,Ht)],Au=[new Dt({source:{asset:Ce,fee:$()},destination:{chain:Mt,asset:Ce,fee:{amount:.02,asset:Ce}},extrinsic:p().polkadotXcm().limitedReserveTransferAssets()})],wu=[new Dt({source:{asset:_e,fee:$()},destination:{chain:Vt,asset:_e,fee:{amount:1.1,asset:_e}},extrinsic:p().polkadotXcm().limitedReserveTransferAssets()})],Cu=[Ae(Ge,Nt)],Eu=[Ve(je,We,A),Ve($e,Be,A),Ve(Qe,E,A),Ve(Je,b,A),Ve(Ze,Se,A),Ve(ve,k,A)],vu=[Ve(Oe,De,kt)],ku=[Ve(le,le,qe),Ve(we,we,qe),Ve(Ee,Ee,qe)],Tu=[Ve(pe,pe,Tt)],Pu=[He(je,We,A),He($e,Be,A),He(Qe,E,A),He(Je,b,A),He(Ze,Se,A),He(ve,k,A),He(Oe,De,kt),He(le,Lt,qe),He(we,we,qe),He(Ee,Ee,qe),He(pe,pe,Tt)],_u=[J(k,k,A),J(se,se,A),J(oe,oe,A),J(ae,ae,A),J(re,re,A),J(ue,ue,A),J(fe,fe,A),J(he,he,A),J(ge,ge,A),J(ce,ce,A),J(ie,ie,A),J(me,me,A),J(de,de,A),J(ye,ye,A),J(at,E,A),J(ot,b,A)],Bu=[Q(k,k,A),Q(se,se,A),Q(oe,oe,A),Q(ae,ae,A),Q(re,re,A),Q(ue,ue,A),Q(fe,fe,A),Q(he,he,A),Q(ge,ge,A),Q(ce,ce,A),Q(ie,ie,A),Q(me,me,A),Q(de,de,A),Q(ye,ye,A),Q(at,E,A),Q(ot,b,A)],Su=[vt(x,pt),vt(b,pt),vt(E,pt)],or=new pu({chain:h,routes:[...fu,...gu,...yu,...Su,...vu,...Eu,..._u,...ku,...Tu,...Pu,...Bu,...Au,...hu,...bu,...Cu,...wu,...xu]});import{AssetRoute as ar,ChainRoutes as Fu}from"@galacticcouncil/xc-core";var Iu=[new ar({source:{asset:X},destination:{chain:h,asset:X,fee:{amount:.01,asset:X}},extrinsic:p().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})})],Du=[new ar({source:{asset:X},destination:{chain:_,asset:X,fee:{amount:.1,asset:X}},extrinsic:p().polkadotXcm().limitedTeleportAssets()})],rr=new Fu({chain:ft,routes:[...Iu,...Du]});import{AssetRoute as Xu,ChainRoutes as Ru}from"@galacticcouncil/xc-core";var Lu=[new Xu({source:{asset:Ue},destination:{chain:h,asset:Ue,fee:{amount:P().XcmPaymentApi().calculateDestFee(),asset:Ue}},extrinsic:p().polkadotXcm().limitedReserveTransferAssets()})],ir=new Ru({chain:Ht,routes:[...Lu]});import{AssetRoute as Nu,ChainRoutes as Vu}from"@galacticcouncil/xc-core";var Hu=[new Nu({source:{asset:_e},destination:{chain:h,asset:_e,fee:{amount:.2,asset:_e}},extrinsic:p().polkadotXcm().reserveTransferAssets()})],cr=new Vu({chain:Vt,routes:[...Hu]});import{AssetRoute as Mu,ChainRoutes as Wu}from"@galacticcouncil/xc-core";var Ou=[new Mu({source:{asset:Ce,fee:{asset:Ce,extra:.030555}},destination:{chain:h,asset:Ce,fee:{amount:.03,asset:Ce}},extrinsic:p().polkadotXcm().reserveTransferAssets()})],mr=new Wu({chain:Mt,routes:[...Ou]});import{AssetRoute as Gu,ChainRoutes as Uu}from"@galacticcouncil/xc-core";var qu=[new Gu({source:{asset:Ge},destination:{chain:h,asset:Ge,fee:{amount:.205,asset:Ge}},extrinsic:p().polkadotXcm().reserveTransferAssets()})],ur=new Uu({chain:Nt,routes:[...qu]});var dr=[tr,er,nr,sr,or,rr,ur,ir,cr,mr];import{AssetRoute as Ku,ChainRoutes as zu}from"@galacticcouncil/xc-core";function Ws(t){return new Ku({source:{asset:t,fee:{asset:le}},destination:{chain:h,asset:t,fee:{amount:0,asset:t}},program:Ns().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}var ju=[Ws(le),Ws(we),Ws(Ee)],lr=new zu({chain:qe,routes:[...ju]});var pr=[lr];import{AssetRoute as $u,ChainRoutes as Ju}from"@galacticcouncil/xc-core";function Qu(t){return new $u({source:{asset:t,fee:{asset:pe}},destination:{chain:h,asset:t,fee:{amount:0,asset:t}},move:Ls().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}var Yu=[Qu(pe)],fr=new Ju({chain:Tt,routes:[...Yu]});var hr=[fr];import{AssetRoute as Dn,ChainRoutes as Zu}from"@galacticcouncil/xc-core";import{AssetRoute as cw}from"@galacticcouncil/xc-core";var mn=.0015;var ed=new Dn({source:{asset:T,fee:{asset:T,extra:mn}},destination:{chain:_,asset:T,fee:{amount:.002,asset:T}},extrinsic:p().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),td=new Dn({source:{asset:T,fee:{asset:T,extra:mn}},destination:{chain:Wt,asset:T,fee:{amount:.0012,asset:T}},extrinsic:p().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),nd=[new Dn({source:{asset:T,fee:{asset:T,extra:mn}},destination:{chain:h,asset:T,fee:{amount:.04,asset:T}},extrinsic:p().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve",executionFee:.005})}),new Dn({source:{asset:x,fee:{asset:T,extra:mn}},destination:{chain:h,asset:x,fee:{amount:.15,asset:x}},extrinsic:p().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve",executionFee:.01})})],gr=new Zu({chain:Ke,routes:[td,ed,...nd]});import{AssetRoute as yr,ChainRoutes as sd}from"@galacticcouncil/xc-core";var Os=()=>({asset:an().multiTransactionPayment().accountCurrencyMap()});var od=[new yr({source:{asset:b,fee:Os()},destination:{chain:Ke,asset:b,fee:{amount:P().XcmPaymentApi().calculateDestFee(),asset:b}},extrinsic:p().polkadotXcm().limitedReserveTransferAssets()})],ad=[new yr({source:{asset:T,fee:Os()},destination:{chain:Ke,asset:T,fee:{amount:.0012,asset:T}},extrinsic:p().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})})],br=new sd({chain:Wt,routes:[...od,...ad]});var xr=[gr,br];var rd=[...Qa,...dr,...pr,...hr,...xr],id=new Map(rd.map(t=>[t.chain.key,t]));import{Parachain as Tr}from"@galacticcouncil/xc-core";import{Parachain as cd,TransferValidation as Ar,TransferValidationError as wr}from"@galacticcouncil/xc-core";var Xn=class extends Ar{async validate(e){let{source:n}=e,{chain:s,fee:o,feeBalance:a}=n;if(a.amount<o.amount)throw new wr("Insufficient_Fee_Balance",{amount:o.toDecimal(),asset:o.symbol,chain:s.name,error:"fee.insufficientBalance"})}},Rn=class extends Ar{async skipFor(e){let{asset:n,source:s}=e,{enabled:o}=s.destinationFeeSwap||{};return n.isEqual(s.destinationFee)||!!o}async validate(e){if(await this.skipFor(e))return;let{source:s}=e,{chain:o,destinationFee:a,destinationFeeBalance:r}=s,i=await this.getMin(o,a),c=a.copyWith({amount:a.amount+i});if(r.amount<c.amount)throw new wr("Insufficient_Fee_Balance",{amount:c.toDecimal(),asset:c.symbol,chain:o.name,error:"destFee.insufficientBalance"})}async getMin(e,n){if(e instanceof cd)return(await e.getMin(n)).amount;let s=e.getAssetMin(n);return BigInt(s*10**n.decimals)}};import{Ntt as Cr,TransferValidation as md,TransferValidationError as Gs}from"@galacticcouncil/xc-core";import{big as ud}from"@galacticcouncil/common";function Er(t,e){throw new Gs("Ntt_Limit_Unreachable",{asset:t.originSymbol,chain:e.name,error:"ntt.limitUnreachable"})}var Ln=class extends md{skipFor(e){let{asset:n,destination:s,source:o}=e;return!Cr.isKnown(o.chain,n)||!Cr.isKnown(s.chain,s.balance)}async validate(e){if(this.skipFor(e))return;let{amount:n,asset:s,destination:o,source:a}=e,[r,i]=await Promise.all([ct(a.chain,s).getOutboundLimit().catch(()=>Er(s,a.chain)),ct(o.chain,o.balance).getInboundLimit(a.chain).catch(()=>Er(o.balance,o.chain))]);if(r.windowMs>0&&n>r.capacity)throw new Gs("Ntt_Outbound_Limit_Exceeded",{asset:s.originSymbol,chain:a.chain.name,decimals:a.balance.decimals,headroom:r.capacity,limit:r.limit,windowMs:r.windowMs,error:"ntt.outboundLimitExceeded"});let c=ud.convertDecimals(n,a.balance.decimals,o.balance.decimals);if(i.windowMs>0&&c>i.capacity)throw new Gs("Ntt_Inbound_Limit_Exceeded",{asset:o.balance.originSymbol,chain:o.chain.name,decimals:o.balance.decimals,headroom:i.capacity,limit:i.limit,windowMs:i.windowMs,error:"ntt.inboundLimitExceeded"})}};import{TransferValidation as vr,TransferValidationError as kr}from"@galacticcouncil/xc-core";var Nn=class extends vr{async skipFor(e){let{asset:n,destination:s}=e,o=s.chain;return await new ke(o).checkIfSufficient(n)}async validate(e){if(await this.skipFor(e))return;let{address:s,destination:o}=e,a=o.chain;if(await new ke(a).getSystemAccountBalance(s)===0n)throw new kr("Insufficient_Ed",{amount:"0.1",asset:"DOT",chain:o.chain.name,error:"account.insufficientDeposit"})}},Vn=class extends vr{async validate(e){let{asset:n,sender:s,source:o}=e,a=o.chain;if(await new ke(a).checkIfFrozen(s,n))throw new kr("Asset_Frozen",{asset:n.originSymbol,chain:o.chain.name,error:"asset.frozen"})}};import{TransferValidation as Us,TransferValidationError as Hn}from"@galacticcouncil/xc-core";var dd=12,ld=1,Mn=class extends Us{async skipFor(e){let{destination:n}=e,s=n.chain,o=new xe(s),a=n.balance.amount>0n,r=await o.checkIfSufficient(n.balance);return a||r}async validate(e){if(await this.skipFor(e))return;let{address:s,destination:o}=e,a=o.chain,r=new xe(a),i=await r.getFeeAsset(s),c=a.findAssetById(i),m=c.min||ld,d=c.decimals||dd,u=m*Math.pow(10,d),l=await r.getAssetBalance(s,i);if(BigInt(u*1.1)>l)throw new Hn("Insufficient_Ed",{amount:u,asset:c.asset.originSymbol,chain:a.name,error:"account.insufficientDeposit"})}},Wn=class extends Us{async validate(e){let{amount:n,asset:s,destination:o}=e,a=o.chain,i=await new xe(a).getAssetDepositLimit(s);if(i.locked)throw new Hn("Deposit_Asset_Lockdown",{asset:s.originSymbol,chain:a.name,lockedUntilBlock:i.lockedUntilBlock,error:"circuitBreaker.assetLockdown"});if(i.headroom!==null&&n>i.headroom)throw new Hn("Deposit_Limit_Exceeded",{asset:s.originSymbol,chain:a.name,headroom:i.headroom,limit:i.limit,error:"circuitBreaker.depositLimitExceeded"})}},On=class extends Us{async validate(e){let{source:n}=e,s=n.chain,a=await new xe(s).getGlobalWithdrawLimit();if(a.lockdown)throw new Hn("Withdraw_Lockdown_Active",{chain:s.name,lockdownUntilMs:a.lockdownUntilMs,error:"circuitBreaker.withdrawLockdown"})}};var ne={isAny:()=>!0,isHydration:t=>t instanceof Tr&&t.parachainId===2034,isHub:t=>t instanceof Tr&&t.parachainId===1e3,isEvm:t=>t.isEvmChain()},pd=[new Xn(ne.isAny,ne.isAny),new Rn(ne.isAny,ne.isAny),new Nn(ne.isAny,ne.isHub),new Vn(ne.isHub,ne.isAny),new Mn(ne.isAny,ne.isHydration),new Wn(ne.isAny,ne.isHydration),new On(ne.isHydration,ne.isAny),new Ln(ne.isAny,ne.isAny)];var _r={};Jt(_r,{AssethubDex:()=>Ks,HydrationDex:()=>qs});import{pool as fd,sor as hd,tx as gd}from"@galacticcouncil/sdk-next";import{RUNTIME_DECIMALS as yd}from"@galacticcouncil/common";import{Binary as bd}from"polkadot-api";import{memoize1 as xd}from"@thi.ng/memoize";var{PoolType:Gn}=fd,{TradeRouteBuilder:Ad,TradeRouter:wd}=hd,{TxBuilderFactory:Cd}=gd,qs=class{chain;client;poolCtx;txBuilder;getCtx=xd(async e=>{console.log("init swap router",e,"\u2705");let n=new wd(this.poolCtx);return n.withFilter({useOnly:[Gn.Aave,Gn.Omni,Gn.Stable,Gn.XYK]}),n});constructor(e,n){this.chain=e,this.poolCtx=n,this.client=new xe(this.chain),this.txBuilder=new Cd(n.client,n.evm)}async getCalldata(e,n,s,o,a=0){let r=Number(this.chain.getMetadataAssetId(n)),i=Number(this.chain.getMetadataAssetId(s)),c=o.amount,m=await this.getCtx(1),d=await m.getMostLiquidRoute(r,i),u=await m.getBuy(r,i,c,d),g=await(await this.txBuilder.trade(u).withBeneficiary(e).withSlippage(a).build()).get().getEncodedData();return bd.toHex(g)}async getQuote(e,n,s,o){let a=Number(this.chain.getMetadataAssetId(e)),r=Number(this.chain.getMetadataAssetId(n)),i=s.amount,c=await this.getCtx(1);try{let m=await c.getMostLiquidRoute(a,r),d=await c.getBuy(a,r,i,m);return{amount:d.amountIn,route:Ad.build(d.swaps)}}catch(m){if(o)return{amount:await this.getFallbackPrice(e,s.amount)};throw m}}async getFallbackPrice(e,n){let s=this.chain.getAssetId(e),o=await this.client.api().query.MultiTransactionPayment.AcceptedCurrencies.getValue(Number(s));if(!o)throw new Error(`No price found for asset ${e.key}`);let a=o*n,r=Math.pow(10,yd);return a/BigInt(r)}};import{encodeLocation as Pr}from"@galacticcouncil/common";var Ks=class{chain;client;constructor(e){this.chain=e,this.client=new ke(this.chain)}async getCalldata(e,n,s,o){throw Error("Not supported for "+this.chain.key)}async getQuote(e,n,s){let o=this.chain.getAssetXcmLocation(e),a=this.chain.getAssetXcmLocation(n),r=await this.client.api().apis.AssetConversionApi.quote_price_tokens_for_exact_tokens(Pr(o),Pr(a),s.amount,!0);if(!r)throw new Error("Failed to get swap quote");return{amount:r}}};import{ConfigService as vd}from"@galacticcouncil/xc-core";import{Asset as Ed}from"@galacticcouncil/xc-core";function Un(t){let{id:e,origin:n,symbol:s}=t,o=s.toLowerCase();return new Ed({key:[o,n,e].join("_"),originSymbol:s})}function Br(t){let{decimals:e,id:n}=t;return{asset:Un(t),decimals:e,id:n,xcmLocation:{parents:0,interior:{type:"X2",value:[{type:"PalletInstance",value:50},{type:"GeneralIndex",value:n}]}}}}function Sr(t){let{decimals:e,id:n,internalId:s,origin:o}=t;return{asset:Un(t),decimals:e,id:s,xcmLocation:{parents:1,interior:{type:"X3",value:[{type:"Parachain",value:o},{type:"PalletInstance",value:50},{type:"GeneralIndex",value:n}]}}}}var zs=class extends vd{registerExternal(e){let n=this.getChain("hydration"),s=this.getChain("assethub"),o=a=>!!n.findAssetById(a.internalId.toString());e.filter(a=>!o(a)&&a.origin===1e3).forEach(a=>{let r=Un(a),i=Br(a),c=Sr(a);console.log("\u{1F480} Registering "+r.key),s.updateAsset(i),n.updateAsset(c),this.updateAsset(r),this.updateChainRoute(s,_n(r)),this.updateChainRoute(n,In(r))})}};export{zs as HydrationConfigService,Dr as assetsMap,Oa as builders,Mi as chainsMap,Ko as clients,_r as dex,id as routesMap,Ga as tags,pd as validations};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@galacticcouncil/xc-cfg",
3
- "version": "2.5.0",
3
+ "version": "2.6.0",
4
4
  "description": "Cross-chain hydradx & basilisk dapp configuration",
5
5
  "author": "GalacticCouncil",
6
6
  "repository": {
@@ -31,7 +31,7 @@
31
31
  "test": "NODE_NO_WARNINGS=1 NODE_OPTIONS=--experimental-vm-modules jest --silent"
32
32
  },
33
33
  "dependencies": {
34
- "@galacticcouncil/xc-core": "^2.4.0",
34
+ "@galacticcouncil/xc-core": "^2.5.0",
35
35
  "@thi.ng/memoize": "^4.0.2"
36
36
  },
37
37
  "peerDependencies": {