@galacticcouncil/xc-cfg 2.0.0 → 2.1.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.cjs +1 -1
- package/build/index.mjs +1 -1
- package/package.json +3 -7
package/build/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var ls=Object.defineProperty;var Dr=Object.getOwnPropertyDescriptor;var Ir=Object.getOwnPropertyNames;var Rr=Object.prototype.hasOwnProperty;var $t=(t,e)=>{for(var n in e)ls(t,n,{get:e[n],enumerable:!0})},Lr=(t,e,n,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Ir(e))!Rr.call(t,o)&&o!==n&&ls(t,o,{get:()=>e[o],enumerable:!(s=Dr(e,o))||s.enumerable});return t};var Hr=t=>Lr(ls({},"__esModule",{value:!0}),t);var M0={};$t(M0,{HydrationConfigService:()=>ms,assetsMap:()=>no,builders:()=>Ws,chainsMap:()=>bo,clients:()=>Ms,dex:()=>to,routesMap:()=>kr,tags:()=>Us,validations:()=>vr});module.exports=Hr(M0);var g=require("@galacticcouncil/xc-core"),ie=new g.Asset({key:"aave",originSymbol:"AAVE"}),ps=new g.Asset({key:"ajun",originSymbol:"AJUN"}),ce=new g.Asset({key:"apyusd",originSymbol:"apyUSD"}),L=new g.Asset({key:"astr",originSymbol:"ASTR"}),D=new g.Asset({key:"bnc",originSymbol:"BNC"}),fs=new g.Asset({key:"bsx",originSymbol:"BSX"}),me=new g.Asset({key:"cfg_new",originSymbol:"CFG"}),hs=new g.Asset({key:"cru",originSymbol:"CRU"}),at=new g.Asset({key:"dai",originSymbol:"DAI"}),ht=new g.Asset({...at,key:"dai_wh"}),w=new g.Asset({key:"dot",originSymbol:"DOT"}),_=new g.Asset({key:"eth",originSymbol:"ETH"}),ue=new g.Asset({key:"ena",originSymbol:"ENA"}),Ze=new g.Asset({key:"eurc",originSymbol:"EURC"}),rt=new g.Asset({...Ze,key:"eurc_wh"}),Ie=new g.Asset({key:"glmr",originSymbol:"GLMR"}),Jt=new g.Asset({key:"hdx",originSymbol:"HDX"}),M=new g.Asset({key:"ibtc",originSymbol:"IBTC"}),Te=new g.Asset({key:"intr",originSymbol:"INTR"}),Re=new g.Asset({key:"jitoSol",originSymbol:"jitoSOL"}),T=new g.Asset({key:"ksm",originSymbol:"KSM"}),de=new g.Asset({key:"ldo",originSymbol:"LDO"}),le=new g.Asset({key:"lbtc",originSymbol:"LBTC"}),we=new g.Asset({key:"ewt",originSymbol:"EWT"}),pe=new g.Asset({key:"link",originSymbol:"LINK"}),H=new g.Asset({key:"myth",originSymbol:"MYTH"}),Oe=new g.Asset({key:"neuro",originSymbol:"NEURO"}),Fe=new g.Asset({key:"pen",originSymbol:"PEN"}),fe=new g.Asset({key:"paxg",originSymbol:"PAXG"}),Le=new g.Asset({key:"prime",originSymbol:"PRIME"}),he=new g.Asset({key:"sky",originSymbol:"SKY"}),Ce=new g.Asset({key:"sol",originSymbol:"SOL"}),Se=new g.Asset({key:"sui",originSymbol:"SUI"}),ye=new g.Asset({key:"susde",originSymbol:"sUSDe"}),We=new g.Asset({key:"susds",originSymbol:"sUSDS"}),yt=new g.Asset({...We,key:"susds_wh"}),be=new g.Asset({key:"tbtc",originSymbol:"tBTC"}),ge=new g.Asset({key:"trac",originSymbol:"TRAC"}),Ue=new g.Asset({key:"unq",originSymbol:"UNQ"}),A=new g.Asset({key:"usdt",originSymbol:"USDT"}),bt=new g.Asset({...A,key:"usdt_wh"}),it=new g.Asset({...A,key:"usdt_eth"}),v=new g.Asset({key:"usdc",originSymbol:"USDC"}),gt=new g.Asset({...v,key:"usdc_wh"}),ct=new g.Asset({...v,key:"usdc_eth"}),q=new g.Asset({key:"vastr",originSymbol:"vASTR"}),z=new g.Asset({key:"vdot",originSymbol:"vDOT"}),mt=new g.Asset({key:"weth",originSymbol:"WETH"}),ut=new g.Asset({...mt,key:"weth_wh"}),Ke=new g.Asset({key:"wbtc",originSymbol:"WBTC"}),xt=new g.Asset({...Ke,key:"wbtc_wh"}),xe=new g.Asset({key:"wsteth",originSymbol:"wstETH"}),dt=new g.Asset({key:"wud",originSymbol:"WUD"}),Vr=[ie,ps,ce,L,fs,me,hs,D,at,ht,w,ue,Ze,rt,_,Ie,Jt,M,Te,T,de,le,we,Re,pe,H,Oe,fe,Fe,Le,he,Ce,Se,ye,We,yt,ge,be,Ue,v,gt,ct,A,bt,it,q,z,Ke,xt,mt,ut,xe,dt],no=new Map(Vr.map(t=>[t.key,t]));var Yt=require("@galacticcouncil/xc-core");var so=require("viem/chains"),Qt=new Yt.EvmChain({id:8453,key:"base",name:"Base",assetsData:[{asset:_,decimals:18,id:"0x4200000000000000000000000000000000000006"},{asset:Ze,decimals:6,id:"0x60a3e35cc302bfa44cb288bc5a4f316fdb1adb42"},{asset:v,decimals:6,id:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}],balance:Yt.EvmBalanceType.Erc20,ecosystem:Yt.ChainEcosystem.Ethereum,evmChain:so.base,explorer:"https://basescan.org/",rpcs:["https://stylish-quick-firefly.base-mainnet.quiknode.pro/"],basejump:{address:"0xf5b9334e44f800382cb47fc19669401d694e529b"},wormhole:{id:30,coreBridge:"0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6",executor:"0x9E1936E91A4a5AE5A5F75fFc472D6cb8e93597ea",ntt:{[Ze.key]:{token:"0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42",manager:"0xD1dc3517732c98502b5c1ba2389AcA9E9016d89a",transceiver:{wormhole:"0xa84b362290b0CFdB55e877dfc633284091e0B3F7"}}}}});var Rt=require("@galacticcouncil/xc-core");var oo=require("viem/chains"),E=new Rt.EvmChain({id:1,key:"ethereum",name:"Ethereum",assetsData:[{asset:_,decimals:18,id:"0x0000000000000000000000000000000000000000"},{asset:ie,decimals:18,id:"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"},{asset:ce,decimals:18,id:"0x38eeb52f0771140d10c4e9a9a72349a329fe8a6a"},{asset:me,decimals:18,id:"0xcccccccccc33d538dbc2ee4feab0a7a1ff4e8a94"},{asset:mt,decimals:18,id:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"},{asset:at,decimals:18,id:"0x6B175474E89094C44Da98b954EedeAC495271d0F"},{asset:ue,decimals:18,id:"0x57e114b691db790c35207b2e685d4a43181e6061"},{asset:ye,decimals:18,id:"0x9d39a5de30e57443bff2a8307a4256c8797a3497"},{asset:We,decimals:18,id:"0xa3931d71877c0e7a3148cb7eb4463524fec27fbd"},{asset:be,decimals:18,id:"0x18084fba666a33d37592fa2633fd49a74dd93a88"},{asset:Ke,decimals:8,id:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"},{asset:le,decimals:8,id:"0x8236a87084f8b84306f72007f36f2618a5634494"},{asset:v,decimals:6,id:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"},{asset:A,decimals:6,id:"0xdAC17F958D2ee523a2206206994597C13D831ec7"},{asset:de,decimals:18,id:"0x5a98fcbea516cf06857215779fd812ca3bef1b32"},{asset:pe,decimals:18,id:"0x514910771af9ca656af840dff83e8264ecf986ca"},{asset:fe,decimals:18,id:"0x45804880de22913dafe09f4980848ece6ecbaf78"},{asset:he,decimals:18,id:"0x56072c95faa701256059aa122697b133aded9279"},{asset:ge,decimals:18,id:"0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F"},{asset:xe,decimals:18,id:"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"}],balance:Rt.EvmBalanceType.Erc20,balanceOverrides:{[_.key]:Rt.EvmBalanceType.Native},ecosystem:Rt.ChainEcosystem.Ethereum,evmChain:oo.mainnet,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",ntt:{[at.key]:{token:"0x6B175474E89094C44Da98b954EedeAC495271d0F",manager:"0x804F123f75cCa0A9c0Cba341F82f4A4DA86a5259",transceiver:{wormhole:"0x99673a01C5779Ebf59399B4B228c1825c0113571"}},[We.key]:{token:"0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD",manager:"0x5085A4863f89eC9553F70187EE73B5aAe0fd14b5",transceiver:{wormhole:"0x7C236d237BEbBE1b7902131B31b7b3270005a810"}},[v.key]:{token:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",manager:"0x447b2c7485A3d6813F8197E605b10BcCD8dd8398",transceiver:{wormhole:"0xA108BD5dBc6CE665aEbB6895351e0609c76F8EFc"}},[A.key]:{token:"0xdAC17F958D2ee523a2206206994597C13D831ec7",manager:"0x9fbd9F16cE7Fa17097E91cc36DC1B7b47aDCa9De",transceiver:{wormhole:"0x45c566f6595CF93e639E77cc1bbE57A8D27901c2"}},[Ke.key]:{token:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",manager:"0x081b76AC3cFb65DCe93961d66cea44A74EC8Ef28",transceiver:{wormhole:"0x3FE8fBB8505c8dB2264f6Ebc5559c7C2b2647218"}},[mt.key]:{token:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",manager:"0x283B14B5Dd352e32154Df014EA96834F395E04b6",transceiver:{wormhole:"0xbA0Cd32131b8206AF4feB79A1A3aaF0AEfe18b48"}},[_.key]:{token:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",manager:"0x283B14B5Dd352e32154Df014EA96834F395E04b6",transceiver:{wormhole:"0xbA0Cd32131b8206AF4feB79A1A3aaF0AEfe18b48"}}}}});var ao=[Qt,E];var He=require("@galacticcouncil/xc-core");var ro={assetsData:[{asset:w,decimals:10,id:0,xcmLocation:{parents:1,interior:"Here"}},{asset:A,decimals:6,id:1984,min:.7,xcmLocation:{parents:0,interior:{X2:[{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:v,decimals:6,id:1337,min:.7,xcmLocation:{parents:0,interior:{X2:[{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:dt,decimals:10,id:31337,xcmLocation:{parents:0,interior:{X2:[{PalletInstance:50},{GeneralIndex:31337}]}}},{asset:H,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:He.SubstrateBalanceType.Assets,balanceOverrides:{[w.key]:He.SubstrateBalanceType.System,[T.key]:He.SubstrateBalanceType.ForeignAssets,[H.key]:He.SubstrateBalanceType.ForeignAssets},min:He.SubstrateMinType.Assets,ecosystem:He.ChainEcosystem.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"]},B=new He.Parachain({...ro,key:"assethub",name:"AssetHub Polkadot"}),At=new He.Parachain({...ro,key:"assethub_cex",name:"AssetHub (CEX)",usesSignerFee:!0,isTestChain:!0,balanceOverrides:{}});var Lt=require("@galacticcouncil/xc-core");var ee=new Lt.Parachain({assetsData:[{asset:L,xcmLocation:{parents:0,interior:"Here"}},{asset:w,id:"340282366920938463463374607431768211455",decimals:10,min:1e-4,xcmLocation:{parents:1,interior:"Here"}},{asset:A,id:"4294969280",decimals:6,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:v,id:"4294969281",decimals:6,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:D,id:"18446744073709551623",decimals:12,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:Ie,id:"18446744073709551619",decimals:18,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:M,id:"18446744073709551620",decimals:8,min:1e-6,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:Te,id:"18446744073709551621",decimals:10,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0002000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:z,id:"18446744073709551624",decimals:10,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:q,id:"18446744073709551632",decimals:18,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}}],balance:Lt.SubstrateBalanceType.Assets,balanceOverrides:{[L.key]:Lt.SubstrateBalanceType.System},ecosystem:Lt.ChainEcosystem.Polkadot,explorer:"https://astar.subscan.io",genesisHash:"0x9eb76c5184c4ab8679d2d5d819fdf90b9c001403e9e17da2e14b6d8aec4029c6",key:"astar",name:"Astar",parachainId:2006,ss58Format:5,ws:"wss://rpc.astar.network"});var Ht=require("@galacticcouncil/xc-core");var Nr=["wss://bifrost-polkadot.ibp.network","wss://eu.bifrost-polkadot-rpc.liebi.com/ws","wss://bifrost-polkadot.dotters.network"],V=new Ht.Parachain({assetsData:[{asset:D,id:{Native:D.originSymbol},xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:z,id:{VToken2:0},decimals:10,min:1e-4,xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:q,id:{VToken2:3},decimals:18,min:.01,xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:w,id:{Token2:0},decimals:10,min:1e-4,xcmLocation:{parents:1,interior:"Here"}},{asset:A,id:{Token2:2},decimals:6,min:.001,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:v,id:{Token2:5},decimals:6,min:.001,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:L,id:{Token2:3},decimals:18,min:.01,xcmLocation:{parents:1,interior:{X1:{Parachain:2006}}}},{asset:Ie,id:{Token2:1},decimals:18,min:1e-5,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:M,id:{Token2:6},decimals:8,min:1e-6,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}}],balance:Ht.SubstrateBalanceType.Tokens,balanceOverrides:{[D.key]:Ht.SubstrateBalanceType.System},ecosystem:Ht.ChainEcosystem.Polkadot,explorer:"https://bifrost.subscan.io",genesisHash:"0x262e1b2ad728475fd6fe88e62d34c200abe6fd693931ddad144059b1eb884e5b",key:"bifrost",name:"Bifrost",parachainId:2030,ss58Format:6,ws:Nr});var Vt=require("@galacticcouncil/xc-core"),uo=require("viem");var co=require("@galacticcouncil/common"),mo=require("polkadot-api"),{isEvmAccount:Mr,H160:io}=co.h160,Pn=class{async toH160(e,n){if(Mr(e))return io.fromAccount(e);let s=io.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=(0,mo.AccountId)().enc(s),c=this.asBytes(a);return Buffer.from(c).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 Gr=new Pn,ys=["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"],bs=["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"],Or=(0,uo.defineChain)({id:222222,name:"Hydration",network:"hydration",nativeCurrency:{decimals:18,name:"WETH",symbol:"WETH"},rpcUrls:{public:{http:ys,webSocket:bs},default:{http:ys,webSocket:bs}},blockExplorers:{default:{name:"Hydration Explorer",url:"https://hydration.subscan.io"}},testnet:!1}),b=new Vt.EvmParachain({assetsData:[{asset:Jt,id:0,xcmLocation:{parents:0,interior:{X1:[{GeneralIndex:0}]}}},{asset:ie,decimals:18,id:1000624,min:6e-5,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"}}]}}},{asset:ps,decimals:12,id:32,min:.11,xcmLocation:{parents:1,interior:{X2:[{Parachain:2051},{GeneralKey:{length:4,data:"0x414a554e00000000000000000000000000000000000000000000000000000000"}}]}}},{asset:L,decimals:18,id:9,min:.15,xcmLocation:{parents:1,interior:{X1:{Parachain:2006}}}},{asset:D,decimals:12,id:14,min:.069,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:me,decimals:18,id:41,min:.1,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xcccccccccc33d538dbc2ee4feab0a7a1ff4e8a94"}}]}}},{asset:hs,decimals:12,id:27,min:.0079,xcmLocation:{parents:1,interior:{X1:{Parachain:2008}}}},{asset:w,decimals:10,id:5,min:.0018,xcmLocation:{parents:1,interior:"Here"}},{asset:ht,decimals:18,id:18,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f"}}]}}},{asset:_,decimals:18,id:34,min:55e-7,xcmLocation:{parents:2,interior:{X1:{GlobalConsensus:{Ethereum:{chain_id:1}}}}}},{asset:ce,decimals:18,id:46,min:.0147058823529412,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x38eeb52f0771140d10c4e9a9a72349a329fe8a6a"}}]}}},{asset:ue,decimals:18,id:38,min:.037,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x57e114b691db790c35207b2e685d4a43181e6061"}}]}}},{asset:Ie,decimals:18,id:16,min:.035,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:M,decimals:8,id:11,min:36e-8,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:Te,decimals:10,id:17,min:.62,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0002000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:Re,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:Le,decimals:6,id:43,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:1},{GeneralKey:{length:32,data:"0x26759f460ee5f743ed66d27c8f2a5623bf39d53ed575955320661e6e13e0e3da"}}]}}},{asset:we,decimals:18,id:252525,min:.022,xcmLocation:{parents:1,interior:{X1:{Parachain:3345}}}},{asset:de,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:le,decimals:8,id:1000851,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x8236a87084f8b84306f72007f36f2618a5634494"}}]}}},{asset:pe,decimals:18,id:1000794,min:.001,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x514910771af9ca656af840dff83e8264ecf986ca"}}]}}},{asset:fe,decimals:18,id:39,min:5e-6,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x45804880de22913dafe09f4980848ece6ecbaf78"}}]}}},{asset:H,decimals:18,id:30,min:.022,xcmLocation:{parents:1,interior:{X1:{Parachain:3369}}}},{asset:Oe,decimals:12,id:36,min:.001,xcmLocation:{parents:1,interior:{X2:[{Parachain:2043},{PalletInstance:10}]}}},{asset:Fe,decimals:12,id:1000081,min:.16,xcmLocation:{parents:1,interior:{X2:[{Parachain:2094},{PalletInstance:10}]}}},{asset:he,decimals:18,id:1000795,min:.52,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x56072c95faa701256059aa122697b133aded9279"}}]}}},{asset:Ce,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:Se,decimals:9,id:1000753,min:.003,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:21},{GeneralKey:{length:32,data:"0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3"}}]}}},{asset:ye,decimals:18,id:1000625,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x9d39a5de30e57443bff2a8307a4256c8797a3497"}}]}}},{asset:We,decimals:18,id:1000626,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xa3931d71877c0e7a3148cb7eb4463524fec27fbd"}}]}}},{asset:yt,decimals:18,id:1000745,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000a3931d71877c0e7a3148cb7eb4463524fec27fbd"}}]}}},{asset:be,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:v,decimals:6,id:22,min:.01,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:gt,decimals:6,id:21,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"}}]}}},{asset:rt,decimals:6,id:44,min:.014,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:30},{GeneralKey:{length:32,data:"0x00000000000000000000000060a3e35cc302bfa44cb288bc5a4f316fdb1adb42"}}]}}},{asset:ct,decimals:6,id:1000766,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"}}]}}},{asset:A,decimals:6,id:10,min:.01,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:bt,decimals:6,id:23,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7"}}]}}},{asset:it,decimals:6,id:1000767,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xdac17f958d2ee523a2206206994597c13d831ec7"}}]}}},{asset:q,decimals:18,id:33,min:.14,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:z,decimals:10,id:15,min:.0019,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:Ke,decimals:8,id:1000190,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"}}]}}},{asset:xt,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:mt,decimals:18,id:1000189,min:61e-7,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"}}]}}},{asset:ut,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:xe,decimals:18,id:1000809,min:635e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"}}]}}},{asset:dt,decimals:10,id:1000085,min:2e4,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:31337}]}}}],balance:Vt.SubstrateBalanceType.Tokens,balanceOverrides:{[Jt.key]:Vt.SubstrateBalanceType.System},ecosystem:Vt.ChainEcosystem.Polkadot,evmChain:Or,evmResolver:Gr,explorer:"https://hydration.subscan.io",genesisHash:"0xafdc188f45c71dacbaa0b62e16a91f726c7b8699a9748cdf715459de6b7f366d",key:"hydration",name:"Hydration",parachainId:2034,ss58Format:63,wormhole:{id:73,coreBridge:"0x3792a6d63c31941B2805181771795D9176fA82A1",executor:"0xd633d8d1ceee8c8252196d44857c0f41b8dcb0d9",ntt:{[ht.key]:{token:"0x0000000000000000000000000000000100000012",manager:"0xcFd576F88C90844AEBF45378Fd09931281D8b14d",transceiver:{wormhole:"0xe8660CA48f6f4D98BC48DB7Dd07C1a8E555801eA"}},[rt.key]:{token:"0x000000000000000000000000000000010000002C",manager:"0x8dd1286A29dF5a2785FB638d6fB1598144Cfbc4C",transceiver:{wormhole:"0x2e84fac378D67Dc2e11026fB4919E80263a87375"}},[Re.key]:{token:"0x0000000000000000000000000000000100000028",manager:"0xcE73C15B9ED02413066DE5B904A36F8e8f9B5331",transceiver:{wormhole:"0xF38D9C3bA6999Dc331b32B416083Fd7e02D17B04"}},[Le.key]:{token:"0x000000000000000000000000000000010000002B",manager:"0xFCaF4aA069C565d25539028970703F01e47D3E0B",transceiver:{wormhole:"0x4e7b1E55D2354d4Dc6ABD876096Dc201de0541D1"}},[Ce.key]:{token:"0x00000000000000000000000000000001000F4530",manager:"0x9e200C0f28D92D296b201D96C8269d3CAFFfA9FF",transceiver:{wormhole:"0x2F04AcF249091425d51e67EeA3C3161ccE283202"}},[Se.key]:{token:"0x00000000000000000000000000000001000F4531",manager:"0x978443f00cAB6b09445140321EC73a221ebFF5F8",transceiver:{wormhole:"0xA224D6f4e0E276b34D91bfE6c3A5fE6838322AF7"}},[yt.key]:{token:"0x00000000000000000000000000000001000F4529",manager:"0x1973E7044d9A7C7bB2d6ea1693A296a9e4B7E448",transceiver:{wormhole:"0x68Ecadd7934D4FcFEABAfB209C95D379B96400cb"}},[gt.key]:{token:"0x0000000000000000000000000000000100000015",manager:"0xEcEab64542A875C4472671D9Ed1E690cdD4e28fC",transceiver:{wormhole:"0x0d7488B39AA64468a709eC3b3d354DeFE539eD97"}},[bt.key]:{token:"0x0000000000000000000000000000000100000017",manager:"0x5E6C488103b47F804824AE15861638af4C436795",transceiver:{wormhole:"0xd2a16B736F32Df7C0DE72838837656FE0f85Ac0F"}},[xt.key]:{token:"0x0000000000000000000000000000000100000013",manager:"0x6BFca089916c045b0Ca4A09B655aF9F926189993",transceiver:{wormhole:"0x9a8a1ab288f6749Ce5626DEE1B5d59441BdC187F"}},[ut.key]:{token:"0x0000000000000000000000000000000100000014",manager:"0xB5cEf790D52A57fa619eD96eDd64c5328F3DCFb7",transceiver:{wormhole:"0x8acce9CA511d5D7213F8C3f813B8916087cd00ae"}}}},ws:bs,rpcs:ys});var Zt=require("@galacticcouncil/xc-core");var wt=new Zt.Parachain({assetsData:[{asset:H,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:Zt.SubstrateBalanceType.System,ecosystem:Zt.ChainEcosystem.Polkadot,explorer:"https://mythos.subscan.io",genesisHash:"0xf6ee56e9c5277df5b4ce6ae9983ee88f3cbed27d31beeb98f9f84f997a1ab0b9",key:"mythos",name:"Mythos",parachainId:3369,ss58Format:29972,usesH160Acc:!0,ws:"wss://mythos-rpc.dmarket.com"});var en=require("@galacticcouncil/xc-core");var tn=new en.Parachain({assetsData:[{asset:Oe,xcmLocation:{parents:0,interior:{X1:{PalletInstance:10}}}}],balance:en.SubstrateBalanceType.System,ecosystem:en.ChainEcosystem.Polkadot,explorer:"https://neuroweb.subscan.io",genesisHash:"0xe7e0962324a3b86c83404dbea483f25fb5dab4c224791c81b756cfc948006174",key:"neuroweb",name:"Neuroweb",parachainId:2043,ss58Format:101,ws:"wss://parachain-rpc.origin-trail.network"});var Ct=require("@galacticcouncil/xc-core");var nn=new Ct.Parachain({assetsData:[{asset:Fe,id:"Native",xcmLocation:{parents:0,interior:{X1:{PalletInstance:10}}}}],balance:Ct.SubstrateBalanceType.System,ecosystem:Ct.ChainEcosystem.Polkadot,explorer:"https://pendulum.subscan.io",genesisHash:"0x5d3c298622d5634ed019bf61ea4b71655030015bde9beb0d6a24743714462c86",key:"pendulum",name:"Pendulum",parachainId:2094,ss58Format:56,ws:"wss://rpc-pendulum.prd.pendulumchain.tech",xcmVersion:Ct.XcmVersion.v3});var sn=require("@galacticcouncil/xc-core");var Wr={assetsData:[{asset:w,xcmLocation:{parents:0,interior:"Here"}}],balance:sn.SubstrateBalanceType.System,ecosystem:sn.ChainEcosystem.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"},lo=new sn.Parachain({...Wr,key:"polkadot"});var on=require("@galacticcouncil/xc-core");var an=new on.Parachain({assetsData:[{asset:Ue,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:on.SubstrateBalanceType.System,ecosystem:on.ChainEcosystem.Polkadot,explorer:"https://unique.subscan.io",genesisHash:"0x84322d9cddbf35088f1e54e9a85c967a41a56a4f43445768125e61af166c7d31",key:"unique",name:"Unique network",parachainId:2037,ss58Format:7391,ws:"wss://ws.unique.network"});var kt=require("@galacticcouncil/xc-core");var rn=new kt.Parachain({assetsData:[{asset:we,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:kt.SubstrateBalanceType.System,ecosystem:kt.ChainEcosystem.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:kt.XcmVersion.v3});var po=[B,At,ee,V,b,tn,wt,nn,lo,an,rn];var Nt=require("@galacticcouncil/xc-core");var vt=new Nt.SolanaChain({id:101,key:"solana",name:"Solana",assetsData:[{asset:Ce,decimals:9},{asset:Re,id:"J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",decimals:9},{asset:Le,id:"3b8X44fLF9ooXaUm3hhSgjpmVs6rZZ3pPoGnGahc3Uu7",decimals:6}],balance:Nt.SolanaBalanceType.Token,balanceOverrides:{[Ce.key]:Nt.SolanaBalanceType.Native},ecosystem:Nt.ChainEcosystem.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:{[Ce.key]:{token:"So11111111111111111111111111111111111111112",manager:"DiGxk55uAQNVzzg2FucPgdrQ4azb5SDvWQvzpzJD3o7J",transceiver:{wormhole:"5J12e7mMcbbN3VkCrUPfZp2bDHMH3t1rKvxGcwuN53wx"},emitter:"2WUYeRrK2JctBEvNVXY4mRG2ewMzhidi7L4Y5dCwqY9D"},[Re.key]:{token:"J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",manager:"9HFvXujdkXubvmf93gyzkH1g3VPowDrmp85sWsfdcBTh",transceiver:{wormhole:"HgxvrPomT84AxgxknddAcC1iW9ysqHxmeoiKNZmQcovs"},emitter:"9Ss1eMHE8iDv9kCxERH5nabp9tx75AVoUWWEKaGgMrh9"},[Le.key]:{token:"3b8X44fLF9ooXaUm3hhSgjpmVs6rZZ3pPoGnGahc3Uu7",manager:"4T5m5NtRVewiCVzP2mnfeUoMYRqncfkrS21X2dhVCNRT",transceiver:{wormhole:"GiTY93vtrK4jZZchrxdV9r28JByRs7Ary2rsTPyPabJc"},emitter:"HuvSXe6hQaSMgo5dc8GYzavcS3aB4Bix9XYgVdfsq2sY"}},platformAddressFormat:"base58"}});var fo=[vt];var cn=require("@galacticcouncil/xc-core");var mn=new cn.SuiChain({id:"0x35834a8a",key:"sui",name:"Sui",assetsData:[{asset:Se,decimals:9}],balance:cn.SuiBalanceType.Native,ecosystem:cn.ChainEcosystem.Sui,explorer:"https://suiscan.xyz/",rpc:"https://rpc-mainnet.suiscan.xyz",wormhole:{id:21,coreBridge:"0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c",ntt:{[Se.key]:{token:"0x2::sui::SUI",manager:"0xa0bc45e0384140dc125f273eda89cad1434f5dee430726cf6364bdcceba1e9a3",transceiver:{wormhole:"0x6afb4a6a9c4e5b6eeed568381ce95a79590f0c17ab8d0c59295826f2775bf832"},emitter:"0x25437da9f99dfab32c1a275663f51cd5c99eb867ab4d1f630e3799c5e68215da"}}}});var ho=[mn];var lt=require("@galacticcouncil/xc-core");var qe=new lt.Parachain({assetsData:[{asset:T,decimals:12,id:0,xcmLocation:{parents:1,interior:"Here"}},{asset:w,decimals:10,min:.001,xcmLocation:{parents:2,interior:{X1:[{GlobalConsensus:"Polkadot"}]}}},{asset:A,decimals:6,id:1984,xcmLocation:{parents:1,interior:{X2:[{PalletInstance:50},{GeneralIndex:1984}]}}}],balance:lt.SubstrateBalanceType.Assets,balanceOverrides:{[T.key]:lt.SubstrateBalanceType.System},min:lt.SubstrateMinType.Assets,ecosystem:lt.ChainEcosystem.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"});var un=require("@galacticcouncil/xc-core");var dn=new un.Parachain({assetsData:[{asset:fs,id:0,xcmLocation:{parents:0,interior:"Here"}},{asset:T,decimals:12,id:1,xcmLocation:{parents:1,interior:"Here"}},{asset:A,decimals:6,id:14,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}}],balance:un.SubstrateBalanceType.Tokens,ecosystem:un.ChainEcosystem.Kusama,explorer:"https://basilisk.subscan.io",genesisHash:"0xa85cfb9b9fd4d622a5b28289a02347af987d8f73fa3108450e2b4a11c1ce5755",key:"basilisk",name:"Basilisk",parachainId:2090,ss58Format:10041,ws:"wss://basilisk-rpc.n.dwellir.com"});var yo=[qe,dn];var Ur=[...ao,...po,...fo,...ho,...yo],bo=new Map(Ur.map(t=>[t.key,t]));var er=require("@galacticcouncil/xc-core");var Ks=require("@galacticcouncil/xc-core");var Ws={};$t(Ws,{ContractBuilder:()=>Pe,ExtrinsicBuilder:()=>h,ExtrinsicDecorator:()=>St,FeeAmountBuilder:()=>X,FeeAssetBuilder:()=>Cn,MoveBuilder:()=>Gs,ProgramBuilder:()=>Os,XcmTransferType:()=>Xe,XcmVersion:()=>et});var Mt=require("@galacticcouncil/xc-core"),go=require("viem"),Kr=t=>({build:async e=>{let n=await Promise.all(t.map(r=>r.build(e))),s=n.map(r=>r.address),o=[0,0],a=n.map(r=>(0,go.encodeFunctionData)({abi:Mt.Abi[r.module],functionName:r.func,args:r.args}));return new Mt.ContractConfig({abi:Mt.Abi.Batch,address:Mt.Precompile.Batch,args:[s,o,a,[]],func:"batchAll",module:"Batch"})}}),xo=()=>({batchAll:Kr});var ln=require("@galacticcouncil/xc-core");function j(t,e){if(e<0||e>100)throw Error(`padPercent ${e} not in range of 0 to 100.`);return t+t*e/100n}function Gt(t){return typeof t=="object"?Object.values(t)[0]:t}function Ao(){return{approve:t=>({build:async e=>{let{amount:n,asset:s,source:o,transact:a}=e,r=a?a.chain:o.chain,c=ln.Wormhole.fromChain(r),i=r.getAssetId(s);return new ln.ContractConfig({abi:ln.Abi.Erc20,address:Gt(i).toString(),args:[t(c),n],func:"approve",module:"Erc20"})}})}}var pn=require("@galacticcouncil/xc-core");var wo=require("@galacticcouncil/common"),Co=require("polkadot-api"),ko=require("@polkadot-api/utils"),{H160:qr,isEvmAddress:zr}=wo.h160;function jr(t){let e=zr(t)?qr.toAccount(t):t;return(0,ko.toHex)((0,Co.AccountId)().enc(e))}var $r=()=>({build:async t=>{let{address:e,amount:n,asset:s,source:o}=t,a=o.chain,r=pn.Basejump.fromChain(a),c=a.getAssetId(s);return new pn.ContractConfig({abi:pn.Abi.Basejump,address:r.getAddress(),args:[Gt(c),n,jr(e)],func:"bridgeViaWormhole",module:"Basejump"})}}),vo=()=>({bridgeViaWormhole:$r});var ze=require("@galacticcouncil/xc-core"),To=require("@galacticcouncil/common"),{Ss58Addr:Eo}=ze.addr;function Jr(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 gs(t,e){let n=t.getAssetId(e);return typeof n=="string"?Jr(n):n}function Fo(){return{transferAssetsToPara32:()=>({build:async({address:t,amount:e,asset:n,destination:s,source:o})=>{let a=gs(o.chain,n);return new ze.ContractConfig({abi:ze.Abi.PolkadotXcm,address:ze.Precompile.PolkadotXcm,args:[s.chain.parachainId,Eo.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=gs(o.chain,n),r=gs(o.chain,o.destinationFeeBalance),c=To.big.toBigInt(s.fee.amount,s.fee.decimals);return new ze.ContractConfig({abi:ze.Abi.PolkadotXcm,address:ze.Precompile.PolkadotXcm,args:[s.chain.parachainId,Eo.getPubKey(t),[{asset:a,amount:e},{asset:r,amount:c}],1],func:"transferAssetsToPara32",module:"PolkadotXcm"})}})}}var $e=require("@galacticcouncil/xc-core"),Tt=require("@galacticcouncil/descriptors"),No=require("@polkadot-api/substrate-bindings"),Dn=require("@polkadot-api/utils"),Mo=require("viem");var So=require("@galacticcouncil/xc-core"),Xn=null;async function Bo(){if(Xn)return Xn;let t=await So.codec.getHubCodecs();return Xn={message:t.tx.PolkadotXcm.send.inner.message,location:t.tx.PolkadotXcm.send.inner.dest},Xn}var Io=require("@galacticcouncil/xc-core"),u=require("@galacticcouncil/descriptors"),Ro=require("@polkadot-api/substrate-bindings"),Lo=require("@polkadot-api/utils");var Po=require("@galacticcouncil/descriptors"),$=340282366920938463463374607431768211455n,je="0x0000000000000000000000000000000000000000000000000000000000000000",U={parents:1,interior:Po.XcmV3Junctions.Here()},Xo=0,Et=1e3,_n=1002,Ve=1,Ot="5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY",_o="0x0000000000000000000000000000000000000000000000000000000000000000",Do="0x0000000000000000000000000000000000000000";var xs="0x0000000000000000000000000000000000000000",fn=t=>({parents:2,interior:u.XcmV5Junctions.X1(u.XcmV5Junction.GlobalConsensus(u.XcmV5NetworkId.Ethereum({chain_id:BigInt(t)})))}),As=(t,e)=>({parents:2,interior:u.XcmV5Junctions.X2([u.XcmV5Junction.GlobalConsensus(u.XcmV5NetworkId.Ethereum({chain_id:BigInt(t)})),u.XcmV5Junction.AccountKey20({key:e,network:void 0})])});function Ho(t,e){let n=fn(t),s=As(t,"0x"+"00".repeat(20)),o=1000000000000n,a=1000000000n,r=[u.XcmV5Instruction.ReserveAssetDeposited([{id:n,fun:u.XcmV3MultiassetFungibility.Fungible(o)},{id:s,fun:u.XcmV3MultiassetFungibility.Fungible(o)}]),u.XcmV5Instruction.ExchangeAsset({give:u.XcmV5AssetFilter.Wild(u.XcmV5WildAsset.AllOf({id:n,fun:{type:"Fungible",value:void 0}})),want:[{id:U,fun:u.XcmV3MultiassetFungibility.Fungible(a)}],maximal:!1}),u.XcmV5Instruction.PayFees({asset:{id:U,fun:u.XcmV3MultiassetFungibility.Fungible(a)}})],c=ws({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,...c]}function ws(t){let{ethChainId:e,destinationParaId:n,tokenAddress:s,beneficiaryHex:o,tokenAmount:a,hydrationDotFee:r,topic:c}=t,i=fn(e),m=s===xs?i:As(e,s),d=o.length===42&&o.startsWith("0x")?u.XcmV5Junction.AccountKey20({key:o,network:void 0}):u.XcmV5Junction.AccountId32({id:o,network:void 0}),f={parents:0,interior:u.XcmV5Junctions.X1(d)};return[u.XcmV5Instruction.SetAppendix([u.XcmV5Instruction.RefundSurplus(),u.XcmV5Instruction.DepositAsset({assets:u.XcmV5AssetFilter.Wild(u.XcmV5WildAsset.All()),beneficiary:f})]),u.XcmV5Instruction.ExchangeAsset({give:u.XcmV5AssetFilter.Wild(u.XcmV5WildAsset.AllOf({id:i,fun:{type:"Fungible",value:void 0}})),want:[{id:U,fun:u.XcmV3MultiassetFungibility.Fungible(r)}],maximal:!1}),u.XcmV5Instruction.InitiateTransfer({destination:{parents:1,interior:u.XcmV5Junctions.X1(u.XcmV5Junction.Parachain(n))},remote_fees:{type:"ReserveDeposit",value:u.XcmV5AssetFilter.Definite([{id:U,fun:u.XcmV3MultiassetFungibility.Fungible(r)}])},preserve_origin:!1,assets:[{type:"ReserveDeposit",value:u.XcmV5AssetFilter.Definite([{id:m,fun:u.XcmV3MultiassetFungibility.Fungible(a)}])}],remote_xcm:[u.XcmV5Instruction.DepositAsset({assets:u.XcmV5AssetFilter.Wild(u.XcmV5WildAsset.AllCounted(3)),beneficiary:f}),u.XcmV5Instruction.SetTopic(c)]}),u.XcmV5Instruction.RefundSurplus(),u.XcmV5Instruction.DepositAsset({assets:u.XcmV5AssetFilter.Wild(u.XcmV5WildAsset.All()),beneficiary:f}),u.XcmV5Instruction.SetTopic(c)]}function Cs(t){let{tokenAddress:e,senderPubKey:n,beneficiaryHex:s,tokenAmount:o,sourceExecutionFee:a,dotRemoteFee:r,dotToEtherSwapAmount:c,etherFeeAmount:i,topic:m}=t,p=fn(Ve),d=e===xs?p:As(Ve,e),f={parents:0,interior:u.XcmV5Junctions.X1(u.XcmV5Junction.AccountId32({id:n,network:void 0}))},y={parents:0,interior:u.XcmV5Junctions.X1(u.XcmV5Junction.AccountKey20({key:s,network:void 0}))},x={parents:2,interior:u.XcmV5Junctions.X1(u.XcmV5Junction.GlobalConsensus(u.XcmV5NetworkId.Ethereum({chain_id:BigInt(Ve)})))},C=[u.XcmV5Instruction.DepositAsset({assets:u.XcmV5AssetFilter.Wild(u.XcmV5WildAsset.AllCounted(3)),beneficiary:y}),u.XcmV5Instruction.SetTopic(m)],F=[u.XcmV5Instruction.SetAppendix([u.XcmV5Instruction.SetHints({hints:[{type:"AssetClaimer",value:{location:f}}]}),u.XcmV5Instruction.RefundSurplus(),u.XcmV5Instruction.DepositAsset({assets:u.XcmV5AssetFilter.Wild(u.XcmV5WildAsset.All()),beneficiary:f})])];F.push(u.XcmV5Instruction.ExchangeAsset({give:u.XcmV5AssetFilter.Definite([{id:U,fun:u.XcmV3MultiassetFungibility.Fungible(c)}]),want:[{id:p,fun:u.XcmV3MultiassetFungibility.Fungible(i)}],maximal:!1}));let S=[{type:"ReserveWithdraw",value:u.XcmV5AssetFilter.Wild(u.XcmV5WildAsset.AllOf({id:d,fun:{type:"Fungible",value:void 0}}))}],I=u.XcmV5AssetFilter.Definite([{id:p,fun:u.XcmV3MultiassetFungibility.Fungible(i)}]);F.push(u.XcmV5Instruction.InitiateTransfer({destination:x,remote_fees:{type:"ReserveWithdraw",value:I},preserve_origin:!0,assets:S,remote_xcm:C}),u.XcmV5Instruction.SetTopic(m));let R=a+r+c,O=[{id:U,fun:u.XcmV3MultiassetFungibility.Fungible(R)},{id:d,fun:u.XcmV3MultiassetFungibility.Fungible(o)}],Z=[{id:U,fun:u.XcmV3MultiassetFungibility.Fungible(a)}],k={type:"ReserveWithdraw",value:u.XcmV5AssetFilter.Wild(u.XcmV5WildAsset.AllOf({id:d,fun:{type:"Fungible",value:void 0}}))},Ee=[{type:"ReserveWithdraw",value:u.XcmV5AssetFilter.Definite([{id:U,fun:u.XcmV3MultiassetFungibility.Fungible(c)}])},k];return[u.XcmV5Instruction.WithdrawAsset(O),u.XcmV5Instruction.PayFees({asset:Z[0]}),u.XcmV5Instruction.SetAppendix([u.XcmV5Instruction.SetHints({hints:[{type:"AssetClaimer",value:{location:f}}]}),u.XcmV5Instruction.RefundSurplus(),u.XcmV5Instruction.DepositAsset({assets:u.XcmV5AssetFilter.Wild(u.XcmV5WildAsset.All()),beneficiary:f})]),u.XcmV5Instruction.InitiateTransfer({destination:{parents:1,interior:u.XcmV5Junctions.X1(u.XcmV5Junction.Parachain(Et))},remote_fees:{type:"ReserveWithdraw",value:u.XcmV5AssetFilter.Definite([{id:U,fun:u.XcmV3MultiassetFungibility.Fungible(r)}])},preserve_origin:!0,assets:Ee,remote_xcm:F}),u.XcmV5Instruction.SetTopic(m)]}function Vo(t){let{address:e,amount:n,asset:s,sender:o,source:a,destination:r,messageId:c}=t,i=a.chain,m=(0,Ro.getSs58AddressInfo)(o);if(!m.isValid)throw new Error(`Invalid SS58 address: ${o}`);let p=(0,Lo.toHex)(m.publicKey),d=i.getAssetXcmLocation(s),f=d?Io.multiloc.findNestedKey(d,"key"):void 0,y=f?f.key:xs,x=r.feeBreakdown,C=x.sourceExecutionFee??0n,F=x.dotRemoteFee??0n,S=x.dotToEtherSwapAmount??0n,I=x.etherFeeAmount??0n,O=Cs({tokenAddress:y,senderPubKey:p,beneficiaryHex:e,tokenAmount:n,sourceExecutionFee:C,dotRemoteFee:F,dotToEtherSwapAmount:S,etherFeeAmount:I,topic:c??"0x0000000000000000000000000000000000000000000000000000000000000000"});return u.XcmVersionedXcm.V5(O)}var{Ss58Addr:Go}=$e.addr,Yr="0x0000000000000000000000000000000000000000",Qr=()=>({build:async t=>{let{address:e,amount:n,asset:s,sender:o,source:a,destination:r}=t,c=a.chain,i=r.chain,m=$e.Snowbridge.fromChain(c),p=c.getAssetId(s),d=Gt(p),f=s.originSymbol==="ETH",y=r.feeBreakdown.executionFee,x=r.feeBreakdown.relayerFee,C=r.feeBreakdown.hydrationDotFee,F=r.fee.amount,S=Go.getPubKey(e),I=new TextEncoder().encode(`${i.parachainId}${o}${d}${S}${n}${Date.now()}`),R=(0,Dn.toHex)((0,No.Blake2256)(I)),O=ws({ethChainId:Ve,destinationParaId:i.parachainId,tokenAddress:f?Yr:d,beneficiaryHex:S,tokenAmount:n,hydrationDotFee:C,topic:R}),Z=await Bo(),k=(0,Dn.toHex)(Z.message.enc(Tt.XcmVersionedXcm.V5(O))),Ee=[];f||Ee.push((0,Mo.encodeAbiParameters)([{type:"uint8"},{type:"address"},{type:"uint128"}],[0,d,n]));let ft=Z.location.enc(Tt.XcmVersionedLocation.V5({parents:0,interior:Tt.XcmV5Junctions.X1(Tt.XcmV5Junction.AccountId32({id:S,network:void 0}))})),ot=(0,Dn.toHex)(ft.slice(1));return new $e.ContractConfig({abi:$e.Abi.Snowbridge,address:m.getGateway(),args:[k,Ee,ot,y,x],value:f?F+n:F,func:"v2_sendMessage",module:"Snowbridge"})}}),Zr=()=>({build:async t=>{let{address:e,amount:n,asset:s,source:o,destination:a}=t,r=o.chain,c=a.chain,i=$e.Snowbridge.fromChain(r),m=r.getAssetId(s),p=Gt(m),d=s.originSymbol==="ETH",f=a.feeBreakdown.bridgeFeeInDot,y=a.fee.amount;return new $e.ContractConfig({abi:$e.Abi.Snowbridge,address:i.getGateway(),args:[p,c.parachainId,[1,Go.getPubKey(e)],f,n],value:d?y+n:y,func:"sendToken",module:"Snowbridge"})}}),Oo=()=>({v2SendMessage:Qr,sendToken:Zr});var Be=require("@galacticcouncil/xc-core"),ei="0x00",Wo=8,ti=()=>({build:async t=>{let{address:e,amount:n,asset:s,source:o,destination:a}=t,r=o.chain,c=a.chain,i=Be.Ntt.fromChain(r,s),m=Be.Wormhole.fromChain(c),p=e;c instanceof Be.EvmParachain&&(p=await c.getDerivatedAddress(e));let d=r,f=await d.evmClient.getProvider().readContract({abi:Be.Abi.NttManager,address:i.manager,args:[m.getWormholeId(),ei],functionName:"quoteDeliveryPrice"}),y=d.getAssetDecimals(s)??0,x=n;if(y>Wo){let C=10n**BigInt(y-Wo);x=n-n%C}return new Be.ContractConfig({abi:Be.Abi.NttManager,address:i.manager,args:[x,m.getWormholeId(),m.normalizeAddress(p)],token:i.token,wrapNative:d.getBalanceType(s)===Be.EvmBalanceType.Native,value:f[1],func:"transfer",module:"NttManager"})}}),Uo=()=>({transfer:ti});function Ko(){return{Ntt:Uo}}function Pe(){return{Batch:xo,Erc20:Ao,Basejump:vo,PolkadotXcm:Fo,Snowbridge:Oo,Wormhole:Ko}}var ks=require("@galacticcouncil/common"),zo=require("@galacticcouncil/xc-core"),qo="AssetConversion",ni=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:c}=a,i=o,m=(0,ks.encodeLocation)(i.getAssetXcmLocation(r)),p=(0,ks.encodeLocation)(i.getAssetXcmLocation(c)),d=r.amount+r.amount*BigInt(t.slippage)/100n,f=c.amount;return new zo.ExtrinsicConfig({module:qo,func:e,getTx:y=>y.getUnsafeApi().tx[qo][e]({path:[m,p],amount_out:f,amount_in_max:d,send_to:n,keep_alive:!0})})}}},jo=()=>({swapTokensForExactTokens:ni});var In=require("@galacticcouncil/descriptors"),$o=require("@galacticcouncil/xc-core"),si="Assets",oi=()=>{let t="transfer";return{build:async({asset:e,amount:n,address:s,destination:o})=>{let a=o.chain,{fee:r}=o,c=n>r.amount?n-r.amount:n,i=a.getMetadataAssetId(e);return new $o.ExtrinsicConfig({module:si,func:t,getTx:m=>m.getTypedApi(In.hub).tx.Assets.transfer({id:Number(i),target:In.MultiAddress.Id(s),amount:c})})}}},Jo=()=>({transfer:oi});var Qo=require("@galacticcouncil/xc-core"),Yo="Balances",ai=(t=!1)=>{let e="transfer_all";return{build:async({address:n})=>new Qo.ExtrinsicConfig({module:Yo,func:e,getTx:s=>s.getUnsafeApi().tx[Yo][e]({dest:n,keep_alive:t})})}},Zo=()=>({transferAll:ai});var ea=require("@galacticcouncil/descriptors"),ta=require("@galacticcouncil/xc-core"),ri="Router",ii=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:c}=o,i=s,m=i.getMetadataAssetId(a),p=i.getMetadataAssetId(r),d=r.amount,f=a.amount+a.amount*BigInt(t.slippage)/100n;return new ta.ExtrinsicConfig({module:ri,func:"buy",getTx:y=>y.getTypedApi(ea.hydration).tx.Router.buy({asset_in:Number(m),asset_out:Number(p),amount_out:d,max_amount_in:f,route:c})})}}),na=()=>({buy:ii});var oa=require("@galacticcouncil/xc-core"),sa="Utility",ci=t=>{let e="batch_all";return{build:async n=>{let s=await Promise.all(t.map(o=>o.build(n)));return new oa.ExtrinsicConfig({module:sa,func:e,getTx:o=>{let a=s.map(r=>r.getTx(o).decodedCall);return o.getUnsafeApi().tx[sa][e]({calls:a})}})}}},aa=()=>({batchAll:ci});var Rn=require("@galacticcouncil/xc-core"),ia=require("polkadot-api"),ca=require("viem");var et=(a=>(a.v1="V1",a.v2="V2",a.v3="V3",a.v4="V4",a.v5="V5",a))(et||{}),Xe=(o=>(o.Teleport="Teleport",o.LocalReserve="LocalReserve",o.DestinationReserve="DestinationReserve",o.RemoteReserve="RemoteReserve",o))(Xe||{});var ra="EthereumXcm",mi=t=>{let e="transact";return{build:async n=>{let s=await t.build(n),o="V1",a=(0,ca.encodeFunctionData)({abi:Rn.Abi[s.module],functionName:s.func,args:s.args});return new Rn.ExtrinsicConfig({module:ra,func:e,getTx:r=>r.getUnsafeApi().tx[ra][e]({xcm_transaction:{type:o,value:{gas_limit:[5000000n,0n,0n,0n],fee_payment:{type:"Auto",value:void 0},action:{type:"Call",value:s.address},value:[0n,0n,0n,0n],input:ia.Binary.fromHex(a),access_list:void 0}}})})}}},vs=()=>({transact:mi});var pt=require("@galacticcouncil/xc-core"),xn=require("@galacticcouncil/common");var Wt=require("@galacticcouncil/xc-core"),l=require("@galacticcouncil/descriptors");var J=require("@galacticcouncil/descriptors");var ma=require("@galacticcouncil/common"),Es=require("@galacticcouncil/descriptors"),ua=require("@polkadot-api/substrate-bindings"),da=require("@polkadot-api/utils");function W(t){if(t.length===42&&t.startsWith("0x"))return Es.XcmV3Junction.AccountKey20({key:t,network:void 0});let n=(0,ua.getSs58AddressInfo)(t);if(!n.isValid)throw new Error(`Invalid SS58 address: ${t}`);return Es.XcmV3Junction.AccountId32({id:(0,da.toHex)(n.publicKey),network:void 0})}function hn(t,e,n){return ma.acc.getMultilocationDerivatedAccount(t.parachainId,e,n.parachainId===0?0:1,n.usesH160Acc)}var Ts=require("@galacticcouncil/xc-core");function la(t,e){let n=Ts.multiloc.findNestedKey(t,"GeneralIndex"),s=Ts.multiloc.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 Ln={};$t(Ln,{ETHER_TOKEN_ADDRESS:()=>Fs,erc20Location:()=>di,erc20LocationReanchored:()=>li,ethereumLocation:()=>fa,parachainLocation:()=>ui});var Ne=require("@galacticcouncil/descriptors"),Fs="0x0000000000000000000000000000000000000000",pa=t=>Ne.XcmV3Junction.GlobalConsensus(Ne.XcmV3JunctionNetworkId.Ethereum({chain_id:BigInt(t)}));function fa(t){return{parents:2,interior:Ne.XcmV3Junctions.X1(pa(t))}}function ui(t){return{parents:1,interior:Ne.XcmV3Junctions.X1(Ne.XcmV3Junction.Parachain(t))}}function di(t,e){return e===Fs?fa(t):{parents:2,interior:Ne.XcmV3Junctions.X2([pa(t),Ne.XcmV3Junction.AccountKey20({key:e})])}}function li(t){return t===Fs?{parents:0,interior:{type:"Here"}}:{parents:0,interior:Ne.XcmV3Junctions.X1(Ne.XcmV3Junction.AccountKey20({key:t}))}}var Ss=require("@galacticcouncil/common"),ha=require("@galacticcouncil/xc-core");function G(t,e){return pi(e)>=4?(0,Ss.encodeLocation)(t):fi(t)}function pi(t){let e=t.toString().replace("V","").replace("v","");return Number(e)}function fi(t){return{type:"Concrete",value:(0,Ss.encodeLocation)(t)}}var hi=1e3;function yi(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 bi(t){if(t)return yi(t)?hi:ha.multiloc.findParachain(t)}function ya(t,e,n,s){let o=e.getAssetXcmLocation(t),a=bi(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}"`)}function Hn(t,e){let n="V4",s=G(N(e,t),n),o=je;return[J.XcmV4Instruction.ReserveAssetDeposited([{id:U,fun:J.XcmV3MultiassetFungibility.Fungible($)},{id:s,fun:J.XcmV3MultiassetFungibility.Fungible($)}]),J.XcmV4Instruction.ClearOrigin(),J.XcmV4Instruction.BuyExecution({fees:{id:U,fun:J.XcmV3MultiassetFungibility.Fungible($)},weight_limit:J.XcmV3WeightLimit.Unlimited()}),J.XcmV4Instruction.DepositAsset({assets:J.XcmV4AssetAssetFilter.Wild(J.XcmV4AssetWildAsset.AllCounted(2)),beneficiary:{parents:0,interior:J.XcmV3Junctions.X1(W(Ot))}}),J.XcmV4Instruction.SetTopic(o)]}var tt=require("@galacticcouncil/descriptors");function Bs(t,e){let n="V4",s=G(N(e,t),n),o=Vn("V4",W(Do),W(Ot),s,je);return[tt.XcmV4Instruction.WithdrawAsset([{id:U,fun:tt.XcmV3MultiassetFungibility.Fungible($)},{id:s,fun:tt.XcmV3MultiassetFungibility.Fungible($)}]),tt.XcmV4Instruction.ClearOrigin(),tt.XcmV4Instruction.BuyExecution({fees:{id:U,fun:tt.XcmV3MultiassetFungibility.Fungible($)},weight_limit:tt.XcmV3WeightLimit.Unlimited()}),...o.value]}var P=require("@galacticcouncil/descriptors");function ba(t,e){let n="V4",s=G(N(e,t),n),o=je;return[P.XcmV4Instruction.WithdrawAsset([{id:s,fun:P.XcmV3MultiassetFungibility.Fungible($)}]),P.XcmV4Instruction.ClearOrigin(),P.XcmV4Instruction.BuyExecution({fees:{id:s,fun:P.XcmV3MultiassetFungibility.Fungible($)},weight_limit:P.XcmV3WeightLimit.Unlimited()}),P.XcmV4Instruction.DepositAsset({assets:P.XcmV4AssetAssetFilter.Wild(P.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:P.XcmV3Junctions.X1(W(Ot))}}),P.XcmV4Instruction.SetTopic(o)]}function Ps(t,e){let n="V4",s=G(N(e,t),n);return[P.XcmV4Instruction.BuyExecution({fees:{id:s,fun:P.XcmV3MultiassetFungibility.Fungible($)},weight_limit:P.XcmV3WeightLimit.Unlimited()}),P.XcmV4Instruction.DepositAsset({assets:P.XcmV4AssetAssetFilter.Wild(P.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:P.XcmV3Junctions.X1(W(Ot))}})]}function ga(t,e,n){let s="V4",o=G(N(e,t),s),a=je,r=Ps(t,n);return[P.XcmV4Instruction.WithdrawAsset([{id:o,fun:P.XcmV3MultiassetFungibility.Fungible($)}]),P.XcmV4Instruction.ClearOrigin(),P.XcmV4Instruction.BuyExecution({fees:{id:o,fun:P.XcmV3MultiassetFungibility.Fungible($)},weight_limit:P.XcmV3WeightLimit.Unlimited()}),P.XcmV4Instruction.DepositReserveAsset({assets:P.XcmV4AssetAssetFilter.Wild(P.XcmV4AssetWildAsset.AllCounted(1)),dest:{parents:1,interior:P.XcmV3Junctions.X1(P.XcmV3Junction.Parachain(n.parachainId))},xcm:r}),P.XcmV4Instruction.SetTopic(a)]}var K=require("@galacticcouncil/descriptors");function xa(t,e){let n="V5",s=G(N(e,t),n),o={parents:0,interior:K.XcmV5Junctions.X1(K.XcmV5Junction.AccountId32({id:_o,network:void 0}))};return[K.XcmV5Instruction.ReserveAssetDeposited([{id:U,fun:K.XcmV3MultiassetFungibility.Fungible($)}]),K.XcmV5Instruction.PayFees({asset:{id:U,fun:K.XcmV3MultiassetFungibility.Fungible($)}}),K.XcmV5Instruction.ReserveAssetDeposited([{id:s,fun:K.XcmV3MultiassetFungibility.Fungible($)}]),K.XcmV5Instruction.ClearOrigin(),K.XcmV5Instruction.DepositAsset({assets:K.XcmV5AssetFilter.Wild(K.XcmV5WildAsset.AllCounted(3)),beneficiary:o}),K.XcmV5Instruction.SetTopic(je)]}var Aa=[Wt.ChainEcosystem.Polkadot,Wt.ChainEcosystem.Kusama],gi={parents:1,interior:l.XcmV3Junctions.X1(l.XcmV3Junction.Parachain(1e3))},xi=t=>{let{parents:e,interior:n}=t;return e!==1?!1:n==="Here"||n?.type==="Here"},wa=(t,e)=>!t.ecosystem||!e.ecosystem?!1:Aa.includes(t.ecosystem)&&Aa.includes(e.ecosystem)&&t.ecosystem!==e.ecosystem,Ca=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},nt=(t,e,n)=>{if(wa(e,n))return{type:t,value:Xs(n.ecosystem,n.parachainId)};if(n.parachainId===Xo)return{type:t,value:{parents:1,interior:l.XcmV3Junctions.Here()}};let s=n.key==="ethereum"?Et:n.parachainId;return{type:t,value:{parents:1,interior:l.XcmV3Junctions.X1(l.XcmV3Junction.Parachain(s))}}},Ai=t=>t===Wt.ChainEcosystem.Kusama?l.XcmV3JunctionNetworkId.Kusama():l.XcmV3JunctionNetworkId.Polkadot(),Xs=(t,e)=>({parents:2,interior:l.XcmV3Junctions.X2([l.XcmV3Junction.GlobalConsensus(Ai(t)),l.XcmV3Junction.Parachain(e)])}),ka=(t,e,n,s)=>{if(wa(e,n)){if(e.parachainId!==Et){let o=Wt.multiloc.findGlobalConsensus(N(e,s)),a=typeof o=="string"&&o===n.ecosystem;return{dest:{type:t,value:{parents:1,interior:l.XcmV3Junctions.X1(l.XcmV3Junction.Parachain(Et))}},mode:a?"bridge-withdraw":"bridge-deposit"}}if(n.parachainId!==Et)return{dest:{type:t,value:Xs(n.ecosystem,Et)},mode:"onward"}}},Ut=(t,e)=>({type:t,value:{parents:0,interior:l.XcmV3Junctions.X1(e)}}),_s=(t,e,n)=>e==="RemoteReserve"?{type:"RemoteReserve",value:{type:t,value:xi(n)?gi:n}}:{type:e},Ft=(t,e)=>({id:t,fun:l.XcmV3MultiassetFungibility.Fungible(e)}),va=(t,e,n)=>({type:t,value:[l.XcmV4Instruction.DepositAsset({assets:l.XcmV4AssetAssetFilter.Wild(l.XcmV4AssetWildAsset.AllCounted(n)),beneficiary:{parents:0,interior:l.XcmV3Junctions.X1(e)}})]}),Vn=(t,e,n,s,o)=>{let a=o;return{type:t,value:[l.XcmV4Instruction.SetAppendix([l.XcmV4Instruction.DepositAsset({assets:l.XcmV4AssetAssetFilter.Wild(l.XcmV4AssetWildAsset.All()),beneficiary:{parents:0,interior:l.XcmV3Junctions.X1(n)}})]),l.XcmV4Instruction.InitiateReserveWithdraw({assets:l.XcmV4AssetAssetFilter.Wild(l.XcmV4AssetWildAsset.AllOf({id:s,fun:l.XcmV2MultiassetWildFungibility.Fungible()})),reserve:Ln.ethereumLocation(Ve),xcm:[l.XcmV4Instruction.BuyExecution({fees:{id:wi(s),fun:l.XcmV3MultiassetFungibility.Fungible(1n)},weight_limit:l.XcmV3WeightLimit.Unlimited()}),l.XcmV4Instruction.DepositAsset({assets:l.XcmV4AssetAssetFilter.Wild(l.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:l.XcmV3Junctions.X1(e)}}),l.XcmV4Instruction.SetTopic(a)]}),l.XcmV4Instruction.SetTopic(a)]}},Ea=(t,e,n,s,o,a)=>{let r=s==="onward"?{parents:1,interior:l.XcmV3Junctions.X1(l.XcmV3Junction.Parachain(n.parachainId))}:Xs(n.ecosystem,n.parachainId),c={parents:0,interior:l.XcmV3Junctions.X1(e)},i=l.XcmV4AssetAssetFilter.Wild(l.XcmV4AssetWildAsset.AllCounted(1)),m=[l.XcmV4Instruction.BuyExecution({fees:{id:o,fun:l.XcmV3MultiassetFungibility.Fungible(a)},weight_limit:l.XcmV3WeightLimit.Unlimited()}),l.XcmV4Instruction.DepositAsset({assets:i,beneficiary:c})],p=s==="bridge-withdraw"?l.XcmV4Instruction.InitiateReserveWithdraw({assets:i,reserve:r,xcm:m}):l.XcmV4Instruction.DepositReserveAsset({assets:i,dest:r,xcm:m});return{type:t,value:[l.XcmV4Instruction.SetAppendix([l.XcmV4Instruction.DepositAsset({assets:l.XcmV4AssetAssetFilter.Wild(l.XcmV4AssetWildAsset.All()),beneficiary:c})]),p]}},wi=t=>{let e=Wt.multiloc.findNestedKey(t,"key");return e?{parents:0,interior:l.XcmV3Junctions.X1(l.XcmV3Junction.AccountKey20({key:e.key}))}:{parents:0,interior:l.XcmV3Junctions.Here()}},Ta=(t,e,n,s,o,a)=>({type:t,value:[l.XcmV4Instruction.WithdrawAsset([{id:n,fun:l.XcmV3MultiassetFungibility.Fungible(s)}]),l.XcmV4Instruction.BuyExecution({fees:{id:n,fun:l.XcmV3MultiassetFungibility.Fungible(s)},weight_limit:l.XcmV3WeightLimit.Unlimited()}),l.XcmV4Instruction.Transact({origin_kind:l.XcmV2OriginKind.SovereignAccount(),require_weight_at_most:{ref_time:a.refTime,proof_size:a.proofSize},call:o}),l.XcmV4Instruction.RefundSurplus(),l.XcmV4Instruction.DepositAsset({assets:l.XcmV4AssetAssetFilter.Wild(l.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:l.XcmV3Junctions.X1(e)}})]}),Fa=(t,e,n,s,o,a)=>({type:t,value:[l.XcmV4Instruction.WithdrawAsset([{id:n,fun:l.XcmV3MultiassetFungibility.Fungible(o)}]),l.XcmV4Instruction.BuyExecution({fees:{id:n,fun:l.XcmV3MultiassetFungibility.Fungible(o)},weight_limit:l.XcmV3WeightLimit.Unlimited()}),l.XcmV4Instruction.TransferAsset({assets:[{id:n,fun:l.XcmV3MultiassetFungibility.Fungible(s)}],beneficiary:{parents:0,interior:l.XcmV3Junctions.X1(a)}}),l.XcmV4Instruction.RefundSurplus(),l.XcmV4Instruction.DepositAsset({assets:l.XcmV4AssetAssetFilter.Wild(l.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:l.XcmV3Junctions.X1(e)}})]});var te="PolkadotXcm",Ci=()=>({build:async({address:t,amount:e,asset:n,destination:s,source:o})=>{let a=W(t),r=o.chain,c=s.chain,i="V4",m=N(r,n),p=N(r,s.fee),d=G(m,i),f=G(p,i),y=Ft(d,e),x=Ft(f,s.fee.amount),C="limited_reserve_transfer_assets";return new pt.ExtrinsicConfig({module:te,func:C,getTx:F=>{let S=F.getUnsafeApi().tx[te][C];return n.key===s.fee.key?S({dest:nt(i,r,c),beneficiary:Ut(i,a),assets:{type:i,value:[y]},fee_asset_item:0,weight_limit:{type:"Unlimited"}}):la(m,p)?S({dest:nt(i,r,c),beneficiary:Ut(i,a),assets:{type:i,value:[x,y]},fee_asset_item:0,weight_limit:{type:"Unlimited"}}):S({dest:nt(i,r,c),beneficiary:Ut(i,a),assets:{type:i,value:[y,x]},fee_asset_item:1,weight_limit:{type:"Unlimited"}})}})}}),ki=()=>({build:async({address:t,amount:e,asset:n,destination:s,source:o})=>{let a=W(t),r=o.chain,c=s.chain,i="V4",m=G(N(r,n),i),p=Ft(m,e),d=nt(i,r,c),f=Ut(i,a),y={type:i,value:[p]},x="limited_teleport_assets";return new pt.ExtrinsicConfig({module:te,func:x,getTx:C=>C.getUnsafeApi().tx[te][x]({dest:d,beneficiary:f,assets:y,fee_asset_item:0,weight_limit:{type:"Unlimited"}})})}}),vi=()=>({build:async({address:t,amount:e,asset:n,destination:s,source:o})=>{let a=W(t),r=o.chain,c=s.chain,i=r.xcmVersion??"V4",m=G(N(r,n),i),p=Ft(m,e),d=nt(i,r,c),f=Ut(i,a),y={type:i,value:[p]},x="reserve_transfer_assets";return new pt.ExtrinsicConfig({module:te,func:x,getTx:C=>C.getUnsafeApi().tx[te][x]({dest:d,beneficiary:f,assets:y,fee_asset_item:0})})}}),Ei=()=>({build:async({address:t,amount:e,asset:n,destination:s,source:o})=>{let a=W(t),r=o.chain,c=s.chain,i="V4",m=G(N(r,n),i),p=Ft(m,e),d=nt(i,r,c),f=Ut(i,a),y={type:i,value:[p]},x="transfer_assets";return new pt.ExtrinsicConfig({module:te,func:x,getTx:C=>C.getUnsafeApi().tx[te][x]({dest:d,beneficiary:f,assets:y,fee_asset_item:0,weight_limit:{type:"Unlimited"}})})}}),Ti=t=>({build:async({address:e,asset:n,amount:s,destination:o,messageId:a,sender:r,source:c,transact:i})=>{let m="V4",p=c.chain,d=o.chain,f=o.fee.amount,y=o.fee;i&&(d=i.chain,f=xn.big.toBigInt(i.fee.amount,i.fee.decimals),y=i.fee);let x=W(r),C=i||d.usesCexForwarding?hn(p,r,d):e,F=W(C),{transferType:S}=t,I=G(N(p,n),m),R=G(N(p,y),m),O=Ft(I,s),Z=Ft(R,f),k=n.isEqual(y),Ee=ka(m,p,d,n),ft=Ee?.dest??nt(m,p,d),ot={type:m,value:k?[O]:[Z,O]},Sn=_s(m,S,I),us={type:m,value:k?I:R},ds=_s(m,S,R),jt;if(Ca(I)&&o.chain.isEvmChain())jt=Vn(m,F,x,I,a);else if(Ee){let gn=xn.big.toBigInt(t.executionFee??o.fee.amount,o.fee.decimals),_r=G(N(d,n),m);jt=Ea(m,F,d,Ee.mode,_r,gn)}else jt=va(m,F,ot.value.length);let Bn="transfer_assets_using_type_and_then";return new pt.ExtrinsicConfig({module:te,func:Bn,getTx:gn=>gn.getUnsafeApi().tx[te][Bn]({dest:ft,assets:ot,assets_transfer_type:Sn,remote_fees_id:us,fees_transfer_type:ds,custom_xcm_on_dest:jt,weight_limit:{type:"Unlimited"}})})}}),Fi=()=>{let t="send";return{transact:e=>({build:async n=>{let{sender:s,source:o,transact:a}=n,r="V4";if(!a)throw new Error("Transact ctx configuration is missing.");let c=o.chain,i=a.chain,m=hn(c,s,i),p=W(m),{fee:d}=a,f=G(N(i,d),r),y=xn.big.toBigInt(e.fee,d.decimals);return new pt.ExtrinsicConfig({module:te,func:t,getTx:x=>x.getUnsafeApi().tx[te][t]({dest:nt(r,c,i),message:Ta(r,p,f,y,a.call,a.weight)})})}}),transferAsset:e=>({build:async n=>{let{amount:s,address:o,asset:a,sender:r,source:c,destination:i}=n,m="V4",p=c.chain,d=i.chain,f=hn(p,r,d),y=W(f),x=W(o),C=G(N(d,a),m),{fee:F}=i,S=xn.big.toBigInt(e.fee,F.decimals),I=s>F.amount?s-(F.amount+S):s;return new pt.ExtrinsicConfig({module:te,func:t,getTx:R=>R.getUnsafeApi().tx[te][t]({dest:nt(m,p,d),message:Fa(m,y,C,I,S,x)})})}})}};function Si(t){let e=n=>({build:async s=>{let o=n(s),a="execute";return new pt.ExtrinsicConfig({module:te,func:a,getTx:r=>r.getUnsafeApi().tx[te][a]({message:o,max_weight:{ref_time:20000000000n,proof_size:500000n}})})}});return t?e(t):{viaSnowbridge:()=>e(Vo)}}var Ds=()=>({limitedReserveTransferAssets:Ci,limitedTeleportAssets:ki,reserveTransferAssets:vi,transferAssets:Ei,transferAssetsUsingTypeAndThen:Ti,execute:Si,send:Fi});var Pa=require("@galacticcouncil/xc-core"),Xa=require("@galacticcouncil/common");var An=require("@galacticcouncil/descriptors"),Sa=(t,e,n)=>e.parachainId===0?{type:t,value:{parents:1,interior:An.XcmV3Junctions.X1(n)}}:{type:t,value:{parents:1,interior:An.XcmV3Junctions.X2([An.XcmV3Junction.Parachain(e.parachainId),n])}};var Ba="XTokens",Bi=()=>({build:async({address:t,amount:e,asset:n,destination:s,sender:o,source:a})=>{let r=a.chain,c=s.chain,i="V3",m=c.usesCexForwarding?hn(r,o,c):t,p=W(m),d=r.getAssetId(n),f=(0,Xa.encodeAssetId)(d),y="transfer";return new Pa.ExtrinsicConfig({module:Ba,func:y,getTx:x=>x.getUnsafeApi().tx[Ba][y]({currency_id:f,amount:e,dest:Sa(i,c,p),dest_weight_limit:{type:"Unlimited"}})})}}),Is=()=>({transfer:Bi});function h(){return{assetConversion:jo,assets:Jo,balances:Zo,ethereumXcm:vs,polkadotXcm:Ds,router:na,utility:aa,xTokens:Is}}function St(t,e){return{prior:function(n){return{build:async s=>t(s)?h().utility().batchAll([e,n]).build(s):n.build(s)}},priorMulti:function(n){return{build:async s=>t(s)?h().utility().batchAll([e,...n]).build(s):h().utility().batchAll([...n]).build(s)}}}}var Kt=require("@galacticcouncil/xc-core");var _a=80000n,Da=120000n,Ia=100000n,Ra=2000000n,Rs=15000000000000n;var Ms={};$t(Ms,{ASSET_LOCKDOWN_PERIOD_BLOCKS:()=>Va,AssethubClient:()=>ke,BaseClient:()=>Me,HydrationClient:()=>ne,getAllAssetDepositLimits:()=>Vs,getAssetDepositLimit:()=>Hs,getGlobalWithdrawLimit:()=>Ns});var Ls=require("@galacticcouncil/common"),wn=require("@galacticcouncil/descriptors"),Me=class{chain;descriptor;constructor(e,n){this.chain=e,this.descriptor=n??wn.hub}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=(0,Ls.encodeLocation)(o),r=await this.refApi.apis.XcmPaymentApi.query_weight_to_asset_fee(s.value,wn.XcmVersionedAssetId.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=(0,Ls.encodeLocation)(o),r=await this.refApi.apis.XcmPaymentApi.query_weight_to_asset_fee(s.value,wn.XcmVersionedAssetId.V4(a));if(!r.success)throw Error(`Can't convert weight to fee in ${n.originSymbol}`);return BigInt(r.value)}};var _e=require("@galacticcouncil/descriptors"),La=require("@galacticcouncil/common"),Nn=require("@polkadot-api/substrate-bindings"),Ha=require("@polkadot-api/utils");var ke=class extends Me{constructor(e){super(e)}async checkIfSufficient(e){let n=this.chain.getAssetId(e),s=this.chain.getAssetXcmLocation(e),o=(0,La.encodeLocation)(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=(0,Ha.toHex)((0,Nn.Twox128)(s)),a=await this.client._request("state_getStorage",[o]);if(!a)return n;let r=Nn.u128.dec(a);return r===0n?n:r}async calculateDeliveryFee(e,n){let s=_e.XcmVersionedLocation.V5({parents:1,interior:_e.XcmV5Junctions.X1(_e.XcmV5Junction.Parachain(n))}),o=_e.XcmVersionedAssetId.V5({parents:1,interior:{type:"Here",value:void 0}}),a=await this.api().apis.XcmPaymentApi.query_delivery_fees(s,_e.XcmVersionedXcm.V4(e),o);if(!a.success)throw Error("Can't query XCM delivery fee.");let r=a.value.value.find(i=>{let m=i.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 c=r.fun.value;if(typeof c=="bigint")return c;throw Error("Can't parse delivery fee.")}async quoteDotToEther(e,n){let s={parents:1,interior:_e.XcmV5Junctions.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:_e.XcmV5Junctions.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:_e.XcmV5Junctions.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}};var Ma=require("@galacticcouncil/descriptors");var Va=14400;function Na(t,e,n,s,o,a){let r=e?.xcm_rate_limit!=null?BigInt(e.xcm_rate_limit):null,c=e?.symbol?new TextDecoder().decode(e.symbol):`#${t}`,i=e?.decimals??12,m=!1,p,d,f;n&&(n.type==="Locked"?(p=n.value,m=o<n.value):(d=n.value[0],f=n.value[1]));let y=s?.type==="Local"?"Local":"External",x=!m&&d!==void 0&&d+Va<=o,C=null;if(r!==null)if(m)C=0n;else if(x)C=r;else{let F=f??a,S=a>F?a-F:0n;C=r>S?r-S:0n}return{assetId:t,symbol:c,decimals:i,limit:r,locked:m,lockedUntilBlock:p,lastResetBlock:d,baselineIssuance:f,currentIssuance:a,headroom:C,category:y,periodExpired:x}}async function Hs(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,c]=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 Na(e,s,o,a,r,c)}async function Vs(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"})]),c=new Map(n.map(d=>[d.keyArgs[0],d.value])),i=new Map(s.map(d=>[d.keyArgs[0],d.value])),m=new Map(r.map(d=>[d.keyArgs[0],d.value])),p=new Map;for(let d of e){let f=d.keyArgs[0],y=d.value;if(y?.xcm_rate_limit==null)continue;let x=f===0?a:m.get(f)??0n,C=Na(f,y,c.get(f),i.get(f),o,x);p.set(f.toString(),C)}return p}async function Ns(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,[c,i]=n;if(!e)return{configured:!1,limit:0n,windowMs:0n,used:0n,lastUpdateMs:i,headroom:0n,lockdown:r,lockdownUntilMs:a};let{limit:m,window:p}=e,d=c;if(!r&&p>0n){let y=o>i?o-i:0n;if(y>0n){let x=y>p?p:y,C=c*x/p;d=c>C?c-C:0n}}let f=r||d>=m?0n:m-d;return{configured:!0,limit:m,windowMs:p,used:d,lastUpdateMs:i,headroom:f,lockdown:r,lockdownUntilMs:a}}var ne=class extends Me{constructor(e){super(e,Ma.hydration)}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 Hs(this.api(),n)}getAllAssetDepositLimits(){return Vs(this.api())}getGlobalWithdrawLimit(){return Ns(this.api())}};function Pi(){return{calculateInboundFee:t=>({build:async({feeAsset:e,destination:n})=>{let s=n,o=new ne(s),a=new ke(t.hub),r=Hn(e,s),c=xa(e,s),i=fn(Ve),m=250000000n,p=Ho(Ve,s.parachainId),[d,f,y,x]=await Promise.all([o.calculateDestinationFeeV5(c,w),a.calculateDeliveryFee(r,s.parachainId),a.calculateDeliveryFee(r,_n),a.calculateDestinationFeeV5(p,w)]),C=j(d,33n),F=j(f,33n),S=j(y,33n),R=j(x,33n)+F,O=C,Z=await a.quoteEtherForDot(i,R),k=j(Z,30n),Ee=k<Rs*2n?Rs*2n:k,ft=j(await a.quoteEtherForDot(i,O),100n),ot=j(await a.quoteDotToEther(i,m+S),30n);return{amount:Ee+ot+ft,breakdown:{executionFee:Ee,relayerFee:ot,remoteEtherFee:ft,hydrationDotFee:O}}}}),calculateOutboundFee:t=>({build:async({transferAsset:e,feeAsset:n,source:s,destination:o})=>{let a=s,r=o,c=new ke(t.hub),i=fn(Ve),m=Bs(e,a),[p,d,f]=await Promise.all([c.getBridgeDeliveryFee(),c.calculateDeliveryFee(m,_n),c.calculateDestinationFee(m,n)]),y=await r.evmClient.getProvider().getGasPrice(),x=Ra+Da+_a+Ia,C=y*x,F=j(C,10n),S=p+j(d,33n)+j(f,33n),I=j(await c.quoteDotForExactEther(i,F),20n),R=new ne(a),O=Cs({tokenAddress:"0x0000000000000000000000000000000000000000",senderPubKey:"0x"+"00".repeat(32),beneficiaryHex:"0x"+"00".repeat(20),tokenAmount:1000000000000n,sourceExecutionFee:1000000000n,dotRemoteFee:1000000000n,dotToEtherSwapAmount:1000000000n,etherFeeAmount:1000000000n,topic:je}),Z=j(await R.calculateDestinationFeeV5(O,w),33n);return{amount:S+I+Z,breakdown:{dotRemoteFee:S,dotToEtherSwapAmount:I,etherFeeAmount:F,sourceExecutionFee:Z}}}}),calculateInboundFeeV1:t=>({build:async({feeAsset:e,destination:n,source:s})=>{let o=s,a=n,r=Kt.Snowbridge.fromChain(o),c=new Me(a),i=new ke(t.hub),m=Hn(e,a),[p,d]=await Promise.all([c.calculateDestinationFee(m,w),i.calculateDeliveryFee(m,a.parachainId)]),f=d+j(p,25n),y=o.getAssetId(e);return{amount:await o.evmClient.getProvider().readContract({abi:Kt.Abi.Snowbridge,address:r.getGateway(),args:[y,a.parachainId,f],functionName:"quoteSendTokenFee"}),breakdown:{bridgeFeeInDot:f}}}}),calculateOutboundFeeV1:t=>({build:async({transferAsset:e,feeAsset:n,source:s})=>{let o=s,a=new ke(t.hub),r=Bs(e,o),c=Hn(e,o),[i,m,p,d,f]=await Promise.all([a.getBridgeDeliveryFeeV1(),a.calculateDeliveryFee(r,_n),a.calculateDestinationFee(r,n),a.calculateDeliveryFee(c,o.parachainId),a.calculateDestinationFee(c,n)]);return{amount:i+m+j(p,25n)+d+j(f,25n),breakdown:{bridgeDeliveryFee:i,bridgeHubDeliveryFee:m,assetHubDestinationFee:p,returnToSenderDeliveryFee:d,returnToSenderDestinationFee:f}}}})}}function Xi(){return{calculateDestFee:t=>({build:async({feeAsset:e,source:n,destination:s})=>{let o=n,a=s,r=t?.reserve;if(ya(e,o,a,r),r){let f=new Me(a),y=new Me(r),x=Ps(e,a),C=ga(e,r,a),[F,S]=await Promise.all([f.calculateDestinationFee(x,e),y.calculateDestinationFee(C,e)]),I=S+F,R=j(I,20n),O=R-I;return{amount:R,breakdown:{reserveFee:S,destinationFee:F,margin:O}}}let c=new Me(a),i=ba(e,a),m=await c.calculateDestinationFee(i,e),p=j(m,20n),d=p-m;return{amount:p,breakdown:{totalFee:m,margin:d}}}})}}function _i(){return{quoteFee:()=>({build:async({feeAsset:t,source:e})=>{let n=e,s=Kt.Basejump.fromChain(n),o=n.getAssetId(t);return{amount:await n.evmClient.getProvider().readContract({abi:Kt.Abi.Basejump,address:s.getAddress(),args:[o],functionName:"quoteFee"})}}})}}function X(){return{Basejump:_i,XcmPaymentApi:Xi,Snowbridge:Pi}}var Di="0";function Ii(){return{build:async({address:t,chain:e})=>{let s=await new ne(e).api().query.MultiTransactionPayment.AccountCurrencyMap.getValue(t),o=s?s.toString():Di,a=e.findAssetById(o);return a?a.asset:Jt}}}var Ri=()=>({accountCurrencyMap:Ii});function Cn(){return{multiTransactionPayment:Ri}}var ve=require("@galacticcouncil/xc-core"),Ga=require("@mysten/sui/transactions"),Mn=require("@mysten/sui/utils"),Oa=require("@wormhole-foundation/sdk-base"),Li=()=>({build:async t=>{let{address:e,amount:n,asset:s,source:o,destination:a}=t,r=o.chain,c=a.chain,i=ve.Ntt.fromChain(r,s),m=ve.Wormhole.fromChain(r),p=ve.Wormhole.fromChain(c),d=r.client,f=e;c instanceof ve.EvmParachain&&(f=await c.getDerivatedAddress(e));let y=Oa.encoding.hex.decode(p.normalizeAddress(f)),x=m.getCoreBridge(),C=i.manager,F=i.transceiver.wormhole,S=i.token,[I,R,O,Z]=await Promise.all([ve.suiPkg.getWormholePackageId(d,x),ve.suiPkg.getCurrentPackageId(d,C),ve.suiPkg.getCurrentPackageId(d,F),ve.suiPkg.getCoinMetadataId(d,S)]),k=new Ga.Transaction,[Ee]=k.splitCoins(k.gas,[k.pure.u64(n)]),[ft]=k.moveCall({target:`${R}::upgrades::new_version_gated`,arguments:[]}),[ot,Sn]=k.moveCall({target:`${R}::ntt::prepare_transfer`,typeArguments:[S],arguments:[k.object(C),Ee,k.object(Z),k.pure.u16(p.getWormholeId()),k.pure.vector("u8",Array.from(y)),k.pure.option("vector<u8>",null),k.pure.bool(!1)]}),[us]=k.moveCall({target:`${R}::state::get_next_sequence`,typeArguments:[S],arguments:[k.object(C)]});k.moveCall({target:`${R}::ntt::transfer_tx_sender`,typeArguments:[S],arguments:[k.object(C),ft,k.object(Z),ot,k.object(Mn.SUI_CLOCK_OBJECT_ID)]});let[ds]=k.moveCall({target:`${R}::state::create_transceiver_message`,typeArguments:[`${O}::wormhole_transceiver::TransceiverAuth`,S],arguments:[k.object(C),us,k.object(Mn.SUI_CLOCK_OBJECT_ID)]}),[jt]=k.moveCall({target:`${O}::wormhole_transceiver::release_outbound`,typeArguments:[`${R}::auth::ManagerAuth`],arguments:[k.object(F),ds]}),[Bn]=k.splitCoins(k.gas,[k.pure.u64(0n)]);k.moveCall({target:`${I}::publish_message::publish_message`,arguments:[k.object(x),Bn,jt,k.object(Mn.SUI_CLOCK_OBJECT_ID)]});let[gn]=k.moveCall({target:"0x2::coin::from_balance",typeArguments:[S],arguments:[Sn]});return k.mergeCoins(k.gas,[gn]),new ve.MoveConfig({transaction:k,func:"transfer",module:"NttManager"})}}),Wa=()=>({transfer:Li});function Ua(){return{Ntt:Wa}}function Gs(){return{Wormhole:Ua}}var Je=require("@galacticcouncil/xc-core"),Ka=require("@solana/spl-token"),Gn=require("@solana/web3.js"),qa=require("@wormhole-foundation/sdk-base"),za=require("@wormhole-foundation/sdk-definitions"),ja=require("@wormhole-foundation/sdk-solana"),$a=require("@wormhole-foundation/sdk-solana-ntt"),Ll=require("@wormhole-foundation/sdk-definitions-ntt");async function Hi(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 Vi(t,e,n){let s=await Hi(t,e);return{instructions:"message"in e?Gn.TransactionMessage.decompile(e.message,{addressLookupTableAccounts:s}).instructions:e.instructions,signers:n,lookupTables:s}}var Ni=()=>({build:async t=>{let{address:e,amount:n,asset:s,sender:o,source:a,destination:r}=t,c=a.chain,i=r.chain,m=Je.Ntt.fromChain(c,s),p=Je.Wormhole.fromChain(c),d=Je.Wormhole.fromChain(i),f=e;i instanceof Je.EvmParachain&&(f=await i.getDerivatedAddress(e));let y=new $a.SolanaNtt("Mainnet","Solana",c.connection,{coreBridge:p.getCoreBridge(),ntt:{manager:m.manager,token:m.token,transceiver:{wormhole:m.transceiver.wormhole}}}),x=c.getBalanceType(s)===Je.SolanaBalanceType.Native,C=Gn.Keypair.generate(),F=[];for await(let R of y.transfer(new ja.SolanaAddress(o),n,{chain:(0,qa.toChain)(d.getWormholeId()),address:new za.UniversalAddress(d.normalizeAddress(f))},{queue:!1,automatic:!1,wrapNative:x},C)){let{transaction:O,signers:Z}=R.transaction;F.push(await Vi(c.connection,O,Z??[]))}let S=x?BigInt(await(0,Ka.getMinimumBalanceForRentExemptAccount)(c.connection)):0n,I=F[F.length-1];return new Je.ProgramConfig({instructions:I.instructions,signers:I.signers,lookupTables:I.lookupTables,prerequisites:F.slice(0,-1),rentReserve:S,func:"transfer",module:"NttManager"})}}),Ja=()=>({transfer:Ni});function Ya(){return{Ntt:Ja}}function Os(){return{Wormhole:Ya}}var Us={};$t(Us,{Tag:()=>Bt});var Bt=(r=>(r.Basejump="Basejump",r.Ntt="Ntt",r.Wormhole="Wormhole",r.Relayer="Relayer",r.Snowbridge="Snowbridge",r.SnowbridgeV1="SnowbridgeV1",r))(Bt||{});function Qa(t,e){return new Ks.AssetRoute({source:{asset:t,fee:{asset:_}},destination:{chain:b,asset:e,fee:{amount:0,asset:t}},contract:Pe().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function Za(t,e){return new Ks.AssetRoute({source:{asset:t,fee:{asset:_},destinationFee:t},destination:{chain:b,asset:e,fee:{amount:X().Basejump().quoteFee(),asset:t}},contract:Pe().Basejump().bridgeViaWormhole(),tags:["Basejump"]})}var Mi=[Za(Ze,rt)],Gi=[Qa(Ze,rt)],tr=new er.ChainRoutes({chain:Qt,routes:[...Gi,...Mi]});var kn=require("@galacticcouncil/xc-core");var On=require("@galacticcouncil/xc-core");function Pt(t,e){return new On.AssetRoute({source:{asset:t,fee:{asset:_}},destination:{chain:b,asset:e,fee:{amount:0,asset:t}},contract:Pe().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function se(t,e){return new On.AssetRoute({source:{asset:t,fee:{asset:_}},destination:{chain:b,asset:e,fee:{amount:X().Snowbridge().calculateInboundFee({hub:B}),asset:_}},contract:Pe().Snowbridge().v2SendMessage(),tags:["Snowbridge"]})}function oe(t,e){return new On.AssetRoute({source:{asset:t,fee:{asset:_}},destination:{chain:b,asset:e,fee:{amount:X().Snowbridge().calculateInboundFeeV1({hub:B}),asset:_}},contract:Pe().Snowbridge().sendToken(),tags:["Snowbridge","SnowbridgeV1"]})}var Oi=[Pt(at,ht),Pt(We,yt),Pt(v,gt),Pt(A,bt),Pt(Ke,xt),Pt(mt,ut),Pt(_,ut)],Wi=[new kn.AssetRoute({source:{asset:_,fee:{asset:_}},destination:{chain:b,asset:_,fee:{amount:X().Snowbridge().calculateInboundFee({hub:B}),asset:_}},contract:Pe().Snowbridge().v2SendMessage(),tags:["Snowbridge"]}),se(ie,ie),se(ce,ce),se(me,me),se(ue,ue),se(fe,fe),se(ye,ye),se(be,be),se(le,le),se(de,de),se(pe,pe),se(he,he),se(ge,ge),se(xe,xe),se(v,ct),se(A,it)],Ui=[new kn.AssetRoute({source:{asset:_,fee:{asset:_}},destination:{chain:b,asset:_,fee:{amount:X().Snowbridge().calculateInboundFeeV1({hub:B}),asset:_}},contract:Pe().Snowbridge().sendToken(),tags:["Snowbridge","SnowbridgeV1"]}),oe(ie,ie),oe(ce,ce),oe(me,me),oe(ue,ue),oe(fe,fe),oe(ye,ye),oe(be,be),oe(le,le),oe(de,de),oe(pe,pe),oe(he,he),oe(ge,ge),oe(xe,xe),oe(v,ct),oe(A,it)],nr=new kn.ChainRoutes({chain:E,routes:[...Oi,...Wi,...Ui]});var sr=[tr,nr];var Xt=require("@galacticcouncil/xc-core");var Wn=require("@galacticcouncil/xc-core");var qt=0,Ki=t=>{let{source:e}=t;return!!e.feeSwap},qi=t=>{let{source:e}=t,{enabled:n}=e.destinationFeeSwap||{};return!!n},or=h().assetConversion().swapTokensForExactTokens({slippage:30});function zi(t,e,n){return new Wn.AssetRoute({source:{asset:t,fee:{asset:w,extra:qt}},destination:{chain:e,asset:t,fee:{amount:n,asset:A}},extrinsic:St(qi,or).prior(h().polkadotXcm().limitedReserveTransferAssets())})}function Un(t,e,n){return new Wn.AssetRoute({source:{asset:t,fee:{asset:t,swap:!t.isEqual(w)}},destination:{chain:e,asset:t,fee:{amount:n,asset:t}},extrinsic:St(Ki,or).prior(h().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"}))})}function vn(t,e,n){return new Wn.AssetRoute({source:{asset:t,fee:{asset:w,extra:qt}},destination:{chain:e,asset:t,fee:{amount:n,asset:t}},extrinsic:h().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})})}function Kn(t){return zi(t,b,.02)}var ji=[new Xt.AssetRoute({source:{asset:w,fee:{asset:w,extra:qt}},destination:{chain:b,asset:w,fee:{amount:.001,asset:w}},extrinsic:h().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),new Xt.AssetRoute({source:{asset:T,fee:{asset:w,extra:qt}},destination:{chain:b,asset:T,fee:{amount:1e-4,asset:T}},extrinsic:h().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),vn(A,b,.02),vn(v,b,.02),Kn(dt)],$i=[new Xt.AssetRoute({source:{asset:T,fee:{asset:w,extra:qt}},destination:{chain:qe,asset:T,fee:{amount:.001,asset:T}},extrinsic:h().polkadotXcm().transferAssets()})],Ji=[vn(A,V,.03),vn(v,V,.03)],Yi=[new Xt.AssetRoute({source:{asset:H,fee:{asset:w,extra:qt}},destination:{chain:wt,asset:H,fee:{amount:2.5,asset:H}},extrinsic:h().polkadotXcm().limitedTeleportAssets()})],ar=new Xt.ChainRoutes({chain:At,routes:[Un(A,b,.02),Un(v,b,.02),Un(w,b,.001)]}),rr=new Xt.ChainRoutes({chain:B,routes:[...ji,...$i,...Ji,...Yi]});var Ye=require("@galacticcouncil/xc-core");var Qi=[new Ye.AssetRoute({source:{asset:L},destination:{chain:b,asset:L,fee:{amount:.044306118,asset:L}},extrinsic:h().polkadotXcm().reserveTransferAssets()}),new Ye.AssetRoute({source:{asset:D,fee:{asset:L}},destination:{chain:b,asset:D,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:V}),asset:D}},extrinsic:h().polkadotXcm().limitedReserveTransferAssets()}),new Ye.AssetRoute({source:{asset:M,fee:{asset:L}},destination:{chain:b,asset:M,fee:{amount:2e-6,asset:M}},extrinsic:h().polkadotXcm().limitedReserveTransferAssets()}),new Ye.AssetRoute({source:{asset:Te,fee:{asset:L}},destination:{chain:b,asset:Te,fee:{amount:.01,asset:Te}},extrinsic:h().polkadotXcm().limitedReserveTransferAssets()}),new Ye.AssetRoute({source:{asset:z,fee:{asset:L}},destination:{chain:b,asset:z,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:V}),asset:z}},extrinsic:h().polkadotXcm().limitedReserveTransferAssets()}),new Ye.AssetRoute({source:{asset:q,fee:{asset:L}},destination:{chain:b,asset:q,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:V}),asset:q}},extrinsic:h().polkadotXcm().limitedReserveTransferAssets()}),new Ye.AssetRoute({source:{asset:A,fee:{asset:L}},destination:{chain:b,asset:A,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:B}),asset:A}},extrinsic:h().polkadotXcm().limitedReserveTransferAssets()}),new Ye.AssetRoute({source:{asset:v,fee:{asset:L}},destination:{chain:b,asset:v,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:B}),asset:v}},extrinsic:h().polkadotXcm().limitedReserveTransferAssets()})],ir=new Ye.ChainRoutes({chain:ee,routes:[...Qi]});var De=require("@galacticcouncil/xc-core");var Zi=[new De.AssetRoute({source:{asset:D},destination:{chain:b,asset:D,fee:{amount:X().XcmPaymentApi().calculateDestFee(),asset:D}},extrinsic:h().polkadotXcm().limitedReserveTransferAssets()}),new De.AssetRoute({source:{asset:z,fee:{asset:D}},destination:{chain:b,asset:z,fee:{amount:X().XcmPaymentApi().calculateDestFee(),asset:z}},extrinsic:h().polkadotXcm().limitedReserveTransferAssets()}),new De.AssetRoute({source:{asset:q,fee:{asset:D}},destination:{chain:b,asset:q,fee:{amount:X().XcmPaymentApi().calculateDestFee(),asset:q}},extrinsic:h().polkadotXcm().limitedReserveTransferAssets()}),new De.AssetRoute({source:{asset:w,fee:{asset:D}},destination:{chain:b,asset:w,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:B}),asset:w}},extrinsic:h().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"RemoteReserve"})}),new De.AssetRoute({source:{asset:L,fee:{asset:D}},destination:{chain:b,asset:L,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:ee}),asset:L}},extrinsic:h().polkadotXcm().limitedReserveTransferAssets()}),new De.AssetRoute({source:{asset:M,fee:{asset:D}},destination:{chain:b,asset:M,fee:{amount:625e-8,asset:M}},extrinsic:h().polkadotXcm().limitedReserveTransferAssets()}),new De.AssetRoute({source:{asset:A,fee:{asset:D}},destination:{chain:b,asset:A,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:B}),asset:A}},extrinsic:h().polkadotXcm().limitedReserveTransferAssets()}),new De.AssetRoute({source:{asset:v,fee:{asset:D}},destination:{chain:b,asset:v,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:B}),asset:v}},extrinsic:h().polkadotXcm().limitedReserveTransferAssets()})],e0=[new De.AssetRoute({source:{asset:A,fee:{asset:D}},destination:{chain:B,asset:A,fee:{amount:X().XcmPaymentApi().calculateDestFee(),asset:A}},extrinsic:h().polkadotXcm().limitedReserveTransferAssets()}),new De.AssetRoute({source:{asset:v,fee:{asset:D}},destination:{chain:B,asset:v,fee:{amount:X().XcmPaymentApi().calculateDestFee(),asset:v}},extrinsic:h().polkadotXcm().limitedReserveTransferAssets()})],cr=new De.ChainRoutes({chain:V,routes:[...Zi,...e0]});var st=require("@galacticcouncil/xc-core");var ae=()=>({asset:Cn().multiTransactionPayment().accountCurrencyMap()});var _t=require("@galacticcouncil/xc-core");var t0=.02,qs=t=>{let{source:e}=t,{enabled:n}=e.destinationFeeSwap||{};return!!n},zs=h().router().buy({slippage:30});function Ae(t,e,n){return new _t.AssetRoute({source:{asset:t,fee:ae()},destination:{chain:e,asset:t,fee:{amount:X().XcmPaymentApi().calculateDestFee(n?{reserve:n}:void 0),asset:t}},extrinsic:h().polkadotXcm().limitedReserveTransferAssets()})}function Dt(t,e){return new _t.AssetRoute({source:{asset:t,fee:ae()},destination:{chain:e,asset:t,fee:{amount:X().XcmPaymentApi().calculateDestFee(),asset:t}},extrinsic:h().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})})}function qn(t){return new _t.AssetRoute({source:{asset:t,fee:ae()},destination:{chain:B,asset:t,fee:{amount:t0,asset:A}},extrinsic:St(qs,zs).prior(h().polkadotXcm().limitedReserveTransferAssets())})}function js(t,e,n){return new _t.AssetRoute({source:{asset:t,fee:ae()},destination:{chain:qe,asset:t,fee:{amount:e,asset:t}},extrinsic:h().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve",executionFee:n})})}function Ge(t,e,n){return new _t.AssetRoute({source:{asset:t,fee:ae()},destination:{chain:n,asset:e,fee:{amount:0,asset:t}},contract:Pe().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function Y(t,e,n){return new _t.AssetRoute({source:{asset:t,fee:ae()},destination:{chain:n,asset:e,fee:{amount:X().Snowbridge().calculateOutboundFee({hub:B}),asset:w}},extrinsic:St(qs,zs).prior(h().polkadotXcm().execute().viaSnowbridge()),tags:["Snowbridge"]})}function Q(t,e,n){return new _t.AssetRoute({source:{asset:t,fee:ae()},destination:{chain:n,asset:e,fee:{amount:X().Snowbridge().calculateOutboundFeeV1({hub:B}),asset:w}},extrinsic:St(qs,zs).prior(h().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})),tags:["Snowbridge","SnowbridgeV1"]})}var n0=[Dt(w,B),Dt(T,B),Dt(A,B),Dt(v,B),qn(dt)],s0=[js(T,.05,.005),js(w,.2,.02)],o0=[Ae(L,ee),Ae(D,ee,V),new st.AssetRoute({source:{asset:M,fee:ae()},destination:{chain:ee,asset:M,fee:{amount:2e-6,asset:M}},extrinsic:h().polkadotXcm().limitedReserveTransferAssets()}),new st.AssetRoute({source:{asset:Te,fee:ae()},destination:{chain:ee,asset:Te,fee:{amount:.01,asset:Te}},extrinsic:h().polkadotXcm().limitedReserveTransferAssets()}),Ae(z,ee,V),Ae(q,ee,V),Ae(A,ee,B),Ae(v,ee,B)],a0=[Ae(D,V),Ae(z,V),Ae(q,V),Ae(L,V,ee),new st.AssetRoute({source:{asset:M,fee:ae()},destination:{chain:V,asset:M,fee:{amount:5e-6,asset:M}},extrinsic:h().polkadotXcm().limitedReserveTransferAssets()}),Ae(A,V,B),Ae(v,V,B),new st.AssetRoute({source:{asset:w,fee:ae()},destination:{chain:V,asset:w,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:B}),asset:w}},extrinsic:h().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"RemoteReserve"})})],r0=[new st.AssetRoute({source:{asset:H,fee:ae()},destination:{chain:wt,asset:H,fee:{amount:2.5,asset:H}},extrinsic:h().polkadotXcm().limitedReserveTransferAssets()})],i0=[Ae(Ue,an)],c0=[new st.AssetRoute({source:{asset:we,fee:ae()},destination:{chain:rn,asset:we,fee:{amount:.02,asset:we}},extrinsic:h().polkadotXcm().limitedReserveTransferAssets()})],m0=[new st.AssetRoute({source:{asset:Fe,fee:ae()},destination:{chain:nn,asset:Fe,fee:{amount:1.1,asset:Fe}},extrinsic:h().polkadotXcm().limitedReserveTransferAssets()})],u0=[Ae(Oe,tn)],d0=[Ge(ht,at,E),Ge(yt,We,E),Ge(gt,v,E),Ge(bt,A,E),Ge(xt,Ke,E),Ge(ut,_,E)],l0=[Ge(rt,Ze,Qt)],p0=[Ge(Ce,Ce,vt),Ge(Re,Re,vt),Ge(Le,Le,vt)],f0=[Ge(Se,Se,mn)],h0=[Y(_,_,E),Y(ie,ie,E),Y(ce,ce,E),Y(me,me,E),Y(ue,ue,E),Y(fe,fe,E),Y(ye,ye,E),Y(be,be,E),Y(ge,ge,E),Y(le,le,E),Y(de,de,E),Y(pe,pe,E),Y(he,he,E),Y(xe,xe,E),Y(ct,v,E),Y(it,A,E)],y0=[Q(_,_,E),Q(ie,ie,E),Q(ce,ce,E),Q(me,me,E),Q(ue,ue,E),Q(fe,fe,E),Q(ye,ye,E),Q(be,be,E),Q(ge,ge,E),Q(le,le,E),Q(de,de,E),Q(pe,pe,E),Q(he,he,E),Q(xe,xe,E),Q(ct,v,E),Q(it,A,E)],b0=[Dt(w,At),Dt(A,At),Dt(v,At)],mr=new st.ChainRoutes({chain:b,routes:[...n0,...o0,...a0,...b0,...l0,...d0,...h0,...p0,...f0,...y0,...c0,...s0,...r0,...u0,...m0,...i0]});var En=require("@galacticcouncil/xc-core");var g0=[new En.AssetRoute({source:{asset:H},destination:{chain:b,asset:H,fee:{amount:.01,asset:H}},extrinsic:h().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})})],x0=[new En.AssetRoute({source:{asset:H},destination:{chain:B,asset:H,fee:{amount:.1,asset:H}},extrinsic:h().polkadotXcm().limitedTeleportAssets()})],ur=new En.ChainRoutes({chain:wt,routes:[...g0,...x0]});var zn=require("@galacticcouncil/xc-core");var A0=[new zn.AssetRoute({source:{asset:Ue},destination:{chain:b,asset:Ue,fee:{amount:X().XcmPaymentApi().calculateDestFee(),asset:Ue}},extrinsic:h().polkadotXcm().limitedReserveTransferAssets()})],dr=new zn.ChainRoutes({chain:an,routes:[...A0]});var jn=require("@galacticcouncil/xc-core");var w0=[new jn.AssetRoute({source:{asset:Fe},destination:{chain:b,asset:Fe,fee:{amount:.2,asset:Fe}},extrinsic:h().polkadotXcm().reserveTransferAssets()})],lr=new jn.ChainRoutes({chain:nn,routes:[...w0]});var $n=require("@galacticcouncil/xc-core");var C0=[new $n.AssetRoute({source:{asset:we,fee:{asset:we,extra:.030555}},destination:{chain:b,asset:we,fee:{amount:.03,asset:we}},extrinsic:h().polkadotXcm().reserveTransferAssets()})],pr=new $n.ChainRoutes({chain:rn,routes:[...C0]});var Jn=require("@galacticcouncil/xc-core");var k0=[new Jn.AssetRoute({source:{asset:Oe},destination:{chain:b,asset:Oe,fee:{amount:.205,asset:Oe}},extrinsic:h().polkadotXcm().reserveTransferAssets()})],fr=new Jn.ChainRoutes({chain:tn,routes:[...k0]});var hr=[rr,ar,ir,cr,mr,ur,fr,dr,lr,pr];var Yn=require("@galacticcouncil/xc-core");function $s(t){return new Yn.AssetRoute({source:{asset:t,fee:{asset:Ce}},destination:{chain:b,asset:t,fee:{amount:0,asset:t}},program:Os().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}var v0=[$s(Ce),$s(Re),$s(Le)],yr=new Yn.ChainRoutes({chain:vt,routes:[...v0]});var br=[yr];var Qn=require("@galacticcouncil/xc-core");function E0(t){return new Qn.AssetRoute({source:{asset:t,fee:{asset:Se}},destination:{chain:b,asset:t,fee:{amount:0,asset:t}},move:Gs().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}var T0=[E0(Se)],gr=new Qn.ChainRoutes({chain:mn,routes:[...T0]});var xr=[gr];var zt=require("@galacticcouncil/xc-core");var F0=require("@galacticcouncil/xc-core");var Tn=.0015;var S0=new zt.AssetRoute({source:{asset:T,fee:{asset:T,extra:Tn}},destination:{chain:B,asset:T,fee:{amount:.002,asset:T}},extrinsic:h().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),B0=new zt.AssetRoute({source:{asset:T,fee:{asset:T,extra:Tn}},destination:{chain:dn,asset:T,fee:{amount:.0012,asset:T}},extrinsic:h().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),P0=[new zt.AssetRoute({source:{asset:T,fee:{asset:T,extra:Tn}},destination:{chain:b,asset:T,fee:{amount:.04,asset:T}},extrinsic:h().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve",executionFee:.005})}),new zt.AssetRoute({source:{asset:w,fee:{asset:T,extra:Tn}},destination:{chain:b,asset:w,fee:{amount:.15,asset:w}},extrinsic:h().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve",executionFee:.01})})],Ar=new zt.ChainRoutes({chain:qe,routes:[B0,S0,...P0]});var Fn=require("@galacticcouncil/xc-core");var Js=()=>({asset:Cn().multiTransactionPayment().accountCurrencyMap()});var X0=[new Fn.AssetRoute({source:{asset:A,fee:Js()},destination:{chain:qe,asset:A,fee:{amount:X().XcmPaymentApi().calculateDestFee(),asset:A}},extrinsic:h().polkadotXcm().limitedReserveTransferAssets()})],_0=[new Fn.AssetRoute({source:{asset:T,fee:Js()},destination:{chain:qe,asset:T,fee:{amount:.0012,asset:T}},extrinsic:h().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})})],wr=new Fn.ChainRoutes({chain:dn,routes:[...X0,..._0]});var Cr=[Ar,wr];var D0=[...sr,...hr,...br,...xr,...Cr],kr=new Map(D0.map(t=>[t.chain.key,t]));var Ys=require("@galacticcouncil/xc-core");var It=require("@galacticcouncil/xc-core"),Zn=class extends It.TransferValidation{async validate(e){let{source:n}=e,{chain:s,fee:o,feeBalance:a}=n;if(a.amount<o.amount)throw new It.TransferValidationError("Insufficient_Fee_Balance",{amount:o.toDecimal(),asset:o.symbol,chain:s.name,error:"fee.insufficientBalance"})}},es=class extends It.TransferValidation{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,c=await this.getMin(o,a),i=a.copyWith({amount:a.amount+c});if(r.amount<i.amount)throw new It.TransferValidationError("Insufficient_Fee_Balance",{amount:i.toDecimal(),asset:i.symbol,chain:o.name,error:"destFee.insufficientBalance"})}async getMin(e,n){if(e instanceof It.Parachain)return(await e.getMin(n)).amount;let s=e.getAssetMin(n);return BigInt(s*10**n.decimals)}};var yn=require("@galacticcouncil/xc-core");var ts=class extends yn.TransferValidation{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 yn.TransferValidationError("Insufficient_Ed",{amount:"0.1",asset:"DOT",chain:o.chain.name,error:"account.insufficientDeposit"})}},ns=class extends yn.TransferValidation{async validate(e){let{asset:n,sender:s,source:o}=e,a=o.chain;if(await new ke(a).checkIfFrozen(s,n))throw new yn.TransferValidationError("Asset_Frozen",{asset:n.originSymbol,chain:o.chain.name,error:"asset.frozen"})}};var Qe=require("@galacticcouncil/xc-core");var I0=12,R0=1,L0=18,ss=class extends Qe.TransferValidation{async skipFor(e){let{destination:n}=e,s=n.chain,o=new ne(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 ne(a),c=await r.getFeeAsset(s),i=a.findAssetById(c),m=i.min||R0,p=i.decimals||I0,d=m*Math.pow(10,p),f=await r.getAssetBalance(s,c);if(BigInt(d*1.1)>f)throw new Qe.TransferValidationError("Insufficient_Ed",{amount:d,asset:i.asset.originSymbol,chain:a.name,error:"account.insufficientDeposit"})}},os=class extends Qe.TransferValidation{async validate(e){let{amount:n,asset:s,destination:o}=e,a=o.chain,c=await new ne(a).getAssetDepositLimit(s);if(c.locked)throw new Qe.TransferValidationError("Deposit_Asset_Lockdown",{asset:s.originSymbol,chain:a.name,lockedUntilBlock:c.lockedUntilBlock,error:"circuitBreaker.assetLockdown"});if(c.headroom!==null&&n>c.headroom)throw new Qe.TransferValidationError("Deposit_Limit_Exceeded",{asset:s.originSymbol,chain:a.name,headroom:c.headroom,limit:c.limit,error:"circuitBreaker.depositLimitExceeded"})}},as=class extends Qe.TransferValidation{async validate(e){let{source:n}=e,s=n.chain,a=await new ne(s).getGlobalWithdrawLimit();if(a.lockdown)throw new Qe.TransferValidationError("Withdraw_Lockdown_Active",{chain:s.name,lockdownUntilMs:a.lockdownUntilMs,error:"circuitBreaker.withdrawLockdown"})}},rs=class extends Qe.TransferValidation{async skipFor(e){let{source:n,transact:s}=e,{enabled:o}=n.destinationFeeSwap||{};return!(!!s&&s.chain.key==="moonbeam")||!!o}async validate(e){if(await this.skipFor(e))return;let{sender:s,source:o}=e,a=o.chain,r=new ne(a),c=a.getBalanceAssetId(Ie),i=a.getAssetDecimals(Ie)||L0,m=1*Math.pow(10,i);if(await r.getTokensAccountsBalance(s,c.toString())<BigInt(m))throw new Qe.TransferValidationError("Insufficient_Ed",{amount:1,asset:Ie.originSymbol,chain:a.name,error:"destFee.insufficientBalance"})}};var re={isAny:()=>!0,isHydration:t=>t instanceof Ys.Parachain&&t.parachainId===2034,isHub:t=>t instanceof Ys.Parachain&&t.parachainId===1e3,isEvm:t=>t.isEvmChain()},vr=[new Zn(re.isAny,re.isAny),new es(re.isAny,re.isAny),new ts(re.isAny,re.isHub),new ns(re.isHub,re.isAny),new ss(re.isAny,re.isHydration),new rs(re.isHydration,re.isAny),new os(re.isAny,re.isHydration),new as(re.isHydration,re.isAny)];var to={};$t(to,{AssethubDex:()=>eo,HydrationDex:()=>Qs});var bn=require("@galacticcouncil/sdk-next"),Tr=require("@galacticcouncil/common"),Fr=require("polkadot-api");var Er=(t,e=new Map)=>n=>{let s;return e.has(n)?e.get(n):(e.set(n,s=t(n)),s)};var{PoolType:is}=bn.pool,{TradeRouteBuilder:H0,TradeRouter:V0}=bn.sor,{TxBuilderFactory:N0}=bn.tx,Qs=class{chain;client;poolCtx;txBuilder;getCtx=Er(async e=>{console.log("init swap router",e,"\u2705");let n=new V0(this.poolCtx);return n.withFilter({useOnly:[is.Aave,is.Omni,is.Stable,is.XYK]}),n});constructor(e,n){this.chain=e,this.poolCtx=n,this.client=new ne(this.chain),this.txBuilder=new N0(n.client,n.evm)}async getCalldata(e,n,s,o,a=0){let r=Number(this.chain.getMetadataAssetId(n)),c=Number(this.chain.getMetadataAssetId(s)),i=o.amount,m=await this.getCtx(1),p=await m.getMostLiquidRoute(r,c),d=await m.getBuy(r,c,i,p),x=await(await this.txBuilder.trade(d).withBeneficiary(e).withSlippage(a).build()).get().getEncodedData();return Fr.Binary.toHex(x)}async getQuote(e,n,s,o){let a=Number(this.chain.getMetadataAssetId(e)),r=Number(this.chain.getMetadataAssetId(n)),c=s.amount,i=await this.getCtx(1);try{let m=await i.getMostLiquidRoute(a,r),p=await i.getBuy(a,r,c,m);return{amount:p.amountIn,route:H0.build(p.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,Tr.RUNTIME_DECIMALS);return a/BigInt(r)}};var Zs=require("@galacticcouncil/common"),eo=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((0,Zs.encodeLocation)(o),(0,Zs.encodeLocation)(a),s.amount,!0);if(!r)throw new Error("Failed to get swap quote");return{amount:r}}};var Xr=require("@galacticcouncil/xc-core");var Sr=require("@galacticcouncil/xc-core");function cs(t){let{id:e,origin:n,symbol:s}=t,o=s.toLowerCase();return new Sr.Asset({key:[o,n,e].join("_"),originSymbol:s})}function Br(t){let{decimals:e,id:n}=t;return{asset:cs(t),decimals:e,id:n,xcmLocation:{parents:0,interior:{type:"X2",value:[{type:"PalletInstance",value:50},{type:"GeneralIndex",value:n}]}}}}function Pr(t){let{decimals:e,id:n,internalId:s,origin:o}=t;return{asset:cs(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 ms=class extends Xr.ConfigService{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=cs(a),c=Br(a),i=Pr(a);console.log("\u{1F480} Registering "+r.key),s.updateAsset(c),n.updateAsset(i),this.updateAsset(r),this.updateChainRoute(s,Kn(r)),this.updateChainRoute(n,qn(r))})}};0&&(module.exports={HydrationConfigService,assetsMap,builders,chainsMap,clients,dex,routesMap,tags,validations});
|
|
1
|
+
"use strict";var Ec=Object.create;var Is=Object.defineProperty;var Bc=Object.getOwnPropertyDescriptor;var Rc=Object.getOwnPropertyNames;var Lc=Object.getPrototypeOf,_c=Object.prototype.hasOwnProperty;var Y=(n,e)=>()=>(n&&(e=n(n=0)),e);var pn=(n,e)=>{for(var t in e)Is(n,t,{get:e[t],enumerable:!0})},yi=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of Rc(e))!_c.call(n,a)&&a!==t&&Is(n,a,{get:()=>e[a],enumerable:!(s=Bc(e,a))||s.enumerable});return n};var Rn=(n,e,t)=>(t=n!=null?Ec(Lc(n)):{},yi(e||!n||!n.__esModule?Is(t,"default",{value:n,enumerable:!0}):t,n)),Dc=n=>yi(Is({},"__esModule",{value:!0}),n);var Vs,ro=Y(()=>{Vs={version:"1.0.0",name:"example_native_token_transfers",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"deployer",isMut:!1,isSigner:!0},{name:"programData",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"rateLimit",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["The custody account that holds tokens in locking mode.","NOTE: the account is unconditionally initialized, but not used in","burning mode.","function if the token account has already been created."]},{name:"tokenProgram",isMut:!1,isSigner:!1,docs:["associated token account for the given mint."]},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"version",accounts:[],args:[],returns:"string"},{name:"transferBurn",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"transferLock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"redeem",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!1,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"inboxItem",isMut:!0,isSigner:!1,docs:["NOTE: This account is content-addressed (PDA seeded by the message hash).","This is because in a multi-transceiver configuration, the different",'transceivers "vote" on messages (by delivering them). By making the inbox',"items content-addressed, we can ensure that disagreeing votes don't","interfere with each other.","On the first call to [`redeem()`], [`InboxItem`] will be allocated and initialized with","default values.",'On subsequent calls, we want to modify the `InboxItem` by "voting" on it. Therefore the',"program should not fail which would occur when using the `init` constraint.","The [`InboxItem::init`] field is used to guard against malicious or accidental modification","InboxItem fields that should remain constant."]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RedeemArgs"}}]},{name:"releaseInboundMint",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"releaseInboundUnlock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}]},{name:"custody",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"transferOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"newOwner",isMut:!1,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"claimOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"newOwner",isMut:!1,isSigner:!0},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setPaused",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"pause",type:"bool"}]},{name:"setPeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!0,isSigner:!1},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetPeerArgs"}}]},{name:"registerTransceiver",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"transceiver",isMut:!1,isSigner:!1},{name:"registeredTransceiver",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setOutboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetOutboundLimitArgs"}}]},{name:"setInboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetInboundLimitArgs"}}]},{name:"setWormholePeer",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"peer",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetTransceiverPeerArgs"}}]},{name:"receiveWormholeMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"peer",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"releaseWormholeOutbound",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseOutboundArgs"}}]},{name:"broadcastWormholeId",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[]},{name:"broadcastWormholePeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"BroadcastPeerArgs"}}]}],accounts:[{name:"config",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"owner",docs:["Owner of the program."],type:"publicKey"},{name:"pendingOwner",docs:["Pending next owner (before claiming ownership)."],type:{option:"publicKey"}},{name:"mint",docs:["Mint address of the token managed by this program."],type:"publicKey"},{name:"tokenProgram",docs:["Address of the token program (token or token22). This could always be queried","from the [`mint`] account's owner, but storing it here avoids an indirection","on the client side."],type:"publicKey"},{name:"mode",docs:["The mode that this program is running in. This is used to determine","whether the program is burning tokens or locking tokens."],type:{defined:"Mode"}},{name:"chainId",docs:["The chain id of the chain that this program is running on. We don't","hardcode this so that the program is deployable on any potential SVM","forks."],type:{defined:"ChainId"}},{name:"nextTransceiverId",docs:["The next transceiver id to use when registering an transceiver."],type:"u8"},{name:"threshold",docs:["The number of transceivers that must attest to a transfer before it is","accepted."],type:"u8"},{name:"enabledTransceivers",docs:["Bitmap of enabled transceivers.","The maximum number of transceivers is equal to [`Bitmap::BITS`]."],type:{defined:"Bitmap"}},{name:"paused",docs:["Pause the program. This is useful for upgrades and other maintenance."],type:"bool"},{name:"custody",docs:["The custody account that holds tokens in locking mode."],type:"publicKey"}]}},{name:"nttManagerPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}},{name:"tokenDecimals",type:"u8"}]}},{name:"inboxItem",type:{kind:"struct",fields:[{name:"init",type:"bool"},{name:"bump",type:"u8"},{name:"amount",type:"u64"},{name:"recipientAddress",type:"publicKey"},{name:"votes",type:{defined:"Bitmap"}},{name:"releaseStatus",type:{defined:"ReleaseStatus"}}]}},{name:"inboxRateLimit",docs:["Inbound rate limit per chain.","SECURITY: must check the PDA (since there are multiple PDAs, namely one for each chain.)"],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"outboxItem",type:{kind:"struct",fields:[{name:"amount",type:{defined:"TrimmedAmount"}},{name:"sender",type:"publicKey"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientNttManager",type:{array:["u8",32]}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"releaseTimestamp",type:"i64"},{name:"released",type:{defined:"Bitmap"}}]}},{name:"outboxRateLimit",type:{kind:"struct",fields:[{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"registeredTransceiver",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"id",type:"u8"},{name:"transceiverAddress",type:"publicKey"}]}},{name:"transceiverPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}},{name:"bridgeData",type:{kind:"struct",fields:[{name:"guardianSetIndex",docs:["The current guardian set index, used to decide which signature sets to accept."],type:"u32"},{name:"lastLamports",docs:["Lamports in the collection account"],type:"u64"},{name:"config",docs:["Bridge configuration, which is set once upon initialization."],type:{defined:"BridgeConfig"}}]}}],types:[{name:"Bitmap",type:{kind:"struct",fields:[{name:"map",type:"u128"}]}},{name:"SetInboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"},{name:"chainId",type:{defined:"ChainId"}}]}},{name:"SetOutboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"}]}},{name:"SetPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}},{name:"limit",type:"u64"},{name:"tokenDecimals",docs:["The token decimals on the peer chain."],type:"u8"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"},{name:"limit",type:"u64"},{name:"mode",type:{defined:"Mode"}}]}},{name:"RedeemArgs",type:{kind:"struct",fields:[]}},{name:"ReleaseInboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"TransferArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"shouldQueue",type:"bool"}]}},{name:"ReleaseStatus",docs:["The status of an InboxItem. This determines whether the tokens are minted/unlocked to the recipient. As","such, this must be used as a state machine that moves forward in a linear manner. A state",'should never "move backward" to a previous state (e.g. should never move from `Released` to',"`ReleaseAfter`)."],type:{kind:"enum",variants:[{name:"NotApproved"},{name:"ReleaseAfter",fields:["i64"]},{name:"Released"}]}},{name:"RateLimitState",type:{kind:"struct",fields:[{name:"limit",docs:["The maximum capacity of the rate limiter."],type:"u64"},{name:"capacityAtLastTx",docs:["The capacity of the rate limiter at `last_tx_timestamp`.","The actual current capacity is calculated in `capacity_at`, by","accounting for the time that has passed since `last_tx_timestamp` and","the refill rate."],type:"u64"},{name:"lastTxTimestamp",docs:["The timestamp of the last transaction that counted towards the current","capacity. Transactions that exceeded the capacity do not count, they are","just delayed."],type:"i64"}]}},{name:"SetTransceiverPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}}]}},{name:"BroadcastPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"ReleaseOutboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"ChainId",type:{kind:"struct",fields:[{name:"id",type:"u16"}]}},{name:"Mode",type:{kind:"enum",variants:[{name:"Locking"},{name:"Burning"}]}},{name:"TrimmedAmount",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]}},{name:"BridgeConfig",type:{kind:"struct",fields:[{name:"guardianSetExpirationTime",docs:["Period for how long a guardian set is valid after it has been replaced by a new one. This","guarantees that VAAs issued by that set can still be submitted for a certain period. In","this period we still trust the old guardian set."],type:"u32"},{name:"fee",docs:["Amount of lamports that needs to be paid to the protocol to post a message"],type:"u64"}]}}],errors:[{code:6e3,name:"CantReleaseYet",msg:"CantReleaseYet"},{code:6001,name:"InvalidPendingOwner",msg:"InvalidPendingOwner"},{code:6002,name:"InvalidChainId",msg:"InvalidChainId"},{code:6003,name:"InvalidRecipientAddress",msg:"InvalidRecipientAddress"},{code:6004,name:"InvalidTransceiverPeer",msg:"InvalidTransceiverPeer"},{code:6005,name:"InvalidNttManagerPeer",msg:"InvalidNttManagerPeer"},{code:6006,name:"InvalidRecipientNttManager",msg:"InvalidRecipientNttManager"},{code:6007,name:"TransferAlreadyRedeemed",msg:"TransferAlreadyRedeemed"},{code:6008,name:"TransferCannotBeRedeemed",msg:"TransferCannotBeRedeemed"},{code:6009,name:"TransferNotApproved",msg:"TransferNotApproved"},{code:6010,name:"MessageAlreadySent",msg:"MessageAlreadySent"},{code:6011,name:"InvalidMode",msg:"InvalidMode"},{code:6012,name:"InvalidMintAuthority",msg:"InvalidMintAuthority"},{code:6013,name:"TransferExceedsRateLimit",msg:"TransferExceedsRateLimit"},{code:6014,name:"Paused",msg:"Paused"},{code:6015,name:"DisabledTransceiver",msg:"DisabledTransceiver"},{code:6016,name:"InvalidDeployer",msg:"InvalidDeployer"},{code:6017,name:"BadAmountAfterTransfer",msg:"BadAmountAfterTransfer"},{code:6018,name:"BadAmountAfterBurn",msg:"BadAmountAfterBurn"},{code:6019,name:"ZeroThreshold",msg:"ZeroThreshold"},{code:6020,name:"OverflowExponent",msg:"OverflowExponent"},{code:6021,name:"OverflowScaledAmount",msg:"OverflowScaledAmount"},{code:6022,name:"BitmapIndexOutOfBounds",msg:"BitmapIndexOutOfBounds"}]}});var oo,co=Y(()=>{oo={version:"1.0.0",name:"wormhole_governance",instructions:[{name:"governance",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"governance",isMut:!0,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"replay",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"replayProtection",type:{kind:"struct",fields:[{name:"bump",type:"u8"}]}}],errors:[{code:6e3,name:"InvalidGovernanceChain",msg:"InvalidGovernanceChain"},{code:6001,name:"InvalidGovernanceEmitter",msg:"InvalidGovernanceEmitter"}]}});var os,mo=Y(()=>{ro();co();(function(n){n.idl={ntt:Vs,transceiver:Vs,transceiverLegacy:Vs,governance:oo}})(os||(os={}))});var Os,uo=Y(()=>{Os={version:"2.0.0",name:"example_native_token_transfers",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"deployer",isMut:!1,isSigner:!0},{name:"programData",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"rateLimit",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1,docs:["In any case, this function is used to set the Config and initialize the program so we","assume the caller of this function will have total control over the program.","",'TODO: Using `UncheckedAccount` here leads to "Access violation in stack frame ...".',"Could refactor code to use `Box<_>` to reduce stack size."]},{name:"custody",isMut:!0,isSigner:!1,docs:["The custody account that holds tokens in locking mode and temporarily","holds tokens in burning mode.","function if the token account has already been created."]},{name:"tokenProgram",isMut:!1,isSigner:!1,docs:["associated token account for the given mint."]},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"initializeLut",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"authority",isMut:!1,isSigner:!1},{name:"lutAddress",isMut:!0,isSigner:!1},{name:"lut",isMut:!0,isSigner:!1},{name:"lutProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"entries",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"custody",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"outboxRateLimit",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}]}],args:[{name:"recentSlot",type:"u64"}]},{name:"version",accounts:[],args:[],returns:"string"},{name:"transferBurn",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["Tokens are always transferred to the custody account first regardless of","the mode.","For an explanation, see the note in [`transfer_burn`]."]},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1,docs:["See [`crate::SESSION_AUTHORITY_SEED`] for an explanation of the flow."]},{name:"tokenAuthority",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"transferLock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["Tokens are always transferred to the custody account first regardless of","the mode.","For an explanation, see the note in [`transfer_burn`]."]},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1,docs:["See [`crate::SESSION_AUTHORITY_SEED`] for an explanation of the flow."]}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"redeem",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!1,isSigner:!1,docs:["`Account<T>` and `owner` constraints are mutually-exclusive"]},{name:"transceiver",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"inboxItem",isMut:!0,isSigner:!1,docs:["NOTE: This account is content-addressed (PDA seeded by the message hash).","This is because in a multi-transceiver configuration, the different",'transceivers "vote" on messages (by delivering them). By making the inbox',"items content-addressed, we can ensure that disagreeing votes don't","interfere with each other.","On the first call to [`redeem()`], [`InboxItem`] will be allocated and initialized with","default values.",'On subsequent calls, we want to modify the `InboxItem` by "voting" on it. Therefore the',"program should not fail which would occur when using the `init` constraint.","The [`InboxItem::init`] field is used to guard against malicious or accidental modification","InboxItem fields that should remain constant."]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RedeemArgs"}}]},{name:"releaseInboundMint",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1,docs:["CHECK The seeds constraint ensures that this is the correct address"]},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"releaseInboundUnlock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1,docs:["CHECK The seeds constraint ensures that this is the correct address"]},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"transferOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"newOwner",isMut:!1,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"claimOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"newOwner",isMut:!1,isSigner:!0},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setPaused",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"pause",type:"bool"}]},{name:"setPeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!0,isSigner:!1},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetPeerArgs"}}]},{name:"registerTransceiver",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"transceiver",isMut:!1,isSigner:!1,docs:["used here that wraps the Transceiver account type."]},{name:"registeredTransceiver",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setOutboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetOutboundLimitArgs"}}]},{name:"setInboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetInboundLimitArgs"}}]},{name:"setWormholePeer",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"peer",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetTransceiverPeerArgs"}}]},{name:"receiveWormholeMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"peer",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"releaseWormholeOutbound",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseOutboundArgs"}}]},{name:"broadcastWormholeId",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[]},{name:"broadcastWormholePeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"BroadcastPeerArgs"}}]}],accounts:[{name:"config",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"owner",docs:["Owner of the program."],type:"publicKey"},{name:"pendingOwner",docs:["Pending next owner (before claiming ownership)."],type:{option:"publicKey"}},{name:"mint",docs:["Mint address of the token managed by this program."],type:"publicKey"},{name:"tokenProgram",docs:["Address of the token program (token or token22). This could always be queried","from the [`mint`] account's owner, but storing it here avoids an indirection","on the client side."],type:"publicKey"},{name:"mode",docs:["The mode that this program is running in. This is used to determine","whether the program is burning tokens or locking tokens."],type:{defined:"Mode"}},{name:"chainId",docs:["The chain id of the chain that this program is running on. We don't","hardcode this so that the program is deployable on any potential SVM","forks."],type:{defined:"ChainId"}},{name:"nextTransceiverId",docs:["The next transceiver id to use when registering an transceiver."],type:"u8"},{name:"threshold",docs:["The number of transceivers that must attest to a transfer before it is","accepted."],type:"u8"},{name:"enabledTransceivers",docs:["Bitmap of enabled transceivers.","The maximum number of transceivers is equal to [`Bitmap::BITS`]."],type:{defined:"Bitmap"}},{name:"paused",docs:["Pause the program. This is useful for upgrades and other maintenance."],type:"bool"},{name:"custody",docs:["The custody account that holds tokens in locking mode."],type:"publicKey"}]}},{name:"LUT",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:"publicKey"}]}},{name:"nttManagerPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}},{name:"tokenDecimals",type:"u8"}]}},{name:"inboxItem",type:{kind:"struct",fields:[{name:"init",type:"bool"},{name:"bump",type:"u8"},{name:"amount",type:"u64"},{name:"recipientAddress",type:"publicKey"},{name:"votes",type:{defined:"Bitmap"}},{name:"releaseStatus",type:{defined:"ReleaseStatus"}}]}},{name:"inboxRateLimit",docs:["Inbound rate limit per chain.","SECURITY: must check the PDA (since there are multiple PDAs, namely one for each chain.)"],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"outboxItem",type:{kind:"struct",fields:[{name:"amount",type:{defined:"TrimmedAmount"}},{name:"sender",type:"publicKey"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientNttManager",type:{array:["u8",32]}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"releaseTimestamp",type:"i64"},{name:"released",type:{defined:"Bitmap"}}]}},{name:"outboxRateLimit",type:{kind:"struct",fields:[{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"registeredTransceiver",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"id",type:"u8"},{name:"transceiverAddress",type:"publicKey"}]}},{name:"transceiverPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}},{name:"bridgeData",type:{kind:"struct",fields:[{name:"guardianSetIndex",docs:["The current guardian set index, used to decide which signature sets to accept."],type:"u32"},{name:"lastLamports",docs:["Lamports in the collection account"],type:"u64"},{name:"config",docs:["Bridge configuration, which is set once upon initialization."],type:{defined:"BridgeConfig"}}]}}],types:[{name:"Bitmap",type:{kind:"struct",fields:[{name:"map",type:"u128"}]}},{name:"SetInboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"},{name:"chainId",type:{defined:"ChainId"}}]}},{name:"SetOutboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"}]}},{name:"SetPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}},{name:"limit",type:"u64"},{name:"tokenDecimals",docs:["The token decimals on the peer chain."],type:"u8"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"},{name:"limit",type:"u64"},{name:"mode",type:{defined:"Mode"}}]}},{name:"RedeemArgs",type:{kind:"struct",fields:[]}},{name:"ReleaseInboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"TransferArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"shouldQueue",type:"bool"}]}},{name:"ReleaseStatus",docs:["The status of an InboxItem. This determines whether the tokens are minted/unlocked to the recipient. As","such, this must be used as a state machine that moves forward in a linear manner. A state",'should never "move backward" to a previous state (e.g. should never move from `Released` to',"`ReleaseAfter`)."],type:{kind:"enum",variants:[{name:"NotApproved"},{name:"ReleaseAfter",fields:["i64"]},{name:"Released"}]}},{name:"RateLimitState",type:{kind:"struct",fields:[{name:"limit",docs:["The maximum capacity of the rate limiter."],type:"u64"},{name:"capacityAtLastTx",docs:["The capacity of the rate limiter at `last_tx_timestamp`.","The actual current capacity is calculated in `capacity_at`, by","accounting for the time that has passed since `last_tx_timestamp` and","the refill rate."],type:"u64"},{name:"lastTxTimestamp",docs:["The timestamp of the last transaction that counted towards the current","capacity. Transactions that exceeded the capacity do not count, they are","just delayed."],type:"i64"}]}},{name:"SetTransceiverPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}}]}},{name:"BroadcastPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"ReleaseOutboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"ChainId",type:{kind:"struct",fields:[{name:"id",type:"u16"}]}},{name:"Mode",type:{kind:"enum",variants:[{name:"Locking"},{name:"Burning"}]}},{name:"TrimmedAmount",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]}},{name:"BridgeConfig",type:{kind:"struct",fields:[{name:"guardianSetExpirationTime",docs:["Period for how long a guardian set is valid after it has been replaced by a new one. This","guarantees that VAAs issued by that set can still be submitted for a certain period. In","this period we still trust the old guardian set."],type:"u32"},{name:"fee",docs:["Amount of lamports that needs to be paid to the protocol to post a message"],type:"u64"}]}}],errors:[{code:6e3,name:"CantReleaseYet",msg:"CantReleaseYet"},{code:6001,name:"InvalidPendingOwner",msg:"InvalidPendingOwner"},{code:6002,name:"InvalidChainId",msg:"InvalidChainId"},{code:6003,name:"InvalidRecipientAddress",msg:"InvalidRecipientAddress"},{code:6004,name:"InvalidTransceiverPeer",msg:"InvalidTransceiverPeer"},{code:6005,name:"InvalidNttManagerPeer",msg:"InvalidNttManagerPeer"},{code:6006,name:"InvalidRecipientNttManager",msg:"InvalidRecipientNttManager"},{code:6007,name:"TransferAlreadyRedeemed",msg:"TransferAlreadyRedeemed"},{code:6008,name:"TransferCannotBeRedeemed",msg:"TransferCannotBeRedeemed"},{code:6009,name:"TransferNotApproved",msg:"TransferNotApproved"},{code:6010,name:"MessageAlreadySent",msg:"MessageAlreadySent"},{code:6011,name:"InvalidMode",msg:"InvalidMode"},{code:6012,name:"InvalidMintAuthority",msg:"InvalidMintAuthority"},{code:6013,name:"TransferExceedsRateLimit",msg:"TransferExceedsRateLimit"},{code:6014,name:"Paused",msg:"Paused"},{code:6015,name:"DisabledTransceiver",msg:"DisabledTransceiver"},{code:6016,name:"InvalidDeployer",msg:"InvalidDeployer"},{code:6017,name:"BadAmountAfterTransfer",msg:"BadAmountAfterTransfer"},{code:6018,name:"BadAmountAfterBurn",msg:"BadAmountAfterBurn"},{code:6019,name:"ZeroThreshold",msg:"ZeroThreshold"},{code:6020,name:"OverflowExponent",msg:"OverflowExponent"},{code:6021,name:"OverflowScaledAmount",msg:"OverflowScaledAmount"},{code:6022,name:"BitmapIndexOutOfBounds",msg:"BitmapIndexOutOfBounds"},{code:6023,name:"NoRegisteredTransceivers",msg:"NoRegisteredTransceivers"}]}});var lo,fo=Y(()=>{lo={version:"2.0.0",name:"wormhole_governance",instructions:[{name:"governance",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"governance",isMut:!0,isSigner:!1,docs:["governed program. This account is validated by Wormhole, not this program."]},{name:"vaa",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"replay",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"replayProtection",type:{kind:"struct",fields:[{name:"bump",type:"u8"}]}}],errors:[{code:6e3,name:"InvalidGovernanceChain",msg:"InvalidGovernanceChain"},{code:6001,name:"InvalidGovernanceEmitter",msg:"InvalidGovernanceEmitter"},{code:6002,name:"InvalidGovernanceProgram",msg:"InvalidGovernanceProgram"}]}});var cs,go=Y(()=>{uo();fo();(function(n){n.idl={ntt:Os,transceiver:Os,transceiverLegacy:Os,governance:lo}})(cs||(cs={}))});var po,ho=Y(()=>{po={version:"3.0.0",name:"example_native_token_transfers",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"deployer",isMut:!1,isSigner:!0},{name:"programData",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"rateLimit",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1,docs:["In any case, this function is used to set the Config and initialize the program so we","assume the caller of this function will have total control over the program.","",'TODO: Using `UncheckedAccount` here leads to "Access violation in stack frame ...".',"Could refactor code to use `Box<_>` to reduce stack size."]},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"custody",isMut:!0,isSigner:!1,docs:["The custody account that holds tokens in locking mode and temporarily","holds tokens in burning mode.","function if the token account has already been created."]},{name:"tokenProgram",isMut:!1,isSigner:!1,docs:["associated token account for the given mint."]},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"initializeLut",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"authority",isMut:!1,isSigner:!1},{name:"lutAddress",isMut:!0,isSigner:!1},{name:"lut",isMut:!0,isSigner:!1},{name:"lutProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"entries",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"custody",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"outboxRateLimit",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}]}],args:[{name:"recentSlot",type:"u64"}]},{name:"version",accounts:[],args:[],returns:"string"},{name:"transferBurn",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["Tokens are always transferred to the custody account first regardless of","the mode.","For an explanation, see the note in [`transfer_burn`]."]},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1,docs:["See [`crate::SESSION_AUTHORITY_SEED`] for an explanation of the flow."]},{name:"tokenAuthority",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"transferLock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["Tokens are always transferred to the custody account first regardless of","the mode.","For an explanation, see the note in [`transfer_burn`]."]},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1,docs:["See [`crate::SESSION_AUTHORITY_SEED`] for an explanation of the flow."]}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"redeem",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!1,isSigner:!1,docs:["`Account<T>` and `owner` constraints are mutually-exclusive"]},{name:"transceiver",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"inboxItem",isMut:!0,isSigner:!1,docs:["NOTE: This account is content-addressed (PDA seeded by the message hash).","This is because in a multi-transceiver configuration, the different",'transceivers "vote" on messages (by delivering them). By making the inbox',"items content-addressed, we can ensure that disagreeing votes don't","interfere with each other.","On the first call to [`redeem()`], [`InboxItem`] will be allocated and initialized with","default values.",'On subsequent calls, we want to modify the `InboxItem` by "voting" on it. Therefore the',"program should not fail which would occur when using the `init` constraint.","The [`InboxItem::init`] field is used to guard against malicious or accidental modification","InboxItem fields that should remain constant."]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RedeemArgs"}}]},{name:"releaseInboundMint",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}]},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"releaseInboundUnlock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"transferOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"newOwner",isMut:!1,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"transferOwnershipOneStepUnchecked",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"newOwner",isMut:!1,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"claimOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"newOwner",isMut:!1,isSigner:!0},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"acceptTokenAuthority",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}]},{name:"currentAuthority",isMut:!1,isSigner:!0}],args:[]},{name:"acceptTokenAuthorityFromMultisig",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}]},{name:"currentMultisigAuthority",isMut:!1,isSigner:!1}],args:[]},{name:"setTokenAuthorityOneStepUnchecked",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"newAuthority",isMut:!1,isSigner:!1}]},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setTokenAuthority",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"newAuthority",isMut:!1,isSigner:!1}]},{name:"rentPayer",isMut:!0,isSigner:!0},{name:"pendingTokenAuthority",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"revertTokenAuthority",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"rentPayer",isMut:!0,isSigner:!1},{name:"pendingTokenAuthority",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"owner",isMut:!1,isSigner:!0}],args:[]},{name:"claimTokenAuthority",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"rentPayer",isMut:!0,isSigner:!1},{name:"pendingTokenAuthority",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"newAuthority",isMut:!1,isSigner:!0}],args:[]},{name:"claimTokenAuthorityToMultisig",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"rentPayer",isMut:!0,isSigner:!1},{name:"pendingTokenAuthority",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"newMultisigAuthority",isMut:!1,isSigner:!1}],args:[]},{name:"setPaused",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"pause",type:"bool"}]},{name:"setPeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!0,isSigner:!1},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetPeerArgs"}}]},{name:"registerTransceiver",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"transceiver",isMut:!1,isSigner:!1,docs:["used here that wraps the Transceiver account type."]},{name:"registeredTransceiver",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"deregisterTransceiver",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"registeredTransceiver",isMut:!1,isSigner:!1}],args:[]},{name:"setOutboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetOutboundLimitArgs"}}]},{name:"setInboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetInboundLimitArgs"}}]},{name:"markOutboxItemAsReleased",accounts:[{name:"signer",isMut:!1,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1}],args:[],returns:"bool"},{name:"setThreshold",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"threshold",type:"u8"}]},{name:"setWormholePeer",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"peer",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetTransceiverPeerArgs"}}]},{name:"receiveWormholeMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"peer",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"releaseWormholeOutbound",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseOutboundArgs"}}]},{name:"broadcastWormholeId",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1,docs:["enforced by the [`CpiContext`] call in [`post_message`].","The seeds constraint ensures that this is the correct address"]},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[]},{name:"broadcastWormholePeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"BroadcastPeerArgs"}}]}],accounts:[{name:"config",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"owner",docs:["Owner of the program."],type:"publicKey"},{name:"pendingOwner",docs:["Pending next owner (before claiming ownership)."],type:{option:"publicKey"}},{name:"mint",docs:["Mint address of the token managed by this program."],type:"publicKey"},{name:"tokenProgram",docs:["Address of the token program (token or token22). This could always be queried","from the [`mint`] account's owner, but storing it here avoids an indirection","on the client side."],type:"publicKey"},{name:"mode",docs:["The mode that this program is running in. This is used to determine","whether the program is burning tokens or locking tokens."],type:{defined:"Mode"}},{name:"chainId",docs:["The chain id of the chain that this program is running on. We don't","hardcode this so that the program is deployable on any potential SVM","forks."],type:{defined:"ChainId"}},{name:"nextTransceiverId",docs:["The next transceiver id to use when registering an transceiver."],type:"u8"},{name:"threshold",docs:["The number of transceivers that must attest to a transfer before it is","accepted."],type:"u8"},{name:"enabledTransceivers",docs:["Bitmap of enabled transceivers.","The maximum number of transceivers is equal to [`Bitmap::BITS`]."],type:{defined:"Bitmap"}},{name:"paused",docs:["Pause the program. This is useful for upgrades and other maintenance."],type:"bool"},{name:"custody",docs:["The custody account that holds tokens in locking mode."],type:"publicKey"}]}},{name:"LUT",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:"publicKey"}]}},{name:"nttManagerPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}},{name:"tokenDecimals",type:"u8"}]}},{name:"pendingTokenAuthority",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"pendingAuthority",type:"publicKey"},{name:"rentPayer",type:"publicKey"}]}},{name:"inboxItem",type:{kind:"struct",fields:[{name:"init",type:"bool"},{name:"bump",type:"u8"},{name:"amount",type:"u64"},{name:"recipientAddress",type:"publicKey"},{name:"votes",type:{defined:"Bitmap"}},{name:"releaseStatus",type:{defined:"ReleaseStatus"}}]}},{name:"inboxRateLimit",docs:["Inbound rate limit per chain.","SECURITY: must check the PDA (since there are multiple PDAs, namely one for each chain.)"],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"outboxItem",type:{kind:"struct",fields:[{name:"amount",type:{defined:"TrimmedAmount"}},{name:"sender",type:"publicKey"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientNttManager",type:{array:["u8",32]}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"releaseTimestamp",type:"i64"},{name:"released",type:{defined:"Bitmap"}}]}},{name:"outboxRateLimit",type:{kind:"struct",fields:[{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"registeredTransceiver",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"id",type:"u8"},{name:"transceiverAddress",type:"publicKey"}]}},{name:"transceiverPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}},{name:"bridgeData",type:{kind:"struct",fields:[{name:"guardianSetIndex",docs:["The current guardian set index, used to decide which signature sets to accept."],type:"u32"},{name:"lastLamports",docs:["Lamports in the collection account"],type:"u64"},{name:"config",docs:["Bridge configuration, which is set once upon initialization."],type:{defined:"BridgeConfig"}}]}}],types:[{name:"Bitmap",type:{kind:"struct",fields:[{name:"map",type:"u128"}]}},{name:"SetInboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"},{name:"chainId",type:{defined:"ChainId"}}]}},{name:"SetOutboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"}]}},{name:"SetPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}},{name:"limit",type:"u64"},{name:"tokenDecimals",docs:["The token decimals on the peer chain."],type:"u8"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"},{name:"limit",type:"u64"},{name:"mode",type:{defined:"Mode"}}]}},{name:"RedeemArgs",type:{kind:"struct",fields:[]}},{name:"ReleaseInboundArgs",type:{kind:"struct",fields:[{name:"revertWhenNotReady",type:"bool"}]}},{name:"TransferArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"shouldQueue",type:"bool"}]}},{name:"ReleaseStatus",docs:["The status of an InboxItem. This determines whether the tokens are minted/unlocked to the recipient. As","such, this must be used as a state machine that moves forward in a linear manner. A state",'should never "move backward" to a previous state (e.g. should never move from `Released` to',"`ReleaseAfter`)."],type:{kind:"enum",variants:[{name:"NotApproved"},{name:"ReleaseAfter",fields:["i64"]},{name:"Released"}]}},{name:"RateLimitState",type:{kind:"struct",fields:[{name:"limit",docs:["The maximum capacity of the rate limiter."],type:"u64"},{name:"capacityAtLastTx",docs:["The capacity of the rate limiter at `last_tx_timestamp`.","The actual current capacity is calculated in `capacity_at`, by","accounting for the time that has passed since `last_tx_timestamp` and","the refill rate."],type:"u64"},{name:"lastTxTimestamp",docs:["The timestamp of the last transaction that counted towards the current","capacity. Transactions that exceeded the capacity do not count, they are","just delayed."],type:"i64"}]}},{name:"SetTransceiverPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}}]}},{name:"BroadcastPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"ReleaseOutboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"ChainId",type:{kind:"struct",fields:[{name:"id",type:"u16"}]}},{name:"Mode",type:{kind:"enum",variants:[{name:"Locking"},{name:"Burning"}]}},{name:"TrimmedAmount",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]}},{name:"BridgeConfig",type:{kind:"struct",fields:[{name:"guardianSetExpirationTime",docs:["Period for how long a guardian set is valid after it has been replaced by a new one. This","guarantees that VAAs issued by that set can still be submitted for a certain period. In","this period we still trust the old guardian set."],type:"u32"},{name:"fee",docs:["Amount of lamports that needs to be paid to the protocol to post a message"],type:"u64"}]}}],errors:[{code:6e3,name:"CantReleaseYet",msg:"CantReleaseYet"},{code:6001,name:"InvalidPendingOwner",msg:"InvalidPendingOwner"},{code:6002,name:"InvalidChainId",msg:"InvalidChainId"},{code:6003,name:"InvalidRecipientAddress",msg:"InvalidRecipientAddress"},{code:6004,name:"InvalidTransceiverPeer",msg:"InvalidTransceiverPeer"},{code:6005,name:"InvalidNttManagerPeer",msg:"InvalidNttManagerPeer"},{code:6006,name:"InvalidRecipientNttManager",msg:"InvalidRecipientNttManager"},{code:6007,name:"TransferAlreadyRedeemed",msg:"TransferAlreadyRedeemed"},{code:6008,name:"TransferCannotBeRedeemed",msg:"TransferCannotBeRedeemed"},{code:6009,name:"TransferNotApproved",msg:"TransferNotApproved"},{code:6010,name:"MessageAlreadySent",msg:"MessageAlreadySent"},{code:6011,name:"InvalidMode",msg:"InvalidMode"},{code:6012,name:"InvalidMintAuthority",msg:"InvalidMintAuthority"},{code:6013,name:"TransferExceedsRateLimit",msg:"TransferExceedsRateLimit"},{code:6014,name:"Paused",msg:"Paused"},{code:6015,name:"DisabledTransceiver",msg:"DisabledTransceiver"},{code:6016,name:"InvalidDeployer",msg:"InvalidDeployer"},{code:6017,name:"BadAmountAfterTransfer",msg:"BadAmountAfterTransfer"},{code:6018,name:"BadAmountAfterBurn",msg:"BadAmountAfterBurn"},{code:6019,name:"ZeroThreshold",msg:"ZeroThreshold"},{code:6020,name:"OverflowExponent",msg:"OverflowExponent"},{code:6021,name:"OverflowScaledAmount",msg:"OverflowScaledAmount"},{code:6022,name:"BitmapIndexOutOfBounds",msg:"BitmapIndexOutOfBounds"},{code:6023,name:"NoRegisteredTransceivers",msg:"NoRegisteredTransceivers"},{code:6024,name:"NotPaused",msg:"NotPaused"},{code:6025,name:"InvalidPendingTokenAuthority",msg:"InvalidPendingTokenAuthority"},{code:6026,name:"IncorrectRentPayer",msg:"IncorrectRentPayer"},{code:6027,name:"InvalidMultisig",msg:"InvalidMultisig"},{code:6028,name:"ThresholdTooHigh",msg:"ThresholdTooHigh"},{code:6029,name:"InvalidTransceiverProgram",msg:"InvalidTransceiverProgram"}]}});var yo,bo=Y(()=>{yo={version:"3.0.0",name:"ntt_transceiver",instructions:[{name:"transceiverType",accounts:[],args:[],returns:"string"},{name:"setWormholePeer",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"peer",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetTransceiverPeerArgs"}}]},{name:"receiveWormholeMessageInstructionData",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"peer",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!0,isSigner:!1},{name:"guardianSet",isMut:!1,isSigner:!1,docs:["Derivation is checked by the shim."]},{name:"guardianSignatures",isMut:!1,isSigner:!1,docs:["Ownership ownership and discriminator is checked by the shim."]},{name:"verifyVaaShim",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"guardianSetBump",type:"u8"},{name:"vaaBody",type:{defined:"VaaBodyData"}}]},{name:"postUnverifiedWormholeMessageAccount",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"message",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"PostUnverifiedMessageAccountArgs"}}]},{name:"closeUnverifiedWormholeMessageAccount",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"message",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"seed",type:"u64"}]},{name:"receiveWormholeMessageAccount",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"peer",isMut:!1,isSigner:!1},{name:"message",isMut:!0,isSigner:!1},{name:"transceiverMessage",isMut:!0,isSigner:!1},{name:"guardianSet",isMut:!1,isSigner:!1,docs:["Derivation is checked by the shim."]},{name:"guardianSignatures",isMut:!1,isSigner:!1,docs:["Ownership ownership and discriminator is checked by the shim."]},{name:"verifyVaaShim",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"guardianSetBump",type:"u8"},{name:"seed",type:"u64"}]},{name:"releaseWormholeOutbound",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"postMessageShim",isMut:!1,isSigner:!1},{name:"wormholePostMessageShimEa",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]},{name:"manager",isMut:!1,isSigner:!1},{name:"outboxItemSigner",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"ReleaseOutboundArgs"}}]},{name:"broadcastWormholeId",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1,docs:["enforced by the [`CpiContext`] call in [`post_message`].","The seeds constraint ensures that this is the correct address"]},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"postMessageShim",isMut:!1,isSigner:!1},{name:"wormholePostMessageShimEa",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[]},{name:"broadcastWormholePeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"postMessageShim",isMut:!1,isSigner:!1},{name:"wormholePostMessageShimEa",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"BroadcastPeerArgs"}}]}],accounts:[{name:"config",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"owner",docs:["Owner of the program."],type:"publicKey"},{name:"pendingOwner",docs:["Pending next owner (before claiming ownership)."],type:{option:"publicKey"}},{name:"mint",docs:["Mint address of the token managed by this program."],type:"publicKey"},{name:"tokenProgram",docs:["Address of the token program (token or token22). This could always be queried","from the [`mint`] account's owner, but storing it here avoids an indirection","on the client side."],type:"publicKey"},{name:"mode",docs:["The mode that this program is running in. This is used to determine","whether the program is burning tokens or locking tokens."],type:{defined:"Mode"}},{name:"chainId",docs:["The chain id of the chain that this program is running on. We don't","hardcode this so that the program is deployable on any potential SVM","forks."],type:{defined:"ChainId"}},{name:"nextTransceiverId",docs:["The next transceiver id to use when registering an transceiver."],type:"u8"},{name:"threshold",docs:["The number of transceivers that must attest to a transfer before it is","accepted."],type:"u8"},{name:"enabledTransceivers",docs:["Bitmap of enabled transceivers.","The maximum number of transceivers is equal to [`Bitmap::BITS`]."],type:{defined:"Bitmap"}},{name:"paused",docs:["Pause the program. This is useful for upgrades and other maintenance."],type:"bool"},{name:"custody",docs:["The custody account that holds tokens in locking mode."],type:"publicKey"}]}},{name:"outboxItem",type:{kind:"struct",fields:[{name:"amount",type:{defined:"TrimmedAmount"}},{name:"sender",type:"publicKey"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientNttManager",type:{array:["u8",32]}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"releaseTimestamp",type:"i64"},{name:"released",type:{defined:"Bitmap"}}]}},{name:"registeredTransceiver",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"id",type:"u8"},{name:"transceiverAddress",type:"publicKey"}]}},{name:"transceiverPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}},{name:"vaaBody",type:{kind:"struct",fields:[{name:"span",type:"bytes"}]}},{name:"bridgeData",type:{kind:"struct",fields:[{name:"guardianSetIndex",docs:["The current guardian set index, used to decide which signature sets to accept."],type:"u32"},{name:"lastLamports",docs:["Lamports in the collection account"],type:"u64"},{name:"config",docs:["Bridge configuration, which is set once upon initialization."],type:{defined:"BridgeConfig"}}]}}],types:[{name:"Bitmap",type:{kind:"struct",fields:[{name:"map",type:"u128"}]}},{name:"ChainId",type:{kind:"struct",fields:[{name:"id",type:"u16"}]}},{name:"Mode",type:{kind:"enum",variants:[{name:"Locking"},{name:"Burning"}]}},{name:"TrimmedAmount",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]}},{name:"VaaBodyData",type:{kind:"struct",fields:[{name:"span",type:"bytes"}]}},{name:"SetTransceiverPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}}]}},{name:"BroadcastPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"ReleaseOutboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"PostUnverifiedMessageAccountArgs",type:{kind:"struct",fields:[{name:"seed",type:"u64"},{name:"offset",type:"u32"},{name:"chunk",type:"bytes"},{name:"messageSize",type:"u32"}]}},{name:"BridgeConfig",type:{kind:"struct",fields:[{name:"guardianSetExpirationTime",docs:["Period for how long a guardian set is valid after it has been replaced by a new one. This","guarantees that VAAs issued by that set can still be submitted for a certain period. In","this period we still trust the old guardian set."],type:"u32"},{name:"fee",docs:["Amount of lamports that needs to be paid to the protocol to post a message"],type:"u64"}]}}]}});var Ao,wo=Y(()=>{Ao={version:"3.0.0",name:"ntt_transceiver",instructions:[{name:"transceiverType",accounts:[],args:[],returns:"string"},{name:"setWormholePeer",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"peer",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetTransceiverPeerArgs"}}]},{name:"receiveWormholeMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"peer",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"releaseWormholeOutbound",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]},{name:"manager",isMut:!1,isSigner:!1},{name:"outboxItemSigner",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"ReleaseOutboundArgs"}}]},{name:"broadcastWormholeId",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1,docs:["enforced by the [`CpiContext`] call in [`post_message`].","The seeds constraint ensures that this is the correct address"]},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[]},{name:"broadcastWormholePeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"BroadcastPeerArgs"}}]}],accounts:[{name:"config",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"owner",docs:["Owner of the program."],type:"publicKey"},{name:"pendingOwner",docs:["Pending next owner (before claiming ownership)."],type:{option:"publicKey"}},{name:"mint",docs:["Mint address of the token managed by this program."],type:"publicKey"},{name:"tokenProgram",docs:["Address of the token program (token or token22). This could always be queried","from the [`mint`] account's owner, but storing it here avoids an indirection","on the client side."],type:"publicKey"},{name:"mode",docs:["The mode that this program is running in. This is used to determine","whether the program is burning tokens or locking tokens."],type:{defined:"Mode"}},{name:"chainId",docs:["The chain id of the chain that this program is running on. We don't","hardcode this so that the program is deployable on any potential SVM","forks."],type:{defined:"ChainId"}},{name:"nextTransceiverId",docs:["The next transceiver id to use when registering an transceiver."],type:"u8"},{name:"threshold",docs:["The number of transceivers that must attest to a transfer before it is","accepted."],type:"u8"},{name:"enabledTransceivers",docs:["Bitmap of enabled transceivers.","The maximum number of transceivers is equal to [`Bitmap::BITS`]."],type:{defined:"Bitmap"}},{name:"paused",docs:["Pause the program. This is useful for upgrades and other maintenance."],type:"bool"},{name:"custody",docs:["The custody account that holds tokens in locking mode."],type:"publicKey"}]}},{name:"outboxItem",type:{kind:"struct",fields:[{name:"amount",type:{defined:"TrimmedAmount"}},{name:"sender",type:"publicKey"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientNttManager",type:{array:["u8",32]}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"releaseTimestamp",type:"i64"},{name:"released",type:{defined:"Bitmap"}}]}},{name:"registeredTransceiver",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"id",type:"u8"},{name:"transceiverAddress",type:"publicKey"}]}},{name:"transceiverPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}},{name:"bridgeData",type:{kind:"struct",fields:[{name:"guardianSetIndex",docs:["The current guardian set index, used to decide which signature sets to accept."],type:"u32"},{name:"lastLamports",docs:["Lamports in the collection account"],type:"u64"},{name:"config",docs:["Bridge configuration, which is set once upon initialization."],type:{defined:"BridgeConfig"}}]}}],types:[{name:"Bitmap",type:{kind:"struct",fields:[{name:"map",type:"u128"}]}},{name:"ChainId",type:{kind:"struct",fields:[{name:"id",type:"u16"}]}},{name:"Mode",type:{kind:"enum",variants:[{name:"Locking"},{name:"Burning"}]}},{name:"TrimmedAmount",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]}},{name:"SetTransceiverPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}}]}},{name:"BroadcastPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"ReleaseOutboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"BridgeConfig",type:{kind:"struct",fields:[{name:"guardianSetExpirationTime",docs:["Period for how long a guardian set is valid after it has been replaced by a new one. This","guarantees that VAAs issued by that set can still be submitted for a certain period. In","this period we still trust the old guardian set."],type:"u32"},{name:"fee",docs:["Amount of lamports that needs to be paid to the protocol to post a message"],type:"u64"}]}}]}});var xo,So=Y(()=>{xo={version:"3.0.0",name:"wormhole_governance",instructions:[{name:"governance",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"governance",isMut:!0,isSigner:!1,docs:["governed program. This account is validated by Wormhole, not this program."]},{name:"vaa",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"replay",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"replayProtection",type:{kind:"struct",fields:[{name:"bump",type:"u8"}]}}],errors:[{code:6e3,name:"InvalidGovernanceChain",msg:"InvalidGovernanceChain"},{code:6001,name:"InvalidGovernanceEmitter",msg:"InvalidGovernanceEmitter"},{code:6002,name:"InvalidGovernanceProgram",msg:"InvalidGovernanceProgram"}]}});var ms,ko=Y(()=>{ho();bo();wo();So();(function(n){n.idl={ntt:po,transceiver:yo,transceiverLegacy:Ao,governance:xo}})(ms||(ms={}))});var Ga=Y(()=>{mo();go();ko()});function Mo(n){for(let[e,t]of Hs)if(vo.Ntt.abiVersionMatches(n,e))return t;throw new Error(`Unknown IDL version: ${n}`)}function us(n,e,t){let{idl:{ntt:s}}=Mo(t);return new qa.Program(s,e,{connection:n})}function Ws(n,e,t,s=!1){let{idl:{transceiver:a,transceiverLegacy:i}}=Mo(t),r=s?i:a;return new qa.Program(r,e,{connection:n})}var qa,vo,Hs,Us=Y(()=>{qa=require("@coral-xyz/anchor");Ga();vo=require("@wormhole-foundation/sdk-definitions-ntt"),Hs=[["3.0.0",ms],["2.0.0",cs],["1.0.0",os]]});function ls(n){return an.PublicKey.findProgramAddressSync([new an.PublicKey(n).toBytes()],Qn)[0]}function rn(n){let e=n.split(".");if(e.length<3)throw new Error("Invalid version string");let t=e[2],s=t.split(/[^0-9]/)[0],a=t.slice(s.length);return[Number(e[0]),Number(e[1]),Number(s),a]}function Z(n,e){let t=s=>typeof s=="string"?ds.encoding.bytes.encode(s):s;return an.PublicKey.findProgramAddressSync(Array.isArray(n)?n.map(t):[t(n)],new an.PublicKey(e))[0]}var an,ds,za,Qn,Io,tp,on,ja,np,sp,Ns=Y(()=>{an=require("@solana/web3.js"),ds=require("@wormhole-foundation/sdk-base"),za=Rn(require("bn.js"),1),Qn=new an.PublicKey("BPFLoaderUpgradeab1e11111111111111111111111");Io=[{name:"length",binary:"uint",endianness:"little",size:4},{name:"version",binary:"bytes"}],tp={MAX:new za.default((2n**64n-1n).toString()),to:(n,e)=>{let t=new za.default(Math.round(n*e));if(t.isNeg())throw new Error("Value negative");if(t.bitLength()>64)throw new Error("Value too large");return t},from:(n,e)=>n.toNumber()/e};on=n=>ds.encoding.bignum.toBytes((0,ds.toChainId)(n),2),ja=n=>{let e=Buffer.isBuffer(n)?n:Buffer.from(n),t=6;if(e.length<6||!e[5])throw new Error("Invalid VAA");let s=e[5];return e.subarray(t+66*s)},np=new an.PublicKey(Buffer.from("owner".padEnd(32,"\0"))),sp=new an.PublicKey(Buffer.from("payer".padEnd(32,"\0")))});async function Ks(n,e,t,s,a,i,r,o,c){let m=J.getExtraAccountMetaAddress(a,t),g=await n.getAccountInfo(m,c);if(g==null)return e;let f=J.getExtraAccountMetas(g);if(![s,a,i,r].every(A=>e.keys.some(x=>x.pubkey.equals(A))))throw new Error("Missing required account in instruction");let y=J.createExecuteInstruction(t,s,a,i,r,m,BigInt(o));for(let A of f)y.keys.push(Dm(await J.resolveExtraAccountMeta(n,A,y.keys,y.data,y.programId),y.keys));e.keys.push(...y.keys.slice(5)),e.keys.push({pubkey:t,isSigner:!1,isWritable:!1}),e.keys.push({pubkey:m,isSigner:!1,isWritable:!1})}function Dm(n,e){let t=e.filter(s=>s.pubkey.equals(n.pubkey)).reduce((s,a)=>s?{isSigner:s.isSigner||a.isSigner,isWritable:s.isWritable||a.isWritable}:{isSigner:a.isSigner,isWritable:a.isWritable},void 0);if(t){let{isSigner:s,isWritable:a}=t;!s&&s!==n.isSigner&&(n.isSigner=!1),!a&&a!==n.isWritable&&(n.isWritable=!1)}return n}var cn,J,oe,he,To,Gs,$a,fs,Po,z,Co=Y(()=>{cn=require("@coral-xyz/anchor"),J=Rn(require("@solana/spl-token"),1),oe=require("@solana/web3.js"),he=require("@wormhole-foundation/sdk-base"),To=require("@wormhole-foundation/sdk-definitions"),Gs=Rn(require("bn.js"),1),$a=require("@wormhole-foundation/sdk-definitions-ntt"),fs=require("@solana/spl-token"),Po=require("@wormhole-foundation/sdk-solana-core");Us();Ns();(function(n){function e(l,d,u){return{amount:new Gs.default(l.toString()),recipientChain:{id:(0,he.toChainId)(d.chain)},recipientAddress:Array.from(d.address.toUniversalAddress().toUint8Array()),shouldQueue:u}}n.transferArgs=e,n.pdas=l=>({configAccount:()=>Z("config",l),outboxRateLimitAccount:()=>Z("outbox_rate_limit",l),inboxRateLimitAccount:qe=>Z(["inbox_rate_limit",on(qe)],l),inboxItemAccount:(qe,Ze)=>Z(["inbox_item",$a.Ntt.messageDigest(qe,Ze)],l),upgradeLock:()=>Z("upgrade_lock",l),sessionAuthority:(qe,Ze)=>Z(["session_authority",qe.toBytes(),(0,To.keccak256)(he.encoding.bytes.concat(he.encoding.bytes.zpad(new Uint8Array(Ze.amount.toArray()),8),on(Ze.recipientChain.id),new Uint8Array(Ze.recipientAddress),new Uint8Array([Ze.shouldQueue?1:0])))],l),tokenAuthority:()=>Z("token_authority",l),pendingTokenAuthority:()=>Z("pending_token_authority",l),peerAccount:qe=>Z(["peer",on(qe)],l),registeredTransceiver:qe=>Z(["registered_transceiver",qe.toBytes()],l),lutAccount:()=>Z("lut",l),lutAuthority:()=>Z("lut_authority",l)}),n.transceiverPdas=l=>{let d=()=>Z("emitter",l);return{emitterAccount:d,outboxItemSigner:()=>Z(["outbox_item_signer"],l),transceiverPeerAccount:W=>Z(["transceiver_peer",on(W)],l),transceiverMessageAccount:(W,ce)=>Z(["transceiver_message",on(W),ce],l),unverifiedMessageAccount:(W,ce)=>Z(["vaa_body",W.toBytes(),new Uint8Array(ce.toArray("be"))],l),wormholeMessageAccount:W=>Z(["message",W.toBytes()],l),wormholeMessageWithShimAccount:W=>Z(d().toBytes(),W)}};async function t(l,d,u){if(!u){let Qe=l.rpcEndpoint===he.rpc.rpcAddress("Devnet","Solana")?"6sbzC1eH4FTujJXWj51eQe25cYvr4xfXbJ1vAj7j2k5J":l.rpcEndpoint.startsWith("http://localhost")?"98evdAiWr7ey9MAQzoQQMwFQkTsSR6KkWQuFqKrgwNwb":"Hk3SdYTJFpawrvRz4qRztuEt2SqoCG7BGj2yJfDJSFbJ";u=new oe.PublicKey(Qe)}let p=us(l,d.toString(),"1.0.0"),_=await p.methods.version().accountsStrict({}).instruction(),{blockhash:Q}=await p.provider.connection.getLatestBlockhash("finalized"),ee=new oe.TransactionMessage({payerKey:u,recentBlockhash:Q,instructions:[_]}).compileToV0Message(),we=new oe.VersionedTransaction(ee),W=await p.provider.connection.simulateTransaction(we,{sigVerify:!1});if(!W.value.returnData||W.value.err)throw new Error("Could not fetch IDL version: "+JSON.stringify((0,cn.translateError)(W.value.err,(0,cn.parseIdlErrors)(p.idl))));let ce=he.encoding.b64.decode(W.value.returnData?.data[0]),Ge=(0,he.deserializeLayout)(Io,ce),Pe=he.encoding.bytes.decode(Ge.version);for(let[Qe]of Hs)if($a.Ntt.abiVersionMatches(Pe,Qe))return Qe;throw new Error(`Unknown IDL version: ${Pe}`)}n.getVersion=t;async function s(l,d,u){let[p,,,]=rn(l.idl.version),_=d.mode==="burning"?{burning:{}}:{locking:{}},Q=(0,he.toChainId)(d.chain);u=u??n.pdas(l.programId);let ee=new Gs.default(d.outboundLimit.toString());return l.methods.initialize({chainId:Q,limit:ee,mode:_}).accounts({payer:d.payer,deployer:d.owner,programData:ls(l.programId),config:u.configAccount(),mint:d.mint,rateLimit:u.outboxRateLimitAccount(),tokenProgram:d.tokenProgram,tokenAuthority:u.tokenAuthority(),...p>=3&&{multisigTokenAuthority:d.multisigTokenAuthority??null},custody:await n.custodyAccountAddress(u,d.mint,d.tokenProgram),bpfLoaderUpgradeableProgram:Qn,associatedTokenProgram:J.ASSOCIATED_TOKEN_PROGRAM_ID,systemProgram:oe.SystemProgram.programId}).instruction()}n.createInitializeInstruction=s;async function a(l,d,u,p,_){let[Q,,,]=rn(l.idl.version);if(Q<2)return;_=_??n.pdas(l.programId);let ee=await l.provider.connection.getSlot()-1,[we,W]=cn.web3.AddressLookupTableProgram.createLookupTable({authority:_.lutAuthority(),payer:p.payer,recentSlot:ee}),ce=Po.utils.getWormholeDerivedAccounts(u,p.wormholeId.toString()),Ge={config:_.configAccount(),custody:d.custody,tokenProgram:d.tokenProgram,mint:d.mint,tokenAuthority:_.tokenAuthority(),outboxRateLimit:_.outboxRateLimitAccount(),wormhole:{bridge:ce.wormholeBridge,feeCollector:ce.wormholeFeeCollector,sequence:ce.wormholeSequence,program:p.wormholeId,systemProgram:oe.SystemProgram.programId,clock:cn.web3.SYSVAR_CLOCK_PUBKEY,rent:cn.web3.SYSVAR_RENT_PUBKEY}},Pe=Ze=>{let vs=new Array;for(let ns in Ze){let Ms=Ze[ns];Ms instanceof oe.PublicKey?vs.push(Ms):typeof Ms=="object"&&vs.push(...Pe(Ms))}return vs},Qe=Pe(Ge).map(Ze=>Ze.toBase58()),qe=await Nt(l,_);if(qe!==null){let Ze=qe.state.addresses?.map(ns=>ns.toBase58())??[];if(Qe.filter(ns=>!Ze.includes(ns)).length===0)return null}return l.methods.initializeLut(new Gs.default(ee)).accountsStrict({payer:p.payer,owner:p.owner,authority:_.lutAuthority(),lutAddress:W,lut:_.lutAccount(),lutProgram:oe.AddressLookupTableProgram.programId,systemProgram:oe.SystemProgram.programId,entries:Ge}).instruction()}n.initializeOrUpdateLUT=a;async function i(l,d,u,p){p=p??n.pdas(l.programId);let _=await Ae(p,d),Q=(0,he.toChain)(u.transferArgs.recipientChain.id),ee=await l.methods.transferBurn(u.transferArgs).accountsStrict({common:{payer:u.payer,config:{config:p.configAccount()},mint:d.mint,from:u.from,tokenProgram:d.tokenProgram,outboxItem:u.outboxItem,outboxRateLimit:p.outboxRateLimitAccount(),systemProgram:oe.SystemProgram.programId,custody:_},peer:p.peerAccount(Q),inboxRateLimit:p.inboxRateLimitAccount(Q),sessionAuthority:p.sessionAuthority(u.fromAuthority,u.transferArgs),tokenAuthority:p.tokenAuthority()}).instruction(),we=await J.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),W=J.getTransferHook(we);if(W){let ce=u.from,Ge=d.mint,Pe=await Ae(p,d),Qe=p.sessionAuthority(u.fromAuthority,u.transferArgs);await Ks(l.provider.connection,ee,W.programId,ce,Ge,Pe,Qe,0)}return ee}n.createTransferBurnInstruction=i;async function r(l,d,u,p){if(d.paused)throw new Error("Contract is paused");p=p??n.pdas(l.programId);let _=(0,he.toChain)(u.transferArgs.recipientChain.id),Q=await Ae(p,d),ee=await l.methods.transferLock(u.transferArgs).accountsStrict({common:{payer:u.payer,config:{config:p.configAccount()},mint:d.mint,from:u.from,tokenProgram:d.tokenProgram,outboxItem:u.outboxItem,outboxRateLimit:p.outboxRateLimitAccount(),custody:Q,systemProgram:oe.SystemProgram.programId},peer:p.peerAccount(_),inboxRateLimit:p.inboxRateLimitAccount(_),sessionAuthority:p.sessionAuthority(u.fromAuthority,u.transferArgs),custody:Q}).instruction(),we=await J.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),W=J.getTransferHook(we);if(W){let ce=u.from,Ge=await Ae(p,d),Pe=p.sessionAuthority(u.fromAuthority,u.transferArgs);await Ks(l.provider.connection,ee,W.programId,ce,d.mint,Ge,Pe,0)}return ee}n.createTransferLockInstruction=r;async function o(l,d,u,p){let[_,,,]=rn(l.idl.version);p=p??n.pdas(l.programId);let Q=await J.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),ee=null;Q.mintAuthority?.equals(p.tokenAuthority())||(ee=Q.mintAuthority);let we=u.recipient??(await Lt(l,u.chain,u.nttMessage)).recipientAddress,W=await l.methods.releaseInboundMint({revertOnDelay:u.revertWhenNotReady,revertWhenNotReady:u.revertWhenNotReady}).accounts({common:{payer:u.payer,config:{config:p.configAccount()},inboxItem:p.inboxItemAccount(u.chain,u.nttMessage),recipient:(0,fs.getAssociatedTokenAddressSync)(d.mint,we,!0,d.tokenProgram),mint:d.mint,tokenAuthority:p.tokenAuthority(),tokenProgram:d.tokenProgram,custody:await Ae(p,d)},..._>=3&&{multisigTokenAuthority:ee}}).instruction(),ce=J.getTransferHook(Q);if(ce){let Ge=await Ae(p,d),Pe=d.mint,Qe=(0,fs.getAssociatedTokenAddressSync)(Pe,we,!0,d.tokenProgram),qe=p.tokenAuthority();await Ks(l.provider.connection,W,ce.programId,Ge,Pe,Qe,qe,0)}return W}n.createReleaseInboundMintInstruction=o;async function c(l,d,u,p){let _=u.recipient??(await n.getInboxItem(l,u.chain,u.nttMessage)).recipientAddress;p=p??n.pdas(l.programId);let Q=await Ae(p,d),ee=await l.methods.releaseInboundUnlock({revertOnDelay:u.revertWhenNotReady,revertWhenNotReady:u.revertWhenNotReady}).accountsStrict({common:{payer:u.payer,config:{config:p.configAccount()},inboxItem:p.inboxItemAccount(u.chain,u.nttMessage),recipient:(0,fs.getAssociatedTokenAddressSync)(d.mint,_,!0,d.tokenProgram),mint:d.mint,tokenAuthority:p.tokenAuthority(),tokenProgram:d.tokenProgram,custody:Q},custody:Q}).instruction(),we=await J.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),W=J.getTransferHook(we);if(W){let ce=await Ae(p,d),Ge=d.mint,Pe=(0,fs.getAssociatedTokenAddressSync)(Ge,_,!0,d.tokenProgram),Qe=p.tokenAuthority();await Ks(l.provider.connection,ee,W.programId,ce,Ge,Pe,Qe,0)}return ee}n.createReleaseInboundUnlockInstruction=c;async function m(l,d,u){return u=u??n.pdas(l.programId),l.methods.transferOwnershipOneStepUnchecked().accountsStrict({config:u.configAccount(),owner:d.owner,newOwner:d.newOwner,upgradeLock:u.upgradeLock(),programData:ls(l.programId),bpfLoaderUpgradeableProgram:Qn}).instruction()}n.createTransferOwnershipOneStepUncheckedInstruction=m;async function g(l,d,u){return u=u??n.pdas(l.programId),l.methods.transferOwnership().accountsStrict({config:u.configAccount(),owner:d.owner,newOwner:d.newOwner,upgradeLock:u.upgradeLock(),programData:ls(l.programId),bpfLoaderUpgradeableProgram:Qn}).instruction()}n.createTransferOwnershipInstruction=g;async function f(l,d,u){return u=u??n.pdas(l.programId),l.methods.claimOwnership().accountsStrict({config:u.configAccount(),newOwner:d.newOwner,upgradeLock:u.upgradeLock(),programData:ls(l.programId),bpfLoaderUpgradeableProgram:Qn}).instruction()}n.createClaimOwnershipInstruction=f;async function y(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.acceptTokenAuthority().accountsStrict({common:{config:p.configAccount(),mint:d.mint,tokenProgram:d.tokenProgram,tokenAuthority:p.tokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},currentAuthority:u.currentAuthority}).instruction()}n.createAcceptTokenAuthorityInstruction=y;async function A(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.acceptTokenAuthorityFromMultisig().accountsStrict({common:{config:p.configAccount(),mint:d.mint,tokenProgram:d.tokenProgram,tokenAuthority:p.tokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},currentMultisigAuthority:u.currentMultisigAuthority}).remainingAccounts(u.additionalSigners.map(_=>({pubkey:_,isSigner:!0,isWritable:!1}))).instruction()}n.createAcceptTokenAuthorityFromMultisigInstruction=A;async function x(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.setTokenAuthorityOneStepUnchecked().accountsStrict({common:{config:p.configAccount(),tokenAuthority:p.tokenAuthority(),mint:d.mint,owner:u.owner,newAuthority:u.newAuthority,multisigTokenAuthority:u.multisigTokenAuthority??null},tokenProgram:d.tokenProgram}).instruction()}n.createSetTokenAuthorityOneStepUncheckedInstruction=x;async function S(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.setTokenAuthority().accountsStrict({common:{config:p.configAccount(),tokenAuthority:p.tokenAuthority(),mint:d.mint,owner:u.owner,newAuthority:u.newAuthority,multisigTokenAuthority:u.multisigTokenAuthority??null},rentPayer:u.rentPayer,pendingTokenAuthority:p.pendingTokenAuthority(),systemProgram:oe.SystemProgram.programId}).instruction()}n.createSetTokenAuthorityInstruction=S;async function B(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.revertTokenAuthority().accountsStrict({common:{config:p.configAccount(),mint:d.mint,tokenAuthority:p.tokenAuthority(),tokenProgram:d.tokenProgram,systemProgram:oe.SystemProgram.programId,rentPayer:u.rentPayer,pendingTokenAuthority:p.pendingTokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},owner:u.owner}).instruction()}n.createRevertTokenAuthorityInstruction=B;async function k(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.claimTokenAuthority().accountsStrict({common:{config:p.configAccount(),mint:d.mint,tokenAuthority:p.tokenAuthority(),tokenProgram:d.tokenProgram,systemProgram:oe.SystemProgram.programId,rentPayer:u.rentPayer,pendingTokenAuthority:p.pendingTokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},newAuthority:u.newAuthority}).instruction()}n.createClaimTokenAuthorityInstruction=k;async function F(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.claimTokenAuthorityToMultisig().accountsStrict({common:{config:p.configAccount(),mint:d.mint,tokenAuthority:p.tokenAuthority(),tokenProgram:d.tokenProgram,systemProgram:oe.SystemProgram.programId,rentPayer:u.rentPayer,pendingTokenAuthority:p.pendingTokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},newMultisigAuthority:u.newMultisigAuthority}).remainingAccounts(u.additionalSigners.map(_=>({pubkey:_,isSigner:!0,isWritable:!1}))).instruction()}n.createClaimTokenAuthorityToMultisigInstruction=F;async function M(l,d,u){return u=u??n.pdas(l.programId),l.methods.setPeer({chainId:{id:(0,he.toChainId)(d.chain)},address:Array.from(d.address),limit:d.limit,tokenDecimals:d.tokenDecimals}).accounts({payer:d.payer,owner:d.owner,config:u.configAccount(),peer:u.peerAccount(d.chain),inboxRateLimit:u.inboxRateLimitAccount(d.chain)}).instruction()}n.createSetPeerInstruction=M;async function H(l,d,u){return u=u??n.pdas(l.programId),l.methods.setPaused(d.paused).accountsStrict({owner:d.owner,config:u.configAccount()}).instruction()}n.createSetPausedInstruction=H;async function N(l,d,u){return u=u??n.pdas(l.programId),l.methods.setThreshold(d.threshold).accountsStrict({owner:d.owner,config:u.configAccount()}).instruction()}n.createSetThresholdInstruction=N;async function I(l,d,u){return u=u??n.pdas(l.programId),l.methods.setOutboundLimit({limit:d.limit}).accounts({owner:d.owner,config:u.configAccount(),rateLimit:u.outboxRateLimitAccount()}).instruction()}n.createSetOutboundLimitInstruction=I;async function $(l,d,u){return u=u??n.pdas(l.programId),l.methods.setInboundLimit({chainId:{id:(0,he.toChainId)(d.chain)},limit:d.limit}).accounts({owner:d.owner,config:u.configAccount(),rateLimit:u.inboxRateLimitAccount(d.chain)}).instruction()}n.createSetInboundLimitInstruction=$;async function Ke(l,d,u,p,_,Q){_=_??n.pdas(l.programId),Q=Q??n.transceiverPdas(u);let ee=p.vaa,we=ee.payload.nttManagerPayload,W=ee.emitterChain;return l.methods.redeem({}).accounts({payer:p.payer,config:_.configAccount(),peer:_.peerAccount(W),transceiverMessage:Q.transceiverMessageAccount(W,we.id),transceiver:_.registeredTransceiver(u),mint:d.mint,inboxItem:_.inboxItemAccount(W,we),inboxRateLimit:_.inboxRateLimitAccount(W),outboxRateLimit:_.outboxRateLimitAccount()}).instruction()}n.createRedeemInstruction=Ke;async function Je(l,d){return l.account.config.fetch(d.configAccount())}n.getConfig=Je;async function Lt(l,d,u){return l.account.inboxItem.fetch(n.pdas(l.programId).inboxItemAccount(d,u))}n.getInboxItem=Lt;async function Nt(l,d){let[u,,,]=rn(l.idl.version);if(u<2)return null;d=d??n.pdas(l.programId);let p=await l.account.lut.fetchNullable(d.lutAccount());if(!p)return null;let _=await l.provider.connection.getAddressLookupTable(p.address);if(_.value===null)throw new Error("Could not fetch LUT");return _.value}n.getAddressLookupTable=Nt;async function Ae(l,d,u=J.TOKEN_PROGRAM_ID){return d instanceof oe.PublicKey?J.getAssociatedTokenAddress(d,l.tokenAuthority(),!0,u):J.getAssociatedTokenAddress(d.mint,l.tokenAuthority(),!0,d.tokenProgram)}n.custodyAccountAddress=Ae})(z||(z={}))});var Ya=Y(()=>{Co();Us();Ga()});var Eo,Bo=Y(()=>{Eo={version:"0.0.0",name:"wormhole_post_message_shim",instructions:[{name:"postMessage",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"message",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!0},{name:"sequence",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"nonce",type:"u32"},{name:"consistencyLevel",type:{defined:"finality"}},{name:"payload",type:"bytes"}]}],events:[{name:"messageEvent",fields:[{name:"emitter",type:"publicKey",index:!1},{name:"sequence",type:"u64",index:!1},{name:"submissionTime",type:"u32",index:!1}]}],types:[{name:"finality",type:{kind:"enum",variants:[{name:"confirmed"},{name:"finalized"}]}}]}});var Ro,Lo=Y(()=>{Ro={version:"0.0.0",name:"wormholeVerifyVaaShim",instructions:[{name:"closeSignatures",accounts:[{name:"guardianSignatures",isMut:!0,isSigner:!1},{name:"refundRecipient",isMut:!0,isSigner:!0}],args:[]},{name:"postSignatures",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"guardianSignatures",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"guardianSetIndex",type:"u32"},{name:"totalSignatures",type:"u8"},{name:"guardianSignatures",type:{vec:{array:["u8",66]}}}]},{name:"verifyHash",accounts:[{name:"guardianSet",isMut:!1,isSigner:!1},{name:"guardianSignatures",isMut:!1,isSigner:!1}],args:[{name:"guardianSetBump",type:"u8"},{name:"digest",type:{array:["u8",32]}}]}],accounts:[{name:"guardianSignatures",type:{kind:"struct",fields:[{name:"refundRecipient",type:"publicKey"},{name:"guardianSetIndexBe",type:{array:["u8",4]}},{name:"guardianSignatures",type:{vec:{array:["u8",66]}}}]}}]}});var Ja,Ue,E,Qa,Cn,Za,G,Tn,Pn,gs,ps,ei=Y(()=>{Ja=require("@coral-xyz/anchor"),Ue=Rn(require("@solana/spl-token"),1),E=require("@solana/web3.js"),Qa=require("@wormhole-foundation/sdk-base"),Cn=require("@wormhole-foundation/sdk-definitions"),Za=require("@wormhole-foundation/sdk-definitions-ntt"),G=require("@wormhole-foundation/sdk-solana"),Tn=require("@wormhole-foundation/sdk-solana-core"),Pn=Rn(require("bn.js"),1);Us();Ya();Ns();Bo();Lo();gs=class{manager;program;version;svmShims;programId;pdas;postMessageShim;verifyVaaShim;constructor(e,t,s="3.0.0",a=void 0){if(this.manager=e,this.program=t,this.version=s,this.svmShims=a,this.programId=t.programId,this.pdas=z.transceiverPdas(t.programId),a){let i=a.postMessageShimOverride??Za.Ntt.DEFAULT_SVM_SHIM_ADDRESSES[this.manager.chain]?.postMessageShim;if(!i)throw new Error("No default or override Wormhole Post Message Shim address provided");this.postMessageShim=new Ja.Program(Eo,i,{connection:this.program.provider.connection});let r=a.verifyVaaShimOverride??Za.Ntt.DEFAULT_SVM_SHIM_ADDRESSES[this.manager.chain]?.verifyVaaShim;if(!r)throw new Error("No default or override Wormhole Verify VAA Shim address provided");this.verifyVaaShim=new Ja.Program(Ro,r,{connection:this.program.provider.connection})}}async getPauser(){return null}async*setPauser(e,t){throw new Error("Method not implemented.")}async*receive(e,t){if(e.payloadName!=="WormholeTransfer")throw new Error("Invalid attestation payload");let s=new G.SolanaAddress(t).unwrap(),a=await this.createReceiveIx(e,s),i=new E.Transaction;i.feePayer=s,i.add(a),yield this.manager.createUnsignedTx({transaction:i},"Ntt.Redeem")}async createReceiveIx(e,t,s,a=!1){let i=e.payload.nttManagerPayload,r=e.emitterChain;if(this.verifyVaaShim){if(!s)throw new Error("guardianSignatures must be passed in if Wormhole Verify VAA Shim is used");let o=Buffer.alloc(4);o.writeUInt32BE(e.guardianSet);let[c,m]=E.PublicKey.findProgramAddressSync([Buffer.from("GuardianSet"),o],this.manager.core.coreBridge.programId);if(a){let g=new Pn.default(e.hash.subarray(-8));return this.program.methods.receiveWormholeMessageAccount(m,g).accounts({payer:t,config:{config:this.manager.pdas.configAccount()},peer:this.pdas.transceiverPeerAccount(r),message:this.pdas.unverifiedMessageAccount(t,g),transceiverMessage:this.pdas.transceiverMessageAccount(r,i.id),guardianSet:c,guardianSignatures:s,verifyVaaShim:this.verifyVaaShim.programId}).instruction()}else return this.program.methods.receiveWormholeMessageInstructionData(m,{span:ja((0,Cn.serialize)(e))}).accounts({payer:t,config:{config:this.manager.pdas.configAccount()},peer:this.pdas.transceiverPeerAccount(r),transceiverMessage:this.pdas.transceiverMessageAccount(r,i.id),guardianSet:c,guardianSignatures:s,verifyVaaShim:this.verifyVaaShim.programId}).instruction()}else return this.program.methods.receiveWormholeMessage().accounts({payer:t,config:{config:this.manager.pdas.configAccount()},peer:this.pdas.transceiverPeerAccount(r),vaa:Tn.utils.derivePostedVaaKey(this.manager.core.address,Buffer.from(e.hash)),transceiverMessage:this.pdas.transceiverMessageAccount(r,i.id)}).instruction()}async*postUnverifiedMessageAccount(e,t,s=500,a=2){if(s<=0||a<=0)throw new Error("Chunks and batches should be positive integers");let i=new Pn.default(e.hash.subarray(-8)),r=ja((0,Cn.serialize)(e)),o=r.length,c=[],m=0;for(;m<o;){let g=r.subarray(m,m+s);if(c.push(this.program.methods.postUnverifiedWormholeMessageAccount({seed:i,offset:m,chunk:g,messageSize:o}).accounts({payer:t,message:this.pdas.unverifiedMessageAccount(t,i)}).instruction()),c.length===a){let f=new E.Transaction;f.feePayer=t,f.add(...await Promise.all(c)),yield this.manager.createUnsignedTx({transaction:f},"Ntt.PostUnverifiedWormholeMessageAccount"),c.length=0}m+=s}if(c.length>0){let g=new E.Transaction;g.feePayer=t,g.add(...await Promise.all(c)),yield this.manager.createUnsignedTx({transaction:g},"Ntt.PostUnverifiedWormholeMessageAccount")}}async*closeUnverifiedMessageAccount(e,t){let s=new Pn.default(t.hash.subarray(-8)),a=await this.program.methods.closeUnverifiedWormholeMessageAccount(s).accounts({payer:e,message:this.pdas.unverifiedMessageAccount(e,s)}).instruction(),i=new E.Transaction;i.feePayer=e,i.add(a),yield this.manager.createUnsignedTx({transaction:i},"Ntt.CloseUnverifiedWormholeMessageAccount")}async getTransceiverType(e){let[t,,,]=rn(this.version);if(t<3)return"wormhole";let s=new G.SolanaAddress(e).unwrap(),a=await this.program.methods.transceiverType().accountsStrict({}).instruction(),i=await this.program.provider.connection.getLatestBlockhash(),r=new E.TransactionMessage({payerKey:s,recentBlockhash:i.blockhash,instructions:[a]}).compileToV0Message(),o=new E.VersionedTransaction(r),c=await this.program.provider.connection.simulateTransaction(o,{sigVerify:!1});if(c.value.returnData?.data[0]){let m=Buffer.from(c.value.returnData?.data[0],"base64"),g=m.readUInt32LE(0);return m.subarray(4,g+4).toString()}else throw new Error("no transceiver type found")}async getAddress(){return{chain:this.manager.chain,address:(0,Cn.toUniversal)(this.manager.chain,this.pdas.emitterAccount().toBase58())}}async*setPeer(e,t){let s=new G.SolanaAddress(t).unwrap(),a=await this.program.methods.setWormholePeer({chainId:{id:(0,Qa.toChainId)(e.chain)},address:Array.from(e.address.toUniversalAddress().toUint8Array())}).accounts({payer:s,owner:s,config:this.manager.pdas.configAccount(),peer:this.pdas.transceiverPeerAccount(e.chain)}).instruction(),i=this.postMessageShim?void 0:E.Keypair.generate(),r=await this.createBroadcastWormholePeerIx(e.chain,s,i?.publicKey),o=new E.Transaction;o.feePayer=s,o.add(a,r),yield this.manager.createUnsignedTx({transaction:o,signers:i?[i]:[]},"Ntt.SetWormholeTransceiverPeer")}async getPeer(e){let t=await this.manager.program.account.transceiverPeer.fetchNullable(this.pdas.transceiverPeerAccount(e));return t?{chain:e,address:(0,Cn.toUniversal)(e,new Uint8Array(t.address))}:null}async createBroadcastWormholeIdIx(e,t,s){if(!this.postMessageShim&&!s)throw new Error("wormholeMessage must be passed in if Wormhole Post Message Shim is not configured");let a=Tn.utils.getWormholeDerivedAccounts(this.program.programId,this.manager.core.address);return s=this.postMessageShim?this.pdas.wormholeMessageWithShimAccount(this.postMessageShim.programId):s,this.program.methods.broadcastWormholeId().accounts({payer:e,config:this.manager.pdas.configAccount(),mint:t.mint,wormholeMessage:s,emitter:a.wormholeEmitter,wormhole:{bridge:a.wormholeBridge,feeCollector:a.wormholeFeeCollector,sequence:a.wormholeSequence,program:this.manager.core.address,...this.postMessageShim&&{postMessageShim:this.postMessageShim.programId,wormholePostMessageShimEa:Z(["__event_authority"],this.postMessageShim.programId)}}}).instruction()}async createBroadcastWormholePeerIx(e,t,s){if(!this.postMessageShim&&!s)throw new Error("wormholeMessage must be passed in if Wormhole Post Message Shim is not configured");let a=Tn.utils.getWormholeDerivedAccounts(this.program.programId,this.manager.core.address);return s=this.postMessageShim?this.pdas.wormholeMessageWithShimAccount(this.postMessageShim.programId):s,this.program.methods.broadcastWormholePeer({chainId:(0,Qa.toChainId)(e)}).accounts({payer:t,config:this.manager.pdas.configAccount(),peer:this.pdas.transceiverPeerAccount(e),wormholeMessage:s,emitter:a.wormholeEmitter,wormhole:{bridge:a.wormholeBridge,feeCollector:a.wormholeFeeCollector,sequence:a.wormholeSequence,program:this.manager.core.address,...this.postMessageShim&&{postMessageShim:this.postMessageShim.programId,wormholePostMessageShimEa:Z(["__event_authority"],this.postMessageShim.programId)}}}).instruction()}async createReleaseWormholeOutboundIx(e,t,s){let[a,,,]=rn(this.version),i=Tn.utils.getWormholeDerivedAccounts(this.program.programId,this.manager.core.address),r=this.postMessageShim?this.pdas.wormholeMessageWithShimAccount(this.postMessageShim.programId):this.pdas.wormholeMessageAccount(t);return this.program.methods.releaseWormholeOutbound({revertOnDelay:s}).accounts({payer:e,config:{config:this.manager.pdas.configAccount()},outboxItem:t,wormholeMessage:r,emitter:i.wormholeEmitter,transceiver:this.manager.pdas.registeredTransceiver(this.program.programId),wormhole:{bridge:i.wormholeBridge,feeCollector:i.wormholeFeeCollector,sequence:i.wormholeSequence,program:this.manager.core.address,...this.postMessageShim&&{postMessageShim:this.postMessageShim.programId,wormholePostMessageShimEa:Z(["__event_authority"],this.postMessageShim.programId)}},...a>=3&&{manager:this.manager.program.programId,outboxItemSigner:this.pdas.outboxItemSigner()}}).instruction()}},ps=class n{network;chain;connection;contracts;version;core;pdas;program;config;addressLookupTable;transceivers;managerAddress;tokenAddress;constructor(e,t,s,a,i="3.0.0"){if(this.network=e,this.chain=t,this.connection=s,this.contracts=a,this.version=i,!a.ntt)throw new Error("Ntt contracts not found");this.program=us(s,a.ntt.manager,i),this.transceivers=[],"wormhole"in a.ntt.transceiver&&a.ntt.transceiver.wormhole&&["wormhole",...Object.keys(a.ntt.transceiver).filter(o=>o!=="wormhole")].map(o=>{if(o!=="wormhole")throw new Error(`Unsupported transceiver type: ${o}`);let c=new E.PublicKey(a.ntt.manager),m=new E.PublicKey(a.ntt.transceiver[o]);if(z.transceiverPdas(c).emitterAccount().equals(m)||c.equals(m)){let g=new gs(this,Ws(s,a.ntt.manager,i,!a.ntt.svmShims),i,a.ntt.svmShims);this.transceivers.push(g.program)}else this.transceivers.push(Ws(s,a.ntt.transceiver[o],i,!a.ntt.svmShims))}),this.managerAddress=a.ntt.manager,this.tokenAddress=a.ntt.token,this.core=new Tn.SolanaWormholeCore(e,t,s,a),this.pdas=z.pdas(this.program.programId)}async getTransceiver(e){let t=this.transceivers[e]??null;return t&&e===0?new gs(this,t,this.version,this.contracts.ntt.svmShims):null}async getWormholeTransceiver(){return this.getTransceiver(0)}async getMode(){return(await this.getConfig()).mode.locking!=null?"locking":"burning"}async isPaused(){return(await this.getConfig()).paused}async*pause(e){let t=new G.SolanaAddress(e).unwrap(),s=await z.createSetPausedInstruction(this.program,{owner:t,paused:!0}),a=new E.Transaction;a.feePayer=t,a.add(s),yield this.createUnsignedTx({transaction:a},"Ntt.Pause")}async*unpause(e){let t=new G.SolanaAddress(e).unwrap(),s=await z.createSetPausedInstruction(this.program,{owner:t,paused:!1}),a=new E.Transaction;a.feePayer=t,a.add(s),yield this.createUnsignedTx({transaction:a},"Ntt.Unpause")}async getThreshold(){return(await this.getConfig()).threshold}async*setThreshold(e,t){let s=new G.SolanaAddress(t).unwrap(),a=await this.createSetThresholdInstruction(s,e),i=new E.Transaction;i.feePayer=s,i.add(a),yield this.createUnsignedTx({transaction:i},"Ntt.SetThreshold")}async createSetThresholdInstruction(e,t){return await this.program.methods.setThreshold(t).accountsStrict({owner:e,config:this.pdas.configAccount()}).instruction()}async getOwner(){let e=await this.getConfig();return new G.SolanaAddress(e.owner)}async getPauser(){return null}async*setOwner(e,t){let s=new G.SolanaAddress(t).unwrap(),a=await z.createTransferOwnershipInstruction(this.program,{owner:new G.SolanaAddress(await this.getOwner()).unwrap(),newOwner:new G.SolanaAddress(e).unwrap()}),i=new E.Transaction;i.feePayer=s,i.add(a),yield this.createUnsignedTx({transaction:i},"Ntt.SetOwner")}async*setPauser(e,t){throw new Error("Pauser role not supported on Solana.")}async quoteDeliveryPrice(e,t){throw new Error("Relaying via the legacy NTT relayer is no longer supported; use the executor route.")}static async fromRpc(e,t){let[s,a]=await G.SolanaPlatform.chainFromRpc(e),i=t[a];if(i.network!==s)throw new Error(`Network mismatch: ${i.network} != ${s}`);if(!("ntt"in i.contracts))throw new Error("Ntt contracts not found");let r=i.contracts.ntt,o=await n.getVersion(e,i.contracts);return new n(s,a,e,{...i.contracts,ntt:r},o)}async getConfig(){return this.config=this.config??await z.getConfig(this.program,this.pdas),this.config}async getTokenDecimals(){let e=await this.getConfig();return await G.SolanaPlatform.getDecimals(this.network,this.chain,this.connection,e.mint)}async getPeer(e){let t=await this.program.account.nttManagerPeer.fetchNullable(this.pdas.peerAccount(e));return t?{address:{chain:e,address:(0,Cn.toUniversal)(e,new Uint8Array(t.address))},tokenDecimals:t.tokenDecimals,inboundLimit:await this.getInboundLimit(e)}:null}async getCustodyAddress(){return(await this.getConfig()).custody.toBase58()}static async getVersion(e,t,s){try{return await z.getVersion(e,new E.PublicKey(t.ntt.manager),s?new G.SolanaAddress(s).unwrap():void 0)}catch{return"3.0.0"}}async*initialize(e,t){let s=await this.connection.getAccountInfo(t.mint);if(s===null)throw new Error("Couldn't determine token program. Mint account is null.");let a=new G.SolanaAddress(e).unwrap(),i=await z.createInitializeInstruction(this.program,{...t,payer:a,owner:a,chain:this.chain,tokenProgram:s.owner,multisigTokenAuthority:t.multisigTokenAuthority},this.pdas),r=new E.Transaction;r.feePayer=a,r.add(i),yield this.createUnsignedTx({transaction:r},"Ntt.Initialize"),yield*this.initializeOrUpdateLUT({payer:a,owner:a})}async*initializeOrUpdateLUT(e){let t=await this.getConfig(),s=await this.getWormholeTransceiver();if(!s)throw new Error("Wormhole transceiver not found");let a=s.programId,i=await z.initializeOrUpdateLUT(this.program,t,a,{payer:e.payer,owner:e.owner,wormholeId:new E.PublicKey(this.core.address)});if(!i)return;let r=new E.Transaction().add(i);r.feePayer=e.payer,yield this.createUnsignedTx({transaction:r},"Ntt.InitializeLUT")}async*registerWormholeTransceiver(e){let t=new G.SolanaAddress(e.payer).unwrap(),s=new G.SolanaAddress(e.owner).unwrap(),a=await this.getConfig();if(a.paused)throw new Error("Contract is paused");let i=await this.createRegisterTransceiverIx(0,t,s),r=await this.getWormholeTransceiver(),o=r.postMessageShim?void 0:E.Keypair.generate(),c=await r.createBroadcastWormholeIdIx(t,a,o?.publicKey),m=new E.Transaction;m.feePayer=t,m.add(i,c),yield this.createUnsignedTx({transaction:m,signers:o?[o]:[]},"Ntt.RegisterTransceiver")}async createRegisterTransceiverIx(e,t,s){let a=await this.getTransceiver(e);if(!a)throw new Error("Transceiver not found");let i=a.programId;return this.program.methods.registerTransceiver().accountsStrict({payer:t,owner:s,config:this.pdas.configAccount(),transceiver:i,registeredTransceiver:this.pdas.registeredTransceiver(i),systemProgram:E.SystemProgram.programId}).instruction()}async createDeregisterTransceiverIx(e,t){let s=await this.getTransceiver(e);if(!s)throw new Error("Transceiver not found");let a=s.programId;return this.program.methods.deregisterTransceiver().accountsStrict({owner:t,config:this.pdas.configAccount(),registeredTransceiver:this.pdas.registeredTransceiver(a)}).instruction()}async*setWormholeTransceiverPeer(e,t){yield*this.setTransceiverPeer(0,e,t)}async*setTransceiverPeer(e,t,s){let a=await this.getTransceiver(e);if(!a)throw new Error("Transceiver not found");yield*a.setPeer(t,s)}async*setPeer(e,t,s,a){let i=new G.SolanaAddress(a).unwrap(),r=await z.createSetPeerInstruction(this.program,{payer:i,owner:i,chain:e.chain,address:e.address.toUniversalAddress().toUint8Array(),limit:new Pn.default(s.toString()),tokenDecimals:t}),o=new E.Transaction;o.feePayer=i,o.add(r),yield this.createUnsignedTx({transaction:o},"Ntt.SetPeer")}async*transfer(e,t,s,a,i){let r=await this.getConfig();if(r.paused)throw new Error("Contract is paused");if(a.automatic)throw new Error("Automatic relayer transfers are no longer supported; use the executor route.");i=i??E.Keypair.generate();let o=new G.SolanaAddress(e).unwrap(),c=o,m=await this.getTokenAccount(c);if(a.wrapNative){if(this.tokenAddress!==Ue.NATIVE_MINT.toBase58())throw new Error("Configured token must be native mint for wrapping");let M=Ue.getAssociatedTokenAddressSync(Ue.NATIVE_MINT,o),N=[...await this.connection.getAccountInfo(M)?[]:[Ue.createAssociatedTokenAccountInstruction(o,M,o,Ue.NATIVE_MINT)],E.SystemProgram.transfer({fromPubkey:o,toPubkey:M,lamports:t}),Ue.createSyncNativeInstruction(M)],{blockhash:I}=await this.connection.getLatestBlockhash(),$=new E.TransactionMessage({payerKey:o,instructions:N,recentBlockhash:I}).compileToV0Message(),Ke=new E.VersionedTransaction($);yield this.createUnsignedTx({transaction:Ke},"Ntt.WrapNative")}let g=z.transferArgs(t,s,a.queue),f={transferArgs:g,payer:o,from:m,fromAuthority:c,outboxItem:i.publicKey},y=Ue.createApproveInstruction(m,this.pdas.sessionAuthority(c,g),c,t,[],r.tokenProgram),A=[],x=r.mode.locking!=null?z.createTransferLockInstruction(this.program,r,f,this.pdas):z.createTransferBurnInstruction(this.program,r,f,this.pdas);A.push(x);for(let M=0;M<this.transceivers.length;++M)if(M===0){let H=await this.getWormholeTransceiver();if(!H)throw new Error("Wormhole transceiver not found");let N=H.createReleaseWormholeOutboundIx(o,i.publicKey,!a.queue);A.push(N)}let S=new E.Transaction;S.feePayer=o,S.add(y,...await Promise.all(A));let B=[];try{B.push(await this.getAddressLookupTable())}catch{}let k=new E.TransactionMessage({payerKey:o,instructions:S.instructions,recentBlockhash:(await this.connection.getLatestBlockhash()).blockhash}).compileToV0Message(B),F=new E.VersionedTransaction(k);yield this.createUnsignedTx({transaction:F,signers:[i]},"Ntt.Transfer")}async getTokenAccount(e){let t=await this.getConfig();return await Ue.getAssociatedTokenAddress(t.mint,e,!0,t.tokenProgram)}async*createAta(e){let t=await this.getConfig(),s=new G.SolanaAddress(e).unwrap(),a=await this.getTokenAccount(s);if(await this.connection.getAccountInfo(a)===null){let r=new E.Transaction().add(Ue.createAssociatedTokenAccountInstruction(s,a,s,t.mint,t.tokenProgram));r.feePayer=s,yield this.createUnsignedTx({transaction:r},"Redeem.CreateATA")}}async*redeem(e,t){let s=await this.getConfig();if(s.paused)throw new Error("Contract is paused");if(e.length!==this.transceivers.length)throw new Error("Not enough attestations provided");for(let{attestation:a,ix:i}of e.map((r,o)=>({attestation:r,ix:o})))if(i===0){let r=a;if(r.payloadName!=="WormholeTransfer")throw new Error("Invalid attestation payload");let o=await this.getWormholeTransceiver();if(!o)throw new Error("Wormhole transceiver not found");yield*this.createAta(t);let c=new G.SolanaAddress(t).unwrap(),m=[];if(o.verifyVaaShim){let M=E.Keypair.generate(),H=await o.verifyVaaShim.methods.postSignatures(r.guardianSet,r.signatures.length,r.signatures.map($=>[$.guardianIndex,...$.signature.encode()])).accounts({payer:c,guardianSignatures:M.publicKey}).instruction(),N=new E.Transaction;N.feePayer=c,N.add(H),yield this.createUnsignedTx({transaction:N,signers:[M]},"VerifyVAAShim.PostSignature"),m.push(o.createReceiveIx(r,c,M.publicKey,!1)),m.push(o.verifyVaaShim.methods.closeSignatures().accounts({guardianSignatures:M.publicKey,refundRecipient:c}).instruction())}else yield*this.core.postVaa(t,r),m.push(o.createReceiveIx(r,c));let g=z.createRedeemInstruction(this.program,s,o.program.programId,{payer:c,vaa:r}),f=r.payload.nttManagerPayload,y=r.emitterChain,A={payer:c,config:s,nttMessage:f,recipient:new E.PublicKey(f.payload.recipientAddress.toUint8Array()),chain:y,revertWhenNotReady:!1},x=s.mode.locking!=null?z.createReleaseInboundUnlockInstruction(this.program,s,{...A}):z.createReleaseInboundMintInstruction(this.program,s,{...A}),S=new E.Transaction;S.feePayer=c,S.add(...await Promise.all([...m,g,x]));let B=[];try{B.push(await this.getAddressLookupTable())}catch{}let k=new E.TransactionMessage({payerKey:c,instructions:S.instructions,recentBlockhash:(await this.connection.getLatestBlockhash()).blockhash}).compileToV0Message(B),F=new E.VersionedTransaction(k);yield this.createUnsignedTx({transaction:F},"Ntt.Redeem")}}async getCurrentOutboundCapacity(){let e=await this.program.account.outboxRateLimit.fetch(this.pdas.outboxRateLimitAccount());return BigInt(e.rateLimit.capacityAtLastTx.toString())}async getOutboundLimit(){let e=await this.program.account.outboxRateLimit.fetch(this.pdas.outboxRateLimitAccount());return BigInt(e.rateLimit.limit.toString())}async*setOutboundLimit(e,t){let s=new G.SolanaAddress(t).unwrap(),a=await z.createSetOutboundLimitInstruction(this.program,{owner:s,limit:new Pn.default(e.toString())}),i=new E.Transaction;i.feePayer=s,i.add(a),yield this.createUnsignedTx({transaction:i},"Ntt.SetOutboundLimit")}async getCurrentInboundCapacity(e){let t=await this.program.account.inboxRateLimit.fetch(this.pdas.inboxRateLimitAccount(e));return BigInt(t.rateLimit.capacityAtLastTx.toString())}async getRateLimitDuration(){return BigInt(1440*60)}async getInboundLimit(e){let t=await this.program.account.inboxRateLimit.fetch(this.pdas.inboxRateLimitAccount(e));return BigInt(t.rateLimit.limit.toString())}async*setInboundLimit(e,t,s){let a=new G.SolanaAddress(s).unwrap(),i=await z.createSetInboundLimitInstruction(this.program,{owner:a,chain:e,limit:new Pn.default(t.toString())}),r=new E.Transaction;r.feePayer=a,r.add(i),yield this.createUnsignedTx({transaction:r},"Ntt.SetInboundLimit")}async getIsExecuted(e){if(e.payloadName!=="WormholeTransfer")return!1;let t=e.payload.nttManagerPayload,s;try{s=await this.program.account.inboxItem.fetch(this.pdas.inboxItemAccount(e.emitterChain,t))}catch(a){if(a.message?.includes("Account does not exist"))return!1;throw a}return!!s.releaseStatus.released}async getIsTransferInboundQueued(e){if(e.payloadName!=="WormholeTransfer")return!1;let t=e.payload.nttManagerPayload,s;try{s=await this.program.account.inboxItem.fetch(this.pdas.inboxItemAccount(e.emitterChain,t))}catch(a){if(a.message?.includes("Account does not exist"))return!1;throw a}return!!s.releaseStatus.releaseAfter}async getIsApproved(e){if(e.payloadName!=="WormholeTransfer")throw new Error(`Invalid payload: ${e.payloadName}`);let t=e.payload.nttManagerPayload;try{return(await this.program.account.inboxItem.fetch(this.pdas.inboxItemAccount(e.emitterChain,t))).init}catch(s){if(s.message?.includes("Account does not exist"))return!1;throw s}}async*completeInboundQueuedTransfer(e,t,s){let a=await this.getConfig();if(a.paused)throw new Error("Contract is paused");let i=new G.SolanaAddress(s).unwrap(),r=new E.Transaction;r.feePayer=i;let o={payer:i,config:a,nttMessage:t,recipient:new E.PublicKey(t.payload.recipientAddress.toUint8Array()),chain:e,revertWhenNotReady:!1};r.add(await(a.mode.locking!=null?z.createReleaseInboundUnlockInstruction(this.program,a,o):z.createReleaseInboundMintInstruction(this.program,a,o))),yield this.createUnsignedTx({transaction:r},"Ntt.CompleteInboundTransfer")}async getInboundQueuedTransfer(e,t){let s;try{s=await this.program.account.inboxItem.fetch(this.pdas.inboxItemAccount(e,t))}catch(a){if(a.message?.includes("Account does not exist"))return null;throw a}if(s.releaseStatus.releaseAfter){let{recipientAddress:a,amount:i,releaseStatus:r}=s,o=r.releaseAfter[0].toNumber();return{recipient:new G.SolanaAddress(a),amount:BigInt(i.toString()),rateLimitExpiryTimestamp:o}}return null}async verifyAddresses(){let e=await this.getWormholeTransceiver(),t={manager:this.managerAddress,token:this.tokenAddress,transceiver:{...e&&{wormhole:e.pdas.emitterAccount().toBase58()}}},s={manager:this.program.programId.toBase58(),token:(await this.getConfig()).mint.toBase58(),transceiver:{wormhole:z.transceiverPdas(this.program.programId).emitterAccount().toBase58()}},a=(i,r)=>{for(let o in i)typeof i[o]=="object"?(a(i[o],r[o]),Object.keys(i[o]).length===0&&delete i[o]):i[o]===r[o]&&delete i[o]};return a(s,t),Object.keys(s).length>0?s:null}async getAddressLookupTable(e=!0){if(!e||!this.addressLookupTable){let t=await z.getAddressLookupTable(this.program,this.pdas);t&&(this.addressLookupTable=t)}if(!this.addressLookupTable)throw new Error("Address lookup table not found. Did you forget to call initializeLUT?");return this.addressLookupTable}createUnsignedTx(e,t,s=!1){return new G.SolanaUnsignedTransaction(e,this.network,this.chain,t,s)}}});var _o,Do=Y(()=>{_o={version:"0.1.0",name:"example_ntt_svm_lut",instructions:[{name:"initializeLut",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"nttProgramId",isMut:!1,isSigner:!1},{name:"nttConfig",isMut:!1,isSigner:!1},{name:"authority",isMut:!1,isSigner:!1},{name:"lutAddress",isMut:!0,isSigner:!1},{name:"lut",isMut:!0,isSigner:!1},{name:"lutProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"recentSlot",type:"u64"}]}],accounts:[{name:"LUT",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:"publicKey"}]}}]}});var Fo,Xo=Y(()=>{Fo={version:"0.1.0",name:"example_ntt_with_executor",instructions:[{name:"relayNttMesage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"payee",isMut:!0,isSigner:!1},{name:"nttProgramId",isMut:!1,isSigner:!1},{name:"nttPeer",isMut:!1,isSigner:!1},{name:"nttMessage",isMut:!1,isSigner:!1},{name:"executorProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"relayNttMessageArgs"}}]}],types:[{name:"relayNttMessageArgs",type:{kind:"struct",fields:[{name:"recipientChain",type:"u16"},{name:"execAmount",type:"u64"},{name:"signedQuoteBytes",type:"bytes"},{name:"relayInstructions",type:"bytes"}]}}]}});var ti,Bt,q,Vo,hs,qs,ys,ni=Y(()=>{ti=require("@coral-xyz/anchor"),Bt=require("@solana/spl-token"),q=require("@solana/web3.js"),Vo=require("@wormhole-foundation/sdk-base"),hs=require("@wormhole-foundation/sdk-solana"),qs=Rn(require("bn.js"),1);Do();Xo();Ns();ys=class n{network;chain;connection;contracts;nttWithExecutorProgramId;nttLutProgramId;executorProgramId;constructor(e,t,s,a){this.network=e,this.chain=t,this.connection=s,this.contracts=a,this.nttWithExecutorProgramId=new q.PublicKey("nex1gkSWtRBheEJuQZMqHhbMG5A45qPU76KqnCZNVHR"),this.nttLutProgramId=new q.PublicKey("1uteB5DZdNfns9B12rgGf5msKh1d7FbbkvciWmhsZiC"),this.executorProgramId=new q.PublicKey("execXUrAsMnqMmTHj5m7N1YQgsDz3cwGLYCYyuDRciV")}static async fromRpc(e,t){let[s,a]=await hs.SolanaPlatform.chainFromRpc(e),i=t[a];if(i.network!==s)throw new Error(`Network mismatch: ${i.network} != ${s}`);return new n(s,a,e,i.contracts)}async*transfer(e,t,s,a,i,r=!1){let o=new hs.SolanaAddress(e).unwrap(),c={queue:!1,automatic:!1,wrapNative:r},m=q.Keypair.generate(),g=i.transfer(e,a.remainingAmount,t,c,m);for await(let f of g)if(f.description==="Ntt.Transfer"){let y=[];try{y.push(await i.getAddressLookupTable())}catch(k){console.debug(k)}let A=q.TransactionMessage.decompile(f.transaction.transaction.message,{addressLookupTableAccounts:y});if(a.transferTokenFee>0n){let k=new q.PublicKey(a.referrer.address.toString()),{mint:F,tokenProgram:M}=await i.getConfig(),H=(0,Bt.getAssociatedTokenAddressSync)(F,k,!0,M),N=(0,Bt.getAssociatedTokenAddressSync)(F,o,!0,M);await this.connection.getAccountInfo(H)||A.instructions.push((0,Bt.createAssociatedTokenAccountIdempotentInstruction)(o,H,k,F,M));let $=await(0,Bt.getMint)(this.connection,F,void 0,M);A.instructions.push((0,Bt.createTransferCheckedInstruction)(N,F,H,o,a.transferTokenFee,$.decimals,void 0,M))}if(a.nativeTokenFee>0n){let k=new q.PublicKey(a.referrer.address.toString());A.instructions.push(q.SystemProgram.transfer({fromPubkey:o,toPubkey:k,lamports:a.nativeTokenFee}))}let x=new ti.Program(Fo,this.nttWithExecutorProgramId,{connection:this.connection}),S=new q.PublicKey(this.contracts.ntt.manager),B=q.PublicKey.findProgramAddressSync([Buffer.from("peer"),on(t.chain)],S)[0];if(A.instructions.push(await x.methods.relayNttMesage({execAmount:new qs.default(a.estimatedCost.toString()),recipientChain:(0,Vo.toChainId)(t.chain),signedQuoteBytes:Buffer.from(a.signedQuote),relayInstructions:Buffer.from(a.relayInstructions)}).accounts({payer:o,payee:new q.PublicKey(a.payeeAddress),nttProgramId:S,nttPeer:B,nttMessage:m.publicKey,executorProgram:this.executorProgramId}).instruction()),y.length===0){console.debug("no manager lookup table found, checking helper program");let k=new ti.Program(_o,this.nttLutProgramId,{connection:this.connection}),F=q.PublicKey.findProgramAddressSync([Buffer.from("lut"),S.toBuffer()],k.programId)[0],M=await k.account.lut.fetchNullable(F);if(!M){console.debug("no helper program lookup table found, initializing...");let[N]=await q.PublicKey.findProgramAddressSync([Buffer.from("config")],S),[I]=await q.PublicKey.findProgramAddressSync([Buffer.from("lut_authority")],k.programId),$=await this.connection.getSlot("finalized")-10,[Ke]=await q.PublicKey.findProgramAddressSync([I.toBuffer(),new qs.default($).toArrayLike(Buffer,"le",8)],q.AddressLookupTableProgram.programId),[Je]=await q.PublicKey.findProgramAddressSync([Buffer.from("lut"),S.toBuffer()],k.programId),Lt=await k.methods.initializeLut(new qs.default($)).accounts({nttProgramId:S,nttConfig:N,authority:I,lutAddress:Ke,lut:Je,lutProgram:q.AddressLookupTableProgram.programId,systemProgram:q.SystemProgram.programId,payer:o}).instruction(),Nt=new q.TransactionMessage({payerKey:o,recentBlockhash:(await this.connection.getLatestBlockhash("finalized")).blockhash,instructions:[Lt]}).compileToV0Message();yield i.createUnsignedTx({transaction:new q.VersionedTransaction(Nt)},"NttSvmLut.InitializeLut"),console.debug(`initialized lookup table: ${f}`);let Ae=0;for(;!M&&Ae<10;)await new Promise(l=>setTimeout(l,2e3)),M=await k.account.lut.fetchNullable(F),Ae++}let H=await this.connection.getAddressLookupTable(M.address);if(!H.value)throw new Error("unable to fetch lookup table");y.push(H.value)}f.transaction.transaction.message=A.compileToV0Message(y),yield f}else yield f}static associatedTokenAccountMinRent=void 0;async estimateMsgValueAndGasLimit(e){let t=0n;if(t+=2n*5000n+7n*5000n+1400000n,t+=2n*5000n+7n*5000n,t+=5000n+3200000n,t+=5000n+5000000n,t+=5000n,e){let s=new q.PublicKey(e.address.toString()),a=new hs.SolanaAddress(this.contracts.ntt.token).unwrap(),i=await this.connection.getAccountInfo(a);if(i===null)throw new Error("Couldn't determine token program. Mint account is null.");let r=(0,Bt.getAssociatedTokenAddressSync)(a,s,!0,i.owner);await this.connection.getAccountInfo(r)===null&&(n.associatedTokenAccountMinRent||(n.associatedTokenAccountMinRent=BigInt(await this.connection.getMinimumBalanceForRentExemption(165))),t+=n.associatedTokenAccountMinRent)}return{msgValue:t,gasLimit:250000n}}}});var Oo=Y(()=>{"use strict";(()=>{let n=console.info;console.info=function(t,...s){t!=="secp256k1 unavailable, reverting to browser version"&&n.call(console,t,...s)};let e=console.warn;console.warn=function(t,...s){t!=="bigint: Failed to load bindings, pure JS will be used (try npm run rebuild?)"&&e.call(console,t,...s)}})()});function Fm(){(0,Ho.register)(),(0,Zn.protocolIsRegistered)(bs._platform,"Ntt")||(0,Zn.registerProtocol)(bs._platform,"Ntt",ps),(0,Zn.protocolIsRegistered)(bs._platform,"NttWithExecutor")||(0,Zn.registerProtocol)(bs._platform,"NttWithExecutor",ys)}var Zn,bs,Ho,Wo=Y(()=>{Zn=require("@wormhole-foundation/sdk-definitions"),bs=require("@wormhole-foundation/sdk-solana");ei();ni();Ho=require("@wormhole-foundation/sdk-definitions-ntt");Oo();ei();ni()});var Uo={};pn(Uo,{IdlVersions:()=>Hs,NTT:()=>z,SolanaNtt:()=>ps,SolanaNttWithExecutor:()=>ys,SolanaNttWormholeTransceiver:()=>gs,_1_0_0:()=>os,_2_0_0:()=>cs,_3_0_0:()=>ms,getNttProgram:()=>us,getTransceiverProgram:()=>Ws,register:()=>Fm});var No=Y(()=>{Wo();Ya()});var Hu={};pn(Hu,{HydrationConfigService:()=>pa,assetsMap:()=>bi,builders:()=>ai,chainsMap:()=>Ri,clients:()=>Na,dex:()=>hi,routesMap:()=>xc,tags:()=>ii,validations:()=>Sc});module.exports=Dc(Hu);var T=require("@galacticcouncil/xc-core"),Ce=new T.Asset({key:"aave",originSymbol:"AAVE"}),ha=new T.Asset({key:"ajun",originSymbol:"AJUN"}),Ee=new T.Asset({key:"apyusd",originSymbol:"apyUSD"}),j=new T.Asset({key:"astr",originSymbol:"ASTR"}),K=new T.Asset({key:"bnc",originSymbol:"BNC"}),ya=new T.Asset({key:"bsx",originSymbol:"BSX"}),Be=new T.Asset({key:"cfg_new",originSymbol:"CFG"}),ba=new T.Asset({key:"cru",originSymbol:"CRU"}),_t=new T.Asset({key:"dai",originSymbol:"DAI"}),Kt=new T.Asset({..._t,key:"dai_wh"}),C=new T.Asset({key:"dot",originSymbol:"DOT"}),U=new T.Asset({key:"eth",originSymbol:"ETH"}),Re=new T.Asset({key:"ena",originSymbol:"ENA"}),Tt=new T.Asset({key:"eurc",originSymbol:"EURC"}),Dt=new T.Asset({...Tt,key:"eurc_wh"}),ct=new T.Asset({key:"glmr",originSymbol:"GLMR"}),Ln=new T.Asset({key:"hdx",originSymbol:"HDX"}),ae=new T.Asset({key:"ibtc",originSymbol:"IBTC"}),et=new T.Asset({key:"intr",originSymbol:"INTR"}),mt=new T.Asset({key:"jitoSol",originSymbol:"jitoSOL"}),D=new T.Asset({key:"ksm",originSymbol:"KSM"}),Le=new T.Asset({key:"ldo",originSymbol:"LDO"}),_e=new T.Asset({key:"lbtc",originSymbol:"LBTC"}),ze=new T.Asset({key:"ewt",originSymbol:"EWT"}),De=new T.Asset({key:"link",originSymbol:"LINK"}),te=new T.Asset({key:"myth",originSymbol:"MYTH"}),ht=new T.Asset({key:"neuro",originSymbol:"NEURO"}),tt=new T.Asset({key:"pen",originSymbol:"PEN"}),Fe=new T.Asset({key:"paxg",originSymbol:"PAXG"}),ut=new T.Asset({key:"prime",originSymbol:"PRIME"}),Xe=new T.Asset({key:"sky",originSymbol:"SKY"}),je=new T.Asset({key:"sol",originSymbol:"SOL"}),nt=new T.Asset({key:"sui",originSymbol:"SUI"}),Ve=new T.Asset({key:"susde",originSymbol:"sUSDe"}),yt=new T.Asset({key:"susds",originSymbol:"sUSDS"}),Gt=new T.Asset({...yt,key:"susds_wh"}),Oe=new T.Asset({key:"tbtc",originSymbol:"tBTC"}),He=new T.Asset({key:"trac",originSymbol:"TRAC"}),bt=new T.Asset({key:"unq",originSymbol:"UNQ"}),P=new T.Asset({key:"usdt",originSymbol:"USDT"}),qt=new T.Asset({...P,key:"usdt_wh"}),Ft=new T.Asset({...P,key:"usdt_eth"}),R=new T.Asset({key:"usdc",originSymbol:"USDC"}),zt=new T.Asset({...R,key:"usdc_wh"}),Xt=new T.Asset({...R,key:"usdc_eth"}),de=new T.Asset({key:"vastr",originSymbol:"vASTR"}),le=new T.Asset({key:"vdot",originSymbol:"vDOT"}),Vt=new T.Asset({key:"weth",originSymbol:"WETH"}),Ot=new T.Asset({...Vt,key:"weth_wh"}),At=new T.Asset({key:"wbtc",originSymbol:"WBTC"}),jt=new T.Asset({...At,key:"wbtc_wh"}),We=new T.Asset({key:"wsteth",originSymbol:"wstETH"}),Ht=new T.Asset({key:"wud",originSymbol:"WUD"}),Fc=[Ce,ha,Ee,j,ya,Be,ba,K,_t,Kt,C,Re,Tt,Dt,U,ct,Ln,ae,et,D,Le,_e,ze,mt,De,te,ht,Fe,tt,ut,Xe,je,nt,Ve,yt,Gt,He,Oe,bt,R,zt,Xt,P,qt,Ft,de,le,At,jt,Vt,Ot,We,Ht],bi=new Map(Fc.map(n=>[n.key,n]));var _n=require("@galacticcouncil/xc-core");var Ai=require("viem/chains"),Dn=new _n.EvmChain({id:8453,key:"base",name:"Base",assetsData:[{asset:U,decimals:18,id:"0x4200000000000000000000000000000000000006"},{asset:Tt,decimals:6,id:"0x60a3e35cc302bfa44cb288bc5a4f316fdb1adb42"},{asset:R,decimals:6,id:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}],balance:_n.EvmBalanceType.Erc20,ecosystem:_n.ChainEcosystem.Ethereum,evmChain:Ai.base,explorer:"https://basescan.org/",rpcs:["https://stylish-quick-firefly.base-mainnet.quiknode.pro/"],basejump:{address:"0xf5b9334e44f800382cb47fc19669401d694e529b"},wormhole:{id:30,coreBridge:"0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6",executor:"0x9E1936E91A4a5AE5A5F75fFc472D6cb8e93597ea",ntt:{[Tt.key]:{token:"0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42",manager:"0xD1dc3517732c98502b5c1ba2389AcA9E9016d89a",transceiver:{wormhole:"0xa84b362290b0CFdB55e877dfc633284091e0B3F7"}}}}});var hn=require("@galacticcouncil/xc-core");var wi=require("viem/chains"),L=new hn.EvmChain({id:1,key:"ethereum",name:"Ethereum",assetsData:[{asset:U,decimals:18,id:"0x0000000000000000000000000000000000000000"},{asset:Ce,decimals:18,id:"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"},{asset:Ee,decimals:18,id:"0x38eeb52f0771140d10c4e9a9a72349a329fe8a6a"},{asset:Be,decimals:18,id:"0xcccccccccc33d538dbc2ee4feab0a7a1ff4e8a94"},{asset:Vt,decimals:18,id:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"},{asset:_t,decimals:18,id:"0x6B175474E89094C44Da98b954EedeAC495271d0F"},{asset:Re,decimals:18,id:"0x57e114b691db790c35207b2e685d4a43181e6061"},{asset:Ve,decimals:18,id:"0x9d39a5de30e57443bff2a8307a4256c8797a3497"},{asset:yt,decimals:18,id:"0xa3931d71877c0e7a3148cb7eb4463524fec27fbd"},{asset:Oe,decimals:18,id:"0x18084fba666a33d37592fa2633fd49a74dd93a88"},{asset:At,decimals:8,id:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"},{asset:_e,decimals:8,id:"0x8236a87084f8b84306f72007f36f2618a5634494"},{asset:R,decimals:6,id:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"},{asset:P,decimals:6,id:"0xdAC17F958D2ee523a2206206994597C13D831ec7"},{asset:Le,decimals:18,id:"0x5a98fcbea516cf06857215779fd812ca3bef1b32"},{asset:De,decimals:18,id:"0x514910771af9ca656af840dff83e8264ecf986ca"},{asset:Fe,decimals:18,id:"0x45804880de22913dafe09f4980848ece6ecbaf78"},{asset:Xe,decimals:18,id:"0x56072c95faa701256059aa122697b133aded9279"},{asset:He,decimals:18,id:"0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F"},{asset:We,decimals:18,id:"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"}],balance:hn.EvmBalanceType.Erc20,balanceOverrides:{[U.key]:hn.EvmBalanceType.Native},ecosystem:hn.ChainEcosystem.Ethereum,evmChain:wi.mainnet,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",ntt:{[_t.key]:{token:"0x6B175474E89094C44Da98b954EedeAC495271d0F",manager:"0x804F123f75cCa0A9c0Cba341F82f4A4DA86a5259",transceiver:{wormhole:"0x99673a01C5779Ebf59399B4B228c1825c0113571"}},[yt.key]:{token:"0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD",manager:"0x5085A4863f89eC9553F70187EE73B5aAe0fd14b5",transceiver:{wormhole:"0x7C236d237BEbBE1b7902131B31b7b3270005a810"}},[R.key]:{token:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",manager:"0x447b2c7485A3d6813F8197E605b10BcCD8dd8398",transceiver:{wormhole:"0xA108BD5dBc6CE665aEbB6895351e0609c76F8EFc"}},[P.key]:{token:"0xdAC17F958D2ee523a2206206994597C13D831ec7",manager:"0x9fbd9F16cE7Fa17097E91cc36DC1B7b47aDCa9De",transceiver:{wormhole:"0x45c566f6595CF93e639E77cc1bbE57A8D27901c2"}},[At.key]:{token:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",manager:"0x081b76AC3cFb65DCe93961d66cea44A74EC8Ef28",transceiver:{wormhole:"0x3FE8fBB8505c8dB2264f6Ebc5559c7C2b2647218"}},[Vt.key]:{token:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",manager:"0x283B14B5Dd352e32154Df014EA96834F395E04b6",transceiver:{wormhole:"0xbA0Cd32131b8206AF4feB79A1A3aaF0AEfe18b48"}},[U.key]:{token:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",manager:"0x283B14B5Dd352e32154Df014EA96834F395E04b6",transceiver:{wormhole:"0xbA0Cd32131b8206AF4feB79A1A3aaF0AEfe18b48"}}}}});var xi=[Dn,L];var dt=require("@galacticcouncil/xc-core");var Si={assetsData:[{asset:C,decimals:10,id:0,xcmLocation:{parents:1,interior:"Here"}},{asset:P,decimals:6,id:1984,min:.7,xcmLocation:{parents:0,interior:{X2:[{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:R,decimals:6,id:1337,min:.7,xcmLocation:{parents:0,interior:{X2:[{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:Ht,decimals:10,id:31337,xcmLocation:{parents:0,interior:{X2:[{PalletInstance:50},{GeneralIndex:31337}]}}},{asset:te,decimals:18,min:3e-8,xcmLocation:{parents:1,interior:{X1:[{Parachain:3369}]}}},{asset:D,decimals:12,min:1e-4,xcmLocation:{parents:2,interior:{X1:[{GlobalConsensus:"Kusama"}]}}}],balance:dt.SubstrateBalanceType.Assets,balanceOverrides:{[C.key]:dt.SubstrateBalanceType.System,[D.key]:dt.SubstrateBalanceType.ForeignAssets,[te.key]:dt.SubstrateBalanceType.ForeignAssets},min:dt.SubstrateMinType.Assets,ecosystem:dt.ChainEcosystem.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"]},X=new dt.Parachain({...Si,key:"assethub",name:"AssetHub Polkadot"}),$t=new dt.Parachain({...Si,key:"assethub_cex",name:"AssetHub (CEX)",usesSignerFee:!0,isTestChain:!0,balanceOverrides:{}});var yn=require("@galacticcouncil/xc-core");var xe=new yn.Parachain({assetsData:[{asset:j,xcmLocation:{parents:0,interior:"Here"}},{asset:C,id:"340282366920938463463374607431768211455",decimals:10,min:1e-4,xcmLocation:{parents:1,interior:"Here"}},{asset:P,id:"4294969280",decimals:6,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:R,id:"4294969281",decimals:6,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:K,id:"18446744073709551623",decimals:12,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:ct,id:"18446744073709551619",decimals:18,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:ae,id:"18446744073709551620",decimals:8,min:1e-6,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:et,id:"18446744073709551621",decimals:10,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0002000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:le,id:"18446744073709551624",decimals:10,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:de,id:"18446744073709551632",decimals:18,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}}],balance:yn.SubstrateBalanceType.Assets,balanceOverrides:{[j.key]:yn.SubstrateBalanceType.System},ecosystem:yn.ChainEcosystem.Polkadot,explorer:"https://astar.subscan.io",genesisHash:"0x9eb76c5184c4ab8679d2d5d819fdf90b9c001403e9e17da2e14b6d8aec4029c6",key:"astar",name:"Astar",parachainId:2006,ss58Format:5,ws:"wss://rpc.astar.network"});var bn=require("@galacticcouncil/xc-core");var Xc=["wss://bifrost-polkadot.ibp.network","wss://eu.bifrost-polkadot-rpc.liebi.com/ws","wss://bifrost-polkadot.dotters.network"],ne=new bn.Parachain({assetsData:[{asset:K,id:{Native:K.originSymbol},xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:le,id:{VToken2:0},decimals:10,min:1e-4,xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:de,id:{VToken2:3},decimals:18,min:.01,xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:C,id:{Token2:0},decimals:10,min:1e-4,xcmLocation:{parents:1,interior:"Here"}},{asset:P,id:{Token2:2},decimals:6,min:.001,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:R,id:{Token2:5},decimals:6,min:.001,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:j,id:{Token2:3},decimals:18,min:.01,xcmLocation:{parents:1,interior:{X1:{Parachain:2006}}}},{asset:ct,id:{Token2:1},decimals:18,min:1e-5,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:ae,id:{Token2:6},decimals:8,min:1e-6,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}}],balance:bn.SubstrateBalanceType.Tokens,balanceOverrides:{[K.key]:bn.SubstrateBalanceType.System},ecosystem:bn.ChainEcosystem.Polkadot,explorer:"https://bifrost.subscan.io",genesisHash:"0x262e1b2ad728475fd6fe88e62d34c200abe6fd693931ddad144059b1eb884e5b",key:"bifrost",name:"Bifrost",parachainId:2030,ss58Format:6,ws:Xc});var An=require("@galacticcouncil/xc-core"),Ii=require("viem");var vi=require("@galacticcouncil/common"),Mi=require("polkadot-api"),{isEvmAccount:Vc,H160:ki}=vi.h160,Ts=class{async toH160(e,t){if(Vc(e))return ki.fromAccount(e);let s=ki.fromSS58(e);if(t&&await this.isBound(t,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,t,s){let i=await e.getUnsafeApi().query.EVMAccounts.AccountExtension.getValue(t);if(!i)return!1;let r=(0,Mi.AccountId)().enc(s),o=this.asBytes(i);return Buffer.from(o).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 Oc=new Ts,Aa=["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"],wa=["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"],Hc=(0,Ii.defineChain)({id:222222,name:"Hydration",network:"hydration",nativeCurrency:{decimals:18,name:"WETH",symbol:"WETH"},rpcUrls:{public:{http:Aa,webSocket:wa},default:{http:Aa,webSocket:wa}},blockExplorers:{default:{name:"Hydration Explorer",url:"https://hydration.subscan.io"}},testnet:!1}),v=new An.EvmParachain({assetsData:[{asset:Ln,id:0,xcmLocation:{parents:0,interior:{X1:[{GeneralIndex:0}]}}},{asset:Ce,decimals:18,id:1000624,min:6e-5,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"}}]}}},{asset:ha,decimals:12,id:32,min:.11,xcmLocation:{parents:1,interior:{X2:[{Parachain:2051},{GeneralKey:{length:4,data:"0x414a554e00000000000000000000000000000000000000000000000000000000"}}]}}},{asset:j,decimals:18,id:9,min:.15,xcmLocation:{parents:1,interior:{X1:{Parachain:2006}}}},{asset:K,decimals:12,id:14,min:.069,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:Be,decimals:18,id:41,min:.1,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xcccccccccc33d538dbc2ee4feab0a7a1ff4e8a94"}}]}}},{asset:ba,decimals:12,id:27,min:.0079,xcmLocation:{parents:1,interior:{X1:{Parachain:2008}}}},{asset:C,decimals:10,id:5,min:.0018,xcmLocation:{parents:1,interior:"Here"}},{asset:Kt,decimals:18,id:18,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f"}}]}}},{asset:U,decimals:18,id:34,min:55e-7,xcmLocation:{parents:2,interior:{X1:{GlobalConsensus:{Ethereum:{chain_id:1}}}}}},{asset:Ee,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:ct,decimals:18,id:16,min:.035,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:ae,decimals:8,id:11,min:36e-8,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:et,decimals:10,id:17,min:.62,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0002000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:mt,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:ut,decimals:6,id:43,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:1},{GeneralKey:{length:32,data:"0x26759f460ee5f743ed66d27c8f2a5623bf39d53ed575955320661e6e13e0e3da"}}]}}},{asset:ze,decimals:18,id:252525,min:.022,xcmLocation:{parents:1,interior:{X1:{Parachain:3345}}}},{asset:Le,decimals:18,id:1000796,min:.013,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x5a98fcbea516cf06857215779fd812ca3bef1b32"}}]}}},{asset:D,decimals:12,id:1000771,min:35e-5,xcmLocation:{parents:2,interior:{X1:{GlobalConsensus:"Kusama"}}}},{asset:_e,decimals:8,id:1000851,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x8236a87084f8b84306f72007f36f2618a5634494"}}]}}},{asset:De,decimals:18,id:1000794,min:.001,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x514910771af9ca656af840dff83e8264ecf986ca"}}]}}},{asset:Fe,decimals:18,id:39,min:5e-6,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x45804880de22913dafe09f4980848ece6ecbaf78"}}]}}},{asset:te,decimals:18,id:30,min:.022,xcmLocation:{parents:1,interior:{X1:{Parachain:3369}}}},{asset:ht,decimals:12,id:36,min:.001,xcmLocation:{parents:1,interior:{X2:[{Parachain:2043},{PalletInstance:10}]}}},{asset:tt,decimals:12,id:1000081,min:.16,xcmLocation:{parents:1,interior:{X2:[{Parachain:2094},{PalletInstance:10}]}}},{asset:Xe,decimals:18,id:1000795,min:.52,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x56072c95faa701256059aa122697b133aded9279"}}]}}},{asset:je,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:nt,decimals:9,id:1000753,min:.003,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:21},{GeneralKey:{length:32,data:"0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3"}}]}}},{asset:Ve,decimals:18,id:1000625,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x9d39a5de30e57443bff2a8307a4256c8797a3497"}}]}}},{asset:yt,decimals:18,id:1000626,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xa3931d71877c0e7a3148cb7eb4463524fec27fbd"}}]}}},{asset:Gt,decimals:18,id:1000745,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000a3931d71877c0e7a3148cb7eb4463524fec27fbd"}}]}}},{asset:Oe,decimals:18,id:1000765,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x18084fba666a33d37592fa2633fd49a74dd93a88"}}]}}},{asset:He,decimals:18,id:35,min:.028,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F"}}]}}},{asset:bt,decimals:18,id:25,min:1.23,xcmLocation:{parents:1,interior:{X1:{Parachain:2037}}}},{asset:R,decimals:6,id:22,min:.01,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:zt,decimals:6,id:21,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"}}]}}},{asset:Dt,decimals:6,id:44,min:.014,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:30},{GeneralKey:{length:32,data:"0x00000000000000000000000060a3e35cc302bfa44cb288bc5a4f316fdb1adb42"}}]}}},{asset:Xt,decimals:6,id:1000766,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"}}]}}},{asset:P,decimals:6,id:10,min:.01,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:qt,decimals:6,id:23,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7"}}]}}},{asset:Ft,decimals:6,id:1000767,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xdac17f958d2ee523a2206206994597c13d831ec7"}}]}}},{asset:de,decimals:18,id:33,min:.14,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:le,decimals:10,id:15,min:.0019,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:At,decimals:8,id:1000190,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"}}]}}},{asset:jt,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:Vt,decimals:18,id:1000189,min:61e-7,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"}}]}}},{asset:Ot,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:We,decimals:18,id:1000809,min:635e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"}}]}}},{asset:Ht,decimals:10,id:1000085,min:2e4,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:31337}]}}}],balance:An.SubstrateBalanceType.Tokens,balanceOverrides:{[Ln.key]:An.SubstrateBalanceType.System},ecosystem:An.ChainEcosystem.Polkadot,evmChain:Hc,evmResolver:Oc,explorer:"https://hydration.subscan.io",genesisHash:"0xafdc188f45c71dacbaa0b62e16a91f726c7b8699a9748cdf715459de6b7f366d",key:"hydration",name:"Hydration",parachainId:2034,ss58Format:63,wormhole:{id:73,coreBridge:"0x3792a6d63c31941B2805181771795D9176fA82A1",executor:"0xd633d8d1ceee8c8252196d44857c0f41b8dcb0d9",ntt:{[Kt.key]:{token:"0x0000000000000000000000000000000100000012",manager:"0xcFd576F88C90844AEBF45378Fd09931281D8b14d",transceiver:{wormhole:"0xe8660CA48f6f4D98BC48DB7Dd07C1a8E555801eA"}},[Dt.key]:{token:"0x000000000000000000000000000000010000002C",manager:"0x8dd1286A29dF5a2785FB638d6fB1598144Cfbc4C",transceiver:{wormhole:"0x2e84fac378D67Dc2e11026fB4919E80263a87375"}},[mt.key]:{token:"0x0000000000000000000000000000000100000028",manager:"0xcE73C15B9ED02413066DE5B904A36F8e8f9B5331",transceiver:{wormhole:"0xF38D9C3bA6999Dc331b32B416083Fd7e02D17B04"}},[ut.key]:{token:"0x000000000000000000000000000000010000002B",manager:"0xFCaF4aA069C565d25539028970703F01e47D3E0B",transceiver:{wormhole:"0x4e7b1E55D2354d4Dc6ABD876096Dc201de0541D1"}},[je.key]:{token:"0x00000000000000000000000000000001000F4530",manager:"0x9e200C0f28D92D296b201D96C8269d3CAFFfA9FF",transceiver:{wormhole:"0x2F04AcF249091425d51e67EeA3C3161ccE283202"}},[nt.key]:{token:"0x00000000000000000000000000000001000F4531",manager:"0x978443f00cAB6b09445140321EC73a221ebFF5F8",transceiver:{wormhole:"0xA224D6f4e0E276b34D91bfE6c3A5fE6838322AF7"}},[Gt.key]:{token:"0x00000000000000000000000000000001000F4529",manager:"0x1973E7044d9A7C7bB2d6ea1693A296a9e4B7E448",transceiver:{wormhole:"0x68Ecadd7934D4FcFEABAfB209C95D379B96400cb"}},[zt.key]:{token:"0x0000000000000000000000000000000100000015",manager:"0xEcEab64542A875C4472671D9Ed1E690cdD4e28fC",transceiver:{wormhole:"0x0d7488B39AA64468a709eC3b3d354DeFE539eD97"}},[qt.key]:{token:"0x0000000000000000000000000000000100000017",manager:"0x5E6C488103b47F804824AE15861638af4C436795",transceiver:{wormhole:"0xd2a16B736F32Df7C0DE72838837656FE0f85Ac0F"}},[jt.key]:{token:"0x0000000000000000000000000000000100000013",manager:"0x6BFca089916c045b0Ca4A09B655aF9F926189993",transceiver:{wormhole:"0x9a8a1ab288f6749Ce5626DEE1B5d59441BdC187F"}},[Ot.key]:{token:"0x0000000000000000000000000000000100000014",manager:"0xB5cEf790D52A57fa619eD96eDd64c5328F3DCFb7",transceiver:{wormhole:"0x8acce9CA511d5D7213F8C3f813B8916087cd00ae"}}}},ws:wa,rpcs:Aa});var Fn=require("@galacticcouncil/xc-core");var Yt=new Fn.Parachain({assetsData:[{asset:te,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:Fn.SubstrateBalanceType.System,ecosystem:Fn.ChainEcosystem.Polkadot,explorer:"https://mythos.subscan.io",genesisHash:"0xf6ee56e9c5277df5b4ce6ae9983ee88f3cbed27d31beeb98f9f84f997a1ab0b9",key:"mythos",name:"Mythos",parachainId:3369,ss58Format:29972,usesH160Acc:!0,ws:"wss://mythos-rpc.dmarket.com"});var Xn=require("@galacticcouncil/xc-core");var Vn=new Xn.Parachain({assetsData:[{asset:ht,xcmLocation:{parents:0,interior:{X1:{PalletInstance:10}}}}],balance:Xn.SubstrateBalanceType.System,ecosystem:Xn.ChainEcosystem.Polkadot,explorer:"https://neuroweb.subscan.io",genesisHash:"0xe7e0962324a3b86c83404dbea483f25fb5dab4c224791c81b756cfc948006174",key:"neuroweb",name:"Neuroweb",parachainId:2043,ss58Format:101,ws:"wss://parachain-rpc.origin-trail.network"});var Jt=require("@galacticcouncil/xc-core");var On=new Jt.Parachain({assetsData:[{asset:tt,id:"Native",xcmLocation:{parents:0,interior:{X1:{PalletInstance:10}}}}],balance:Jt.SubstrateBalanceType.System,ecosystem:Jt.ChainEcosystem.Polkadot,explorer:"https://pendulum.subscan.io",genesisHash:"0x5d3c298622d5634ed019bf61ea4b71655030015bde9beb0d6a24743714462c86",key:"pendulum",name:"Pendulum",parachainId:2094,ss58Format:56,ws:"wss://rpc-pendulum.prd.pendulumchain.tech",xcmVersion:Jt.XcmVersion.v3});var Hn=require("@galacticcouncil/xc-core");var Wc={assetsData:[{asset:C,xcmLocation:{parents:0,interior:"Here"}}],balance:Hn.SubstrateBalanceType.System,ecosystem:Hn.ChainEcosystem.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"},Ti=new Hn.Parachain({...Wc,key:"polkadot"});var Wn=require("@galacticcouncil/xc-core");var Un=new Wn.Parachain({assetsData:[{asset:bt,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:Wn.SubstrateBalanceType.System,ecosystem:Wn.ChainEcosystem.Polkadot,explorer:"https://unique.subscan.io",genesisHash:"0x84322d9cddbf35088f1e54e9a85c967a41a56a4f43445768125e61af166c7d31",key:"unique",name:"Unique network",parachainId:2037,ss58Format:7391,ws:"wss://ws.unique.network"});var Qt=require("@galacticcouncil/xc-core");var Nn=new Qt.Parachain({assetsData:[{asset:ze,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:Qt.SubstrateBalanceType.System,ecosystem:Qt.ChainEcosystem.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:Qt.XcmVersion.v3});var Pi=[X,$t,xe,ne,v,Vn,Yt,On,Ti,Un,Nn];var wn=require("@galacticcouncil/xc-core");var Zt=new wn.SolanaChain({id:101,key:"solana",name:"Solana",assetsData:[{asset:je,decimals:9},{asset:mt,id:"J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",decimals:9},{asset:ut,id:"3b8X44fLF9ooXaUm3hhSgjpmVs6rZZ3pPoGnGahc3Uu7",decimals:6}],balance:wn.SolanaBalanceType.Token,balanceOverrides:{[je.key]:wn.SolanaBalanceType.Native},ecosystem:wn.ChainEcosystem.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:{[je.key]:{token:"So11111111111111111111111111111111111111112",manager:"DiGxk55uAQNVzzg2FucPgdrQ4azb5SDvWQvzpzJD3o7J",transceiver:{wormhole:"5J12e7mMcbbN3VkCrUPfZp2bDHMH3t1rKvxGcwuN53wx"},emitter:"2WUYeRrK2JctBEvNVXY4mRG2ewMzhidi7L4Y5dCwqY9D"},[mt.key]:{token:"J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",manager:"9HFvXujdkXubvmf93gyzkH1g3VPowDrmp85sWsfdcBTh",transceiver:{wormhole:"HgxvrPomT84AxgxknddAcC1iW9ysqHxmeoiKNZmQcovs"},emitter:"9Ss1eMHE8iDv9kCxERH5nabp9tx75AVoUWWEKaGgMrh9"},[ut.key]:{token:"3b8X44fLF9ooXaUm3hhSgjpmVs6rZZ3pPoGnGahc3Uu7",manager:"4T5m5NtRVewiCVzP2mnfeUoMYRqncfkrS21X2dhVCNRT",transceiver:{wormhole:"GiTY93vtrK4jZZchrxdV9r28JByRs7Ary2rsTPyPabJc"},emitter:"HuvSXe6hQaSMgo5dc8GYzavcS3aB4Bix9XYgVdfsq2sY"}},platformAddressFormat:"base58"}});var Ci=[Zt];var Kn=require("@galacticcouncil/xc-core");var Gn=new Kn.SuiChain({id:"0x35834a8a",key:"sui",name:"Sui",assetsData:[{asset:nt,decimals:9}],balance:Kn.SuiBalanceType.Native,ecosystem:Kn.ChainEcosystem.Sui,explorer:"https://suiscan.xyz/",rpc:"https://rpc-mainnet.suiscan.xyz",wormhole:{id:21,coreBridge:"0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c",ntt:{[nt.key]:{token:"0x2::sui::SUI",manager:"0xa0bc45e0384140dc125f273eda89cad1434f5dee430726cf6364bdcceba1e9a3",transceiver:{wormhole:"0x6afb4a6a9c4e5b6eeed568381ce95a79590f0c17ab8d0c59295826f2775bf832"},emitter:"0x25437da9f99dfab32c1a275663f51cd5c99eb867ab4d1f630e3799c5e68215da"}}}});var Ei=[Gn];var Wt=require("@galacticcouncil/xc-core");var wt=new Wt.Parachain({assetsData:[{asset:D,decimals:12,id:0,xcmLocation:{parents:1,interior:"Here"}},{asset:C,decimals:10,min:.001,xcmLocation:{parents:2,interior:{X1:[{GlobalConsensus:"Polkadot"}]}}},{asset:P,decimals:6,id:1984,xcmLocation:{parents:1,interior:{X2:[{PalletInstance:50},{GeneralIndex:1984}]}}}],balance:Wt.SubstrateBalanceType.Assets,balanceOverrides:{[D.key]:Wt.SubstrateBalanceType.System},min:Wt.SubstrateMinType.Assets,ecosystem:Wt.ChainEcosystem.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"});var qn=require("@galacticcouncil/xc-core");var zn=new qn.Parachain({assetsData:[{asset:ya,id:0,xcmLocation:{parents:0,interior:"Here"}},{asset:D,decimals:12,id:1,xcmLocation:{parents:1,interior:"Here"}},{asset:P,decimals:6,id:14,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}}],balance:qn.SubstrateBalanceType.Tokens,ecosystem:qn.ChainEcosystem.Kusama,explorer:"https://basilisk.subscan.io",genesisHash:"0xa85cfb9b9fd4d622a5b28289a02347af987d8f73fa3108450e2b4a11c1ce5755",key:"basilisk",name:"Basilisk",parachainId:2090,ss58Format:10041,ws:"wss://basilisk-rpc.n.dwellir.com"});var Bi=[wt,zn];var Uc=[...xi,...Pi,...Ci,...Ei,...Bi],Ri=new Map(Uc.map(n=>[n.key,n]));var Qo=require("@galacticcouncil/xc-core");var ri=require("@galacticcouncil/xc-core");var ai={};pn(ai,{ContractBuilder:()=>at,ExtrinsicBuilder:()=>w,ExtrinsicDecorator:()=>sn,FeeAmountBuilder:()=>O,FeeAssetBuilder:()=>rs,MoveBuilder:()=>Ka,ProgramBuilder:()=>si,XcmTransferType:()=>it,XcmVersion:()=>Pt});var xn=require("@galacticcouncil/xc-core"),Li=require("viem"),Nc=n=>({build:async e=>{let t=await Promise.all(n.map(r=>r.build(e))),s=t.map(r=>r.address),a=[0,0],i=t.map(r=>(0,Li.encodeFunctionData)({abi:xn.Abi[r.module],functionName:r.func,args:r.args}));return new xn.ContractConfig({abi:xn.Abi.Batch,address:xn.Precompile.Batch,args:[s,a,i,[]],func:"batchAll",module:"Batch"})}}),_i=()=>({batchAll:Nc});var jn=require("@galacticcouncil/xc-core");function fe(n,e){if(e<0||e>100)throw Error(`padPercent ${e} not in range of 0 to 100.`);return n+n*e/100n}function Sn(n){return typeof n=="object"?Object.values(n)[0]:n}function Di(){return{approve:n=>({build:async e=>{let{amount:t,asset:s,source:a,transact:i}=e,r=i?i.chain:a.chain,o=jn.Wormhole.fromChain(r),c=r.getAssetId(s);return new jn.ContractConfig({abi:jn.Abi.Erc20,address:Sn(c).toString(),args:[n(o),t],func:"approve",module:"Erc20"})}})}}var $n=require("@galacticcouncil/xc-core");var Fi=require("@galacticcouncil/common"),Xi=require("polkadot-api"),Vi=require("@polkadot-api/utils"),{H160:Kc,isEvmAddress:Gc}=Fi.h160;function qc(n){let e=Gc(n)?Kc.toAccount(n):n;return(0,Vi.toHex)((0,Xi.AccountId)().enc(e))}var zc=()=>({build:async n=>{let{address:e,amount:t,asset:s,source:a}=n,i=a.chain,r=$n.Basejump.fromChain(i),o=i.getAssetId(s);return new $n.ContractConfig({abi:$n.Abi.Basejump,address:r.getAddress(),args:[Sn(o),t,qc(e)],func:"bridgeViaWormhole",module:"Basejump"})}}),Oi=()=>({bridgeViaWormhole:zc});var xt=require("@galacticcouncil/xc-core"),Wi=require("@galacticcouncil/common"),{Ss58Addr:Hi}=xt.addr;function jc(n){if(n.startsWith("0x"))return n;if(!/^\d{38,39}$/.test(n))throw new Error(`Asset id: ${n} must be a string and have 38-39 digits`);return`0xffffffff${BigInt(n).toString(16).padStart(32,"0")}`}function xa(n,e){let t=n.getAssetId(e);return typeof t=="string"?jc(t):t}function Ui(){return{transferAssetsToPara32:()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=xa(a.chain,t);return new xt.ContractConfig({abi:xt.Abi.PolkadotXcm,address:xt.Precompile.PolkadotXcm,args:[s.chain.parachainId,Hi.getPubKey(n),[{asset:i,amount:e}],0],func:"transferAssetsToPara32",module:"PolkadotXcm"})}}),transferAssetsToPara32WithFee:()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=xa(a.chain,t),r=xa(a.chain,a.destinationFeeBalance),o=Wi.big.toBigInt(s.fee.amount,s.fee.decimals);return new xt.ContractConfig({abi:xt.Abi.PolkadotXcm,address:xt.Precompile.PolkadotXcm,args:[s.chain.parachainId,Hi.getPubKey(n),[{asset:i,amount:e},{asset:r,amount:o}],1],func:"transferAssetsToPara32",module:"PolkadotXcm"})}})}}var kt=require("@galacticcouncil/xc-core"),tn=require("@galacticcouncil/descriptors"),er=require("@polkadot-api/substrate-bindings"),Es=require("@polkadot-api/utils"),tr=require("viem");var Ni=require("@galacticcouncil/xc-core"),Ps=null;async function Ki(){if(Ps)return Ps;let n=await Ni.codec.getHubCodecs();return Ps={message:n.tx.PolkadotXcm.send.inner.message,location:n.tx.PolkadotXcm.send.inner.dest},Ps}var $i=require("@galacticcouncil/xc-core"),h=require("@galacticcouncil/descriptors"),Yi=require("@polkadot-api/substrate-bindings"),Ji=require("@polkadot-api/utils");var Gi=require("@galacticcouncil/descriptors"),ge=340282366920938463463374607431768211455n,St="0x0000000000000000000000000000000000000000000000000000000000000000",me={parents:1,interior:Gi.XcmV3Junctions.Here()},qi=0,en=1e3,Cs=1002,lt=1,kn="5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY",zi="0x0000000000000000000000000000000000000000000000000000000000000000",ji="0x0000000000000000000000000000000000000000";var Sa="0x0000000000000000000000000000000000000000",Yn=n=>({parents:2,interior:h.XcmV5Junctions.X1(h.XcmV5Junction.GlobalConsensus(h.XcmV5NetworkId.Ethereum({chain_id:BigInt(n)})))}),ka=(n,e)=>({parents:2,interior:h.XcmV5Junctions.X2([h.XcmV5Junction.GlobalConsensus(h.XcmV5NetworkId.Ethereum({chain_id:BigInt(n)})),h.XcmV5Junction.AccountKey20({key:e,network:void 0})])});function Qi(n,e){let t=Yn(n),s=ka(n,"0x"+"00".repeat(20)),a=1000000000000n,i=1000000000n,r=[h.XcmV5Instruction.ReserveAssetDeposited([{id:t,fun:h.XcmV3MultiassetFungibility.Fungible(a)},{id:s,fun:h.XcmV3MultiassetFungibility.Fungible(a)}]),h.XcmV5Instruction.ExchangeAsset({give:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.AllOf({id:t,fun:{type:"Fungible",value:void 0}})),want:[{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(i)}],maximal:!1}),h.XcmV5Instruction.PayFees({asset:{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(i)}})],o=va({ethChainId:n,destinationParaId:e,tokenAddress:"0x"+"00".repeat(20),beneficiaryHex:"0x"+"00".repeat(32),tokenAmount:a,hydrationDotFee:i,topic:"0x"+"00".repeat(32)});return[...r,...o]}function va(n){let{ethChainId:e,destinationParaId:t,tokenAddress:s,beneficiaryHex:a,tokenAmount:i,hydrationDotFee:r,topic:o}=n,c=Yn(e),m=s===Sa?c:ka(e,s),f=a.length===42&&a.startsWith("0x")?h.XcmV5Junction.AccountKey20({key:a,network:void 0}):h.XcmV5Junction.AccountId32({id:a,network:void 0}),y={parents:0,interior:h.XcmV5Junctions.X1(f)};return[h.XcmV5Instruction.SetAppendix([h.XcmV5Instruction.RefundSurplus(),h.XcmV5Instruction.DepositAsset({assets:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.All()),beneficiary:y})]),h.XcmV5Instruction.ExchangeAsset({give:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.AllOf({id:c,fun:{type:"Fungible",value:void 0}})),want:[{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(r)}],maximal:!1}),h.XcmV5Instruction.InitiateTransfer({destination:{parents:1,interior:h.XcmV5Junctions.X1(h.XcmV5Junction.Parachain(t))},remote_fees:{type:"ReserveDeposit",value:h.XcmV5AssetFilter.Definite([{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(r)}])},preserve_origin:!1,assets:[{type:"ReserveDeposit",value:h.XcmV5AssetFilter.Definite([{id:m,fun:h.XcmV3MultiassetFungibility.Fungible(i)}])}],remote_xcm:[h.XcmV5Instruction.DepositAsset({assets:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.AllCounted(3)),beneficiary:y}),h.XcmV5Instruction.SetTopic(o)]}),h.XcmV5Instruction.RefundSurplus(),h.XcmV5Instruction.DepositAsset({assets:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.All()),beneficiary:y}),h.XcmV5Instruction.SetTopic(o)]}function Ma(n){let{tokenAddress:e,senderPubKey:t,beneficiaryHex:s,tokenAmount:a,sourceExecutionFee:i,dotRemoteFee:r,dotToEtherSwapAmount:o,etherFeeAmount:c,topic:m}=n,g=Yn(lt),f=e===Sa?g:ka(lt,e),y={parents:0,interior:h.XcmV5Junctions.X1(h.XcmV5Junction.AccountId32({id:t,network:void 0}))},A={parents:0,interior:h.XcmV5Junctions.X1(h.XcmV5Junction.AccountKey20({key:s,network:void 0}))},x={parents:2,interior:h.XcmV5Junctions.X1(h.XcmV5Junction.GlobalConsensus(h.XcmV5NetworkId.Ethereum({chain_id:BigInt(lt)})))},S=[h.XcmV5Instruction.DepositAsset({assets:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.AllCounted(3)),beneficiary:A}),h.XcmV5Instruction.SetTopic(m)],B=[h.XcmV5Instruction.SetAppendix([h.XcmV5Instruction.SetHints({hints:[{type:"AssetClaimer",value:{location:y}}]}),h.XcmV5Instruction.RefundSurplus(),h.XcmV5Instruction.DepositAsset({assets:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.All()),beneficiary:y})])];B.push(h.XcmV5Instruction.ExchangeAsset({give:h.XcmV5AssetFilter.Definite([{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(o)}]),want:[{id:g,fun:h.XcmV3MultiassetFungibility.Fungible(c)}],maximal:!1}));let k=[{type:"ReserveWithdraw",value:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.AllOf({id:f,fun:{type:"Fungible",value:void 0}}))}],F=h.XcmV5AssetFilter.Definite([{id:g,fun:h.XcmV3MultiassetFungibility.Fungible(c)}]);B.push(h.XcmV5Instruction.InitiateTransfer({destination:x,remote_fees:{type:"ReserveWithdraw",value:F},preserve_origin:!0,assets:k,remote_xcm:S}),h.XcmV5Instruction.SetTopic(m));let M=i+r+o,H=[{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(M)},{id:f,fun:h.XcmV3MultiassetFungibility.Fungible(a)}],N=[{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(i)}],I={type:"ReserveWithdraw",value:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.AllOf({id:f,fun:{type:"Fungible",value:void 0}}))},$=[{type:"ReserveWithdraw",value:h.XcmV5AssetFilter.Definite([{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(o)}])},I];return[h.XcmV5Instruction.WithdrawAsset(H),h.XcmV5Instruction.PayFees({asset:N[0]}),h.XcmV5Instruction.SetAppendix([h.XcmV5Instruction.SetHints({hints:[{type:"AssetClaimer",value:{location:y}}]}),h.XcmV5Instruction.RefundSurplus(),h.XcmV5Instruction.DepositAsset({assets:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.All()),beneficiary:y})]),h.XcmV5Instruction.InitiateTransfer({destination:{parents:1,interior:h.XcmV5Junctions.X1(h.XcmV5Junction.Parachain(en))},remote_fees:{type:"ReserveWithdraw",value:h.XcmV5AssetFilter.Definite([{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(r)}])},preserve_origin:!0,assets:$,remote_xcm:B}),h.XcmV5Instruction.SetTopic(m)]}function Zi(n){let{address:e,amount:t,asset:s,sender:a,source:i,destination:r,messageId:o}=n,c=i.chain,m=(0,Yi.getSs58AddressInfo)(a);if(!m.isValid)throw new Error(`Invalid SS58 address: ${a}`);let g=(0,Ji.toHex)(m.publicKey),f=c.getAssetXcmLocation(s),y=f?$i.multiloc.findNestedKey(f,"key"):void 0,A=y?y.key:Sa,x=r.feeBreakdown,S=x.sourceExecutionFee??0n,B=x.dotRemoteFee??0n,k=x.dotToEtherSwapAmount??0n,F=x.etherFeeAmount??0n,H=Ma({tokenAddress:A,senderPubKey:g,beneficiaryHex:e,tokenAmount:t,sourceExecutionFee:S,dotRemoteFee:B,dotToEtherSwapAmount:k,etherFeeAmount:F,topic:o??"0x0000000000000000000000000000000000000000000000000000000000000000"});return h.XcmVersionedXcm.V5(H)}var{Ss58Addr:nr}=kt.addr,$c="0x0000000000000000000000000000000000000000",Yc=()=>({build:async n=>{let{address:e,amount:t,asset:s,sender:a,source:i,destination:r}=n,o=i.chain,c=r.chain,m=kt.Snowbridge.fromChain(o),g=o.getAssetId(s),f=Sn(g),y=s.originSymbol==="ETH",A=r.feeBreakdown.executionFee,x=r.feeBreakdown.relayerFee,S=r.feeBreakdown.hydrationDotFee,B=r.fee.amount,k=nr.getPubKey(e),F=new TextEncoder().encode(`${c.parachainId}${a}${f}${k}${t}${Date.now()}`),M=(0,Es.toHex)((0,er.Blake2256)(F)),H=va({ethChainId:lt,destinationParaId:c.parachainId,tokenAddress:y?$c:f,beneficiaryHex:k,tokenAmount:t,hydrationDotFee:S,topic:M}),N=await Ki(),I=(0,Es.toHex)(N.message.enc(tn.XcmVersionedXcm.V5(H))),$=[];y||$.push((0,tr.encodeAbiParameters)([{type:"uint8"},{type:"address"},{type:"uint128"}],[0,f,t]));let Ke=N.location.enc(tn.XcmVersionedLocation.V5({parents:0,interior:tn.XcmV5Junctions.X1(tn.XcmV5Junction.AccountId32({id:k,network:void 0}))})),Je=(0,Es.toHex)(Ke.slice(1));return new kt.ContractConfig({abi:kt.Abi.Snowbridge,address:m.getGateway(),args:[I,$,Je,A,x],value:y?B+t:B,func:"v2_sendMessage",module:"Snowbridge"})}}),Jc=()=>({build:async n=>{let{address:e,amount:t,asset:s,source:a,destination:i}=n,r=a.chain,o=i.chain,c=kt.Snowbridge.fromChain(r),m=r.getAssetId(s),g=Sn(m),f=s.originSymbol==="ETH",y=i.feeBreakdown.bridgeFeeInDot,A=i.fee.amount;return new kt.ContractConfig({abi:kt.Abi.Snowbridge,address:c.getGateway(),args:[g,o.parachainId,[1,nr.getPubKey(e)],y,t],value:f?A+t:A,func:"sendToken",module:"Snowbridge"})}}),sr=()=>({v2SendMessage:Yc,sendToken:Jc});var st=require("@galacticcouncil/xc-core"),Qc="0x00",ar=8,Zc=()=>({build:async n=>{let{address:e,amount:t,asset:s,source:a,destination:i}=n,r=a.chain,o=i.chain,c=st.Ntt.fromChain(r,s),m=st.Wormhole.fromChain(o),g=e;o instanceof st.EvmParachain&&(g=await o.getDerivatedAddress(e));let f=r,y=await f.evmClient.getProvider().readContract({abi:st.Abi.NttManager,address:c.manager,args:[m.getWormholeId(),Qc],functionName:"quoteDeliveryPrice"}),A=f.getAssetDecimals(s)??0,x=t;if(A>ar){let S=10n**BigInt(A-ar);x=t-t%S}return new st.ContractConfig({abi:st.Abi.NttManager,address:c.manager,args:[x,m.getWormholeId(),m.normalizeAddress(g)],token:c.token,wrapNative:f.getBalanceType(s)===st.EvmBalanceType.Native,value:y[1],func:"transfer",module:"NttManager"})}}),ir=()=>({transfer:Zc});function rr(){return{Ntt:ir}}function at(){return{Batch:_i,Erc20:Di,Basejump:Oi,PolkadotXcm:Ui,Snowbridge:sr,Wormhole:rr}}var Ia=require("@galacticcouncil/common"),cr=require("@galacticcouncil/xc-core"),or="AssetConversion",em=n=>{let e="swap_tokens_for_exact_tokens";return{build:async({address:t,source:s})=>{let{chain:a}=s,i=s.destinationFeeSwap||s.feeSwap;if(!i)throw new Error("Swap context not found.");let{aIn:r,aOut:o}=i,c=a,m=(0,Ia.encodeLocation)(c.getAssetXcmLocation(r)),g=(0,Ia.encodeLocation)(c.getAssetXcmLocation(o)),f=r.amount+r.amount*BigInt(n.slippage)/100n,y=o.amount;return new cr.ExtrinsicConfig({module:or,func:e,getTx:A=>A.getUnsafeApi().tx[or][e]({path:[m,g],amount_out:y,amount_in_max:f,send_to:t,keep_alive:!0})})}}},mr=()=>({swapTokensForExactTokens:em});var Bs=require("@galacticcouncil/descriptors"),ur=require("@galacticcouncil/xc-core"),tm="Assets",nm=()=>{let n="transfer";return{build:async({asset:e,amount:t,address:s,destination:a})=>{let i=a.chain,{fee:r}=a,o=t>r.amount?t-r.amount:t,c=i.getMetadataAssetId(e);return new ur.ExtrinsicConfig({module:tm,func:n,getTx:m=>m.getTypedApi(Bs.hub).tx.Assets.transfer({id:Number(c),target:Bs.MultiAddress.Id(s),amount:o})})}}},dr=()=>({transfer:nm});var fr=require("@galacticcouncil/xc-core"),lr="Balances",sm=(n=!1)=>{let e="transfer_all";return{build:async({address:t})=>new fr.ExtrinsicConfig({module:lr,func:e,getTx:s=>s.getUnsafeApi().tx[lr][e]({dest:t,keep_alive:n})})}},gr=()=>({transferAll:sm});var pr=require("@galacticcouncil/descriptors"),hr=require("@galacticcouncil/xc-core"),am="Router",im=n=>({build:async({source:t})=>{let{chain:s,destinationFeeSwap:a}=t;if(!a)throw new Error("Swap context not found.");let{aIn:i,aOut:r,route:o}=a,c=s,m=c.getMetadataAssetId(i),g=c.getMetadataAssetId(r),f=r.amount,y=i.amount+i.amount*BigInt(n.slippage)/100n;return new hr.ExtrinsicConfig({module:am,func:"buy",getTx:A=>A.getTypedApi(pr.hydration).tx.Router.buy({asset_in:Number(m),asset_out:Number(g),amount_out:f,max_amount_in:y,route:o})})}}),yr=()=>({buy:im});var Ar=require("@galacticcouncil/xc-core"),br="Utility",rm=n=>{let e="batch_all";return{build:async t=>{let s=await Promise.all(n.map(a=>a.build(t)));return new Ar.ExtrinsicConfig({module:br,func:e,getTx:a=>{let i=s.map(r=>r.getTx(a).decodedCall);return a.getUnsafeApi().tx[br][e]({calls:i})}})}}},wr=()=>({batchAll:rm});var Rs=require("@galacticcouncil/xc-core"),Sr=require("polkadot-api"),kr=require("viem");var Pt=(i=>(i.v1="V1",i.v2="V2",i.v3="V3",i.v4="V4",i.v5="V5",i))(Pt||{}),it=(a=>(a.Teleport="Teleport",a.LocalReserve="LocalReserve",a.DestinationReserve="DestinationReserve",a.RemoteReserve="RemoteReserve",a))(it||{});var xr="EthereumXcm",om=n=>{let e="transact";return{build:async t=>{let s=await n.build(t),a="V1",i=(0,kr.encodeFunctionData)({abi:Rs.Abi[s.module],functionName:s.func,args:s.args});return new Rs.ExtrinsicConfig({module:xr,func:e,getTx:r=>r.getUnsafeApi().tx[xr][e]({xcm_transaction:{type:a,value:{gas_limit:[5000000n,0n,0n,0n],fee_payment:{type:"Auto",value:void 0},action:{type:"Call",value:s.address},value:[0n,0n,0n,0n],input:Sr.Binary.fromHex(i),access_list:void 0}}})})}}},Ta=()=>({transact:om});var Ut=require("@galacticcouncil/xc-core"),ss=require("@galacticcouncil/common");var vn=require("@galacticcouncil/xc-core"),b=require("@galacticcouncil/descriptors");var pe=require("@galacticcouncil/descriptors");var vr=require("@galacticcouncil/common"),Pa=require("@galacticcouncil/descriptors"),Mr=require("@polkadot-api/substrate-bindings"),Ir=require("@polkadot-api/utils");function re(n){if(n.length===42&&n.startsWith("0x"))return Pa.XcmV3Junction.AccountKey20({key:n,network:void 0});let t=(0,Mr.getSs58AddressInfo)(n);if(!t.isValid)throw new Error(`Invalid SS58 address: ${n}`);return Pa.XcmV3Junction.AccountId32({id:(0,Ir.toHex)(t.publicKey),network:void 0})}function Jn(n,e,t){return vr.acc.getMultilocationDerivatedAccount(n.parachainId,e,t.parachainId===0?0:1,t.usesH160Acc)}var Ca=require("@galacticcouncil/xc-core");function Tr(n,e){let t=Ca.multiloc.findNestedKey(n,"GeneralIndex"),s=Ca.multiloc.findNestedKey(e,"GeneralIndex"),a=t&&t.GeneralIndex,i=s&&s.GeneralIndex;return Number.isNaN(a)||Number.isNaN(i)?!1:Number(a)>Number(i)}function se(n,e){let t=n.getAssetXcmLocation(e);if(!t)throw new Error(e.originSymbol+" location config is missing.");return t}var Ls={};pn(Ls,{ETHER_TOKEN_ADDRESS:()=>Ea,erc20Location:()=>mm,erc20LocationReanchored:()=>um,ethereumLocation:()=>Cr,parachainLocation:()=>cm});var ft=require("@galacticcouncil/descriptors"),Ea="0x0000000000000000000000000000000000000000",Pr=n=>ft.XcmV3Junction.GlobalConsensus(ft.XcmV3JunctionNetworkId.Ethereum({chain_id:BigInt(n)}));function Cr(n){return{parents:2,interior:ft.XcmV3Junctions.X1(Pr(n))}}function cm(n){return{parents:1,interior:ft.XcmV3Junctions.X1(ft.XcmV3Junction.Parachain(n))}}function mm(n,e){return e===Ea?Cr(n):{parents:2,interior:ft.XcmV3Junctions.X2([Pr(n),ft.XcmV3Junction.AccountKey20({key:e})])}}function um(n){return n===Ea?{parents:0,interior:{type:"Here"}}:{parents:0,interior:ft.XcmV3Junctions.X1(ft.XcmV3Junction.AccountKey20({key:n}))}}var Ba=require("@galacticcouncil/common"),Er=require("@galacticcouncil/xc-core");function ie(n,e){return dm(e)>=4?(0,Ba.encodeLocation)(n):lm(n)}function dm(n){let e=n.toString().replace("V","").replace("v","");return Number(e)}function lm(n){return{type:"Concrete",value:(0,Ba.encodeLocation)(n)}}var fm=1e3;function gm(n){let{parents:e,interior:t}=n;return e===1&&t==="Here"?!0:e===2&&t&&t!=="Here"?Object.values(t).flat().some(a=>a&&typeof a=="object"&&"GlobalConsensus"in a):!1}function pm(n){if(n)return gm(n)?fm:Er.multiloc.findParachain(n)}function Br(n,e,t,s){let a=e.getAssetXcmLocation(n),i=pm(a),r=s?.parachainId??t.parachainId;if(i&&r!==i)throw new Error(s?`Wrong reserve for "${n.originSymbol}": expected chain ${i}, got ${s.name} (${s.parachainId})`:`Reserve chain ${i} required for "${n.originSymbol}"`)}function _s(n,e){let t="V4",s=ie(se(e,n),t),a=St;return[pe.XcmV4Instruction.ReserveAssetDeposited([{id:me,fun:pe.XcmV3MultiassetFungibility.Fungible(ge)},{id:s,fun:pe.XcmV3MultiassetFungibility.Fungible(ge)}]),pe.XcmV4Instruction.ClearOrigin(),pe.XcmV4Instruction.BuyExecution({fees:{id:me,fun:pe.XcmV3MultiassetFungibility.Fungible(ge)},weight_limit:pe.XcmV3WeightLimit.Unlimited()}),pe.XcmV4Instruction.DepositAsset({assets:pe.XcmV4AssetAssetFilter.Wild(pe.XcmV4AssetWildAsset.AllCounted(2)),beneficiary:{parents:0,interior:pe.XcmV3Junctions.X1(re(kn))}}),pe.XcmV4Instruction.SetTopic(a)]}var Ct=require("@galacticcouncil/descriptors");function Ra(n,e){let t="V4",s=ie(se(e,n),t),a=Ds("V4",re(ji),re(kn),s,St);return[Ct.XcmV4Instruction.WithdrawAsset([{id:me,fun:Ct.XcmV3MultiassetFungibility.Fungible(ge)},{id:s,fun:Ct.XcmV3MultiassetFungibility.Fungible(ge)}]),Ct.XcmV4Instruction.ClearOrigin(),Ct.XcmV4Instruction.BuyExecution({fees:{id:me,fun:Ct.XcmV3MultiassetFungibility.Fungible(ge)},weight_limit:Ct.XcmV3WeightLimit.Unlimited()}),...a.value]}var V=require("@galacticcouncil/descriptors");function Rr(n,e){let t="V4",s=ie(se(e,n),t),a=St;return[V.XcmV4Instruction.WithdrawAsset([{id:s,fun:V.XcmV3MultiassetFungibility.Fungible(ge)}]),V.XcmV4Instruction.ClearOrigin(),V.XcmV4Instruction.BuyExecution({fees:{id:s,fun:V.XcmV3MultiassetFungibility.Fungible(ge)},weight_limit:V.XcmV3WeightLimit.Unlimited()}),V.XcmV4Instruction.DepositAsset({assets:V.XcmV4AssetAssetFilter.Wild(V.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:V.XcmV3Junctions.X1(re(kn))}}),V.XcmV4Instruction.SetTopic(a)]}function La(n,e){let t="V4",s=ie(se(e,n),t);return[V.XcmV4Instruction.BuyExecution({fees:{id:s,fun:V.XcmV3MultiassetFungibility.Fungible(ge)},weight_limit:V.XcmV3WeightLimit.Unlimited()}),V.XcmV4Instruction.DepositAsset({assets:V.XcmV4AssetAssetFilter.Wild(V.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:V.XcmV3Junctions.X1(re(kn))}})]}function Lr(n,e,t){let s="V4",a=ie(se(e,n),s),i=St,r=La(n,t);return[V.XcmV4Instruction.WithdrawAsset([{id:a,fun:V.XcmV3MultiassetFungibility.Fungible(ge)}]),V.XcmV4Instruction.ClearOrigin(),V.XcmV4Instruction.BuyExecution({fees:{id:a,fun:V.XcmV3MultiassetFungibility.Fungible(ge)},weight_limit:V.XcmV3WeightLimit.Unlimited()}),V.XcmV4Instruction.DepositReserveAsset({assets:V.XcmV4AssetAssetFilter.Wild(V.XcmV4AssetWildAsset.AllCounted(1)),dest:{parents:1,interior:V.XcmV3Junctions.X1(V.XcmV3Junction.Parachain(t.parachainId))},xcm:r}),V.XcmV4Instruction.SetTopic(i)]}var ue=require("@galacticcouncil/descriptors");function _r(n,e){let t="V5",s=ie(se(e,n),t),a={parents:0,interior:ue.XcmV5Junctions.X1(ue.XcmV5Junction.AccountId32({id:zi,network:void 0}))};return[ue.XcmV5Instruction.ReserveAssetDeposited([{id:me,fun:ue.XcmV3MultiassetFungibility.Fungible(ge)}]),ue.XcmV5Instruction.PayFees({asset:{id:me,fun:ue.XcmV3MultiassetFungibility.Fungible(ge)}}),ue.XcmV5Instruction.ReserveAssetDeposited([{id:s,fun:ue.XcmV3MultiassetFungibility.Fungible(ge)}]),ue.XcmV5Instruction.ClearOrigin(),ue.XcmV5Instruction.DepositAsset({assets:ue.XcmV5AssetFilter.Wild(ue.XcmV5WildAsset.AllCounted(3)),beneficiary:a}),ue.XcmV5Instruction.SetTopic(St)]}var Dr=[vn.ChainEcosystem.Polkadot,vn.ChainEcosystem.Kusama],hm={parents:1,interior:b.XcmV3Junctions.X1(b.XcmV3Junction.Parachain(1e3))},ym=n=>{let{parents:e,interior:t}=n;return e!==1?!1:t==="Here"||t?.type==="Here"},Fr=(n,e)=>!n.ecosystem||!e.ecosystem?!1:Dr.includes(n.ecosystem)&&Dr.includes(e.ecosystem)&&n.ecosystem!==e.ecosystem,Xr=n=>{let{interior:e}=n;if(e.type==="X1"&&e.value.type==="GlobalConsensus")return e.value.value.type==="Ethereum";if(e.type==="X2"&&Array.isArray(e.value)){let t=e.value[0];return t.type==="GlobalConsensus"&&t.value.type==="Ethereum"}return!1},Et=(n,e,t)=>{if(Fr(e,t))return{type:n,value:_a(t.ecosystem,t.parachainId)};if(t.parachainId===qi)return{type:n,value:{parents:1,interior:b.XcmV3Junctions.Here()}};let s=t.key==="ethereum"?en:t.parachainId;return{type:n,value:{parents:1,interior:b.XcmV3Junctions.X1(b.XcmV3Junction.Parachain(s))}}},bm=n=>n===vn.ChainEcosystem.Kusama?b.XcmV3JunctionNetworkId.Kusama():b.XcmV3JunctionNetworkId.Polkadot(),_a=(n,e)=>({parents:2,interior:b.XcmV3Junctions.X2([b.XcmV3Junction.GlobalConsensus(bm(n)),b.XcmV3Junction.Parachain(e)])}),Vr=(n,e,t,s)=>{if(Fr(e,t)){if(e.parachainId!==en){let a=vn.multiloc.findGlobalConsensus(se(e,s)),i=typeof a=="string"&&a===t.ecosystem;return{dest:{type:n,value:{parents:1,interior:b.XcmV3Junctions.X1(b.XcmV3Junction.Parachain(en))}},mode:i?"bridge-withdraw":"bridge-deposit"}}if(t.parachainId!==en)return{dest:{type:n,value:_a(t.ecosystem,en)},mode:"onward"}}},Mn=(n,e)=>({type:n,value:{parents:0,interior:b.XcmV3Junctions.X1(e)}}),Da=(n,e,t)=>e==="RemoteReserve"?{type:"RemoteReserve",value:{type:n,value:ym(t)?hm:t}}:{type:e},nn=(n,e)=>({id:n,fun:b.XcmV3MultiassetFungibility.Fungible(e)}),Or=(n,e,t)=>({type:n,value:[b.XcmV4Instruction.DepositAsset({assets:b.XcmV4AssetAssetFilter.Wild(b.XcmV4AssetWildAsset.AllCounted(t)),beneficiary:{parents:0,interior:b.XcmV3Junctions.X1(e)}})]}),Ds=(n,e,t,s,a)=>{let i=a;return{type:n,value:[b.XcmV4Instruction.SetAppendix([b.XcmV4Instruction.DepositAsset({assets:b.XcmV4AssetAssetFilter.Wild(b.XcmV4AssetWildAsset.All()),beneficiary:{parents:0,interior:b.XcmV3Junctions.X1(t)}})]),b.XcmV4Instruction.InitiateReserveWithdraw({assets:b.XcmV4AssetAssetFilter.Wild(b.XcmV4AssetWildAsset.AllOf({id:s,fun:b.XcmV2MultiassetWildFungibility.Fungible()})),reserve:Ls.ethereumLocation(lt),xcm:[b.XcmV4Instruction.BuyExecution({fees:{id:Am(s),fun:b.XcmV3MultiassetFungibility.Fungible(1n)},weight_limit:b.XcmV3WeightLimit.Unlimited()}),b.XcmV4Instruction.DepositAsset({assets:b.XcmV4AssetAssetFilter.Wild(b.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:b.XcmV3Junctions.X1(e)}}),b.XcmV4Instruction.SetTopic(i)]}),b.XcmV4Instruction.SetTopic(i)]}},Hr=(n,e,t,s,a,i)=>{let r=s==="onward"?{parents:1,interior:b.XcmV3Junctions.X1(b.XcmV3Junction.Parachain(t.parachainId))}:_a(t.ecosystem,t.parachainId),o={parents:0,interior:b.XcmV3Junctions.X1(e)},c=b.XcmV4AssetAssetFilter.Wild(b.XcmV4AssetWildAsset.AllCounted(1)),m=[b.XcmV4Instruction.BuyExecution({fees:{id:a,fun:b.XcmV3MultiassetFungibility.Fungible(i)},weight_limit:b.XcmV3WeightLimit.Unlimited()}),b.XcmV4Instruction.DepositAsset({assets:c,beneficiary:o})],g=s==="bridge-withdraw"?b.XcmV4Instruction.InitiateReserveWithdraw({assets:c,reserve:r,xcm:m}):b.XcmV4Instruction.DepositReserveAsset({assets:c,dest:r,xcm:m});return{type:n,value:[b.XcmV4Instruction.SetAppendix([b.XcmV4Instruction.DepositAsset({assets:b.XcmV4AssetAssetFilter.Wild(b.XcmV4AssetWildAsset.All()),beneficiary:o})]),g]}},Am=n=>{let e=vn.multiloc.findNestedKey(n,"key");return e?{parents:0,interior:b.XcmV3Junctions.X1(b.XcmV3Junction.AccountKey20({key:e.key}))}:{parents:0,interior:b.XcmV3Junctions.Here()}},Wr=(n,e,t,s,a,i)=>({type:n,value:[b.XcmV4Instruction.WithdrawAsset([{id:t,fun:b.XcmV3MultiassetFungibility.Fungible(s)}]),b.XcmV4Instruction.BuyExecution({fees:{id:t,fun:b.XcmV3MultiassetFungibility.Fungible(s)},weight_limit:b.XcmV3WeightLimit.Unlimited()}),b.XcmV4Instruction.Transact({origin_kind:b.XcmV2OriginKind.SovereignAccount(),require_weight_at_most:{ref_time:i.refTime,proof_size:i.proofSize},call:a}),b.XcmV4Instruction.RefundSurplus(),b.XcmV4Instruction.DepositAsset({assets:b.XcmV4AssetAssetFilter.Wild(b.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:b.XcmV3Junctions.X1(e)}})]}),Ur=(n,e,t,s,a,i)=>({type:n,value:[b.XcmV4Instruction.WithdrawAsset([{id:t,fun:b.XcmV3MultiassetFungibility.Fungible(a)}]),b.XcmV4Instruction.BuyExecution({fees:{id:t,fun:b.XcmV3MultiassetFungibility.Fungible(a)},weight_limit:b.XcmV3WeightLimit.Unlimited()}),b.XcmV4Instruction.TransferAsset({assets:[{id:t,fun:b.XcmV3MultiassetFungibility.Fungible(s)}],beneficiary:{parents:0,interior:b.XcmV3Junctions.X1(i)}}),b.XcmV4Instruction.RefundSurplus(),b.XcmV4Instruction.DepositAsset({assets:b.XcmV4AssetAssetFilter.Wild(b.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:b.XcmV3Junctions.X1(e)}})]});var Se="PolkadotXcm",wm=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=re(n),r=a.chain,o=s.chain,c="V4",m=se(r,t),g=se(r,s.fee),f=ie(m,c),y=ie(g,c),A=nn(f,e),x=nn(y,s.fee.amount),S="limited_reserve_transfer_assets";return new Ut.ExtrinsicConfig({module:Se,func:S,getTx:B=>{let k=B.getUnsafeApi().tx[Se][S];return t.key===s.fee.key?k({dest:Et(c,r,o),beneficiary:Mn(c,i),assets:{type:c,value:[A]},fee_asset_item:0,weight_limit:{type:"Unlimited"}}):Tr(m,g)?k({dest:Et(c,r,o),beneficiary:Mn(c,i),assets:{type:c,value:[x,A]},fee_asset_item:0,weight_limit:{type:"Unlimited"}}):k({dest:Et(c,r,o),beneficiary:Mn(c,i),assets:{type:c,value:[A,x]},fee_asset_item:1,weight_limit:{type:"Unlimited"}})}})}}),xm=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=re(n),r=a.chain,o=s.chain,c="V4",m=ie(se(r,t),c),g=nn(m,e),f=Et(c,r,o),y=Mn(c,i),A={type:c,value:[g]},x="limited_teleport_assets";return new Ut.ExtrinsicConfig({module:Se,func:x,getTx:S=>S.getUnsafeApi().tx[Se][x]({dest:f,beneficiary:y,assets:A,fee_asset_item:0,weight_limit:{type:"Unlimited"}})})}}),Sm=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=re(n),r=a.chain,o=s.chain,c=r.xcmVersion??"V4",m=ie(se(r,t),c),g=nn(m,e),f=Et(c,r,o),y=Mn(c,i),A={type:c,value:[g]},x="reserve_transfer_assets";return new Ut.ExtrinsicConfig({module:Se,func:x,getTx:S=>S.getUnsafeApi().tx[Se][x]({dest:f,beneficiary:y,assets:A,fee_asset_item:0})})}}),km=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=re(n),r=a.chain,o=s.chain,c="V4",m=ie(se(r,t),c),g=nn(m,e),f=Et(c,r,o),y=Mn(c,i),A={type:c,value:[g]},x="transfer_assets";return new Ut.ExtrinsicConfig({module:Se,func:x,getTx:S=>S.getUnsafeApi().tx[Se][x]({dest:f,beneficiary:y,assets:A,fee_asset_item:0,weight_limit:{type:"Unlimited"}})})}}),vm=n=>({build:async({address:e,asset:t,amount:s,destination:a,messageId:i,sender:r,source:o,transact:c})=>{let m="V4",g=o.chain,f=a.chain,y=a.fee.amount,A=a.fee;c&&(f=c.chain,y=ss.big.toBigInt(c.fee.amount,c.fee.decimals),A=c.fee);let x=re(r),S=c||f.usesCexForwarding?Jn(g,r,f):e,B=re(S),{transferType:k}=n,F=ie(se(g,t),m),M=ie(se(g,A),m),H=nn(F,s),N=nn(M,y),I=t.isEqual(A),$=Vr(m,g,f,t),Ke=$?.dest??Et(m,g,f),Je={type:m,value:I?[H]:[N,H]},Lt=Da(m,k,F),Nt={type:m,value:I?F:M},Ae=Da(m,k,M),l;if(Xr(F)&&a.chain.isEvmChain())l=Ds(m,B,x,F,i);else if($){let u=ss.big.toBigInt(n.executionFee??a.fee.amount,a.fee.decimals),p=ie(se(f,t),m);l=Hr(m,B,f,$.mode,p,u)}else l=Or(m,B,Je.value.length);let d="transfer_assets_using_type_and_then";return new Ut.ExtrinsicConfig({module:Se,func:d,getTx:u=>u.getUnsafeApi().tx[Se][d]({dest:Ke,assets:Je,assets_transfer_type:Lt,remote_fees_id:Nt,fees_transfer_type:Ae,custom_xcm_on_dest:l,weight_limit:{type:"Unlimited"}})})}}),Mm=()=>{let n="send";return{transact:e=>({build:async t=>{let{sender:s,source:a,transact:i}=t,r="V4";if(!i)throw new Error("Transact ctx configuration is missing.");let o=a.chain,c=i.chain,m=Jn(o,s,c),g=re(m),{fee:f}=i,y=ie(se(c,f),r),A=ss.big.toBigInt(e.fee,f.decimals);return new Ut.ExtrinsicConfig({module:Se,func:n,getTx:x=>x.getUnsafeApi().tx[Se][n]({dest:Et(r,o,c),message:Wr(r,g,y,A,i.call,i.weight)})})}}),transferAsset:e=>({build:async t=>{let{amount:s,address:a,asset:i,sender:r,source:o,destination:c}=t,m="V4",g=o.chain,f=c.chain,y=Jn(g,r,f),A=re(y),x=re(a),S=ie(se(f,i),m),{fee:B}=c,k=ss.big.toBigInt(e.fee,B.decimals),F=s>B.amount?s-(B.amount+k):s;return new Ut.ExtrinsicConfig({module:Se,func:n,getTx:M=>M.getUnsafeApi().tx[Se][n]({dest:Et(m,g,f),message:Ur(m,A,S,F,k,x)})})}})}};function Im(n){let e=t=>({build:async s=>{let a=t(s),i="execute";return new Ut.ExtrinsicConfig({module:Se,func:i,getTx:r=>r.getUnsafeApi().tx[Se][i]({message:a,max_weight:{ref_time:20000000000n,proof_size:500000n}})})}});return n?e(n):{viaSnowbridge:()=>e(Zi)}}var Fa=()=>({limitedReserveTransferAssets:wm,limitedTeleportAssets:xm,reserveTransferAssets:Sm,transferAssets:km,transferAssetsUsingTypeAndThen:vm,execute:Im,send:Mm});var Gr=require("@galacticcouncil/xc-core"),qr=require("@galacticcouncil/common");var as=require("@galacticcouncil/descriptors"),Nr=(n,e,t)=>e.parachainId===0?{type:n,value:{parents:1,interior:as.XcmV3Junctions.X1(t)}}:{type:n,value:{parents:1,interior:as.XcmV3Junctions.X2([as.XcmV3Junction.Parachain(e.parachainId),t])}};var Kr="XTokens",Tm=()=>({build:async({address:n,amount:e,asset:t,destination:s,sender:a,source:i})=>{let r=i.chain,o=s.chain,c="V3",m=o.usesCexForwarding?Jn(r,a,o):n,g=re(m),f=r.getAssetId(t),y=(0,qr.encodeAssetId)(f),A="transfer";return new Gr.ExtrinsicConfig({module:Kr,func:A,getTx:x=>x.getUnsafeApi().tx[Kr][A]({currency_id:y,amount:e,dest:Nr(c,o,g),dest_weight_limit:{type:"Unlimited"}})})}}),Xa=()=>({transfer:Tm});function w(){return{assetConversion:mr,assets:dr,balances:gr,ethereumXcm:Ta,polkadotXcm:Fa,router:yr,utility:wr,xTokens:Xa}}function sn(n,e){return{prior:function(t){return{build:async s=>n(s)?w().utility().batchAll([e,t]).build(s):t.build(s)}},priorMulti:function(t){return{build:async s=>n(s)?w().utility().batchAll([e,...t]).build(s):w().utility().batchAll([...t]).build(s)}}}}var In=require("@galacticcouncil/xc-core");var zr=80000n,jr=120000n,$r=100000n,Yr=2000000n,Va=15000000000000n;var Na={};pn(Na,{ASSET_LOCKDOWN_PERIOD_BLOCKS:()=>Zr,AssethubClient:()=>$e,BaseClient:()=>gt,HydrationClient:()=>ke,getAllAssetDepositLimits:()=>Wa,getAssetDepositLimit:()=>Ha,getGlobalWithdrawLimit:()=>Ua});var Oa=require("@galacticcouncil/common"),is=require("@galacticcouncil/descriptors"),gt=class{chain;descriptor;constructor(e,t){this.chain=e,this.descriptor=t??is.hub}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:a,frozen:i}=s;return BigInt(a)-BigInt(i)}async calculateDestinationFee(e,t){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 a=this.chain.getAssetXcmLocation(t);if(!a)throw Error(`Can't get XCM location for asset ${t.originSymbol}`);let i=(0,Oa.encodeLocation)(a),r=await this.refApi.apis.XcmPaymentApi.query_weight_to_asset_fee(s.value,is.XcmVersionedAssetId.V4(i));if(!r.success)throw Error(`Can't convert weight to fee in ${t.originSymbol}`);return BigInt(r.value)}async calculateDestinationFeeV5(e,t){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 a=this.chain.getAssetXcmLocation(t);if(!a)throw Error(`Can't get XCM location for asset ${t.originSymbol}`);let i=(0,Oa.encodeLocation)(a),r=await this.refApi.apis.XcmPaymentApi.query_weight_to_asset_fee(s.value,is.XcmVersionedAssetId.V4(i));if(!r.success)throw Error(`Can't convert weight to fee in ${t.originSymbol}`);return BigInt(r.value)}};var rt=require("@galacticcouncil/descriptors"),Jr=require("@galacticcouncil/common"),Fs=require("@polkadot-api/substrate-bindings"),Qr=require("@polkadot-api/utils");var $e=class extends gt{constructor(e){super(e)}async checkIfSufficient(e){let t=this.chain.getAssetId(e),s=this.chain.getAssetXcmLocation(e),a=(0,Jr.encodeLocation)(s);if(t===0)return!0;let i=t===e.originSymbol?await this.api().query.ForeignAssets.Asset.getValue(a):await this.api().query.Assets.Asset.getValue(Number(t));return i&&i.is_sufficient||!1}async checkIfFrozen(e,t){let s=this.chain.getAssetId(t);if(s===t.originSymbol)return!1;let a=await this.api().query.Assets.Account.getValue(Number(s),e);return a&&a.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,t){let s=new TextEncoder().encode(e),a=(0,Qr.toHex)((0,Fs.Twox128)(s)),i=await this.client._request("state_getStorage",[a]);if(!i)return t;let r=Fs.u128.dec(i);return r===0n?t:r}async calculateDeliveryFee(e,t){let s=rt.XcmVersionedLocation.V5({parents:1,interior:rt.XcmV5Junctions.X1(rt.XcmV5Junction.Parachain(t))}),a=rt.XcmVersionedAssetId.V5({parents:1,interior:{type:"Here",value:void 0}}),i=await this.api().apis.XcmPaymentApi.query_delivery_fees(s,rt.XcmVersionedXcm.V4(e),a);if(!i.success)throw Error("Can't query XCM delivery fee.");let r=i.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 o=r.fun.value;if(typeof o=="bigint")return o;throw Error("Can't parse delivery fee.")}async quoteDotToEther(e,t){let s={parents:1,interior:rt.XcmV5Junctions.Here()},a=await this.api().apis.AssetConversionApi.quote_price_exact_tokens_for_tokens(s,e,t,!0);if(a===void 0)throw Error("Can't quote DOT to Ether conversion.");return a}async quoteEtherForDot(e,t){let s={parents:1,interior:rt.XcmV5Junctions.Here()},a=await this.api().apis.AssetConversionApi.quote_price_tokens_for_exact_tokens(e,s,t,!0);if(a===void 0)throw Error("Can't quote Ether for DOT conversion.");return a}async quoteDotForExactEther(e,t){let s={parents:1,interior:rt.XcmV5Junctions.Here()},a=await this.api().apis.AssetConversionApi.quote_price_tokens_for_exact_tokens(s,e,t,!0);if(a===void 0)throw Error("Can't quote DOT for Ether conversion.");return a}};var to=require("@galacticcouncil/descriptors");var Zr=14400;function eo(n,e,t,s,a,i){let r=e?.xcm_rate_limit!=null?BigInt(e.xcm_rate_limit):null,o=e?.symbol?new TextDecoder().decode(e.symbol):`#${n}`,c=e?.decimals??12,m=!1,g,f,y;t&&(t.type==="Locked"?(g=t.value,m=a<t.value):(f=t.value[0],y=t.value[1]));let A=s?.type==="Local"?"Local":"External",x=!m&&f!==void 0&&f+Zr<=a,S=null;if(r!==null)if(m)S=0n;else if(x)S=r;else{let B=y??i,k=i>B?i-B:0n;S=r>k?r-k:0n}return{assetId:n,symbol:o,decimals:c,limit:r,locked:m,lockedUntilBlock:g,lastResetBlock:f,baselineIssuance:y,currentIssuance:i,headroom:S,category:A,periodExpired:x}}async function Ha(n,e){let t=e===0?n.query.Balances.TotalIssuance.getValue({at:"best"}):n.query.Tokens.TotalIssuance.getValue(e,{at:"best"}),[s,a,i,r,o]=await Promise.all([n.query.AssetRegistry.Assets.getValue(e,{at:"best"}),n.query.CircuitBreaker.AssetLockdownState.getValue(e,{at:"best"}),n.query.CircuitBreaker.GlobalAssetOverrides.getValue(e,{at:"best"}),n.query.System.Number.getValue({at:"best"}),t]);return eo(e,s,a,i,r,o)}async function Wa(n){let[e,t,s,a,i,r]=await Promise.all([n.query.AssetRegistry.Assets.getEntries({at:"best"}),n.query.CircuitBreaker.AssetLockdownState.getEntries({at:"best"}),n.query.CircuitBreaker.GlobalAssetOverrides.getEntries({at:"best"}),n.query.System.Number.getValue({at:"best"}),n.query.Balances.TotalIssuance.getValue({at:"best"}),n.query.Tokens.TotalIssuance.getEntries({at:"best"})]),o=new Map(t.map(f=>[f.keyArgs[0],f.value])),c=new Map(s.map(f=>[f.keyArgs[0],f.value])),m=new Map(r.map(f=>[f.keyArgs[0],f.value])),g=new Map;for(let f of e){let y=f.keyArgs[0],A=f.value;if(A?.xcm_rate_limit==null)continue;let x=y===0?i:m.get(y)??0n,S=eo(y,A,o.get(y),c.get(y),a,x);g.set(y.toString(),S)}return g}async function Ua(n){let[e,t,s,a]=await Promise.all([n.query.CircuitBreaker.GlobalWithdrawLimitConfig.getValue({at:"best"}),n.query.CircuitBreaker.WithdrawLimitAccumulator.getValue({at:"best"}),n.query.CircuitBreaker.WithdrawLockdownUntil.getValue({at:"best"}),n.query.Timestamp.Now.getValue({at:"best"})]),i=s??void 0,r=i!==void 0&&a<i,[o,c]=t;if(!e)return{configured:!1,limit:0n,windowMs:0n,used:0n,lastUpdateMs:c,headroom:0n,lockdown:r,lockdownUntilMs:i};let{limit:m,window:g}=e,f=o;if(!r&&g>0n){let A=a>c?a-c:0n;if(A>0n){let x=A>g?g:A,S=o*x/g;f=o>S?o-S:0n}}let y=r||f>=m?0n:m-f;return{configured:!0,limit:m,windowMs:g,used:f,lastUpdateMs:c,headroom:y,lockdown:r,lockdownUntilMs:i}}var ke=class extends gt{constructor(e){super(e,to.hydration)}async checkIfSufficient(e){let t=this.chain.getAssetId(e),s=Number(t),a=await this.api().query.AssetRegistry.Assets.getValue(s);return a?a.is_sufficient||!1:!0}async getFeeAsset(e){let t=await this.api().query.MultiTransactionPayment.AccountCurrencyMap.getValue(e);return t?t.toString():"0"}async getAssetBalance(e,t){return t==="0"?this.getSystemAccountBalance(e):this.getTokensAccountsBalance(e,t)}async getSystemAccountBalance(e){let s=(await this.api().query.System.Account.getValue(e)).data,{free:a,frozen:i}=s;return BigInt(a)-BigInt(i)}async getTokensAccountsBalance(e,t){let s=Number(t),a=await this.api().query.Tokens.Accounts.getValue(e,s),{free:i,frozen:r}=a;return BigInt(i)-BigInt(r)}getAssetDepositLimit(e){let t=typeof e=="number"?e:Number(this.chain.getAssetId(e));return Ha(this.api(),t)}getAllAssetDepositLimits(){return Wa(this.api())}getGlobalWithdrawLimit(){return Ua(this.api())}};function Pm(){return{calculateInboundFee:n=>({build:async({feeAsset:e,destination:t})=>{let s=t,a=new ke(s),i=new $e(n.hub),r=_s(e,s),o=_r(e,s),c=Yn(lt),m=250000000n,g=Qi(lt,s.parachainId),[f,y,A,x]=await Promise.all([a.calculateDestinationFeeV5(o,C),i.calculateDeliveryFee(r,s.parachainId),i.calculateDeliveryFee(r,Cs),i.calculateDestinationFeeV5(g,C)]),S=fe(f,33n),B=fe(y,33n),k=fe(A,33n),M=fe(x,33n)+B,H=S,N=await i.quoteEtherForDot(c,M),I=fe(N,30n),$=I<Va*2n?Va*2n:I,Ke=fe(await i.quoteEtherForDot(c,H),100n),Je=fe(await i.quoteDotToEther(c,m+k),30n);return{amount:$+Je+Ke,breakdown:{executionFee:$,relayerFee:Je,remoteEtherFee:Ke,hydrationDotFee:H}}}}),calculateOutboundFee:n=>({build:async({transferAsset:e,feeAsset:t,source:s,destination:a})=>{let i=s,r=a,o=new $e(n.hub),c=Yn(lt),m=Ra(e,i),[g,f,y]=await Promise.all([o.getBridgeDeliveryFee(),o.calculateDeliveryFee(m,Cs),o.calculateDestinationFee(m,t)]),A=await r.evmClient.getProvider().getGasPrice(),x=Yr+jr+zr+$r,S=A*x,B=fe(S,10n),k=g+fe(f,33n)+fe(y,33n),F=fe(await o.quoteDotForExactEther(c,B),20n),M=new ke(i),H=Ma({tokenAddress:"0x0000000000000000000000000000000000000000",senderPubKey:"0x"+"00".repeat(32),beneficiaryHex:"0x"+"00".repeat(20),tokenAmount:1000000000000n,sourceExecutionFee:1000000000n,dotRemoteFee:1000000000n,dotToEtherSwapAmount:1000000000n,etherFeeAmount:1000000000n,topic:St}),N=fe(await M.calculateDestinationFeeV5(H,C),33n);return{amount:k+F+N,breakdown:{dotRemoteFee:k,dotToEtherSwapAmount:F,etherFeeAmount:B,sourceExecutionFee:N}}}}),calculateInboundFeeV1:n=>({build:async({feeAsset:e,destination:t,source:s})=>{let a=s,i=t,r=In.Snowbridge.fromChain(a),o=new gt(i),c=new $e(n.hub),m=_s(e,i),[g,f]=await Promise.all([o.calculateDestinationFee(m,C),c.calculateDeliveryFee(m,i.parachainId)]),y=f+fe(g,25n),A=a.getAssetId(e);return{amount:await a.evmClient.getProvider().readContract({abi:In.Abi.Snowbridge,address:r.getGateway(),args:[A,i.parachainId,y],functionName:"quoteSendTokenFee"}),breakdown:{bridgeFeeInDot:y}}}}),calculateOutboundFeeV1:n=>({build:async({transferAsset:e,feeAsset:t,source:s})=>{let a=s,i=new $e(n.hub),r=Ra(e,a),o=_s(e,a),[c,m,g,f,y]=await Promise.all([i.getBridgeDeliveryFeeV1(),i.calculateDeliveryFee(r,Cs),i.calculateDestinationFee(r,t),i.calculateDeliveryFee(o,a.parachainId),i.calculateDestinationFee(o,t)]);return{amount:c+m+fe(g,25n)+f+fe(y,25n),breakdown:{bridgeDeliveryFee:c,bridgeHubDeliveryFee:m,assetHubDestinationFee:g,returnToSenderDeliveryFee:f,returnToSenderDestinationFee:y}}}})}}function Cm(){return{calculateDestFee:n=>({build:async({feeAsset:e,source:t,destination:s})=>{let a=t,i=s,r=n?.reserve;if(Br(e,a,i,r),r){let y=new gt(i),A=new gt(r),x=La(e,i),S=Lr(e,r,i),[B,k]=await Promise.all([y.calculateDestinationFee(x,e),A.calculateDestinationFee(S,e)]),F=k+B,M=fe(F,20n),H=M-F;return{amount:M,breakdown:{reserveFee:k,destinationFee:B,margin:H}}}let o=new gt(i),c=Rr(e,i),m=await o.calculateDestinationFee(c,e),g=fe(m,20n),f=g-m;return{amount:g,breakdown:{totalFee:m,margin:f}}}})}}function Em(){return{quoteFee:()=>({build:async({feeAsset:n,source:e})=>{let t=e,s=In.Basejump.fromChain(t),a=t.getAssetId(n);return{amount:await t.evmClient.getProvider().readContract({abi:In.Abi.Basejump,address:s.getAddress(),args:[a],functionName:"quoteFee"})}}})}}function O(){return{Basejump:Em,XcmPaymentApi:Cm,Snowbridge:Pm}}var Bm="0";function Rm(){return{build:async({address:n,chain:e})=>{let s=await new ke(e).api().query.MultiTransactionPayment.AccountCurrencyMap.getValue(n),a=s?s.toString():Bm,i=e.findAssetById(a);return i?i.asset:Ln}}}var Lm=()=>({accountCurrencyMap:Rm});function rs(){return{multiTransactionPayment:Lm}}var Ye=require("@galacticcouncil/xc-core"),no=require("@mysten/sui/transactions"),Xs=require("@mysten/sui/utils"),so=require("@wormhole-foundation/sdk-base"),_m=()=>({build:async n=>{let{address:e,amount:t,asset:s,source:a,destination:i}=n,r=a.chain,o=i.chain,c=Ye.Ntt.fromChain(r,s),m=Ye.Wormhole.fromChain(r),g=Ye.Wormhole.fromChain(o),f=r.client,y=e;o instanceof Ye.EvmParachain&&(y=await o.getDerivatedAddress(e));let A=so.encoding.hex.decode(g.normalizeAddress(y)),x=m.getCoreBridge(),S=c.manager,B=c.transceiver.wormhole,k=c.token,[F,M,H,N]=await Promise.all([Ye.suiPkg.getWormholePackageId(f,x),Ye.suiPkg.getCurrentPackageId(f,S),Ye.suiPkg.getCurrentPackageId(f,B),Ye.suiPkg.getCoinMetadataId(f,k)]),I=new no.Transaction,[$]=I.splitCoins(I.gas,[I.pure.u64(t)]),[Ke]=I.moveCall({target:`${M}::upgrades::new_version_gated`,arguments:[]}),[Je,Lt]=I.moveCall({target:`${M}::ntt::prepare_transfer`,typeArguments:[k],arguments:[I.object(S),$,I.object(N),I.pure.u16(g.getWormholeId()),I.pure.vector("u8",Array.from(A)),I.pure.option("vector<u8>",null),I.pure.bool(!1)]}),[Nt]=I.moveCall({target:`${M}::state::get_next_sequence`,typeArguments:[k],arguments:[I.object(S)]});I.moveCall({target:`${M}::ntt::transfer_tx_sender`,typeArguments:[k],arguments:[I.object(S),Ke,I.object(N),Je,I.object(Xs.SUI_CLOCK_OBJECT_ID)]});let[Ae]=I.moveCall({target:`${M}::state::create_transceiver_message`,typeArguments:[`${H}::wormhole_transceiver::TransceiverAuth`,k],arguments:[I.object(S),Nt,I.object(Xs.SUI_CLOCK_OBJECT_ID)]}),[l]=I.moveCall({target:`${H}::wormhole_transceiver::release_outbound`,typeArguments:[`${M}::auth::ManagerAuth`],arguments:[I.object(B),Ae]}),[d]=I.splitCoins(I.gas,[I.pure.u64(0n)]);I.moveCall({target:`${F}::publish_message::publish_message`,arguments:[I.object(x),d,l,I.object(Xs.SUI_CLOCK_OBJECT_ID)]});let[u]=I.moveCall({target:"0x2::coin::from_balance",typeArguments:[k],arguments:[Lt]});return I.mergeCoins(I.gas,[u]),new Ye.MoveConfig({transaction:I,func:"transfer",module:"NttManager"})}}),ao=()=>({transfer:_m});function io(){return{Ntt:ao}}function Ka(){return{Wormhole:io}}var vt=require("@galacticcouncil/xc-core"),Ko=require("@solana/spl-token"),zs=require("@solana/web3.js"),Go=require("@wormhole-foundation/sdk-base"),qo=require("@wormhole-foundation/sdk-definitions"),zo=require("@wormhole-foundation/sdk-solana"),Wp=require("@wormhole-foundation/sdk-definitions-ntt");async function Xm(n,e){return!("message"in e)||e.message.version==="legacy"?[]:(await Promise.all(e.message.addressTableLookups.map(s=>n.getAddressLookupTable(s.accountKey)))).map(s=>s.value).filter(s=>s!==null)}async function Vm(n,e,t){let s=await Xm(n,e);return{instructions:"message"in e?zs.TransactionMessage.decompile(e.message,{addressLookupTableAccounts:s}).instructions:e.instructions,signers:t,lookupTables:s}}var Om=()=>({build:async n=>{let{address:e,amount:t,asset:s,sender:a,source:i,destination:r}=n,o=i.chain,c=r.chain,m=vt.Ntt.fromChain(o,s),g=vt.Wormhole.fromChain(o),f=vt.Wormhole.fromChain(c),y=e;c instanceof vt.EvmParachain&&(y=await c.getDerivatedAddress(e));let{SolanaNtt:A}=await Promise.resolve().then(()=>(No(),Uo)),x=new A("Mainnet","Solana",o.connection,{coreBridge:g.getCoreBridge(),ntt:{manager:m.manager,token:m.token,transceiver:{wormhole:m.transceiver.wormhole}}}),S=o.getBalanceType(s)===vt.SolanaBalanceType.Native,B=zs.Keypair.generate(),k=[];for await(let H of x.transfer(new zo.SolanaAddress(a),t,{chain:(0,Go.toChain)(f.getWormholeId()),address:new qo.UniversalAddress(f.normalizeAddress(y))},{queue:!1,automatic:!1,wrapNative:S},B)){let{transaction:N,signers:I}=H.transaction;k.push(await Vm(o.connection,N,I??[]))}let F=S?BigInt(await(0,Ko.getMinimumBalanceForRentExemptAccount)(o.connection)):0n,M=k[k.length-1];return new vt.ProgramConfig({instructions:M.instructions,signers:M.signers,lookupTables:M.lookupTables,prerequisites:k.slice(0,-1),rentReserve:F,func:"transfer",module:"NttManager"})}}),jo=()=>({transfer:Om});function $o(){return{Ntt:jo}}function si(){return{Wormhole:$o}}var ii={};pn(ii,{Tag:()=>mn});var mn=(r=>(r.Basejump="Basejump",r.Ntt="Ntt",r.Wormhole="Wormhole",r.Relayer="Relayer",r.Snowbridge="Snowbridge",r.SnowbridgeV1="SnowbridgeV1",r))(mn||{});function Yo(n,e){return new ri.AssetRoute({source:{asset:n,fee:{asset:U}},destination:{chain:v,asset:e,fee:{amount:0,asset:n}},contract:at().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function Jo(n,e){return new ri.AssetRoute({source:{asset:n,fee:{asset:U},destinationFee:n},destination:{chain:v,asset:e,fee:{amount:O().Basejump().quoteFee(),asset:n}},contract:at().Basejump().bridgeViaWormhole(),tags:["Basejump"]})}var Hm=[Jo(Tt,Dt)],Wm=[Yo(Tt,Dt)],Zo=new Qo.ChainRoutes({chain:Dn,routes:[...Wm,...Hm]});var As=require("@galacticcouncil/xc-core");var js=require("@galacticcouncil/xc-core");function un(n,e){return new js.AssetRoute({source:{asset:n,fee:{asset:U}},destination:{chain:v,asset:e,fee:{amount:0,asset:n}},contract:at().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function ve(n,e){return new js.AssetRoute({source:{asset:n,fee:{asset:U}},destination:{chain:v,asset:e,fee:{amount:O().Snowbridge().calculateInboundFee({hub:X}),asset:U}},contract:at().Snowbridge().v2SendMessage(),tags:["Snowbridge"]})}function Me(n,e){return new js.AssetRoute({source:{asset:n,fee:{asset:U}},destination:{chain:v,asset:e,fee:{amount:O().Snowbridge().calculateInboundFeeV1({hub:X}),asset:U}},contract:at().Snowbridge().sendToken(),tags:["Snowbridge","SnowbridgeV1"]})}var Um=[un(_t,Kt),un(yt,Gt),un(R,zt),un(P,qt),un(At,jt),un(Vt,Ot),un(U,Ot)],Nm=[new As.AssetRoute({source:{asset:U,fee:{asset:U}},destination:{chain:v,asset:U,fee:{amount:O().Snowbridge().calculateInboundFee({hub:X}),asset:U}},contract:at().Snowbridge().v2SendMessage(),tags:["Snowbridge"]}),ve(Ce,Ce),ve(Ee,Ee),ve(Be,Be),ve(Re,Re),ve(Fe,Fe),ve(Ve,Ve),ve(Oe,Oe),ve(_e,_e),ve(Le,Le),ve(De,De),ve(Xe,Xe),ve(He,He),ve(We,We),ve(R,Xt),ve(P,Ft)],Km=[new As.AssetRoute({source:{asset:U,fee:{asset:U}},destination:{chain:v,asset:U,fee:{amount:O().Snowbridge().calculateInboundFeeV1({hub:X}),asset:U}},contract:at().Snowbridge().sendToken(),tags:["Snowbridge","SnowbridgeV1"]}),Me(Ce,Ce),Me(Ee,Ee),Me(Be,Be),Me(Re,Re),Me(Fe,Fe),Me(Ve,Ve),Me(Oe,Oe),Me(_e,_e),Me(Le,Le),Me(De,De),Me(Xe,Xe),Me(He,He),Me(We,We),Me(R,Xt),Me(P,Ft)],ec=new As.ChainRoutes({chain:L,routes:[...Um,...Nm,...Km]});var tc=[Zo,ec];var dn=require("@galacticcouncil/xc-core");var $s=require("@galacticcouncil/xc-core");var En=0,Gm=n=>{let{source:e}=n;return!!e.feeSwap},qm=n=>{let{source:e}=n,{enabled:t}=e.destinationFeeSwap||{};return!!t},nc=w().assetConversion().swapTokensForExactTokens({slippage:30});function zm(n,e,t){return new $s.AssetRoute({source:{asset:n,fee:{asset:C,extra:En}},destination:{chain:e,asset:n,fee:{amount:t,asset:P}},extrinsic:sn(qm,nc).prior(w().polkadotXcm().limitedReserveTransferAssets())})}function Ys(n,e,t){return new $s.AssetRoute({source:{asset:n,fee:{asset:n,swap:!n.isEqual(C)}},destination:{chain:e,asset:n,fee:{amount:t,asset:n}},extrinsic:sn(Gm,nc).prior(w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"}))})}function ws(n,e,t){return new $s.AssetRoute({source:{asset:n,fee:{asset:C,extra:En}},destination:{chain:e,asset:n,fee:{amount:t,asset:n}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})})}function Js(n){return zm(n,v,.02)}var jm=[new dn.AssetRoute({source:{asset:C,fee:{asset:C,extra:En}},destination:{chain:v,asset:C,fee:{amount:.001,asset:C}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),new dn.AssetRoute({source:{asset:D,fee:{asset:C,extra:En}},destination:{chain:v,asset:D,fee:{amount:1e-4,asset:D}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),ws(P,v,.02),ws(R,v,.02),Js(Ht)],$m=[new dn.AssetRoute({source:{asset:D,fee:{asset:C,extra:En}},destination:{chain:wt,asset:D,fee:{amount:.001,asset:D}},extrinsic:w().polkadotXcm().transferAssets()})],Ym=[ws(P,ne,.03),ws(R,ne,.03)],Jm=[new dn.AssetRoute({source:{asset:te,fee:{asset:C,extra:En}},destination:{chain:Yt,asset:te,fee:{amount:2.5,asset:te}},extrinsic:w().polkadotXcm().limitedTeleportAssets()})],sc=new dn.ChainRoutes({chain:$t,routes:[Ys(P,v,.02),Ys(R,v,.02),Ys(C,v,.001)]}),ac=new dn.ChainRoutes({chain:X,routes:[...jm,...$m,...Ym,...Jm]});var Mt=require("@galacticcouncil/xc-core");var Qm=[new Mt.AssetRoute({source:{asset:j},destination:{chain:v,asset:j,fee:{amount:.044306118,asset:j}},extrinsic:w().polkadotXcm().reserveTransferAssets()}),new Mt.AssetRoute({source:{asset:K,fee:{asset:j}},destination:{chain:v,asset:K,fee:{amount:O().XcmPaymentApi().calculateDestFee({reserve:ne}),asset:K}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new Mt.AssetRoute({source:{asset:ae,fee:{asset:j}},destination:{chain:v,asset:ae,fee:{amount:2e-6,asset:ae}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new Mt.AssetRoute({source:{asset:et,fee:{asset:j}},destination:{chain:v,asset:et,fee:{amount:.01,asset:et}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new Mt.AssetRoute({source:{asset:le,fee:{asset:j}},destination:{chain:v,asset:le,fee:{amount:O().XcmPaymentApi().calculateDestFee({reserve:ne}),asset:le}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new Mt.AssetRoute({source:{asset:de,fee:{asset:j}},destination:{chain:v,asset:de,fee:{amount:O().XcmPaymentApi().calculateDestFee({reserve:ne}),asset:de}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new Mt.AssetRoute({source:{asset:P,fee:{asset:j}},destination:{chain:v,asset:P,fee:{amount:O().XcmPaymentApi().calculateDestFee({reserve:X}),asset:P}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new Mt.AssetRoute({source:{asset:R,fee:{asset:j}},destination:{chain:v,asset:R,fee:{amount:O().XcmPaymentApi().calculateDestFee({reserve:X}),asset:R}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],ic=new Mt.ChainRoutes({chain:xe,routes:[...Qm]});var ot=require("@galacticcouncil/xc-core");var Zm=[new ot.AssetRoute({source:{asset:K},destination:{chain:v,asset:K,fee:{amount:O().XcmPaymentApi().calculateDestFee(),asset:K}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ot.AssetRoute({source:{asset:le,fee:{asset:K}},destination:{chain:v,asset:le,fee:{amount:O().XcmPaymentApi().calculateDestFee(),asset:le}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ot.AssetRoute({source:{asset:de,fee:{asset:K}},destination:{chain:v,asset:de,fee:{amount:O().XcmPaymentApi().calculateDestFee(),asset:de}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ot.AssetRoute({source:{asset:C,fee:{asset:K}},destination:{chain:v,asset:C,fee:{amount:O().XcmPaymentApi().calculateDestFee({reserve:X}),asset:C}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"RemoteReserve"})}),new ot.AssetRoute({source:{asset:j,fee:{asset:K}},destination:{chain:v,asset:j,fee:{amount:O().XcmPaymentApi().calculateDestFee({reserve:xe}),asset:j}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ot.AssetRoute({source:{asset:ae,fee:{asset:K}},destination:{chain:v,asset:ae,fee:{amount:625e-8,asset:ae}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ot.AssetRoute({source:{asset:P,fee:{asset:K}},destination:{chain:v,asset:P,fee:{amount:O().XcmPaymentApi().calculateDestFee({reserve:X}),asset:P}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ot.AssetRoute({source:{asset:R,fee:{asset:K}},destination:{chain:v,asset:R,fee:{amount:O().XcmPaymentApi().calculateDestFee({reserve:X}),asset:R}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],eu=[new ot.AssetRoute({source:{asset:P,fee:{asset:K}},destination:{chain:X,asset:P,fee:{amount:O().XcmPaymentApi().calculateDestFee(),asset:P}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ot.AssetRoute({source:{asset:R,fee:{asset:K}},destination:{chain:X,asset:R,fee:{amount:O().XcmPaymentApi().calculateDestFee(),asset:R}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],rc=new ot.ChainRoutes({chain:ne,routes:[...Zm,...eu]});var Rt=require("@galacticcouncil/xc-core");var Ie=()=>({asset:rs().multiTransactionPayment().accountCurrencyMap()});var ln=require("@galacticcouncil/xc-core");var tu=.02,oi=n=>{let{source:e}=n,{enabled:t}=e.destinationFeeSwap||{};return!!t},ci=w().router().buy({slippage:30});function Ne(n,e,t){return new ln.AssetRoute({source:{asset:n,fee:Ie()},destination:{chain:e,asset:n,fee:{amount:O().XcmPaymentApi().calculateDestFee(t?{reserve:t}:void 0),asset:n}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})}function fn(n,e){return new ln.AssetRoute({source:{asset:n,fee:Ie()},destination:{chain:e,asset:n,fee:{amount:O().XcmPaymentApi().calculateDestFee(),asset:n}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})})}function Qs(n){return new ln.AssetRoute({source:{asset:n,fee:Ie()},destination:{chain:X,asset:n,fee:{amount:tu,asset:P}},extrinsic:sn(oi,ci).prior(w().polkadotXcm().limitedReserveTransferAssets())})}function mi(n,e,t){return new ln.AssetRoute({source:{asset:n,fee:Ie()},destination:{chain:wt,asset:n,fee:{amount:e,asset:n}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve",executionFee:t})})}function pt(n,e,t){return new ln.AssetRoute({source:{asset:n,fee:Ie()},destination:{chain:t,asset:e,fee:{amount:0,asset:n}},contract:at().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function ye(n,e,t){return new ln.AssetRoute({source:{asset:n,fee:Ie()},destination:{chain:t,asset:e,fee:{amount:O().Snowbridge().calculateOutboundFee({hub:X}),asset:C}},extrinsic:sn(oi,ci).prior(w().polkadotXcm().execute().viaSnowbridge()),tags:["Snowbridge"]})}function be(n,e,t){return new ln.AssetRoute({source:{asset:n,fee:Ie()},destination:{chain:t,asset:e,fee:{amount:O().Snowbridge().calculateOutboundFeeV1({hub:X}),asset:C}},extrinsic:sn(oi,ci).prior(w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})),tags:["Snowbridge","SnowbridgeV1"]})}var nu=[fn(C,X),fn(D,X),fn(P,X),fn(R,X),Qs(Ht)],su=[mi(D,.05,.005),mi(C,.2,.02)],au=[Ne(j,xe),Ne(K,xe,ne),new Rt.AssetRoute({source:{asset:ae,fee:Ie()},destination:{chain:xe,asset:ae,fee:{amount:2e-6,asset:ae}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new Rt.AssetRoute({source:{asset:et,fee:Ie()},destination:{chain:xe,asset:et,fee:{amount:.01,asset:et}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),Ne(le,xe,ne),Ne(de,xe,ne),Ne(P,xe,X),Ne(R,xe,X)],iu=[Ne(K,ne),Ne(le,ne),Ne(de,ne),Ne(j,ne,xe),new Rt.AssetRoute({source:{asset:ae,fee:Ie()},destination:{chain:ne,asset:ae,fee:{amount:5e-6,asset:ae}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),Ne(P,ne,X),Ne(R,ne,X),new Rt.AssetRoute({source:{asset:C,fee:Ie()},destination:{chain:ne,asset:C,fee:{amount:O().XcmPaymentApi().calculateDestFee({reserve:X}),asset:C}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"RemoteReserve"})})],ru=[new Rt.AssetRoute({source:{asset:te,fee:Ie()},destination:{chain:Yt,asset:te,fee:{amount:2.5,asset:te}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],ou=[Ne(bt,Un)],cu=[new Rt.AssetRoute({source:{asset:ze,fee:Ie()},destination:{chain:Nn,asset:ze,fee:{amount:.02,asset:ze}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],mu=[new Rt.AssetRoute({source:{asset:tt,fee:Ie()},destination:{chain:On,asset:tt,fee:{amount:1.1,asset:tt}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],uu=[Ne(ht,Vn)],du=[pt(Kt,_t,L),pt(Gt,yt,L),pt(zt,R,L),pt(qt,P,L),pt(jt,At,L),pt(Ot,U,L)],lu=[pt(Dt,Tt,Dn)],fu=[pt(je,je,Zt),pt(mt,mt,Zt),pt(ut,ut,Zt)],gu=[pt(nt,nt,Gn)],pu=[ye(U,U,L),ye(Ce,Ce,L),ye(Ee,Ee,L),ye(Be,Be,L),ye(Re,Re,L),ye(Fe,Fe,L),ye(Ve,Ve,L),ye(Oe,Oe,L),ye(He,He,L),ye(_e,_e,L),ye(Le,Le,L),ye(De,De,L),ye(Xe,Xe,L),ye(We,We,L),ye(Xt,R,L),ye(Ft,P,L)],hu=[be(U,U,L),be(Ce,Ce,L),be(Ee,Ee,L),be(Be,Be,L),be(Re,Re,L),be(Fe,Fe,L),be(Ve,Ve,L),be(Oe,Oe,L),be(He,He,L),be(_e,_e,L),be(Le,Le,L),be(De,De,L),be(Xe,Xe,L),be(We,We,L),be(Xt,R,L),be(Ft,P,L)],yu=[fn(C,$t),fn(P,$t),fn(R,$t)],oc=new Rt.ChainRoutes({chain:v,routes:[...nu,...au,...iu,...yu,...lu,...du,...pu,...fu,...gu,...hu,...cu,...su,...ru,...uu,...mu,...ou]});var xs=require("@galacticcouncil/xc-core");var bu=[new xs.AssetRoute({source:{asset:te},destination:{chain:v,asset:te,fee:{amount:.01,asset:te}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})})],Au=[new xs.AssetRoute({source:{asset:te},destination:{chain:X,asset:te,fee:{amount:.1,asset:te}},extrinsic:w().polkadotXcm().limitedTeleportAssets()})],cc=new xs.ChainRoutes({chain:Yt,routes:[...bu,...Au]});var Zs=require("@galacticcouncil/xc-core");var wu=[new Zs.AssetRoute({source:{asset:bt},destination:{chain:v,asset:bt,fee:{amount:O().XcmPaymentApi().calculateDestFee(),asset:bt}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],mc=new Zs.ChainRoutes({chain:Un,routes:[...wu]});var ea=require("@galacticcouncil/xc-core");var xu=[new ea.AssetRoute({source:{asset:tt},destination:{chain:v,asset:tt,fee:{amount:.2,asset:tt}},extrinsic:w().polkadotXcm().reserveTransferAssets()})],uc=new ea.ChainRoutes({chain:On,routes:[...xu]});var ta=require("@galacticcouncil/xc-core");var Su=[new ta.AssetRoute({source:{asset:ze,fee:{asset:ze,extra:.030555}},destination:{chain:v,asset:ze,fee:{amount:.03,asset:ze}},extrinsic:w().polkadotXcm().reserveTransferAssets()})],dc=new ta.ChainRoutes({chain:Nn,routes:[...Su]});var na=require("@galacticcouncil/xc-core");var ku=[new na.AssetRoute({source:{asset:ht},destination:{chain:v,asset:ht,fee:{amount:.205,asset:ht}},extrinsic:w().polkadotXcm().reserveTransferAssets()})],lc=new na.ChainRoutes({chain:Vn,routes:[...ku]});var fc=[ac,sc,ic,rc,oc,cc,lc,mc,uc,dc];var sa=require("@galacticcouncil/xc-core");function ui(n){return new sa.AssetRoute({source:{asset:n,fee:{asset:je}},destination:{chain:v,asset:n,fee:{amount:0,asset:n}},program:si().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}var vu=[ui(je),ui(mt),ui(ut)],gc=new sa.ChainRoutes({chain:Zt,routes:[...vu]});var pc=[gc];var aa=require("@galacticcouncil/xc-core");function Mu(n){return new aa.AssetRoute({source:{asset:n,fee:{asset:nt}},destination:{chain:v,asset:n,fee:{amount:0,asset:n}},move:Ka().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}var Iu=[Mu(nt)],hc=new aa.ChainRoutes({chain:Gn,routes:[...Iu]});var yc=[hc];var Bn=require("@galacticcouncil/xc-core");var Tu=require("@galacticcouncil/xc-core");var Ss=.0015;var Pu=new Bn.AssetRoute({source:{asset:D,fee:{asset:D,extra:Ss}},destination:{chain:X,asset:D,fee:{amount:.002,asset:D}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),Cu=new Bn.AssetRoute({source:{asset:D,fee:{asset:D,extra:Ss}},destination:{chain:zn,asset:D,fee:{amount:.0012,asset:D}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),Eu=[new Bn.AssetRoute({source:{asset:D,fee:{asset:D,extra:Ss}},destination:{chain:v,asset:D,fee:{amount:.04,asset:D}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve",executionFee:.005})}),new Bn.AssetRoute({source:{asset:C,fee:{asset:D,extra:Ss}},destination:{chain:v,asset:C,fee:{amount:.15,asset:C}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve",executionFee:.01})})],bc=new Bn.ChainRoutes({chain:wt,routes:[Cu,Pu,...Eu]});var ks=require("@galacticcouncil/xc-core");var di=()=>({asset:rs().multiTransactionPayment().accountCurrencyMap()});var Bu=[new ks.AssetRoute({source:{asset:P,fee:di()},destination:{chain:wt,asset:P,fee:{amount:O().XcmPaymentApi().calculateDestFee(),asset:P}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],Ru=[new ks.AssetRoute({source:{asset:D,fee:di()},destination:{chain:wt,asset:D,fee:{amount:.0012,asset:D}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})})],Ac=new ks.ChainRoutes({chain:zn,routes:[...Bu,...Ru]});var wc=[bc,Ac];var Lu=[...tc,...fc,...pc,...yc,...wc],xc=new Map(Lu.map(n=>[n.chain.key,n]));var li=require("@galacticcouncil/xc-core");var gn=require("@galacticcouncil/xc-core"),ia=class extends gn.TransferValidation{async validate(e){let{source:t}=e,{chain:s,fee:a,feeBalance:i}=t;if(i.amount<a.amount)throw new gn.TransferValidationError("Insufficient_Fee_Balance",{amount:a.toDecimal(),asset:a.symbol,chain:s.name,error:"fee.insufficientBalance"})}},ra=class extends gn.TransferValidation{async skipFor(e){let{asset:t,source:s}=e,{enabled:a}=s.destinationFeeSwap||{};return t.isEqual(s.destinationFee)||!!a}async validate(e){if(await this.skipFor(e))return;let{source:s}=e,{chain:a,destinationFee:i,destinationFeeBalance:r}=s,o=await this.getMin(a,i),c=i.copyWith({amount:i.amount+o});if(r.amount<c.amount)throw new gn.TransferValidationError("Insufficient_Fee_Balance",{amount:c.toDecimal(),asset:c.symbol,chain:a.name,error:"destFee.insufficientBalance"})}async getMin(e,t){if(e instanceof gn.Parachain)return(await e.getMin(t)).amount;let s=e.getAssetMin(t);return BigInt(s*10**t.decimals)}};var es=require("@galacticcouncil/xc-core");var oa=class extends es.TransferValidation{async skipFor(e){let{asset:t,destination:s}=e,a=s.chain;return await new $e(a).checkIfSufficient(t)}async validate(e){if(await this.skipFor(e))return;let{address:s,destination:a}=e,i=a.chain;if(await new $e(i).getSystemAccountBalance(s)===0n)throw new es.TransferValidationError("Insufficient_Ed",{amount:"0.1",asset:"DOT",chain:a.chain.name,error:"account.insufficientDeposit"})}},ca=class extends es.TransferValidation{async validate(e){let{asset:t,sender:s,source:a}=e,i=a.chain;if(await new $e(i).checkIfFrozen(s,t))throw new es.TransferValidationError("Asset_Frozen",{asset:t.originSymbol,chain:a.chain.name,error:"asset.frozen"})}};var It=require("@galacticcouncil/xc-core");var _u=12,Du=1,Fu=18,ma=class extends It.TransferValidation{async skipFor(e){let{destination:t}=e,s=t.chain,a=new ke(s),i=t.balance.amount>0n,r=await a.checkIfSufficient(t.balance);return i||r}async validate(e){if(await this.skipFor(e))return;let{address:s,destination:a}=e,i=a.chain,r=new ke(i),o=await r.getFeeAsset(s),c=i.findAssetById(o),m=c.min||Du,g=c.decimals||_u,f=m*Math.pow(10,g),y=await r.getAssetBalance(s,o);if(BigInt(f*1.1)>y)throw new It.TransferValidationError("Insufficient_Ed",{amount:f,asset:c.asset.originSymbol,chain:i.name,error:"account.insufficientDeposit"})}},ua=class extends It.TransferValidation{async validate(e){let{amount:t,asset:s,destination:a}=e,i=a.chain,o=await new ke(i).getAssetDepositLimit(s);if(o.locked)throw new It.TransferValidationError("Deposit_Asset_Lockdown",{asset:s.originSymbol,chain:i.name,lockedUntilBlock:o.lockedUntilBlock,error:"circuitBreaker.assetLockdown"});if(o.headroom!==null&&t>o.headroom)throw new It.TransferValidationError("Deposit_Limit_Exceeded",{asset:s.originSymbol,chain:i.name,headroom:o.headroom,limit:o.limit,error:"circuitBreaker.depositLimitExceeded"})}},da=class extends It.TransferValidation{async validate(e){let{source:t}=e,s=t.chain,i=await new ke(s).getGlobalWithdrawLimit();if(i.lockdown)throw new It.TransferValidationError("Withdraw_Lockdown_Active",{chain:s.name,lockdownUntilMs:i.lockdownUntilMs,error:"circuitBreaker.withdrawLockdown"})}},la=class extends It.TransferValidation{async skipFor(e){let{source:t,transact:s}=e,{enabled:a}=t.destinationFeeSwap||{};return!(!!s&&s.chain.key==="moonbeam")||!!a}async validate(e){if(await this.skipFor(e))return;let{sender:s,source:a}=e,i=a.chain,r=new ke(i),o=i.getBalanceAssetId(ct),c=i.getAssetDecimals(ct)||Fu,m=1*Math.pow(10,c);if(await r.getTokensAccountsBalance(s,o.toString())<BigInt(m))throw new It.TransferValidationError("Insufficient_Ed",{amount:1,asset:ct.originSymbol,chain:i.name,error:"destFee.insufficientBalance"})}};var Te={isAny:()=>!0,isHydration:n=>n instanceof li.Parachain&&n.parachainId===2034,isHub:n=>n instanceof li.Parachain&&n.parachainId===1e3,isEvm:n=>n.isEvmChain()},Sc=[new ia(Te.isAny,Te.isAny),new ra(Te.isAny,Te.isAny),new oa(Te.isAny,Te.isHub),new ca(Te.isHub,Te.isAny),new ma(Te.isAny,Te.isHydration),new la(Te.isHydration,Te.isAny),new ua(Te.isAny,Te.isHydration),new da(Te.isHydration,Te.isAny)];var hi={};pn(hi,{AssethubDex:()=>pi,HydrationDex:()=>fi});var ts=require("@galacticcouncil/sdk-next"),vc=require("@galacticcouncil/common"),Mc=require("polkadot-api");var kc=(n,e=new Map)=>t=>{let s;return e.has(t)?e.get(t):(e.set(t,s=n(t)),s)};var{PoolType:fa}=ts.pool,{TradeRouteBuilder:Xu,TradeRouter:Vu}=ts.sor,{TxBuilderFactory:Ou}=ts.tx,fi=class{chain;client;poolCtx;txBuilder;getCtx=kc(async e=>{console.log("init swap router",e,"\u2705");let t=new Vu(this.poolCtx);return t.withFilter({useOnly:[fa.Aave,fa.Omni,fa.Stable,fa.XYK]}),t});constructor(e,t){this.chain=e,this.poolCtx=t,this.client=new ke(this.chain),this.txBuilder=new Ou(t.client,t.evm)}async getCalldata(e,t,s,a,i=0){let r=Number(this.chain.getMetadataAssetId(t)),o=Number(this.chain.getMetadataAssetId(s)),c=a.amount,m=await this.getCtx(1),g=await m.getMostLiquidRoute(r,o),f=await m.getBuy(r,o,c,g),x=await(await this.txBuilder.trade(f).withBeneficiary(e).withSlippage(i).build()).get().getEncodedData();return Mc.Binary.toHex(x)}async getQuote(e,t,s,a){let i=Number(this.chain.getMetadataAssetId(e)),r=Number(this.chain.getMetadataAssetId(t)),o=s.amount,c=await this.getCtx(1);try{let m=await c.getMostLiquidRoute(i,r),g=await c.getBuy(i,r,o,m);return{amount:g.amountIn,route:Xu.build(g.swaps)}}catch(m){if(a)return{amount:await this.getFallbackPrice(e,s.amount)};throw m}}async getFallbackPrice(e,t){let s=this.chain.getAssetId(e),a=await this.client.api().query.MultiTransactionPayment.AcceptedCurrencies.getValue(Number(s));if(!a)throw new Error(`No price found for asset ${e.key}`);let i=a*t,r=Math.pow(10,vc.RUNTIME_DECIMALS);return i/BigInt(r)}};var gi=require("@galacticcouncil/common"),pi=class{chain;client;constructor(e){this.chain=e,this.client=new $e(this.chain)}async getCalldata(e,t,s,a){throw Error("Not supported for "+this.chain.key)}async getQuote(e,t,s){let a=this.chain.getAssetXcmLocation(e),i=this.chain.getAssetXcmLocation(t),r=await this.client.api().apis.AssetConversionApi.quote_price_tokens_for_exact_tokens((0,gi.encodeLocation)(a),(0,gi.encodeLocation)(i),s.amount,!0);if(!r)throw new Error("Failed to get swap quote");return{amount:r}}};var Cc=require("@galacticcouncil/xc-core");var Ic=require("@galacticcouncil/xc-core");function ga(n){let{id:e,origin:t,symbol:s}=n,a=s.toLowerCase();return new Ic.Asset({key:[a,t,e].join("_"),originSymbol:s})}function Tc(n){let{decimals:e,id:t}=n;return{asset:ga(n),decimals:e,id:t,xcmLocation:{parents:0,interior:{type:"X2",value:[{type:"PalletInstance",value:50},{type:"GeneralIndex",value:t}]}}}}function Pc(n){let{decimals:e,id:t,internalId:s,origin:a}=n;return{asset:ga(n),decimals:e,id:s,xcmLocation:{parents:1,interior:{type:"X3",value:[{type:"Parachain",value:a},{type:"PalletInstance",value:50},{type:"GeneralIndex",value:t}]}}}}var pa=class extends Cc.ConfigService{registerExternal(e){let t=this.getChain("hydration"),s=this.getChain("assethub"),a=i=>!!t.findAssetById(i.internalId.toString());e.filter(i=>!a(i)&&i.origin===1e3).forEach(i=>{let r=ga(i),o=Tc(i),c=Pc(i);console.log("\u{1F480} Registering "+r.key),s.updateAsset(o),t.updateAsset(c),this.updateAsset(r),this.updateChainRoute(s,Js(r)),this.updateChainRoute(t,Qs(r))})}};0&&(module.exports={HydrationConfigService,assetsMap,builders,chainsMap,clients,dex,routesMap,tags,validations});
|