@galacticcouncil/xc-cfg 2.8.1 → 2.8.2-pr378-7eba3d2

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 CHANGED
@@ -1 +1 @@
1
- "use strict";var du=Object.create;var ma=Object.defineProperty;var lu=Object.getOwnPropertyDescriptor;var fu=Object.getOwnPropertyNames;var gu=Object.getPrototypeOf,pu=Object.prototype.hasOwnProperty;var $=(n,e)=>()=>(n&&(e=n(n=0)),e);var fn=(n,e)=>{for(var t in e)ma(n,t,{get:e[t],enumerable:!0})},yr=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of fu(e))!pu.call(n,a)&&a!==t&&ma(n,a,{get:()=>e[a],enumerable:!(s=lu(e,a))||s.enumerable});return n};var as=(n,e,t)=>(t=n!=null?du(gu(n)):{},yr(e||!n||!n.__esModule?ma(t,"default",{value:n,enumerable:!0}):t,n)),hu=n=>yr(ma({},"__esModule",{value:!0}),n);var Ia,Ic=$(()=>{Ia={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 Pc,Ec=$(()=>{Pc={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 Us,Bc=$(()=>{Ic();Ec();(function(n){n.idl={ntt:Ia,transceiver:Ia,transceiverLegacy:Ia,governance:Pc}})(Us||(Us={}))});var Pa,Rc=$(()=>{Pa={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 Lc,Dc=$(()=>{Lc={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 Ks,_c=$(()=>{Rc();Dc();(function(n){n.idl={ntt:Pa,transceiver:Pa,transceiverLegacy:Pa,governance:Lc}})(Ks||(Ks={}))});var Fc,Nc=$(()=>{Fc={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 Xc,Vc=$(()=>{Xc={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 Oc,Wc=$(()=>{Oc={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 Hc,Uc=$(()=>{Hc={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 Gs,Kc=$(()=>{Nc();Vc();Wc();Uc();(function(n){n.idl={ntt:Fc,transceiver:Xc,transceiverLegacy:Oc,governance:Hc}})(Gs||(Gs={}))});var Ki=$(()=>{Bc();_c();Kc()});function qc(n){for(let[e,t]of Ea)if(Gc.Ntt.abiVersionMatches(n,e))return t;throw new Error(`Unknown IDL version: ${n}`)}function qs(n,e,t){let{idl:{ntt:s}}=qc(t);return new Gi.Program(s,e,{connection:n})}function Ba(n,e,t,s=!1){let{idl:{transceiver:a,transceiverLegacy:i}}=qc(t),r=s?i:a;return new Gi.Program(r,e,{connection:n})}var Gi,Gc,Ea,Ra=$(()=>{Gi=require("@coral-xyz/anchor");Ki();Gc=require("@wormhole-foundation/sdk-definitions-ntt"),Ea=[["3.0.0",Gs],["2.0.0",Ks],["1.0.0",Us]]});function js(n){return vn.PublicKey.findProgramAddressSync([new vn.PublicKey(n).toBytes()],Ts)[0]}function kn(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 te(n,e){let t=s=>typeof s=="string"?zs.encoding.bytes.encode(s):s;return vn.PublicKey.findProgramAddressSync(Array.isArray(n)?n.map(t):[t(n)],new vn.PublicKey(e))[0]}var vn,zs,qi,Ts,zc,jb,Mn,zi,$b,Yb,La=$(()=>{vn=require("@solana/web3.js"),zs=require("@wormhole-foundation/sdk-base"),qi=as(require("bn.js"),1),Ts=new vn.PublicKey("BPFLoaderUpgradeab1e11111111111111111111111");zc=[{name:"length",binary:"uint",endianness:"little",size:4},{name:"version",binary:"bytes"}],jb={MAX:new qi.default((2n**64n-1n).toString()),to:(n,e)=>{let t=new qi.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};Mn=n=>zs.encoding.bignum.toBytes((0,zs.toChainId)(n),2),zi=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)},$b=new vn.PublicKey(Buffer.from("owner".padEnd(32,"\0"))),Yb=new vn.PublicKey(Buffer.from("payer".padEnd(32,"\0")))});async function Da(n,e,t,s,a,i,r,o,c){let m=Z.getExtraAccountMetaAddress(a,t),g=await n.getAccountInfo(m,c);if(g==null)return e;let f=Z.getExtraAccountMetas(g);if(![s,a,i,r].every(b=>e.keys.some(w=>w.pubkey.equals(b))))throw new Error("Missing required account in instruction");let p=Z.createExecuteInstruction(t,s,a,i,r,m,BigInt(o));for(let b of f)p.keys.push(Fd(await Z.resolveExtraAccountMeta(n,b,p.keys,p.data,p.programId),p.keys));e.keys.push(...p.keys.slice(5)),e.keys.push({pubkey:t,isSigner:!1,isWritable:!1}),e.keys.push({pubkey:m,isSigner:!1,isWritable:!1})}function Fd(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,Z,ue,Ce,jc,_a,ji,$s,$c,z,Yc=$(()=>{Cn=require("@coral-xyz/anchor"),Z=as(require("@solana/spl-token"),1),ue=require("@solana/web3.js"),Ce=require("@wormhole-foundation/sdk-base"),jc=require("@wormhole-foundation/sdk-definitions"),_a=as(require("bn.js"),1),ji=require("@wormhole-foundation/sdk-definitions-ntt"),$s=require("@solana/spl-token"),$c=require("@wormhole-foundation/sdk-solana-core");Ra();La();(function(n){function e(l,d,u){return{amount:new _a.default(l.toString()),recipientChain:{id:(0,Ce.toChainId)(d.chain)},recipientAddress:Array.from(d.address.toUniversalAddress().toUint8Array()),shouldQueue:u}}n.transferArgs=e,n.pdas=l=>({configAccount:()=>te("config",l),outboxRateLimitAccount:()=>te("outbox_rate_limit",l),inboxRateLimitAccount:st=>te(["inbox_rate_limit",Mn(st)],l),inboxItemAccount:(st,lt)=>te(["inbox_item",ji.Ntt.messageDigest(st,lt)],l),upgradeLock:()=>te("upgrade_lock",l),sessionAuthority:(st,lt)=>te(["session_authority",st.toBytes(),(0,jc.keccak256)(Ce.encoding.bytes.concat(Ce.encoding.bytes.zpad(new Uint8Array(lt.amount.toArray()),8),Mn(lt.recipientChain.id),new Uint8Array(lt.recipientAddress),new Uint8Array([lt.shouldQueue?1:0])))],l),tokenAuthority:()=>te("token_authority",l),pendingTokenAuthority:()=>te("pending_token_authority",l),peerAccount:st=>te(["peer",Mn(st)],l),registeredTransceiver:st=>te(["registered_transceiver",st.toBytes()],l),lutAccount:()=>te("lut",l),lutAuthority:()=>te("lut_authority",l)}),n.transceiverPdas=l=>{let d=()=>te("emitter",l);return{emitterAccount:d,outboxItemSigner:()=>te(["outbox_item_signer"],l),transceiverPeerAccount:H=>te(["transceiver_peer",Mn(H)],l),transceiverMessageAccount:(H,fe)=>te(["transceiver_message",Mn(H),fe],l),unverifiedMessageAccount:(H,fe)=>te(["vaa_body",H.toBytes(),new Uint8Array(fe.toArray("be"))],l),wormholeMessageAccount:H=>te(["message",H.toBytes()],l),wormholeMessageWithShimAccount:H=>te(d().toBytes(),H)}};async function t(l,d,u){if(!u){let dt=l.rpcEndpoint===Ce.rpc.rpcAddress("Devnet","Solana")?"6sbzC1eH4FTujJXWj51eQe25cYvr4xfXbJ1vAj7j2k5J":l.rpcEndpoint.startsWith("http://localhost")?"98evdAiWr7ey9MAQzoQQMwFQkTsSR6KkWQuFqKrgwNwb":"Hk3SdYTJFpawrvRz4qRztuEt2SqoCG7BGj2yJfDJSFbJ";u=new ue.PublicKey(dt)}let h=qs(l,d.toString(),"1.0.0"),F=await h.methods.version().accountsStrict({}).instruction(),{blockhash:ee}=await h.provider.connection.getLatestBlockhash("finalized"),se=new ue.TransactionMessage({payerKey:u,recentBlockhash:ee,instructions:[F]}).compileToV0Message(),Be=new ue.VersionedTransaction(se),H=await h.provider.connection.simulateTransaction(Be,{sigVerify:!1});if(!H.value.returnData||H.value.err)throw new Error("Could not fetch IDL version: "+JSON.stringify((0,Cn.translateError)(H.value.err,(0,Cn.parseIdlErrors)(h.idl))));let fe=Ce.encoding.b64.decode(H.value.returnData?.data[0]),nt=(0,Ce.deserializeLayout)(zc,fe),Ne=Ce.encoding.bytes.decode(nt.version);for(let[dt]of Ea)if(ji.Ntt.abiVersionMatches(Ne,dt))return dt;throw new Error(`Unknown IDL version: ${Ne}`)}n.getVersion=t;async function s(l,d,u){let[h,,,]=kn(l.idl.version),F=d.mode==="burning"?{burning:{}}:{locking:{}},ee=(0,Ce.toChainId)(d.chain);u=u??n.pdas(l.programId);let se=new _a.default(d.outboundLimit.toString());return l.methods.initialize({chainId:ee,limit:se,mode:F}).accounts({payer:d.payer,deployer:d.owner,programData:js(l.programId),config:u.configAccount(),mint:d.mint,rateLimit:u.outboxRateLimitAccount(),tokenProgram:d.tokenProgram,tokenAuthority:u.tokenAuthority(),...h>=3&&{multisigTokenAuthority:d.multisigTokenAuthority??null},custody:await n.custodyAccountAddress(u,d.mint,d.tokenProgram),bpfLoaderUpgradeableProgram:Ts,associatedTokenProgram:Z.ASSOCIATED_TOKEN_PROGRAM_ID,systemProgram:ue.SystemProgram.programId}).instruction()}n.createInitializeInstruction=s;async function a(l,d,u,h,F){let[ee,,,]=kn(l.idl.version);if(ee<2)return;F=F??n.pdas(l.programId);let se=await l.provider.connection.getSlot()-1,[Be,H]=Cn.web3.AddressLookupTableProgram.createLookupTable({authority:F.lutAuthority(),payer:h.payer,recentSlot:se}),fe=$c.utils.getWormholeDerivedAccounts(u,h.wormholeId.toString()),nt={config:F.configAccount(),custody:d.custody,tokenProgram:d.tokenProgram,mint:d.mint,tokenAuthority:F.tokenAuthority(),outboxRateLimit:F.outboxRateLimitAccount(),wormhole:{bridge:fe.wormholeBridge,feeCollector:fe.wormholeFeeCollector,sequence:fe.wormholeSequence,program:h.wormholeId,systemProgram:ue.SystemProgram.programId,clock:Cn.web3.SYSVAR_CLOCK_PUBKEY,rent:Cn.web3.SYSVAR_RENT_PUBKEY}},Ne=lt=>{let oa=new Array;for(let Rs in lt){let ca=lt[Rs];ca instanceof ue.PublicKey?oa.push(ca):typeof ca=="object"&&oa.push(...Ne(ca))}return oa},dt=Ne(nt).map(lt=>lt.toBase58()),st=await ln(l,F);if(st!==null){let lt=st.state.addresses?.map(Rs=>Rs.toBase58())??[];if(dt.filter(Rs=>!lt.includes(Rs)).length===0)return null}return l.methods.initializeLut(new _a.default(se)).accountsStrict({payer:h.payer,owner:h.owner,authority:F.lutAuthority(),lutAddress:H,lut:F.lutAccount(),lutProgram:ue.AddressLookupTableProgram.programId,systemProgram:ue.SystemProgram.programId,entries:nt}).instruction()}n.initializeOrUpdateLUT=a;async function i(l,d,u,h){h=h??n.pdas(l.programId);let F=await le(h,d),ee=(0,Ce.toChain)(u.transferArgs.recipientChain.id),se=await l.methods.transferBurn(u.transferArgs).accountsStrict({common:{payer:u.payer,config:{config:h.configAccount()},mint:d.mint,from:u.from,tokenProgram:d.tokenProgram,outboxItem:u.outboxItem,outboxRateLimit:h.outboxRateLimitAccount(),systemProgram:ue.SystemProgram.programId,custody:F},peer:h.peerAccount(ee),inboxRateLimit:h.inboxRateLimitAccount(ee),sessionAuthority:h.sessionAuthority(u.fromAuthority,u.transferArgs),tokenAuthority:h.tokenAuthority()}).instruction(),Be=await Z.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),H=Z.getTransferHook(Be);if(H){let fe=u.from,nt=d.mint,Ne=await le(h,d),dt=h.sessionAuthority(u.fromAuthority,u.transferArgs);await Da(l.provider.connection,se,H.programId,fe,nt,Ne,dt,0)}return se}n.createTransferBurnInstruction=i;async function r(l,d,u,h){if(d.paused)throw new Error("Contract is paused");h=h??n.pdas(l.programId);let F=(0,Ce.toChain)(u.transferArgs.recipientChain.id),ee=await le(h,d),se=await l.methods.transferLock(u.transferArgs).accountsStrict({common:{payer:u.payer,config:{config:h.configAccount()},mint:d.mint,from:u.from,tokenProgram:d.tokenProgram,outboxItem:u.outboxItem,outboxRateLimit:h.outboxRateLimitAccount(),custody:ee,systemProgram:ue.SystemProgram.programId},peer:h.peerAccount(F),inboxRateLimit:h.inboxRateLimitAccount(F),sessionAuthority:h.sessionAuthority(u.fromAuthority,u.transferArgs),custody:ee}).instruction(),Be=await Z.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),H=Z.getTransferHook(Be);if(H){let fe=u.from,nt=await le(h,d),Ne=h.sessionAuthority(u.fromAuthority,u.transferArgs);await Da(l.provider.connection,se,H.programId,fe,d.mint,nt,Ne,0)}return se}n.createTransferLockInstruction=r;async function o(l,d,u,h){let[F,,,]=kn(l.idl.version);h=h??n.pdas(l.programId);let ee=await Z.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),se=null;ee.mintAuthority?.equals(h.tokenAuthority())||(se=ee.mintAuthority);let Be=u.recipient??(await nn(l,u.chain,u.nttMessage)).recipientAddress,H=await l.methods.releaseInboundMint({revertOnDelay:u.revertWhenNotReady,revertWhenNotReady:u.revertWhenNotReady}).accounts({common:{payer:u.payer,config:{config:h.configAccount()},inboxItem:h.inboxItemAccount(u.chain,u.nttMessage),recipient:(0,$s.getAssociatedTokenAddressSync)(d.mint,Be,!0,d.tokenProgram),mint:d.mint,tokenAuthority:h.tokenAuthority(),tokenProgram:d.tokenProgram,custody:await le(h,d)},...F>=3&&{multisigTokenAuthority:se}}).instruction(),fe=Z.getTransferHook(ee);if(fe){let nt=await le(h,d),Ne=d.mint,dt=(0,$s.getAssociatedTokenAddressSync)(Ne,Be,!0,d.tokenProgram),st=h.tokenAuthority();await Da(l.provider.connection,H,fe.programId,nt,Ne,dt,st,0)}return H}n.createReleaseInboundMintInstruction=o;async function c(l,d,u,h){let F=u.recipient??(await n.getInboxItem(l,u.chain,u.nttMessage)).recipientAddress;h=h??n.pdas(l.programId);let ee=await le(h,d),se=await l.methods.releaseInboundUnlock({revertOnDelay:u.revertWhenNotReady,revertWhenNotReady:u.revertWhenNotReady}).accountsStrict({common:{payer:u.payer,config:{config:h.configAccount()},inboxItem:h.inboxItemAccount(u.chain,u.nttMessage),recipient:(0,$s.getAssociatedTokenAddressSync)(d.mint,F,!0,d.tokenProgram),mint:d.mint,tokenAuthority:h.tokenAuthority(),tokenProgram:d.tokenProgram,custody:ee},custody:ee}).instruction(),Be=await Z.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),H=Z.getTransferHook(Be);if(H){let fe=await le(h,d),nt=d.mint,Ne=(0,$s.getAssociatedTokenAddressSync)(nt,F,!0,d.tokenProgram),dt=h.tokenAuthority();await Da(l.provider.connection,se,H.programId,fe,nt,Ne,dt,0)}return se}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:js(l.programId),bpfLoaderUpgradeableProgram:Ts}).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:js(l.programId),bpfLoaderUpgradeableProgram:Ts}).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:js(l.programId),bpfLoaderUpgradeableProgram:Ts}).instruction()}n.createClaimOwnershipInstruction=f;async function p(l,d,u,h){return h=h??n.pdas(l.programId),l.methods.acceptTokenAuthority().accountsStrict({common:{config:h.configAccount(),mint:d.mint,tokenProgram:d.tokenProgram,tokenAuthority:h.tokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},currentAuthority:u.currentAuthority}).instruction()}n.createAcceptTokenAuthorityInstruction=p;async function b(l,d,u,h){return h=h??n.pdas(l.programId),l.methods.acceptTokenAuthorityFromMultisig().accountsStrict({common:{config:h.configAccount(),mint:d.mint,tokenProgram:d.tokenProgram,tokenAuthority:h.tokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},currentMultisigAuthority:u.currentMultisigAuthority}).remainingAccounts(u.additionalSigners.map(F=>({pubkey:F,isSigner:!0,isWritable:!1}))).instruction()}n.createAcceptTokenAuthorityFromMultisigInstruction=b;async function w(l,d,u,h){return h=h??n.pdas(l.programId),l.methods.setTokenAuthorityOneStepUnchecked().accountsStrict({common:{config:h.configAccount(),tokenAuthority:h.tokenAuthority(),mint:d.mint,owner:u.owner,newAuthority:u.newAuthority,multisigTokenAuthority:u.multisigTokenAuthority??null},tokenProgram:d.tokenProgram}).instruction()}n.createSetTokenAuthorityOneStepUncheckedInstruction=w;async function S(l,d,u,h){return h=h??n.pdas(l.programId),l.methods.setTokenAuthority().accountsStrict({common:{config:h.configAccount(),tokenAuthority:h.tokenAuthority(),mint:d.mint,owner:u.owner,newAuthority:u.newAuthority,multisigTokenAuthority:u.multisigTokenAuthority??null},rentPayer:u.rentPayer,pendingTokenAuthority:h.pendingTokenAuthority(),systemProgram:ue.SystemProgram.programId}).instruction()}n.createSetTokenAuthorityInstruction=S;async function _(l,d,u,h){return h=h??n.pdas(l.programId),l.methods.revertTokenAuthority().accountsStrict({common:{config:h.configAccount(),mint:d.mint,tokenAuthority:h.tokenAuthority(),tokenProgram:d.tokenProgram,systemProgram:ue.SystemProgram.programId,rentPayer:u.rentPayer,pendingTokenAuthority:h.pendingTokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},owner:u.owner}).instruction()}n.createRevertTokenAuthorityInstruction=_;async function k(l,d,u,h){return h=h??n.pdas(l.programId),l.methods.claimTokenAuthority().accountsStrict({common:{config:h.configAccount(),mint:d.mint,tokenAuthority:h.tokenAuthority(),tokenProgram:d.tokenProgram,systemProgram:ue.SystemProgram.programId,rentPayer:u.rentPayer,pendingTokenAuthority:h.pendingTokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},newAuthority:u.newAuthority}).instruction()}n.createClaimTokenAuthorityInstruction=k;async function O(l,d,u,h){return h=h??n.pdas(l.programId),l.methods.claimTokenAuthorityToMultisig().accountsStrict({common:{config:h.configAccount(),mint:d.mint,tokenAuthority:h.tokenAuthority(),tokenProgram:d.tokenProgram,systemProgram:ue.SystemProgram.programId,rentPayer:u.rentPayer,pendingTokenAuthority:h.pendingTokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},newMultisigAuthority:u.newMultisigAuthority}).remainingAccounts(u.additionalSigners.map(F=>({pubkey:F,isSigner:!0,isWritable:!1}))).instruction()}n.createClaimTokenAuthorityToMultisigInstruction=O;async function P(l,d,u){return u=u??n.pdas(l.programId),l.methods.setPeer({chainId:{id:(0,Ce.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=P;async function W(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=W;async function U(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=U;async function T(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=T;async function ne(l,d,u){return u=u??n.pdas(l.programId),l.methods.setInboundLimit({chainId:{id:(0,Ce.toChainId)(d.chain)},limit:d.limit}).accounts({owner:d.owner,config:u.configAccount(),rateLimit:u.inboxRateLimitAccount(d.chain)}).instruction()}n.createSetInboundLimitInstruction=ne;async function Fe(l,d,u,h,F,ee){F=F??n.pdas(l.programId),ee=ee??n.transceiverPdas(u);let se=h.vaa,Be=se.payload.nttManagerPayload,H=se.emitterChain;return l.methods.redeem({}).accounts({payer:h.payer,config:F.configAccount(),peer:F.peerAccount(H),transceiverMessage:ee.transceiverMessageAccount(H,Be.id),transceiver:F.registeredTransceiver(u),mint:d.mint,inboxItem:F.inboxItemAccount(H,Be),inboxRateLimit:F.inboxRateLimitAccount(H),outboxRateLimit:F.outboxRateLimitAccount()}).instruction()}n.createRedeemInstruction=Fe;async function vt(l,d){return l.account.config.fetch(d.configAccount())}n.getConfig=vt;async function nn(l,d,u){return l.account.inboxItem.fetch(n.pdas(l.programId).inboxItemAccount(d,u))}n.getInboxItem=nn;async function ln(l,d){let[u,,,]=kn(l.idl.version);if(u<2)return null;d=d??n.pdas(l.programId);let h=await l.account.lut.fetchNullable(d.lutAccount());if(!h)return null;let F=await l.provider.connection.getAddressLookupTable(h.address);if(F.value===null)throw new Error("Could not fetch LUT");return F.value}n.getAddressLookupTable=ln;async function le(l,d,u=Z.TOKEN_PROGRAM_ID){return d instanceof ue.PublicKey?Z.getAssociatedTokenAddress(d,l.tokenAuthority(),!0,u):Z.getAssociatedTokenAddress(d.mint,l.tokenAuthority(),!0,d.tokenProgram)}n.custodyAccountAddress=le})(z||(z={}))});var $i=$(()=>{Yc();Ra();Ki()});var Qc,Jc=$(()=>{Qc={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 Zc,em=$(()=>{Zc={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 Yi,et,R,Qi,Zn,Ji,G,Qn,Jn,Ys,Qs,Zi=$(()=>{Yi=require("@coral-xyz/anchor"),et=as(require("@solana/spl-token"),1),R=require("@solana/web3.js"),Qi=require("@wormhole-foundation/sdk-base"),Zn=require("@wormhole-foundation/sdk-definitions"),Ji=require("@wormhole-foundation/sdk-definitions-ntt"),G=require("@wormhole-foundation/sdk-solana"),Qn=require("@wormhole-foundation/sdk-solana-core"),Jn=as(require("bn.js"),1);Ra();$i();La();Jc();em();Ys=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??Ji.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 Yi.Program(Qc,i,{connection:this.program.provider.connection});let r=a.verifyVaaShimOverride??Ji.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 Yi.Program(Zc,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 R.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]=R.PublicKey.findProgramAddressSync([Buffer.from("GuardianSet"),o],this.manager.core.coreBridge.programId);if(a){let g=new Jn.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:zi((0,Zn.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:Qn.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 Jn.default(e.hash.subarray(-8)),r=zi((0,Zn.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 R.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 R.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 Jn.default(t.hash.subarray(-8)),a=await this.program.methods.closeUnverifiedWormholeMessageAccount(s).accounts({payer:e,message:this.pdas.unverifiedMessageAccount(e,s)}).instruction(),i=new R.Transaction;i.feePayer=e,i.add(a),yield this.manager.createUnsignedTx({transaction:i},"Ntt.CloseUnverifiedWormholeMessageAccount")}async getTransceiverType(e){let[t,,,]=kn(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 R.TransactionMessage({payerKey:s,recentBlockhash:i.blockhash,instructions:[a]}).compileToV0Message(),o=new R.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,Zn.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,Qi.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:R.Keypair.generate(),r=await this.createBroadcastWormholePeerIx(e.chain,s,i?.publicKey),o=new R.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,Zn.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=Qn.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:te(["__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=Qn.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,Qi.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:te(["__event_authority"],this.postMessageShim.programId)}}}).instruction()}async createReleaseWormholeOutboundIx(e,t,s){let[a,,,]=kn(this.version),i=Qn.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:te(["__event_authority"],this.postMessageShim.programId)}},...a>=3&&{manager:this.manager.program.programId,outboxItemSigner:this.pdas.outboxItemSigner()}}).instruction()}},Qs=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=qs(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 R.PublicKey(a.ntt.manager),m=new R.PublicKey(a.ntt.transceiver[o]);if(z.transceiverPdas(c).emitterAccount().equals(m)||c.equals(m)){let g=new Ys(this,Ba(s,a.ntt.manager,i,!a.ntt.svmShims),i,a.ntt.svmShims);this.transceivers.push(g.program)}else this.transceivers.push(Ba(s,a.ntt.transceiver[o],i,!a.ntt.svmShims))}),this.managerAddress=a.ntt.manager,this.tokenAddress=a.ntt.token,this.core=new Qn.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 Ys(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 R.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 R.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 R.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 R.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,Zn.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 R.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 R.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 R.PublicKey(this.core.address)});if(!i)return;let r=new R.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:R.Keypair.generate(),c=await r.createBroadcastWormholeIdIx(t,a,o?.publicKey),m=new R.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:R.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 Jn.default(s.toString()),tokenDecimals:t}),o=new R.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??R.Keypair.generate();let o=new G.SolanaAddress(e).unwrap(),c=o,m=await this.getTokenAccount(c);if(a.wrapNative){if(this.tokenAddress!==et.NATIVE_MINT.toBase58())throw new Error("Configured token must be native mint for wrapping");let P=et.getAssociatedTokenAddressSync(et.NATIVE_MINT,o),U=[...await this.connection.getAccountInfo(P)?[]:[et.createAssociatedTokenAccountInstruction(o,P,o,et.NATIVE_MINT)],R.SystemProgram.transfer({fromPubkey:o,toPubkey:P,lamports:t}),et.createSyncNativeInstruction(P)],{blockhash:T}=await this.connection.getLatestBlockhash(),ne=new R.TransactionMessage({payerKey:o,instructions:U,recentBlockhash:T}).compileToV0Message(),Fe=new R.VersionedTransaction(ne);yield this.createUnsignedTx({transaction:Fe},"Ntt.WrapNative")}let g=z.transferArgs(t,s,a.queue),f={transferArgs:g,payer:o,from:m,fromAuthority:c,outboxItem:i.publicKey},p=et.createApproveInstruction(m,this.pdas.sessionAuthority(c,g),c,t,[],r.tokenProgram),b=[],w=r.mode.locking!=null?z.createTransferLockInstruction(this.program,r,f,this.pdas):z.createTransferBurnInstruction(this.program,r,f,this.pdas);b.push(w);for(let P=0;P<this.transceivers.length;++P)if(P===0){let W=await this.getWormholeTransceiver();if(!W)throw new Error("Wormhole transceiver not found");let U=W.createReleaseWormholeOutboundIx(o,i.publicKey,!a.queue);b.push(U)}let S=new R.Transaction;S.feePayer=o,S.add(p,...await Promise.all(b));let _=[];try{_.push(await this.getAddressLookupTable())}catch{}let k=new R.TransactionMessage({payerKey:o,instructions:S.instructions,recentBlockhash:(await this.connection.getLatestBlockhash()).blockhash}).compileToV0Message(_),O=new R.VersionedTransaction(k);yield this.createUnsignedTx({transaction:O,signers:[i]},"Ntt.Transfer")}async getTokenAccount(e){let t=await this.getConfig();return await et.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 R.Transaction().add(et.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 P=R.Keypair.generate(),W=await o.verifyVaaShim.methods.postSignatures(r.guardianSet,r.signatures.length,r.signatures.map(ne=>[ne.guardianIndex,...ne.signature.encode()])).accounts({payer:c,guardianSignatures:P.publicKey}).instruction(),U=new R.Transaction;U.feePayer=c,U.add(W),yield this.createUnsignedTx({transaction:U,signers:[P]},"VerifyVAAShim.PostSignature"),m.push(o.createReceiveIx(r,c,P.publicKey,!1)),m.push(o.verifyVaaShim.methods.closeSignatures().accounts({guardianSignatures:P.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,p=r.emitterChain,b={payer:c,config:s,nttMessage:f,recipient:new R.PublicKey(f.payload.recipientAddress.toUint8Array()),chain:p,revertWhenNotReady:!1},w=s.mode.locking!=null?z.createReleaseInboundUnlockInstruction(this.program,s,{...b}):z.createReleaseInboundMintInstruction(this.program,s,{...b}),S=new R.Transaction;S.feePayer=c,S.add(...await Promise.all([...m,g,w]));let _=[];try{_.push(await this.getAddressLookupTable())}catch{}let k=new R.TransactionMessage({payerKey:c,instructions:S.instructions,recentBlockhash:(await this.connection.getLatestBlockhash()).blockhash}).compileToV0Message(_),O=new R.VersionedTransaction(k);yield this.createUnsignedTx({transaction:O},"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 Jn.default(e.toString())}),i=new R.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 Jn.default(t.toString())}),r=new R.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 R.Transaction;r.feePayer=i;let o={payer:i,config:a,nttMessage:t,recipient:new R.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 tm,nm=$(()=>{tm={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 sm,am=$(()=>{sm={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 er,en,q,im,Js,Fa,Zs,tr=$(()=>{er=require("@coral-xyz/anchor"),en=require("@solana/spl-token"),q=require("@solana/web3.js"),im=require("@wormhole-foundation/sdk-base"),Js=require("@wormhole-foundation/sdk-solana"),Fa=as(require("bn.js"),1);nm();am();La();Zs=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 Js.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 Js.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 p=[];try{p.push(await i.getAddressLookupTable())}catch(k){console.debug(k)}let b=q.TransactionMessage.decompile(f.transaction.transaction.message,{addressLookupTableAccounts:p});if(a.transferTokenFee>0n){let k=new q.PublicKey(a.referrer.address.toString()),{mint:O,tokenProgram:P}=await i.getConfig(),W=(0,en.getAssociatedTokenAddressSync)(O,k,!0,P),U=(0,en.getAssociatedTokenAddressSync)(O,o,!0,P);await this.connection.getAccountInfo(W)||b.instructions.push((0,en.createAssociatedTokenAccountIdempotentInstruction)(o,W,k,O,P));let ne=await(0,en.getMint)(this.connection,O,void 0,P);b.instructions.push((0,en.createTransferCheckedInstruction)(U,O,W,o,a.transferTokenFee,ne.decimals,void 0,P))}if(a.nativeTokenFee>0n){let k=new q.PublicKey(a.referrer.address.toString());b.instructions.push(q.SystemProgram.transfer({fromPubkey:o,toPubkey:k,lamports:a.nativeTokenFee}))}let w=new er.Program(sm,this.nttWithExecutorProgramId,{connection:this.connection}),S=new q.PublicKey(this.contracts.ntt.manager),_=q.PublicKey.findProgramAddressSync([Buffer.from("peer"),Mn(t.chain)],S)[0];if(b.instructions.push(await w.methods.relayNttMesage({execAmount:new Fa.default(a.estimatedCost.toString()),recipientChain:(0,im.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:_,nttMessage:m.publicKey,executorProgram:this.executorProgramId}).instruction()),p.length===0){console.debug("no manager lookup table found, checking helper program");let k=new er.Program(tm,this.nttLutProgramId,{connection:this.connection}),O=q.PublicKey.findProgramAddressSync([Buffer.from("lut"),S.toBuffer()],k.programId)[0],P=await k.account.lut.fetchNullable(O);if(!P){console.debug("no helper program lookup table found, initializing...");let[U]=await q.PublicKey.findProgramAddressSync([Buffer.from("config")],S),[T]=await q.PublicKey.findProgramAddressSync([Buffer.from("lut_authority")],k.programId),ne=await this.connection.getSlot("finalized")-10,[Fe]=await q.PublicKey.findProgramAddressSync([T.toBuffer(),new Fa.default(ne).toArrayLike(Buffer,"le",8)],q.AddressLookupTableProgram.programId),[vt]=await q.PublicKey.findProgramAddressSync([Buffer.from("lut"),S.toBuffer()],k.programId),nn=await k.methods.initializeLut(new Fa.default(ne)).accounts({nttProgramId:S,nttConfig:U,authority:T,lutAddress:Fe,lut:vt,lutProgram:q.AddressLookupTableProgram.programId,systemProgram:q.SystemProgram.programId,payer:o}).instruction(),ln=new q.TransactionMessage({payerKey:o,recentBlockhash:(await this.connection.getLatestBlockhash("finalized")).blockhash,instructions:[nn]}).compileToV0Message();yield i.createUnsignedTx({transaction:new q.VersionedTransaction(ln)},"NttSvmLut.InitializeLut"),console.debug(`initialized lookup table: ${f}`);let le=0;for(;!P&&le<10;)await new Promise(l=>setTimeout(l,2e3)),P=await k.account.lut.fetchNullable(O),le++}let W=await this.connection.getAddressLookupTable(P.address);if(!W.value)throw new Error("unable to fetch lookup table");p.push(W.value)}f.transaction.transaction.message=b.compileToV0Message(p),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 Js.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,en.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 rm=$(()=>{"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 Nd(){(0,om.register)(),(0,Is.protocolIsRegistered)(ea._platform,"Ntt")||(0,Is.registerProtocol)(ea._platform,"Ntt",Qs),(0,Is.protocolIsRegistered)(ea._platform,"NttWithExecutor")||(0,Is.registerProtocol)(ea._platform,"NttWithExecutor",Zs)}var Is,ea,om,cm=$(()=>{Is=require("@wormhole-foundation/sdk-definitions"),ea=require("@wormhole-foundation/sdk-solana");Zi();tr();om=require("@wormhole-foundation/sdk-definitions-ntt");rm();Zi();tr()});var mm={};fn(mm,{IdlVersions:()=>Ea,NTT:()=>z,SolanaNtt:()=>Qs,SolanaNttWithExecutor:()=>Zs,SolanaNttWormholeTransceiver:()=>Ys,_1_0_0:()=>Us,_2_0_0:()=>Ks,_3_0_0:()=>Gs,getNttProgram:()=>qs,getTransceiverProgram:()=>Ba,register:()=>Nd});var um=$(()=>{cm();$i()});var Zl={};fn(Zl,{HydrationConfigService:()=>di,assetsMap:()=>br,builders:()=>sr,chainsMap:()=>Vr,clients:()=>Ti,dex:()=>gr,routesMap:()=>Qm,tags:()=>ar,testnet:()=>hr,validations:()=>nu});module.exports=hu(Zl);var M=require("@galacticcouncil/xc-core"),Xe=new M.Asset({key:"aave",originSymbol:"AAVE"}),li=new M.Asset({key:"ajun",originSymbol:"AJUN"}),Ve=new M.Asset({key:"apyusd",originSymbol:"apyUSD"}),j=new M.Asset({key:"astr",originSymbol:"ASTR"}),K=new M.Asset({key:"bnc",originSymbol:"BNC"}),fi=new M.Asset({key:"bsx",originSymbol:"BSX"}),Oe=new M.Asset({key:"cfg_new",originSymbol:"CFG"}),gi=new M.Asset({key:"cru",originSymbol:"CRU"}),Bt=new M.Asset({key:"dai",originSymbol:"DAI"}),qt=new M.Asset({...Bt,key:"dai_wh"}),E=new M.Asset({key:"dot",originSymbol:"DOT"}),C=new M.Asset({key:"eth",originSymbol:"ETH"}),We=new M.Asset({key:"ena",originSymbol:"ENA"}),Rt=new M.Asset({key:"eurc",originSymbol:"EURC"}),zt=new M.Asset({...Rt,key:"eurc_wh"}),gn=new M.Asset({key:"glmr",originSymbol:"GLMR"}),me=new M.Asset({key:"hdx",originSymbol:"HDX"}),be=new M.Asset({key:"hollar",originSymbol:"HOLLAR"}),Y=new M.Asset({key:"hype",originSymbol:"HYPE"}),oe=new M.Asset({key:"ibtc",originSymbol:"IBTC"}),ft=new M.Asset({key:"intr",originSymbol:"INTR"}),at=new M.Asset({key:"jitoSol",originSymbol:"jitoSOL"}),N=new M.Asset({key:"ksm",originSymbol:"KSM"}),He=new M.Asset({key:"ldo",originSymbol:"LDO"}),Ue=new M.Asset({key:"lbtc",originSymbol:"LBTC"}),it=new M.Asset({key:"ewt",originSymbol:"EWT"}),Ke=new M.Asset({key:"link",originSymbol:"LINK"}),ae=new M.Asset({key:"myth",originSymbol:"MYTH"}),Lt=new M.Asset({key:"near",originSymbol:"NEAR"}),Dt=new M.Asset({key:"neuro",originSymbol:"NEURO"}),gt=new M.Asset({key:"pen",originSymbol:"PEN"}),Ge=new M.Asset({key:"paxg",originSymbol:"PAXG"}),rt=new M.Asset({key:"prime",originSymbol:"PRIME"}),qe=new M.Asset({key:"sky",originSymbol:"SKY"}),ze=new M.Asset({key:"sol",originSymbol:"SOL"}),ke=new M.Asset({key:"spy",originSymbol:"SPY"}),je=new M.Asset({key:"sui",originSymbol:"SUI"}),$e=new M.Asset({key:"susde",originSymbol:"sUSDe"}),pt=new M.Asset({key:"susds",originSymbol:"sUSDS"}),jt=new M.Asset({...pt,key:"susds_wh"}),Ye=new M.Asset({key:"tbtc",originSymbol:"tBTC"}),Qe=new M.Asset({key:"trac",originSymbol:"TRAC"}),_t=new M.Asset({key:"unq",originSymbol:"UNQ"}),I=new M.Asset({key:"usdt",originSymbol:"USDT"}),$t=new M.Asset({...I,key:"usdt_wh"}),sn=new M.Asset({...I,key:"usdt_eth"}),L=new M.Asset({key:"usdc",originSymbol:"USDC"}),Ft=new M.Asset({...L,key:"usdc_wh"}),an=new M.Asset({...L,key:"usdc_eth"}),Ae=new M.Asset({key:"vastr",originSymbol:"vASTR"}),xe=new M.Asset({key:"vdot",originSymbol:"vDOT"}),Re=new M.Asset({key:"weth",originSymbol:"WETH"}),ie=new M.Asset({...Re,key:"weth_wh"}),ht=new M.Asset({key:"wbtc",originSymbol:"WBTC"}),Yt=new M.Asset({...ht,key:"wbtc_wh"}),Bn=new M.Asset({key:"whype",originSymbol:"WHYPE"}),yt=new M.Asset({key:"wnear",originSymbol:"wNEAR"}),is=new M.Asset({key:"wsol",originSymbol:"wSOL"}),Je=new M.Asset({key:"wsteth",originSymbol:"wstETH"}),rn=new M.Asset({key:"wud",originSymbol:"WUD"}),pi=new M.Asset({key:"zec",originSymbol:"ZEC"}),yu=[Xe,li,Ve,j,fi,Oe,gi,K,Bt,qt,E,We,Rt,zt,C,gn,me,be,Y,oe,ft,N,He,Ue,it,at,Ke,ae,Lt,Dt,Ge,gt,rt,qe,ze,ke,je,$e,pt,jt,Qe,Ye,_t,L,Ft,an,I,$t,sn,Ae,xe,ht,Yt,Re,ie,Bn,yt,is,Je,rn,pi],br=new Map(yu.map(n=>[n.key,n]));var Rn=require("@galacticcouncil/xc-core");var Ar=require("viem/chains"),Ln=new Rn.EvmChain({id:8453,key:"base",name:"Base",assetsData:[{asset:C,decimals:18,id:"0x4200000000000000000000000000000000000006"},{asset:Rt,decimals:6,id:"0x60a3e35cc302bfa44cb288bc5a4f316fdb1adb42"},{asset:L,decimals:6,id:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}],balance:Rn.EvmBalanceType.Erc20,balanceOverrides:{[C.key]:Rn.EvmBalanceType.Native},ecosystem:Rn.ChainEcosystem.Ethereum,evmChain:Ar.base,explorer:"https://basescan.org/",rpcs:["https://stylish-quick-firefly.base-mainnet.quiknode.pro/"],wormhole:{id:30,coreBridge:"0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6",executor:"0x9E1936E91A4a5AE5A5F75fFc472D6cb8e93597ea",nttExecutor:"0x27db1967D469D89318B7119Ced5609f327095de4",ntt:{[Rt.key]:{token:"0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42",manager:"0xD1dc3517732c98502b5c1ba2389AcA9E9016d89a",transceiver:{wormhole:"0xa84b362290b0CFdB55e877dfc633284091e0B3F7"}}}}});var Dn=require("@galacticcouncil/xc-core");var xr=require("viem/chains"),_n=new Dn.EvmChain({id:999,key:"hyperevm",name:"HyperEVM",assetsData:[{asset:Y,decimals:18,id:"0x5555555555555555555555555555555555555555"},{asset:Bn,decimals:18,id:"0x5555555555555555555555555555555555555555"}],balance:Dn.EvmBalanceType.Erc20,balanceOverrides:{[Y.key]:Dn.EvmBalanceType.Native},ecosystem:Dn.ChainEcosystem.Ethereum,evmChain:xr.hyperEvm,explorer:"https://hyperevmscan.io/",rpcs:["https://rpc.hyperliquid.xyz/evm"],wormhole:{id:47,coreBridge:"0x7C0faFc4384551f063e05aee704ab943b8B53aB3",executor:"0xd7717899cc4381033Bc200431286D0AC14265F78",nttExecutor:"0xBc275e094e031e990b060134AbbDa00132f9A163",ntt:{[Y.key]:{token:"0x5555555555555555555555555555555555555555",manager:"0xdcDd08BFB7b3B9381149A852Ba5F69Bd5d87676f",transceiver:{wormhole:"0xe3eD8E1217AB419123D54E2F0850BC736b595D68"}},[Bn.key]:{token:"0x5555555555555555555555555555555555555555",manager:"0xdcDd08BFB7b3B9381149A852Ba5F69Bd5d87676f",transceiver:{wormhole:"0xe3eD8E1217AB419123D54E2F0850BC736b595D68"}}}}});var Fn=require("@galacticcouncil/xc-core");var wr=require("viem/chains"),B=new Fn.EvmChain({id:1,key:"ethereum",name:"Ethereum",assetsData:[{asset:C,decimals:18,id:"0x0000000000000000000000000000000000000000"},{asset:Xe,decimals:18,id:"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"},{asset:Ve,decimals:18,id:"0x38eeb52f0771140d10c4e9a9a72349a329fe8a6a"},{asset:Oe,decimals:18,id:"0xcccccccccc33d538dbc2ee4feab0a7a1ff4e8a94"},{asset:Re,decimals:18,id:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"},{asset:Bt,decimals:18,id:"0x6B175474E89094C44Da98b954EedeAC495271d0F"},{asset:We,decimals:18,id:"0x57e114b691db790c35207b2e685d4a43181e6061"},{asset:$e,decimals:18,id:"0x9d39a5de30e57443bff2a8307a4256c8797a3497"},{asset:pt,decimals:18,id:"0xa3931d71877c0e7a3148cb7eb4463524fec27fbd"},{asset:Ye,decimals:18,id:"0x18084fba666a33d37592fa2633fd49a74dd93a88"},{asset:ht,decimals:8,id:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"},{asset:Ue,decimals:8,id:"0x8236a87084f8b84306f72007f36f2618a5634494"},{asset:L,decimals:6,id:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"},{asset:I,decimals:6,id:"0xdAC17F958D2ee523a2206206994597C13D831ec7"},{asset:He,decimals:18,id:"0x5a98fcbea516cf06857215779fd812ca3bef1b32"},{asset:Ke,decimals:18,id:"0x514910771af9ca656af840dff83e8264ecf986ca"},{asset:Ge,decimals:18,id:"0x45804880de22913dafe09f4980848ece6ecbaf78"},{asset:qe,decimals:18,id:"0x56072c95faa701256059aa122697b133aded9279"},{asset:Qe,decimals:18,id:"0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F"},{asset:Je,decimals:18,id:"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"}],balance:Fn.EvmBalanceType.Erc20,balanceOverrides:{[C.key]:Fn.EvmBalanceType.Native},ecosystem:Fn.ChainEcosystem.Ethereum,evmChain:wr.mainnet,explorer:"https://etherscan.io/",rpcs:["https://ethereum-rpc.publicnode.com","https://cosmopolitan-dimensional-diagram.quiknode.pro"],basejump:{address:"0xa72e2bf29c840eb93adbb9ee1aa41580f01c9944"},snowbridge:{id:1,gateway:"0x27ca963c279c93801941e1eb8799c23f407d68e7"},wormhole:{id:2,coreBridge:"0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B",executor:"0x84EEe8dBa37C36947397E1E11251cA9A06Fc6F8a",nttExecutor:"0xC079bFA54F348199bA51B2717595fE24e96f1542",ntt:{[Bt.key]:{token:"0x6B175474E89094C44Da98b954EedeAC495271d0F",manager:"0x804F123f75cCa0A9c0Cba341F82f4A4DA86a5259",transceiver:{wormhole:"0x99673a01C5779Ebf59399B4B228c1825c0113571"}},[pt.key]:{token:"0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD",manager:"0x5085A4863f89eC9553F70187EE73B5aAe0fd14b5",transceiver:{wormhole:"0x7C236d237BEbBE1b7902131B31b7b3270005a810"}},[L.key]:{token:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",manager:"0x447b2c7485A3d6813F8197E605b10BcCD8dd8398",transceiver:{wormhole:"0xA108BD5dBc6CE665aEbB6895351e0609c76F8EFc"}},[I.key]:{token:"0xdAC17F958D2ee523a2206206994597C13D831ec7",manager:"0x9fbd9F16cE7Fa17097E91cc36DC1B7b47aDCa9De",transceiver:{wormhole:"0x45c566f6595CF93e639E77cc1bbE57A8D27901c2"}},[ht.key]:{token:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",manager:"0x081b76AC3cFb65DCe93961d66cea44A74EC8Ef28",transceiver:{wormhole:"0x3FE8fBB8505c8dB2264f6Ebc5559c7C2b2647218"}},[Re.key]:{token:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",manager:"0x283B14B5Dd352e32154Df014EA96834F395E04b6",transceiver:{wormhole:"0xbA0Cd32131b8206AF4feB79A1A3aaF0AEfe18b48"}},[C.key]:{token:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",manager:"0x283B14B5Dd352e32154Df014EA96834F395E04b6",transceiver:{wormhole:"0xbA0Cd32131b8206AF4feB79A1A3aaF0AEfe18b48"}}}}});var Nn=require("@galacticcouncil/xc-core");var Sr=require("viem/chains"),bt=new Nn.EvmChain({id:4663,key:"robinhood",name:"Robinhood",assetsData:[{asset:C,decimals:18,id:"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73"},{asset:Re,decimals:18,id:"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73"},{asset:me,decimals:12,id:"0xb423C0B59C615793b0903668dc414e4fA3A64A33"},{asset:be,decimals:18,id:"0xD1dc3517732c98502b5c1ba2389AcA9E9016d89a"},{asset:ke,decimals:18,id:"0x117cc2133c37B721F49dE2A7a74833232B3B4C0C"}],balance:Nn.EvmBalanceType.Erc20,balanceOverrides:{[C.key]:Nn.EvmBalanceType.Native},ecosystem:Nn.ChainEcosystem.Ethereum,evmChain:Sr.robinhood,explorer:"https://robinhoodchain.blockscout.com/",rpcs:["https://rpc.mainnet.chain.robinhood.com"],wormhole:{id:72,coreBridge:"0x141fBa8AD5D61bdaB45A047cF60b5Ad9784987FB",executor:"0xd19aAd5a69F7D35Cee169D9D90e1BbCB795ABB38",nttExecutor:"0x0AdA5f1289Ee5EC07e397Ee86dB6bc861ce0A728",ntt:{[me.key]:{token:"0xb423C0B59C615793b0903668dc414e4fA3A64A33",manager:"0xf1a5fE4252D9a1C39b0Fb9DE1F19049ee57ED188",transceiver:{wormhole:"0x97Cd0d08c376005d09afcC47fa9ce0C384fbA406"}},[be.key]:{token:"0xD1dc3517732c98502b5c1ba2389AcA9E9016d89a",manager:"0xE58D508743DD36368946D5A72A7dcD7cE960cE12",transceiver:{wormhole:"0x27afd50e83379a53458446E9d5F4a557B5f55c19"}},[Re.key]:{token:"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73",manager:"0xB1A2ABCbC1FA276212f6eD239645161DeeA9861a",transceiver:{wormhole:"0x1352881a04cb9f9f5fB8442bc925e99EC15D3642"}},[C.key]:{token:"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73",manager:"0xB1A2ABCbC1FA276212f6eD239645161DeeA9861a",transceiver:{wormhole:"0x1352881a04cb9f9f5fB8442bc925e99EC15D3642"}},[ke.key]:{token:"0x117cc2133c37B721F49dE2A7a74833232B3B4C0C",manager:"0x963835C20884dE59E6988030eB49D4D0eA24a26d",transceiver:{wormhole:"0x283B14B5Dd352e32154Df014EA96834F395E04b6"}}}}});var vr=[Ln,B,_n,bt];var kt=require("@galacticcouncil/xc-core");var kr={assetsData:[{asset:E,decimals:10,id:0,xcmLocation:{parents:1,interior:"Here"}},{asset:I,decimals:6,id:1984,min:.7,xcmLocation:{parents:0,interior:{X2:[{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:L,decimals:6,id:1337,min:.7,xcmLocation:{parents:0,interior:{X2:[{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:rn,decimals:10,id:31337,xcmLocation:{parents:0,interior:{X2:[{PalletInstance:50},{GeneralIndex:31337}]}}},{asset:ae,decimals:18,min:3e-8,xcmLocation:{parents:1,interior:{X1:[{Parachain:3369}]}}},{asset:N,decimals:12,min:1e-4,xcmLocation:{parents:2,interior:{X1:[{GlobalConsensus:"Kusama"}]}}}],balance:kt.SubstrateBalanceType.Assets,balanceOverrides:{[E.key]:kt.SubstrateBalanceType.System,[N.key]:kt.SubstrateBalanceType.ForeignAssets,[ae.key]:kt.SubstrateBalanceType.ForeignAssets},min:kt.SubstrateMinType.Assets,ecosystem:kt.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 kt.Parachain({...kr,key:"assethub",name:"AssetHub Polkadot"}),pn=new kt.Parachain({...kr,key:"assethub_cex",name:"AssetHub (CEX)",usesSignerFee:!0,isTestChain:!0,balanceOverrides:{}});var Xn=require("@galacticcouncil/xc-core");var Le=new Xn.Parachain({assetsData:[{asset:j,xcmLocation:{parents:0,interior:"Here"}},{asset:E,id:"340282366920938463463374607431768211455",decimals:10,min:1e-4,xcmLocation:{parents:1,interior:"Here"}},{asset:I,id:"4294969280",decimals:6,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:L,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:gn,id:"18446744073709551619",decimals:18,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:oe,id:"18446744073709551620",decimals:8,min:1e-6,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:ft,id:"18446744073709551621",decimals:10,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0002000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:xe,id:"18446744073709551624",decimals:10,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:Ae,id:"18446744073709551632",decimals:18,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}}],balance:Xn.SubstrateBalanceType.Assets,balanceOverrides:{[j.key]:Xn.SubstrateBalanceType.System},ecosystem:Xn.ChainEcosystem.Polkadot,explorer:"https://astar.subscan.io",genesisHash:"0x9eb76c5184c4ab8679d2d5d819fdf90b9c001403e9e17da2e14b6d8aec4029c6",key:"astar",name:"Astar",parachainId:2006,ss58Format:5,ws:"wss://rpc.astar.network"});var Vn=require("@galacticcouncil/xc-core");var bu=["wss://eu.bifrost-polkadot-rpc.liebi.com/ws","wss://hk.p.bifrost-rpc.liebi.com/ws","wss://bifrost-polkadot.dotters.network"],re=new Vn.Parachain({assetsData:[{asset:K,id:{Native:K.originSymbol},xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:xe,id:{VToken2:0},decimals:10,min:1e-4,xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:Ae,id:{VToken2:3},decimals:18,min:.01,xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:E,id:{Token2:0},decimals:10,min:1e-4,xcmLocation:{parents:1,interior:"Here"}},{asset:I,id:{Token2:2},decimals:6,min:.001,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:L,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:gn,id:{Token2:1},decimals:18,min:1e-5,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:oe,id:{Token2:6},decimals:8,min:1e-6,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}}],balance:Vn.SubstrateBalanceType.Tokens,balanceOverrides:{[K.key]:Vn.SubstrateBalanceType.System},ecosystem:Vn.ChainEcosystem.Polkadot,explorer:"https://bifrost.subscan.io",genesisHash:"0x262e1b2ad728475fd6fe88e62d34c200abe6fd693931ddad144059b1eb884e5b",key:"bifrost",name:"Bifrost",parachainId:2030,ss58Format:6,ws:bu});var on=require("@galacticcouncil/xc-core"),Ir=require("viem");var Cr=require("@galacticcouncil/common"),Tr=require("polkadot-api"),{isEvmAccount:Au,H160:Mr}=Cr.h160,ua=class{async toH160(e,t){if(Au(e))return Mr.fromAccount(e);let s=Mr.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,Tr.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 xu=new ua,hi=["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"],yi=["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"],wu=(0,Ir.defineChain)({id:222222,name:"Hydration",network:"hydration",nativeCurrency:{decimals:18,name:"WETH",symbol:"WETH"},rpcUrls:{public:{http:hi,webSocket:yi},default:{http:hi,webSocket:yi}},blockExplorers:{default:{name:"Hydration Explorer",url:"https://hydration.subscan.io"}},testnet:!1}),A=new on.EvmParachain({assetsData:[{asset:me,decimals:12,id:0,xcmLocation:{parents:0,interior:{X1:[{GeneralIndex:0}]}}},{asset:Xe,decimals:18,id:1000624,min:6e-5,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"}}]}}},{asset:li,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:Oe,decimals:18,id:41,min:.1,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xcccccccccc33d538dbc2ee4feab0a7a1ff4e8a94"}}]}}},{asset:gi,decimals:12,id:27,min:.0079,xcmLocation:{parents:1,interior:{X1:{Parachain:2008}}}},{asset:E,decimals:10,id:5,min:.0018,xcmLocation:{parents:1,interior:"Here"}},{asset:qt,decimals:18,id:18,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f"}}]}}},{asset:C,decimals:18,id:34,min:55e-7,xcmLocation:{parents:2,interior:{X1:{GlobalConsensus:{Ethereum:{chain_id:1}}}}}},{asset:Ve,decimals:18,id:46,min:.0147058823529412,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x38eeb52f0771140d10c4e9a9a72349a329fe8a6a"}}]}}},{asset:We,decimals:18,id:38,min:.037,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x57e114b691db790c35207b2e685d4a43181e6061"}}]}}},{asset:gn,decimals:18,id:16,min:.035,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:be,decimals:18,id:222,balanceId:"0x531a654d1696ED52e7275A8cede955E82620f99a",min:.02,xcmLocation:{parents:0,interior:{X1:[{AccountKey20:{network:null,key:"0x531a654d1696ed52e7275a8cede955e82620f99a"}}]}}},{asset:Y,decimals:18,id:1001355,min:.000114285714285714,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:47},{GeneralKey:{length:32,data:"0x0000000000000000000000005555555555555555555555555555555555555555"}}]}}},{asset:oe,decimals:8,id:11,min:36e-8,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:ft,decimals:10,id:17,min:.62,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0002000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:at,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:rt,decimals:6,id:43,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:1},{GeneralKey:{length:32,data:"0x26759f460ee5f743ed66d27c8f2a5623bf39d53ed575955320661e6e13e0e3da"}}]}}},{asset:it,decimals:18,id:252525,min:.022,xcmLocation:{parents:1,interior:{X1:{Parachain:3345}}}},{asset:He,decimals:18,id:1000796,min:.013,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x5a98fcbea516cf06857215779fd812ca3bef1b32"}}]}}},{asset:N,decimals:12,id:1000771,min:35e-5,xcmLocation:{parents:2,interior:{X1:{GlobalConsensus:"Kusama"}}}},{asset:Ue,decimals:8,id:1000851,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x8236a87084f8b84306f72007f36f2618a5634494"}}]}}},{asset:Ke,decimals:18,id:1000794,min:.001,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x514910771af9ca656af840dff83e8264ecf986ca"}}]}}},{asset:Ge,decimals:18,id:39,min:5e-6,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x45804880de22913dafe09f4980848ece6ecbaf78"}}]}}},{asset:ae,decimals:18,id:30,min:.022,xcmLocation:{parents:1,interior:{X1:{Parachain:3369}}}},{asset:Dt,decimals:12,id:36,min:.001,xcmLocation:{parents:1,interior:{X2:[{Parachain:2043},{PalletInstance:10}]}}},{asset:gt,decimals:12,id:1000081,min:.16,xcmLocation:{parents:1,interior:{X2:[{Parachain:2094},{PalletInstance:10}]}}},{asset:qe,decimals:18,id:1000795,min:.52,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x56072c95faa701256059aa122697b133aded9279"}}]}}},{asset:ze,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:ke,decimals:18,id:1001356,min:13061480386097e-18,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:72},{GeneralKey:{length:32,data:"0x000000000000000000000000117cc2133c37b721f49de2a7a74833232b3b4c0c"}}]}}},{asset:je,decimals:9,id:1000753,min:.003,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:21},{GeneralKey:{length:32,data:"0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3"}}]}}},{asset:$e,decimals:18,id:1000625,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x9d39a5de30e57443bff2a8307a4256c8797a3497"}}]}}},{asset:pt,decimals:18,id:1000626,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xa3931d71877c0e7a3148cb7eb4463524fec27fbd"}}]}}},{asset:jt,decimals:18,id:1000745,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000a3931d71877c0e7a3148cb7eb4463524fec27fbd"}}]}}},{asset:Ye,decimals:18,id:1000765,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x18084fba666a33d37592fa2633fd49a74dd93a88"}}]}}},{asset:Qe,decimals:18,id:35,min:.028,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F"}}]}}},{asset:_t,decimals:18,id:25,min:1.23,xcmLocation:{parents:1,interior:{X1:{Parachain:2037}}}},{asset:L,decimals:6,id:22,min:.01,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:Ft,decimals:6,id:21,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"}}]}}},{asset:zt,decimals:6,id:44,min:.014,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:30},{GeneralKey:{length:32,data:"0x00000000000000000000000060a3e35cc302bfa44cb288bc5a4f316fdb1adb42"}}]}}},{asset:an,decimals:6,id:1000766,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"}}]}}},{asset:I,decimals:6,id:10,min:.01,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:$t,decimals:6,id:23,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7"}}]}}},{asset:sn,decimals:6,id:1000767,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xdac17f958d2ee523a2206206994597c13d831ec7"}}]}}},{asset:Ae,decimals:18,id:33,min:.14,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:xe,decimals:10,id:15,min:.0019,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:ht,decimals:8,id:1000190,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"}}]}}},{asset:Yt,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:Re,decimals:18,id:1000189,min:61e-7,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"}}]}}},{asset:ie,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:Je,decimals:18,id:1000809,min:635e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"}}]}}},{asset:rn,decimals:10,id:1000085,min:2e4,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:31337}]}}}],balance:on.SubstrateBalanceType.Tokens,balanceOverrides:{[me.key]:on.SubstrateBalanceType.System,[be.key]:on.EvmBalanceType.Erc20},ecosystem:on.ChainEcosystem.Polkadot,evmChain:wu,evmResolver:xu,explorer:"https://hydration.subscan.io",genesisHash:"0xafdc188f45c71dacbaa0b62e16a91f726c7b8699a9748cdf715459de6b7f366d",key:"hydration",name:"Hydration",parachainId:2034,ss58Format:63,wormhole:{id:73,coreBridge:"0x3792a6d63c31941B2805181771795D9176fA82A1",executor:"0xd633d8d1ceee8c8252196d44857c0f41b8dcb0d9",nttExecutor:"0xd3Dda7c8608Ea251C42c6E0A2A686aDc5e9C0C03",ntt:{[qt.key]:{token:"0x0000000000000000000000000000000100000012",manager:"0xcFd576F88C90844AEBF45378Fd09931281D8b14d",transceiver:{wormhole:"0xe8660CA48f6f4D98BC48DB7Dd07C1a8E555801eA"}},[zt.key]:{token:"0x000000000000000000000000000000010000002C",manager:"0x8dd1286A29dF5a2785FB638d6fB1598144Cfbc4C",transceiver:{wormhole:"0x2e84fac378D67Dc2e11026fB4919E80263a87375"}},[me.key]:{token:"0x0000000000000000000000000000000100000000",manager:"0x16Ac5B8d9078ed4cf5A522F907fd9dDb6C8841f1",transceiver:{wormhole:"0xdDE268D8B89834f6EF213002651D0586Ced646b9"}},[be.key]:{token:"0x531a654d1696ED52e7275A8cede955E82620f99a",manager:"0x4188f147eec68921C1ee2d72898a263722a76844",transceiver:{wormhole:"0xE1d75C3c712BC61eBE892312F3455A67EC5D4799"}},[Y.key]:{token:"0x00000000000000000000000000000001000f478b",manager:"0x76FA328577Ee8A0E1872eD182c1bcd0A2dB47750",transceiver:{wormhole:"0xe74f52D5816174D070Dc7DC0ef8cC80dd6eFc160"}},[at.key]:{token:"0x0000000000000000000000000000000100000028",manager:"0xcE73C15B9ED02413066DE5B904A36F8e8f9B5331",transceiver:{wormhole:"0xF38D9C3bA6999Dc331b32B416083Fd7e02D17B04"}},[rt.key]:{token:"0x000000000000000000000000000000010000002B",manager:"0xFCaF4aA069C565d25539028970703F01e47D3E0B",transceiver:{wormhole:"0x4e7b1E55D2354d4Dc6ABD876096Dc201de0541D1"}},[ze.key]:{token:"0x00000000000000000000000000000001000F4530",manager:"0x9e200C0f28D92D296b201D96C8269d3CAFFfA9FF",transceiver:{wormhole:"0x2F04AcF249091425d51e67EeA3C3161ccE283202"}},[ke.key]:{token:"0x00000000000000000000000000000001000f478c",manager:"0x4382cC762FdbB90d756FF5F2f099a76281f1A2aF",transceiver:{wormhole:"0x9fAF16E590352B61ab5542af2560D54Fc62E97aA"}},[je.key]:{token:"0x00000000000000000000000000000001000F4531",manager:"0x978443f00cAB6b09445140321EC73a221ebFF5F8",transceiver:{wormhole:"0xA224D6f4e0E276b34D91bfE6c3A5fE6838322AF7"}},[jt.key]:{token:"0x00000000000000000000000000000001000F4529",manager:"0x1973E7044d9A7C7bB2d6ea1693A296a9e4B7E448",transceiver:{wormhole:"0x68Ecadd7934D4FcFEABAfB209C95D379B96400cb"}},[Ft.key]:{token:"0x0000000000000000000000000000000100000015",manager:"0xEcEab64542A875C4472671D9Ed1E690cdD4e28fC",transceiver:{wormhole:"0x0d7488B39AA64468a709eC3b3d354DeFE539eD97"}},[$t.key]:{token:"0x0000000000000000000000000000000100000017",manager:"0x5E6C488103b47F804824AE15861638af4C436795",transceiver:{wormhole:"0xd2a16B736F32Df7C0DE72838837656FE0f85Ac0F"}},[Yt.key]:{token:"0x0000000000000000000000000000000100000013",manager:"0x6BFca089916c045b0Ca4A09B655aF9F926189993",transceiver:{wormhole:"0x9a8a1ab288f6749Ce5626DEE1B5d59441BdC187F"}},[ie.key]:{token:"0x0000000000000000000000000000000100000014",manager:"0xB5cEf790D52A57fa619eD96eDd64c5328F3DCFb7",transceiver:{wormhole:"0x8acce9CA511d5D7213F8C3f813B8916087cd00ae"}}}},ws:yi,rpcs:hi});var rs=require("@galacticcouncil/xc-core");var hn=new rs.Parachain({assetsData:[{asset:ae,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:rs.SubstrateBalanceType.System,ecosystem:rs.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 os=require("@galacticcouncil/xc-core");var cs=new os.Parachain({assetsData:[{asset:Dt,xcmLocation:{parents:0,interior:{X1:{PalletInstance:10}}}}],balance:os.SubstrateBalanceType.System,ecosystem:os.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 yn=require("@galacticcouncil/xc-core");var ms=new yn.Parachain({assetsData:[{asset:gt,id:"Native",xcmLocation:{parents:0,interior:{X1:{PalletInstance:10}}}}],balance:yn.SubstrateBalanceType.System,ecosystem:yn.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:yn.XcmVersion.v3});var us=require("@galacticcouncil/xc-core");var Su={assetsData:[{asset:E,xcmLocation:{parents:0,interior:"Here"}}],balance:us.SubstrateBalanceType.System,ecosystem:us.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"},Pr=new us.Parachain({...Su,key:"polkadot"});var ds=require("@galacticcouncil/xc-core");var ls=new ds.Parachain({assetsData:[{asset:_t,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:ds.SubstrateBalanceType.System,ecosystem:ds.ChainEcosystem.Polkadot,explorer:"https://unique.subscan.io",genesisHash:"0x84322d9cddbf35088f1e54e9a85c967a41a56a4f43445768125e61af166c7d31",key:"unique",name:"Unique network",parachainId:2037,ss58Format:7391,ws:"wss://ws.unique.network"});var bn=require("@galacticcouncil/xc-core");var fs=new bn.Parachain({assetsData:[{asset:it,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:bn.SubstrateBalanceType.System,ecosystem:bn.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:bn.XcmVersion.v3});var Er=[X,pn,Le,re,A,cs,hn,ms,Pr,ls,fs];var On=require("@galacticcouncil/xc-core");var Nt=new On.SolanaChain({id:101,key:"solana",name:"Solana",assetsData:[{asset:ze,decimals:9},{asset:is,id:"So11111111111111111111111111111111111111112",decimals:9},{asset:at,id:"J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",decimals:9},{asset:rt,id:"3b8X44fLF9ooXaUm3hhSgjpmVs6rZZ3pPoGnGahc3Uu7",decimals:6}],balance:On.SolanaBalanceType.Token,balanceOverrides:{[ze.key]:On.SolanaBalanceType.Native},ecosystem:On.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:{[ze.key]:{token:"So11111111111111111111111111111111111111112",manager:"DiGxk55uAQNVzzg2FucPgdrQ4azb5SDvWQvzpzJD3o7J",transceiver:{wormhole:"5J12e7mMcbbN3VkCrUPfZp2bDHMH3t1rKvxGcwuN53wx"},emitter:"2WUYeRrK2JctBEvNVXY4mRG2ewMzhidi7L4Y5dCwqY9D"},[is.key]:{token:"So11111111111111111111111111111111111111112",manager:"DiGxk55uAQNVzzg2FucPgdrQ4azb5SDvWQvzpzJD3o7J",transceiver:{wormhole:"5J12e7mMcbbN3VkCrUPfZp2bDHMH3t1rKvxGcwuN53wx"},emitter:"2WUYeRrK2JctBEvNVXY4mRG2ewMzhidi7L4Y5dCwqY9D"},[at.key]:{token:"J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",manager:"9HFvXujdkXubvmf93gyzkH1g3VPowDrmp85sWsfdcBTh",transceiver:{wormhole:"HgxvrPomT84AxgxknddAcC1iW9ysqHxmeoiKNZmQcovs"},emitter:"9Ss1eMHE8iDv9kCxERH5nabp9tx75AVoUWWEKaGgMrh9"},[rt.key]:{token:"3b8X44fLF9ooXaUm3hhSgjpmVs6rZZ3pPoGnGahc3Uu7",manager:"4T5m5NtRVewiCVzP2mnfeUoMYRqncfkrS21X2dhVCNRT",transceiver:{wormhole:"GiTY93vtrK4jZZchrxdV9r28JByRs7Ary2rsTPyPabJc"},emitter:"HuvSXe6hQaSMgo5dc8GYzavcS3aB4Bix9XYgVdfsq2sY"}},platformAddressFormat:"base58"}});var Br=[Nt];var gs=require("@galacticcouncil/xc-core");var Wn=new gs.SuiChain({id:"0x35834a8a",key:"sui",name:"Sui",assetsData:[{asset:je,decimals:9}],balance:gs.SuiBalanceType.Native,ecosystem:gs.ChainEcosystem.Sui,explorer:"https://suiscan.xyz/",rpc:"https://rpc-mainnet.suiscan.xyz",wormhole:{id:21,coreBridge:"0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c",ntt:{[je.key]:{token:"0x2::sui::SUI",manager:"0xa0bc45e0384140dc125f273eda89cad1434f5dee430726cf6364bdcceba1e9a3",transceiver:{wormhole:"0x6afb4a6a9c4e5b6eeed568381ce95a79590f0c17ab8d0c59295826f2775bf832"},emitter:"0x25437da9f99dfab32c1a275663f51cd5c99eb867ab4d1f630e3799c5e68215da"}}}});var Rr=[Wn];var Qt=require("@galacticcouncil/xc-core");var Xt=new Qt.Parachain({assetsData:[{asset:N,decimals:12,id:0,xcmLocation:{parents:1,interior:"Here"}},{asset:E,decimals:10,min:.001,xcmLocation:{parents:2,interior:{X1:[{GlobalConsensus:"Polkadot"}]}}},{asset:I,decimals:6,id:1984,xcmLocation:{parents:1,interior:{X2:[{PalletInstance:50},{GeneralIndex:1984}]}}}],balance:Qt.SubstrateBalanceType.Assets,balanceOverrides:{[N.key]:Qt.SubstrateBalanceType.System,[E.key]:Qt.SubstrateBalanceType.ForeignAssets},min:Qt.SubstrateMinType.Assets,ecosystem:Qt.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 ps=require("@galacticcouncil/xc-core");var hs=new ps.Parachain({assetsData:[{asset:fi,id:0,xcmLocation:{parents:0,interior:"Here"}},{asset:N,decimals:12,id:1,xcmLocation:{parents:1,interior:"Here"}},{asset:I,decimals:6,id:14,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}}],balance:ps.SubstrateBalanceType.Tokens,ecosystem:ps.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 Lr=[Xt,hs];var ys=require("@galacticcouncil/xc-core");var Dr=new ys.NearChain({key:"near",name:"NEAR",assetsData:[{asset:Lt,decimals:24}],balance:ys.NearBalanceType.Native,ecosystem:ys.ChainEcosystem.Near,explorer:"https://nearblocks.io/",rpc:"https://free.rpc.fastnear.com"});var Hn=require("@galacticcouncil/xc-core");var _r={token:"wrap.testnet",manager:"ntt-near.whm-ntt-0bugdc.testnet",transceiver:{wormhole:"ntt-near.whm-ntt-0bugdc.testnet"},emitter:"0x34831e4dba0ea821cb7f0af0ce96f5efe4beb0db1fded12219e4329ff95a7213"},bs=new Hn.NearChain({key:"near_testnet",name:"NEAR Testnet",assetsData:[{asset:Lt,decimals:24},{asset:yt,id:"wrap.testnet",decimals:24}],balance:Hn.NearBalanceType.Ft,balanceOverrides:{[Lt.key]:Hn.NearBalanceType.Native},ecosystem:Hn.ChainEcosystem.Near,explorer:"https://testnet.nearblocks.io/",isTestChain:!0,rpc:"https://test.rpc.fastnear.com",wormhole:{id:15,coreBridge:"wormhole.wormhole.testnet",ntt:{[yt.key]:_r,[Lt.key]:_r},platformAddressFormat:"sha256"}});var Fr=[Dr,bs];var As=require("@galacticcouncil/xc-core");var Nr=new As.ZecChain({key:"zec",name:"Zcash",assetsData:[{asset:pi,decimals:8}],balance:As.ZecBalanceType.Transparent,ecosystem:As.ChainEcosystem.Zcash,explorer:"https://mainnet.zcashexplorer.app/"});var Xr=[Nr];var vu=[...vr,...Er,...Br,...Rr,...Lr,...Fr,...Xr],Vr=new Map(vu.map(n=>[n.key,n]));var Am=require("@galacticcouncil/xc-core");var ir=require("@galacticcouncil/xc-core");var sr={};fn(sr,{ContractBuilder:()=>J,ExtrinsicBuilder:()=>x,ExtrinsicDecorator:()=>un,FeeAmountBuilder:()=>D,FeeAssetBuilder:()=>Hs,FunctionCallBuilder:()=>Hi,MoveBuilder:()=>Ui,ProgramBuilder:()=>nr,XcmTransferType:()=>xt,XcmVersion:()=>mn});var Un=require("@galacticcouncil/xc-core"),Or=require("viem"),ku=n=>({build:async e=>{let s=(await Promise.all(n.map(o=>o.build(e)))).flat(),a=s.map(o=>o.address),i=[0,0],r=s.map(o=>(0,Or.encodeFunctionData)({abi:Un.Abi[o.module],functionName:o.func,args:o.args}));return[new Un.ContractConfig({abi:Un.Abi.Batch,address:Un.Precompile.Batch,args:[a,i,r,[]],func:"batchAll",module:"Batch"})]}}),Wr=()=>({batchAll:ku});var xs=require("@galacticcouncil/xc-core");function da(n,e,t){if(e<=t)return n;let s=10n**BigInt(e-t);return n-n%s}function we(n,e){if(e<0||e>100)throw Error(`padPercent ${e} not in range of 0 to 100.`);return n+n*e/100n}function Kn(n){return typeof n=="object"?Object.values(n)[0]:n}function Hr(){return{approve:n=>({build:async e=>{let{amount:t,asset:s,source:a}=e,i=a.chain,r=xs.Wormhole.fromChain(i),o=i.getAssetId(s);return[new xs.ContractConfig({abi:xs.Abi.Erc20,address:Kn(o).toString(),args:[n(r),t],func:"approve",module:"Erc20"})]}})}}var ws=require("@galacticcouncil/xc-core");var Ur=require("@galacticcouncil/common"),Kr=require("polkadot-api"),Gr=require("@polkadot-api/utils"),{H160:Mu,isEvmAddress:Cu}=Ur.h160;function Tu(n){let e=Cu(n)?Mu.toAccount(n):n;return(0,Gr.toHex)((0,Kr.AccountId)().enc(e))}var Iu=()=>({build:async n=>{let{address:e,amount:t,asset:s,source:a}=n,i=a.chain,r=ws.Basejump.fromChain(i),o=i.getAssetId(s);return[new ws.ContractConfig({abi:ws.Abi.Basejump,address:r.getAddress(),args:[Kn(o),t,Tu(e),"0x"],func:"bridgeViaWormhole",module:"Basejump"})]}}),qr=()=>({bridgeViaWormhole:Iu});var Vt=require("@galacticcouncil/xc-core"),jr=require("@galacticcouncil/common"),{Ss58Addr:zr}=Vt.addr;function Pu(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 bi(n,e){let t=n.getAssetId(e);return typeof t=="string"?Pu(t):t}function $r(){return{transferAssetsToPara32:()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=bi(a.chain,t);return[new Vt.ContractConfig({abi:Vt.Abi.PolkadotXcm,address:Vt.Precompile.PolkadotXcm,args:[s.chain.parachainId,zr.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=bi(a.chain,t),r=bi(a.chain,a.destinationFeeBalance),o=jr.big.toBigInt(s.fee.amount,s.fee.decimals);return[new Vt.ContractConfig({abi:Vt.Abi.PolkadotXcm,address:Vt.Precompile.PolkadotXcm,args:[s.chain.parachainId,zr.getPubKey(n),[{asset:i,amount:e},{asset:r,amount:o}],1],func:"transferAssetsToPara32",module:"PolkadotXcm"})]}})}}var Wt=require("@galacticcouncil/xc-core"),xn=require("@galacticcouncil/descriptors"),oo=require("@polkadot-api/substrate-bindings"),ga=require("@polkadot-api/utils"),co=require("viem");var Yr=require("@galacticcouncil/xc-core"),la=null;async function Qr(){if(la)return la;let n=await Yr.codec.getHubCodecs();return la={message:n.tx.PolkadotXcm.send.inner.message,location:n.tx.PolkadotXcm.send.inner.dest},la}var no=require("@galacticcouncil/xc-core"),y=require("@galacticcouncil/descriptors"),so=require("@polkadot-api/substrate-bindings"),ao=require("@polkadot-api/utils");var Jr=require("@galacticcouncil/descriptors"),Se=340282366920938463463374607431768211455n,Ot="0x0000000000000000000000000000000000000000000000000000000000000000",ge={parents:1,interior:Jr.XcmV3Junctions.Here()},Zr=0,An=1e3,fa=1002,Mt=1,Gn="5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY",eo="0x0000000000000000000000000000000000000000000000000000000000000000",to="0x0000000000000000000000000000000000000000";var Ai="0x0000000000000000000000000000000000000000",Ss=n=>({parents:2,interior:y.XcmV5Junctions.X1(y.XcmV5Junction.GlobalConsensus(y.XcmV5NetworkId.Ethereum({chain_id:BigInt(n)})))}),xi=(n,e)=>({parents:2,interior:y.XcmV5Junctions.X2([y.XcmV5Junction.GlobalConsensus(y.XcmV5NetworkId.Ethereum({chain_id:BigInt(n)})),y.XcmV5Junction.AccountKey20({key:e,network:void 0})])});function io(n,e){let t=Ss(n),s=xi(n,"0x"+"00".repeat(20)),a=1000000000000n,i=1000000000n,r=[y.XcmV5Instruction.ReserveAssetDeposited([{id:t,fun:y.XcmV3MultiassetFungibility.Fungible(a)},{id:s,fun:y.XcmV3MultiassetFungibility.Fungible(a)}]),y.XcmV5Instruction.ExchangeAsset({give:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.AllOf({id:t,fun:{type:"Fungible",value:void 0}})),want:[{id:ge,fun:y.XcmV3MultiassetFungibility.Fungible(i)}],maximal:!1}),y.XcmV5Instruction.PayFees({asset:{id:ge,fun:y.XcmV3MultiassetFungibility.Fungible(i)}})],o=wi({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 wi(n){let{ethChainId:e,destinationParaId:t,tokenAddress:s,beneficiaryHex:a,tokenAmount:i,hydrationDotFee:r,topic:o}=n,c=Ss(e),m=s===Ai?c:xi(e,s),f=a.length===42&&a.startsWith("0x")?y.XcmV5Junction.AccountKey20({key:a,network:void 0}):y.XcmV5Junction.AccountId32({id:a,network:void 0}),p={parents:0,interior:y.XcmV5Junctions.X1(f)};return[y.XcmV5Instruction.SetAppendix([y.XcmV5Instruction.RefundSurplus(),y.XcmV5Instruction.DepositAsset({assets:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.All()),beneficiary:p})]),y.XcmV5Instruction.ExchangeAsset({give:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.AllOf({id:c,fun:{type:"Fungible",value:void 0}})),want:[{id:ge,fun:y.XcmV3MultiassetFungibility.Fungible(r)}],maximal:!1}),y.XcmV5Instruction.InitiateTransfer({destination:{parents:1,interior:y.XcmV5Junctions.X1(y.XcmV5Junction.Parachain(t))},remote_fees:{type:"ReserveDeposit",value:y.XcmV5AssetFilter.Definite([{id:ge,fun:y.XcmV3MultiassetFungibility.Fungible(r)}])},preserve_origin:!1,assets:[{type:"ReserveDeposit",value:y.XcmV5AssetFilter.Definite([{id:m,fun:y.XcmV3MultiassetFungibility.Fungible(i)}])}],remote_xcm:[y.XcmV5Instruction.DepositAsset({assets:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.AllCounted(3)),beneficiary:p}),y.XcmV5Instruction.SetTopic(o)]}),y.XcmV5Instruction.RefundSurplus(),y.XcmV5Instruction.DepositAsset({assets:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.All()),beneficiary:p}),y.XcmV5Instruction.SetTopic(o)]}function Si(n){let{tokenAddress:e,senderPubKey:t,beneficiaryHex:s,tokenAmount:a,sourceExecutionFee:i,dotRemoteFee:r,dotToEtherSwapAmount:o,etherFeeAmount:c,topic:m}=n,g=Ss(Mt),f=e===Ai?g:xi(Mt,e),p={parents:0,interior:y.XcmV5Junctions.X1(y.XcmV5Junction.AccountId32({id:t,network:void 0}))},b={parents:0,interior:y.XcmV5Junctions.X1(y.XcmV5Junction.AccountKey20({key:s,network:void 0}))},w={parents:2,interior:y.XcmV5Junctions.X1(y.XcmV5Junction.GlobalConsensus(y.XcmV5NetworkId.Ethereum({chain_id:BigInt(Mt)})))},S=[y.XcmV5Instruction.DepositAsset({assets:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.AllCounted(3)),beneficiary:b}),y.XcmV5Instruction.SetTopic(m)],_=[y.XcmV5Instruction.SetAppendix([y.XcmV5Instruction.SetHints({hints:[{type:"AssetClaimer",value:{location:p}}]}),y.XcmV5Instruction.RefundSurplus(),y.XcmV5Instruction.DepositAsset({assets:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.All()),beneficiary:p})])];_.push(y.XcmV5Instruction.ExchangeAsset({give:y.XcmV5AssetFilter.Definite([{id:ge,fun:y.XcmV3MultiassetFungibility.Fungible(o)}]),want:[{id:g,fun:y.XcmV3MultiassetFungibility.Fungible(c)}],maximal:!1}));let k=[{type:"ReserveWithdraw",value:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.AllOf({id:f,fun:{type:"Fungible",value:void 0}}))}],O=y.XcmV5AssetFilter.Definite([{id:g,fun:y.XcmV3MultiassetFungibility.Fungible(c)}]);_.push(y.XcmV5Instruction.InitiateTransfer({destination:w,remote_fees:{type:"ReserveWithdraw",value:O},preserve_origin:!0,assets:k,remote_xcm:S}),y.XcmV5Instruction.SetTopic(m));let P=i+r+o,W=[{id:ge,fun:y.XcmV3MultiassetFungibility.Fungible(P)},{id:f,fun:y.XcmV3MultiassetFungibility.Fungible(a)}],U=[{id:ge,fun:y.XcmV3MultiassetFungibility.Fungible(i)}],T={type:"ReserveWithdraw",value:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.AllOf({id:f,fun:{type:"Fungible",value:void 0}}))},ne=[{type:"ReserveWithdraw",value:y.XcmV5AssetFilter.Definite([{id:ge,fun:y.XcmV3MultiassetFungibility.Fungible(o)}])},T];return[y.XcmV5Instruction.WithdrawAsset(W),y.XcmV5Instruction.PayFees({asset:U[0]}),y.XcmV5Instruction.SetAppendix([y.XcmV5Instruction.SetHints({hints:[{type:"AssetClaimer",value:{location:p}}]}),y.XcmV5Instruction.RefundSurplus(),y.XcmV5Instruction.DepositAsset({assets:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.All()),beneficiary:p})]),y.XcmV5Instruction.InitiateTransfer({destination:{parents:1,interior:y.XcmV5Junctions.X1(y.XcmV5Junction.Parachain(An))},remote_fees:{type:"ReserveWithdraw",value:y.XcmV5AssetFilter.Definite([{id:ge,fun:y.XcmV3MultiassetFungibility.Fungible(r)}])},preserve_origin:!0,assets:ne,remote_xcm:_}),y.XcmV5Instruction.SetTopic(m)]}function ro(n){let{address:e,amount:t,asset:s,sender:a,source:i,destination:r,messageId:o}=n,c=i.chain,m=(0,so.getSs58AddressInfo)(a);if(!m.isValid)throw new Error(`Invalid SS58 address: ${a}`);let g=(0,ao.toHex)(m.publicKey),f=c.getAssetXcmLocation(s),p=f?no.multiloc.findNestedKey(f,"key"):void 0,b=p?p.key:Ai,w=r.feeBreakdown,S=w.sourceExecutionFee??0n,_=w.dotRemoteFee??0n,k=w.dotToEtherSwapAmount??0n,O=w.etherFeeAmount??0n,W=Si({tokenAddress:b,senderPubKey:g,beneficiaryHex:e,tokenAmount:t,sourceExecutionFee:S,dotRemoteFee:_,dotToEtherSwapAmount:k,etherFeeAmount:O,topic:o??"0x0000000000000000000000000000000000000000000000000000000000000000"});return y.XcmVersionedXcm.V5(W)}var{Ss58Addr:mo}=Wt.addr,Eu="0x0000000000000000000000000000000000000000",Bu=()=>({build:async n=>{let{address:e,amount:t,asset:s,sender:a,source:i,destination:r}=n,o=i.chain,c=r.chain,m=Wt.Snowbridge.fromChain(o),g=o.getAssetId(s),f=Kn(g),p=s.originSymbol==="ETH",b=r.feeBreakdown.executionFee,w=r.feeBreakdown.relayerFee,S=r.feeBreakdown.hydrationDotFee,_=r.fee.amount,k=mo.getPubKey(e),O=new TextEncoder().encode(`${c.parachainId}${a}${f}${k}${t}${Date.now()}`),P=(0,ga.toHex)((0,oo.Blake2256)(O)),W=wi({ethChainId:Mt,destinationParaId:c.parachainId,tokenAddress:p?Eu:f,beneficiaryHex:k,tokenAmount:t,hydrationDotFee:S,topic:P}),U=await Qr(),T=(0,ga.toHex)(U.message.enc(xn.XcmVersionedXcm.V5(W))),ne=[];p||ne.push((0,co.encodeAbiParameters)([{type:"uint8"},{type:"address"},{type:"uint128"}],[0,f,t]));let Fe=U.location.enc(xn.XcmVersionedLocation.V5({parents:0,interior:xn.XcmV5Junctions.X1(xn.XcmV5Junction.AccountId32({id:k,network:void 0}))})),vt=(0,ga.toHex)(Fe.slice(1));return[new Wt.ContractConfig({abi:Wt.Abi.Snowbridge,address:m.getGateway(),args:[T,ne,vt,b,w],value:p?_+t:_,func:"v2_sendMessage",module:"Snowbridge"})]}}),Ru=()=>({build:async n=>{let{address:e,amount:t,asset:s,source:a,destination:i}=n,r=a.chain,o=i.chain,c=Wt.Snowbridge.fromChain(r),m=r.getAssetId(s),g=Kn(m),f=s.originSymbol==="ETH",p=i.feeBreakdown.bridgeFeeInDot,b=i.fee.amount;return[new Wt.ContractConfig({abi:Wt.Abi.Snowbridge,address:c.getGateway(),args:[g,o.parachainId,[1,mo.getPubKey(e)],p,t],value:f?b+t:b,func:"sendToken",module:"Snowbridge"})]}}),uo=()=>({v2SendMessage:Bu,sendToken:Ru});var Q=require("@galacticcouncil/xc-core");var Ls=require("@wormhole-foundation/sdk-base"),pa=require("@wormhole-foundation/sdk-definitions"),Ds="0x00",ha=8,lo="https://executor.labsapis.com",Lu=[{name:"prefix",binary:"bytes",size:4},{name:"srcChain",binary:"uint",size:2},{name:"srcManager",binary:"bytes",size:32},{name:"messageId",binary:"uint",size:32}],fo=(n,e,t)=>{let s=(0,Ls.serializeLayout)(Lu,{prefix:Ls.encoding.bytes.encode(pa.RequestPrefix.ERN1),srcChain:n,srcManager:new pa.UniversalAddress(e,"hex").toUint8Array(),messageId:t});return Ls.encoding.hex.encode(s,!0)};var Ti={};fn(Ti,{ASSET_LOCKDOWN_PERIOD_BLOCKS:()=>ho,AssethubClient:()=>ot,BaseClient:()=>Ct,ExecutorClient:()=>Aa,HydrationClient:()=>Ze,NttEvmClient:()=>Fs,NttNearClient:()=>Ns,NttSolanaClient:()=>Xs,NttSuiClient:()=>Os,UNMETERED:()=>Ht,capacityAt:()=>qn,executorClient:()=>Ms,getAllAssetDepositLimits:()=>Mi,getAssetDepositLimit:()=>ki,getGlobalWithdrawLimit:()=>Ci,nttClient:()=>Jt,nttDef:()=>ct});var vi=require("@galacticcouncil/common"),_s=require("@galacticcouncil/descriptors"),Ct=class{chain;descriptor;constructor(e,t){this.chain=e,this.descriptor=t??_s.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,vi.encodeLocation)(a),r=await this.refApi.apis.XcmPaymentApi.query_weight_to_asset_fee(s.value,_s.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,vi.encodeLocation)(a),r=await this.refApi.apis.XcmPaymentApi.query_weight_to_asset_fee(s.value,_s.XcmVersionedAssetId.V4(i));if(!r.success)throw Error(`Can't convert weight to fee in ${t.originSymbol}`);return BigInt(r.value)}};var At=require("@galacticcouncil/descriptors"),go=require("@galacticcouncil/common"),ya=require("@polkadot-api/substrate-bindings"),po=require("@polkadot-api/utils");var ot=class extends Ct{constructor(e){super(e)}async checkIfSufficient(e){let t=this.chain.getAssetId(e),s=this.chain.getAssetXcmLocation(e),a=(0,go.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,po.toHex)((0,ya.Twox128)(s)),i=await this.client._request("state_getStorage",[a]);if(!i)return t;let r=ya.u128.dec(i);return r===0n?t:r}async calculateDeliveryFee(e,t){let s=At.XcmVersionedLocation.V5({parents:1,interior:At.XcmV5Junctions.X1(At.XcmV5Junction.Parachain(t))}),a=At.XcmVersionedAssetId.V5({parents:1,interior:{type:"Here",value:void 0}}),i=await this.api().apis.XcmPaymentApi.query_delivery_fees(s,At.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:At.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:At.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:At.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 bo=require("@galacticcouncil/common"),Ao=require("@galacticcouncil/descriptors");var ho=14400;function yo(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,p;t&&(t.type==="Locked"?(g=t.value,m=a<t.value):(f=t.value[0],p=t.value[1]));let b=s?.type==="Local"?"Local":"External",w=!m&&f!==void 0&&f+ho<=a,S=null;if(r!==null)if(m)S=0n;else if(w)S=r;else{let _=p??i,k=i>_?i-_:0n;S=r>k?r-k:0n}return{assetId:n,symbol:o,decimals:c,limit:r,locked:m,lockedUntilBlock:g,lastResetBlock:f,baselineIssuance:p,currentIssuance:i,headroom:S,category:b,periodExpired:w}}async function ki(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 yo(e,s,a,i,r,o)}async function Mi(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 p=f.keyArgs[0],b=f.value;if(b?.xcm_rate_limit==null)continue;let w=p===0?i:m.get(p)??0n,S=yo(p,b,o.get(p),c.get(p),a,w);g.set(p.toString(),S)}return g}async function Ci(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 b=a>c?a-c:0n;if(b>0n){let w=b>g?g:b,S=o*w/g;f=o>S?o-S:0n}}let p=r||f>=m?0n:m-f;return{configured:!0,limit:m,windowMs:g,used:f,lastUpdateMs:c,headroom:p,lockdown:r,lockdownUntilMs:i}}var Ze=class extends Ct{constructor(e){super(e,Ao.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=this.chain.getNormalizedAddress(e),s=await this.api().query.MultiTransactionPayment.AccountCurrencyMap.getValue(t);return s!==void 0?s.toString():bo.h160.isEvmAccount(t)?this.chain.getAssetId(ie).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(this.chain.getNormalizedAddress(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(this.chain.getNormalizedAddress(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 ki(this.api(),t)}getAllAssetDepositLimits(){return Mi(this.api())}getGlobalWithdrawLimit(){return Ci(this.api())}};var ks=require("@galacticcouncil/xc-core");var vs=require("@galacticcouncil/xc-core"),So=require("@galacticcouncil/common");var xo=require("@galacticcouncil/xc-core"),Ht={capacity:0n,limit:0n,windowMs:0,capacityAtLastTx:0n,lastTxMs:0};function ct(n,e){if(!e)throw new Error("No ntt asset given for "+n.name+".");return xo.Ntt.fromChain(n,e)}function qn(n,e,t,s,a){let i=s>t?s-t:0n,r=e+n*i/a;return r<n?r:n}var Du=500000n,_u={robinhood:800000n},Fu=0;function wo(n,e){let t=n>>8n,s=Number(n&0xffn);return t*So.big.pow10(e-s)}var Fs=class{constructor(e,t){this.chain=e;this.asset=t}getOutboundLimit(){return this.getLimit()}getInboundLimit(e){return this.getLimit(vs.Wormhole.fromChain(e).getWormholeId())}async getRedeemBudget(){return{gasLimit:_u[this.chain.key]??Du,msgValue:0n}}async getCustody(){let e=this.chain.evmClient.getProvider(),{manager:t,token:s}=ct(this.chain,this.asset);if(await e.readContract({abi:vs.Abi.NttManager,address:t,functionName:"mode"})===Fu)return e.readContract({abi:vs.Abi.Erc20,address:s,args:[t],functionName:"balanceOf"})}async getLimit(e){let t=this.chain.evmClient.getProvider(),s=vs.Abi.NttManager,a=ct(this.chain,this.asset).manager,[i,r,o,c]=await Promise.all([t.readContract({abi:s,address:a,functionName:"rateLimitDuration"}),t.readContract({abi:s,address:a,functionName:"tokenDecimals"}),e===void 0?t.readContract({abi:s,address:a,functionName:"getCurrentOutboundCapacity"}):t.readContract({abi:s,address:a,functionName:"getCurrentInboundCapacity",args:[e]}),e===void 0?t.readContract({abi:s,address:a,functionName:"getOutboundLimitParams"}):t.readContract({abi:s,address:a,functionName:"getInboundLimitParams",args:[e]})]);return i===0n?Ht:{capacity:o,limit:wo(c.limit,r),windowMs:Number(i)*1e3,capacityAtLastTx:wo(c.currentCapacity,r),lastTxMs:Number(c.lastTxTimestamp)*1e3}}};var ko=require("@galacticcouncil/xc-core");var vo=3600*24,Nu=new TextEncoder().encode("STATE"),Xu=1;function Mo(n,e){let t=s=>n.getBigUint64(s,!0)+(n.getBigUint64(s+8,!0)<<64n);return{limit:t(e),capacityAtLastTx:t(e+16),lastTxTimestamp:n.getBigUint64(e+32,!0)}}function Vu(n){let e=new DataView(n.buffer,n.byteOffset,n.byteLength),t=0,s=()=>{t+=4+e.getUint32(t,!0)};return s(),t+=1,s(),t+=17,s(),t+=8,s(),Mo(e,t)}function Ou(n){let e=new Uint8Array(3);return e[0]=Xu,new DataView(e.buffer).setUint16(1,n,!0),e}var Ns=class{constructor(e,t){this.chain=e;this.asset=t}getOutboundLimit(){return this.getLimit()}getInboundLimit(e){return this.getLimit(ko.Wormhole.fromChain(e).getWormholeId())}async getRedeemBudget(){throw new Error("No executor delivery to "+this.chain.name+".")}async getCustody(){let{manager:e,token:t}=ct(this.chain,this.asset),s=await this.chain.client.view(t,"ft_balance_of",{account_id:e});return BigInt(s)}async getLimit(e){let t=await this.readLimit(e);if(!t)return Ht;let{limit:s,capacityAtLastTx:a,lastTxTimestamp:i}=t,r=BigInt(Math.floor(Date.now()/1e3));return{capacity:qn(s,a,i,r,BigInt(vo)),limit:s,windowMs:vo*1e3,capacityAtLastTx:a,lastTxMs:Number(i)*1e3}}async readLimit(e){let t=ct(this.chain,this.asset).manager,s=e===void 0?Nu:Ou(e),[a]=await this.chain.client.viewState(t,s);if(!a)return;if(e===void 0)return Vu(a.value);let{buffer:i,byteOffset:r,byteLength:o}=a.value;return Mo(new DataView(i,r,o),0)}};var ba=require("@galacticcouncil/xc-core"),To=require("@solana/spl-token"),cn=require("@solana/web3.js");var Wu=250000n,Hu=10000000n,Uu=2039280n,Co=3600*24,Ku=8,Gu=9,qu=0;function zu(n){let e=41;e+=n[e]===1?33:1,e+=64;let t=n[e];e+=22;let s=new cn.PublicKey(n.subarray(e,e+32));return{mode:t,custody:s}}function ju(n,e){let t=new DataView(n.buffer,n.byteOffset,n.byteLength);return{limit:t.getBigUint64(e,!0),capacityAtLastTx:t.getBigUint64(e+8,!0),lastTxTimestamp:t.getBigInt64(e+16,!0)}}var Xs=class{constructor(e,t){this.chain=e;this.asset=t}getOutboundLimit(){return this.getLimit()}getInboundLimit(e){return this.getLimit(ba.Wormhole.fromChain(e).getWormholeId())}async getRedeemBudget(e){let{connection:t}=this.chain,s={gasLimit:Wu,msgValue:Hu};if(!this.asset||!e)return{...s,msgValue:s.msgValue+Uu};let a=new cn.PublicKey(ct(this.chain,this.asset).token),{ata:i}=await ba.spl.getTokenAccount(t,a,new cn.PublicKey(e));if(await t.getAccountInfo(i))return s;let o=await(0,To.getMinimumBalanceForRentExemptAccount)(t);return{...s,msgValue:s.msgValue+BigInt(o)}}async getCustody(){let{connection:e}=this.chain,t=new cn.PublicKey(ct(this.chain,this.asset).manager),[s]=cn.PublicKey.findProgramAddressSync([new TextEncoder().encode("config")],t),a=await e.getAccountInfo(s);if(!a)throw new Error("Ntt config missing for "+t.toBase58());let{mode:i,custody:r}=zu(a.data);if(i!==qu)return;let{value:o}=await e.getTokenAccountBalance(r);return BigInt(o.amount)}async getLimit(e){let{pda:t,offset:s}=this.rateLimitPda(e),a=await this.chain.connection.getAccountInfo(t);if(!a)return Ht;let{limit:i,capacityAtLastTx:r,lastTxTimestamp:o}=ju(a.data,s),c=BigInt(Math.floor(Date.now()/1e3));return{capacity:qn(i,r,o,c,BigInt(Co)),limit:i,windowMs:Co*1e3,capacityAtLastTx:r,lastTxMs:Number(o)*1e3}}rateLimitPda(e){let t=new cn.PublicKey(ct(this.chain,this.asset).manager),s=new TextEncoder;if(e===void 0){let[r]=cn.PublicKey.findProgramAddressSync([s.encode("outbox_rate_limit")],t);return{pda:r,offset:Ku}}let a=new Uint8Array(2);new DataView(a.buffer).setUint16(0,e,!1);let[i]=cn.PublicKey.findProgramAddressSync([s.encode("inbox_rate_limit"),a],t);return{pda:i,offset:Gu}}};var Vs=require("@galacticcouncil/xc-core");var $u=10000000n,Io=3600*24*1e3;function Po(n){let e=BigInt(n.limit),t=BigInt(n.capacity_at_last_tx),s=BigInt(n.last_tx_timestamp),a=BigInt(Date.now());return{capacity:qn(e,t,s,a,BigInt(Io)),limit:e,windowMs:Io,capacityAtLastTx:t,lastTxMs:Number(s)}}var Os=class{constructor(e,t){this.chain=e;this.asset=t}getOutboundLimit(){return this.getLimit()}getInboundLimit(e){return this.getLimit(Vs.Wormhole.fromChain(e).getWormholeId())}async getRedeemBudget(){return{gasLimit:$u,msgValue:0n}}async getCustody(){let e=ct(this.chain,this.asset).manager,t=await Vs.suiPkg.getObject(this.chain.client,e);if(t.fields.mode?.variant==="Locking")return BigInt(t.fields.balance)}async getLimit(e){let t=this.chain.client,s=ct(this.chain,this.asset).manager,a=await Vs.suiPkg.getObject(t,s);if(e===void 0){let m=a.fields.outbox?.fields?.rate_limit?.fields;return m?Po(m):Ht}let i=a.fields.peers?.fields?.id?.id;if(!i)return Ht;let{data:r}=await t.getDynamicFieldObject({parentId:i,name:{type:"u16",value:e}}),c=r?.content?.fields?.value?.fields?.inbound_rate_limit?.fields;return c?Po(c):Ht}};function Jt(n,e){return n instanceof ks.SolanaChain?new Xs(n,e):n instanceof ks.SuiChain?new Os(n,e):n instanceof ks.NearChain?new Ns(n,e):new Fs(n,e)}var zn=require("@wormhole-foundation/sdk-base"),xa=require("@wormhole-foundation/sdk-definitions");var Yu=300*1e3,Qu=n=>{try{let{quote:e}=(0,zn.deserializeLayout)(xa.signedQuoteLayout,zn.encoding.hex.decode(n));return e.expiryTime.getTime()}catch{return 0}},Aa=class{quotes=new Map;async quote(e,t,s){let{gasLimit:a,msgValue:i}=s,r=[e,t,a,i].join(":"),o=this.quotes.get(r);if(o&&Qu(o.signedQuote)-Date.now()>Yu)return o;let c=zn.encoding.hex.encode((0,zn.serializeLayout)(xa.relayInstructionsLayout,{requests:[{request:{type:"GasInstruction",gasLimit:a,msgValue:i}}]}),!0),m=await fetch(lo+"/v0/quote",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({srcChain:e,dstChain:t,relayInstructions:c})});if(!m.ok)throw new Error("Executor quote failed ["+e+"->"+t+"]");let{signedQuote:g,estimatedCost:f}=await m.json();if(!g||!f)throw new Error("Executor quote incomplete");let p={signedQuote:g,estimatedCost:BigInt(f),relayInstructions:c};return this.quotes.set(r,p),p}},Ms=new Aa;var Ii=async n=>{let{address:e,amount:t,asset:s,source:a,destination:i}=n,r=a.chain,o=i.chain,c=Q.Ntt.fromChain(r,s),m=Q.Wormhole.fromChain(o),g=e;o instanceof Q.EvmParachain&&(g=await o.getDerivatedAddress(e));let f=await r.evmClient.getProvider().readContract({abi:Q.Abi.NttManager,address:c.manager,args:[m.getWormholeId(),Ds],functionName:"quoteDeliveryPrice"}),p=da(t,r.getAssetDecimals(s)??0,ha);return{ctx:r,ntt:c,rcvWh:m,rcvAddress:g,transferAmount:p,deliveryPrice:f[1],wrapNative:r.getBalanceType(s)===Q.EvmBalanceType.Native}},Ju=()=>({build:async n=>{let{ntt:e,rcvWh:t,rcvAddress:s,transferAmount:a,deliveryPrice:i,wrapNative:r}=await Ii(n);return[new Q.ContractConfig({abi:Q.Abi.NttManager,address:e.manager,args:[a,t.getWormholeId(),t.normalizeAddress(s)],token:e.token,wrapNative:r,value:i,func:"transfer",module:"NttManager"})]}}),Zu=()=>({build:async n=>{let{ctx:e,ntt:t,rcvWh:s,rcvAddress:a,transferAmount:i,deliveryPrice:r,wrapNative:o}=await Ii(n),c=Q.Wormhole.fromChain(e),m=c.getNttExecutor(),g=e instanceof Q.EvmParachain?await e.getDerivatedAddress(n.sender):n.sender,f=await Jt(n.destination.chain,n.destination.balance).getRedeemBudget(n.address),{signedQuote:p,estimatedCost:b,relayInstructions:w}=await Ms.quote(c.getWormholeId(),s.getWormholeId(),f),S=s.normalizeAddress(a),_={value:b,refundAddress:g,signedQuote:p,instructions:w},k={transferTokenFee:0n,nativeTokenFee:0n,payee:g};return[new Q.ContractConfig({abi:Q.Abi.NttManagerWithExecutor,address:m,args:[t.manager,i,s.getWormholeId(),S,S,Ds,_,k],token:t.token,wrapNative:o,value:r+b,func:"transfer",module:"NttManagerWithExecutor"})]}}),ed=()=>({build:async n=>{let{ctx:e,ntt:t,rcvWh:s,rcvAddress:a,transferAmount:i,deliveryPrice:r,wrapNative:o}=await Ii(n),c=Q.Wormhole.fromChain(e),m=n.destination.chain,g=Q.Ntt.find(m,n.destination.balance.key);if(!g)throw new Error("Ntt deployment missing on "+m.key);let f=e instanceof Q.EvmParachain?await e.getDerivatedAddress(n.sender):n.sender,p=await Jt(m,n.destination.balance).getRedeemBudget(n.address),[b,w]=await Promise.all([Ms.quote(c.getWormholeId(),s.getWormholeId(),p),e.evmClient.getProvider().readContract({abi:Q.Abi.NttManager,address:t.manager,functionName:"nextMessageSequence"})]);return[new Q.ContractConfig({abi:Q.Abi.NttManager,address:t.manager,args:[i,s.getWormholeId(),s.normalizeAddress(a)],token:t.token,wrapNative:o,value:r,func:"transfer",module:"NttManager"}),new Q.ContractConfig({abi:Q.Abi.Executor,address:c.getExecutor(),args:[s.getWormholeId(),s.normalizeAddress(g.manager),f,b.signedQuote,fo(c.getWormholeId(),t.manager,BigInt(w)),b.relayInstructions],value:b.estimatedCost,func:"requestExecution",module:"Executor"})]}}),Eo=()=>({transfer:Ju,transferWithExecutor:Zu,transferViaExecutor:ed});function Bo(){return{Ntt:Eo}}function J(){return{Batch:Wr,Erc20:Hr,Basejump:qr,PolkadotXcm:$r,Snowbridge:uo,Wormhole:Bo}}var Pi=require("@galacticcouncil/common"),Lo=require("@galacticcouncil/xc-core"),Ro="AssetConversion",td=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,Pi.encodeLocation)(c.getAssetXcmLocation(r)),g=(0,Pi.encodeLocation)(c.getAssetXcmLocation(o)),f=r.amount+r.amount*BigInt(n.slippage)/100n,p=o.amount;return new Lo.ExtrinsicConfig({module:Ro,func:e,getTx:b=>b.getUnsafeApi().tx[Ro][e]({path:[m,g],amount_out:p,amount_in_max:f,send_to:t,keep_alive:!0})})}}},Do=()=>({swapTokensForExactTokens:td});var wa=require("@galacticcouncil/descriptors"),_o=require("@galacticcouncil/xc-core"),nd="Assets",sd=()=>{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 _o.ExtrinsicConfig({module:nd,func:n,getTx:m=>m.getTypedApi(wa.hub).tx.Assets.transfer({id:Number(c),target:wa.MultiAddress.Id(s),amount:o})})}}},Fo=()=>({transfer:sd});var Xo=require("@galacticcouncil/xc-core"),No="Balances",ad=(n=!1)=>{let e="transfer_all";return{build:async({address:t})=>new Xo.ExtrinsicConfig({module:No,func:e,getTx:s=>s.getUnsafeApi().tx[No][e]({dest:t,keep_alive:n})})}},Vo=()=>({transferAll:ad});var Cs=require("@galacticcouncil/xc-core"),Ho=require("polkadot-api"),Oo="EVM",Sa=(1n<<64n)-1n,Wo=n=>[n&Sa,n>>64n&Sa,n>>128n&Sa,n>>192n&Sa],id=n=>({build:async e=>{let t=e.source.chain,s=t.evmClient,a=await n.build(e),[i,r]=await Promise.all([t.getDerivatedAddress(e.sender),s.getProvider().getGasPrice()]),o=r+r/10n,m=[...await(0,Cs.getEvmPrerequisites)(s,i,e.amount,a[0]),...a.map(f=>({to:f.address,data:f.encodeFunctionData(),value:f.value,gas:Cs.Gas.transfer}))],g=m.length>1;return new Cs.ExtrinsicConfig({module:g?"Utility":Oo,func:g?"batch_all":"call",getTx:f=>{let p=f.getUnsafeApi(),b=m.map(w=>p.tx[Oo].call({source:i,target:w.to,input:Ho.Binary.fromHex(w.data),value:Wo(w.value??0n),gas_limit:w.gas,max_fee_per_gas:Wo(o),max_priority_fee_per_gas:void 0,nonce:void 0,access_list:[],authorization_list:[]}));return g?p.tx.Utility.batch_all({calls:b.map(w=>w.decodedCall)}):b[0]}})}}),Uo=()=>({call:id});var Ko=require("@galacticcouncil/descriptors"),Go=require("@galacticcouncil/xc-core"),rd="Router",od=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,p=i.amount+i.amount*BigInt(n.slippage)/100n;return new Go.ExtrinsicConfig({module:rd,func:"buy",getTx:b=>b.getTypedApi(Ko.hydration).tx.Router.buy({asset_in:Number(m),asset_out:Number(g),amount_out:f,max_amount_in:p,route:o})})}}),qo=()=>({buy:od});var zo=require("@galacticcouncil/xc-core"),Ei="Utility",jo=n=>n?.type===Ei&&n?.value?.type==="batch_all"?n.value.value.calls.flatMap(jo):[n],cd=n=>{let e="batch_all";return{build:async t=>{let s=await Promise.all(n.map(a=>a.build(t)));return new zo.ExtrinsicConfig({module:Ei,func:e,getTx:a=>{let i=s.flatMap(r=>jo(r.getTx(a).decodedCall));return a.getUnsafeApi().tx[Ei][e]({calls:i})}})}}},$o=()=>({batchAll:cd});var Yn=require("@galacticcouncil/xc-core"),fc=require("@galacticcouncil/common");var jn=require("@galacticcouncil/xc-core"),v=require("@galacticcouncil/descriptors");var ve=require("@galacticcouncil/descriptors");var Yo=require("@galacticcouncil/common"),Bi=require("@galacticcouncil/descriptors"),Qo=require("@polkadot-api/substrate-bindings"),Jo=require("@polkadot-api/utils");function Me(n){if(n.length===42&&n.startsWith("0x"))return Bi.XcmV3Junction.AccountKey20({key:n,network:void 0});let t=(0,Qo.getSs58AddressInfo)(n);if(!t.isValid)throw new Error(`Invalid SS58 address: ${n}`);return Bi.XcmV3Junction.AccountId32({id:(0,Jo.toHex)(t.publicKey),network:void 0})}function va(n,e,t){return Yo.acc.getMultilocationDerivatedAccount(n.parachainId,e,t.parachainId===0?0:1,t.usesH160Acc)}var Ri=require("@galacticcouncil/xc-core");function Zo(n,e){let t=Ri.multiloc.findNestedKey(n,"GeneralIndex"),s=Ri.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 ce(n,e){let t=n.getAssetXcmLocation(e);if(!t)throw new Error(e.originSymbol+" location config is missing.");return t}var ka={};fn(ka,{ETHER_TOKEN_ADDRESS:()=>Li,erc20Location:()=>ud,erc20LocationReanchored:()=>dd,ethereumLocation:()=>tc,parachainLocation:()=>md});var Tt=require("@galacticcouncil/descriptors"),Li="0x0000000000000000000000000000000000000000",ec=n=>Tt.XcmV3Junction.GlobalConsensus(Tt.XcmV3JunctionNetworkId.Ethereum({chain_id:BigInt(n)}));function tc(n){return{parents:2,interior:Tt.XcmV3Junctions.X1(ec(n))}}function md(n){return{parents:1,interior:Tt.XcmV3Junctions.X1(Tt.XcmV3Junction.Parachain(n))}}function ud(n,e){return e===Li?tc(n):{parents:2,interior:Tt.XcmV3Junctions.X2([ec(n),Tt.XcmV3Junction.AccountKey20({key:e})])}}function dd(n){return n===Li?{parents:0,interior:{type:"Here"}}:{parents:0,interior:Tt.XcmV3Junctions.X1(Tt.XcmV3Junction.AccountKey20({key:n}))}}var Di=require("@galacticcouncil/common"),nc=require("@galacticcouncil/xc-core");function pe(n,e){return ld(e)>=4?(0,Di.encodeLocation)(n):fd(n)}function ld(n){let e=n.toString().replace("V","").replace("v","");return Number(e)}function fd(n){return{type:"Concrete",value:(0,Di.encodeLocation)(n)}}var gd=1e3;function pd(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 hd(n){if(n)return pd(n)?gd:nc.multiloc.findParachain(n)}function sc(n,e,t,s){let a=e.getAssetXcmLocation(n),i=hd(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}"`)}var mn=(i=>(i.v1="V1",i.v2="V2",i.v3="V3",i.v4="V4",i.v5="V5",i))(mn||{}),xt=(a=>(a.Teleport="Teleport",a.LocalReserve="LocalReserve",a.DestinationReserve="DestinationReserve",a.RemoteReserve="RemoteReserve",a))(xt||{});function Ma(n,e){let t="V4",s=pe(ce(e,n),t),a=Ot;return[ve.XcmV4Instruction.ReserveAssetDeposited([{id:ge,fun:ve.XcmV3MultiassetFungibility.Fungible(Se)},{id:s,fun:ve.XcmV3MultiassetFungibility.Fungible(Se)}]),ve.XcmV4Instruction.ClearOrigin(),ve.XcmV4Instruction.BuyExecution({fees:{id:ge,fun:ve.XcmV3MultiassetFungibility.Fungible(Se)},weight_limit:ve.XcmV3WeightLimit.Unlimited()}),ve.XcmV4Instruction.DepositAsset({assets:ve.XcmV4AssetAssetFilter.Wild(ve.XcmV4AssetWildAsset.AllCounted(2)),beneficiary:{parents:0,interior:ve.XcmV3Junctions.X1(Me(Gn))}}),ve.XcmV4Instruction.SetTopic(a)]}var Zt=require("@galacticcouncil/descriptors");function _i(n,e){let t="V4",s=pe(ce(e,n),t),a=Ca("V4",Me(to),Me(Gn),s,Ot);return[Zt.XcmV4Instruction.WithdrawAsset([{id:ge,fun:Zt.XcmV3MultiassetFungibility.Fungible(Se)},{id:s,fun:Zt.XcmV3MultiassetFungibility.Fungible(Se)}]),Zt.XcmV4Instruction.ClearOrigin(),Zt.XcmV4Instruction.BuyExecution({fees:{id:ge,fun:Zt.XcmV3MultiassetFungibility.Fungible(Se)},weight_limit:Zt.XcmV3WeightLimit.Unlimited()}),...a.value]}var V=require("@galacticcouncil/descriptors");function ac(n,e){let t="V4",s=pe(ce(e,n),t),a=Ot;return[V.XcmV4Instruction.WithdrawAsset([{id:s,fun:V.XcmV3MultiassetFungibility.Fungible(Se)}]),V.XcmV4Instruction.ClearOrigin(),V.XcmV4Instruction.BuyExecution({fees:{id:s,fun:V.XcmV3MultiassetFungibility.Fungible(Se)},weight_limit:V.XcmV3WeightLimit.Unlimited()}),V.XcmV4Instruction.DepositAsset({assets:V.XcmV4AssetAssetFilter.Wild(V.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:V.XcmV3Junctions.X1(Me(Gn))}}),V.XcmV4Instruction.SetTopic(a)]}function Fi(n,e){let t="V4",s=pe(ce(e,n),t);return[V.XcmV4Instruction.BuyExecution({fees:{id:s,fun:V.XcmV3MultiassetFungibility.Fungible(Se)},weight_limit:V.XcmV3WeightLimit.Unlimited()}),V.XcmV4Instruction.DepositAsset({assets:V.XcmV4AssetAssetFilter.Wild(V.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:V.XcmV3Junctions.X1(Me(Gn))}})]}function ic(n,e,t){let s="V4",a=pe(ce(e,n),s),i=Ot,r=Fi(n,t);return[V.XcmV4Instruction.WithdrawAsset([{id:a,fun:V.XcmV3MultiassetFungibility.Fungible(Se)}]),V.XcmV4Instruction.ClearOrigin(),V.XcmV4Instruction.BuyExecution({fees:{id:a,fun:V.XcmV3MultiassetFungibility.Fungible(Se)},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 he=require("@galacticcouncil/descriptors");function rc(n,e){let t="V5",s=pe(ce(e,n),t),a={parents:0,interior:he.XcmV5Junctions.X1(he.XcmV5Junction.AccountId32({id:eo,network:void 0}))};return[he.XcmV5Instruction.ReserveAssetDeposited([{id:ge,fun:he.XcmV3MultiassetFungibility.Fungible(Se)}]),he.XcmV5Instruction.PayFees({asset:{id:ge,fun:he.XcmV3MultiassetFungibility.Fungible(Se)}}),he.XcmV5Instruction.ReserveAssetDeposited([{id:s,fun:he.XcmV3MultiassetFungibility.Fungible(Se)}]),he.XcmV5Instruction.ClearOrigin(),he.XcmV5Instruction.DepositAsset({assets:he.XcmV5AssetFilter.Wild(he.XcmV5WildAsset.AllCounted(3)),beneficiary:a}),he.XcmV5Instruction.SetTopic(Ot)]}var oc=[jn.ChainEcosystem.Polkadot,jn.ChainEcosystem.Kusama],yd={parents:1,interior:v.XcmV3Junctions.X1(v.XcmV3Junction.Parachain(1e3))},bd=n=>{let{parents:e,interior:t}=n;return e!==1?!1:t==="Here"||t?.type==="Here"},cc=(n,e)=>!n.ecosystem||!e.ecosystem?!1:oc.includes(n.ecosystem)&&oc.includes(e.ecosystem)&&n.ecosystem!==e.ecosystem,mc=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},wn=(n,e,t)=>{if(cc(e,t))return{type:n,value:Ni(t.ecosystem,t.parachainId)};if(t.parachainId===Zr)return{type:n,value:{parents:1,interior:v.XcmV3Junctions.Here()}};let s=t.key==="ethereum"?An:t.parachainId;return{type:n,value:{parents:1,interior:v.XcmV3Junctions.X1(v.XcmV3Junction.Parachain(s))}}},Ad=n=>n===jn.ChainEcosystem.Kusama?v.XcmV3JunctionNetworkId.Kusama():v.XcmV3JunctionNetworkId.Polkadot(),Ni=(n,e)=>({parents:2,interior:v.XcmV3Junctions.X2([v.XcmV3Junction.GlobalConsensus(Ad(n)),v.XcmV3Junction.Parachain(e)])}),uc=(n,e,t,s)=>{if(cc(e,t)){if(e.parachainId!==An){let a=jn.multiloc.findGlobalConsensus(ce(e,s)),i=typeof a=="string"&&a===t.ecosystem;return{dest:{type:n,value:{parents:1,interior:v.XcmV3Junctions.X1(v.XcmV3Junction.Parachain(An))}},mode:i?"bridge-withdraw":"bridge-deposit"}}if(t.parachainId!==An)return{dest:{type:n,value:Ni(t.ecosystem,An)},mode:"onward"}}},$n=(n,e)=>({type:n,value:{parents:0,interior:v.XcmV3Junctions.X1(e)}}),Xi=(n,e,t)=>e==="RemoteReserve"?{type:"RemoteReserve",value:{type:n,value:bd(t)?yd:t}}:{type:e},Sn=(n,e)=>({id:n,fun:v.XcmV3MultiassetFungibility.Fungible(e)}),dc=(n,e,t)=>({type:n,value:[v.XcmV4Instruction.DepositAsset({assets:v.XcmV4AssetAssetFilter.Wild(v.XcmV4AssetWildAsset.AllCounted(t)),beneficiary:{parents:0,interior:v.XcmV3Junctions.X1(e)}})]}),Ca=(n,e,t,s,a)=>{let i=a;return{type:n,value:[v.XcmV4Instruction.SetAppendix([v.XcmV4Instruction.DepositAsset({assets:v.XcmV4AssetAssetFilter.Wild(v.XcmV4AssetWildAsset.All()),beneficiary:{parents:0,interior:v.XcmV3Junctions.X1(t)}})]),v.XcmV4Instruction.InitiateReserveWithdraw({assets:v.XcmV4AssetAssetFilter.Wild(v.XcmV4AssetWildAsset.AllOf({id:s,fun:v.XcmV2MultiassetWildFungibility.Fungible()})),reserve:ka.ethereumLocation(Mt),xcm:[v.XcmV4Instruction.BuyExecution({fees:{id:xd(s),fun:v.XcmV3MultiassetFungibility.Fungible(1n)},weight_limit:v.XcmV3WeightLimit.Unlimited()}),v.XcmV4Instruction.DepositAsset({assets:v.XcmV4AssetAssetFilter.Wild(v.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:v.XcmV3Junctions.X1(e)}}),v.XcmV4Instruction.SetTopic(i)]}),v.XcmV4Instruction.SetTopic(i)]}},lc=(n,e,t,s,a,i)=>{let r=s==="onward"?{parents:1,interior:v.XcmV3Junctions.X1(v.XcmV3Junction.Parachain(t.parachainId))}:Ni(t.ecosystem,t.parachainId),o={parents:0,interior:v.XcmV3Junctions.X1(e)},c=v.XcmV4AssetAssetFilter.Wild(v.XcmV4AssetWildAsset.AllCounted(1)),m=[v.XcmV4Instruction.BuyExecution({fees:{id:a,fun:v.XcmV3MultiassetFungibility.Fungible(i)},weight_limit:v.XcmV3WeightLimit.Unlimited()}),v.XcmV4Instruction.DepositAsset({assets:c,beneficiary:o})],g=s==="bridge-withdraw"?v.XcmV4Instruction.InitiateReserveWithdraw({assets:c,reserve:r,xcm:m}):v.XcmV4Instruction.DepositReserveAsset({assets:c,dest:r,xcm:m});return{type:n,value:[v.XcmV4Instruction.SetAppendix([v.XcmV4Instruction.DepositAsset({assets:v.XcmV4AssetAssetFilter.Wild(v.XcmV4AssetWildAsset.All()),beneficiary:o})]),g]}},xd=n=>{let e=jn.multiloc.findNestedKey(n,"key");return e?{parents:0,interior:v.XcmV3Junctions.X1(v.XcmV3Junction.AccountKey20({key:e.key}))}:{parents:0,interior:v.XcmV3Junctions.Here()}};var It="PolkadotXcm",wd=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=Me(n),r=a.chain,o=s.chain,c="V4",m=ce(r,t),g=ce(r,s.fee),f=pe(m,c),p=pe(g,c),b=Sn(f,e),w=Sn(p,s.fee.amount),S="limited_reserve_transfer_assets";return new Yn.ExtrinsicConfig({module:It,func:S,getTx:_=>{let k=_.getUnsafeApi().tx[It][S];return t.key===s.fee.key?k({dest:wn(c,r,o),beneficiary:$n(c,i),assets:{type:c,value:[b]},fee_asset_item:0,weight_limit:{type:"Unlimited"}}):Zo(m,g)?k({dest:wn(c,r,o),beneficiary:$n(c,i),assets:{type:c,value:[w,b]},fee_asset_item:0,weight_limit:{type:"Unlimited"}}):k({dest:wn(c,r,o),beneficiary:$n(c,i),assets:{type:c,value:[b,w]},fee_asset_item:1,weight_limit:{type:"Unlimited"}})}})}}),Sd=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=Me(n),r=a.chain,o=s.chain,c="V4",m=pe(ce(r,t),c),g=Sn(m,e),f=wn(c,r,o),p=$n(c,i),b={type:c,value:[g]},w="limited_teleport_assets";return new Yn.ExtrinsicConfig({module:It,func:w,getTx:S=>S.getUnsafeApi().tx[It][w]({dest:f,beneficiary:p,assets:b,fee_asset_item:0,weight_limit:{type:"Unlimited"}})})}}),vd=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=Me(n),r=a.chain,o=s.chain,c=r.xcmVersion??"V4",m=pe(ce(r,t),c),g=Sn(m,e),f=wn(c,r,o),p=$n(c,i),b={type:c,value:[g]},w="reserve_transfer_assets";return new Yn.ExtrinsicConfig({module:It,func:w,getTx:S=>S.getUnsafeApi().tx[It][w]({dest:f,beneficiary:p,assets:b,fee_asset_item:0})})}}),kd=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=Me(n),r=a.chain,o=s.chain,c="V4",m=pe(ce(r,t),c),g=Sn(m,e),f=wn(c,r,o),p=$n(c,i),b={type:c,value:[g]},w="transfer_assets";return new Yn.ExtrinsicConfig({module:It,func:w,getTx:S=>S.getUnsafeApi().tx[It][w]({dest:f,beneficiary:p,assets:b,fee_asset_item:0,weight_limit:{type:"Unlimited"}})})}}),Md=n=>({build:async({address:e,asset:t,amount:s,destination:a,messageId:i,sender:r,source:o})=>{let c="V4",m=o.chain,g=a.chain,f=a.fee.amount,p=a.fee,b=Me(r),w=g.usesCexForwarding?va(m,r,g):e,S=Me(w),{transferType:_}=n,k=pe(ce(m,t),c),O=pe(ce(m,p),c),P=Sn(k,s),W=Sn(O,f),U=t.isEqual(p),T=uc(c,m,g,t),ne=T?.dest??wn(c,m,g),Fe={type:c,value:U?[P]:[W,P]},vt=Xi(c,_,k),nn={type:c,value:U?k:O},ln=Xi(c,_,O),le;if(mc(k)&&a.chain.isEvmChain())le=Ca(c,S,b,k,i);else if(T){let d=fc.big.toBigInt(n.executionFee??a.fee.amount,a.fee.decimals),u=pe(ce(g,t),c);le=lc(c,S,g,T.mode,u,d)}else le=dc(c,S,Fe.value.length);let l="transfer_assets_using_type_and_then";return new Yn.ExtrinsicConfig({module:It,func:l,getTx:d=>d.getUnsafeApi().tx[It][l]({dest:ne,assets:Fe,assets_transfer_type:vt,remote_fees_id:nn,fees_transfer_type:ln,custom_xcm_on_dest:le,weight_limit:{type:"Unlimited"}})})}});function Cd(n){let e=t=>({build:async s=>{let a=t(s),i="execute";return new Yn.ExtrinsicConfig({module:It,func:i,getTx:r=>r.getUnsafeApi().tx[It][i]({message:a,max_weight:{ref_time:20000000000n,proof_size:500000n}})})}});return n?e(n):{viaSnowbridge:()=>e(ro)}}var Vi=()=>({limitedReserveTransferAssets:wd,limitedTeleportAssets:Sd,reserveTransferAssets:vd,transferAssets:kd,transferAssetsUsingTypeAndThen:Md,execute:Cd});var hc=require("@galacticcouncil/xc-core"),yc=require("@galacticcouncil/common");var Ws=require("@galacticcouncil/descriptors"),gc=(n,e,t)=>e.parachainId===0?{type:n,value:{parents:1,interior:Ws.XcmV3Junctions.X1(t)}}:{type:n,value:{parents:1,interior:Ws.XcmV3Junctions.X2([Ws.XcmV3Junction.Parachain(e.parachainId),t])}};var pc="XTokens",Td=()=>({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?va(r,a,o):n,g=Me(m),f=r.getAssetId(t),p=(0,yc.encodeAssetId)(f),b="transfer";return new hc.ExtrinsicConfig({module:pc,func:b,getTx:w=>w.getUnsafeApi().tx[pc][b]({currency_id:p,amount:e,dest:gc(c,o,g),dest_weight_limit:{type:"Unlimited"}})})}}),Oi=()=>({transfer:Td});function x(){return{assetConversion:Do,assets:Fo,balances:Vo,evm:Uo,polkadotXcm:Vi,router:qo,utility:$o,xTokens:Oi}}function un(n,e){return{prior:function(t){return{build:async s=>n(s)?x().utility().batchAll([e,t]).build(s):t.build(s)}},priorMulti:function(t){return{build:async s=>n(s)?x().utility().batchAll([e,...t]).build(s):x().utility().batchAll([...t]).build(s)}}}}var wt=require("@galacticcouncil/xc-core");var bc=80000n,Ac=120000n,xc=100000n,wc=2000000n,Wi=15000000000000n;function Id(){return{calculateInboundFee:n=>({build:async({feeAsset:e,destination:t})=>{let s=t,a=new Ze(s),i=new ot(n.hub),r=Ma(e,s),o=rc(e,s),c=Ss(Mt),m=250000000n,g=io(Mt,s.parachainId),[f,p,b,w]=await Promise.all([a.calculateDestinationFeeV5(o,E),i.calculateDeliveryFee(r,s.parachainId),i.calculateDeliveryFee(r,fa),i.calculateDestinationFeeV5(g,E)]),S=we(f,33n),_=we(p,33n),k=we(b,33n),P=we(w,33n)+_,W=S,U=await i.quoteEtherForDot(c,P),T=we(U,30n),ne=T<Wi*2n?Wi*2n:T,Fe=we(await i.quoteEtherForDot(c,W),100n),vt=we(await i.quoteDotToEther(c,m+k),30n);return{amount:ne+vt+Fe,breakdown:{executionFee:ne,relayerFee:vt,remoteEtherFee:Fe,hydrationDotFee:W}}}}),calculateOutboundFee:n=>({build:async({transferAsset:e,feeAsset:t,source:s,destination:a})=>{let i=s,r=a,o=new ot(n.hub),c=Ss(Mt),m=_i(e,i),[g,f,p]=await Promise.all([o.getBridgeDeliveryFee(),o.calculateDeliveryFee(m,fa),o.calculateDestinationFee(m,t)]),b=await r.evmClient.getProvider().getGasPrice(),w=wc+Ac+bc+xc,S=b*w,_=we(S,10n),k=g+we(f,33n)+we(p,33n),O=we(await o.quoteDotForExactEther(c,_),20n),P=new Ze(i),W=Si({tokenAddress:"0x0000000000000000000000000000000000000000",senderPubKey:"0x"+"00".repeat(32),beneficiaryHex:"0x"+"00".repeat(20),tokenAmount:1000000000000n,sourceExecutionFee:1000000000n,dotRemoteFee:1000000000n,dotToEtherSwapAmount:1000000000n,etherFeeAmount:1000000000n,topic:Ot}),U=we(await P.calculateDestinationFeeV5(W,E),33n);return{amount:k+O+U,breakdown:{dotRemoteFee:k,dotToEtherSwapAmount:O,etherFeeAmount:_,sourceExecutionFee:U}}}}),calculateInboundFeeV1:n=>({build:async({feeAsset:e,destination:t,source:s})=>{let a=s,i=t,r=wt.Snowbridge.fromChain(a),o=new Ct(i),c=new ot(n.hub),m=Ma(e,i),[g,f]=await Promise.all([o.calculateDestinationFee(m,E),c.calculateDeliveryFee(m,i.parachainId)]),p=f+we(g,25n),b=a.getAssetId(e);return{amount:await a.evmClient.getProvider().readContract({abi:wt.Abi.Snowbridge,address:r.getGateway(),args:[b,i.parachainId,p],functionName:"quoteSendTokenFee"}),breakdown:{bridgeFeeInDot:p}}}}),calculateOutboundFeeV1:n=>({build:async({transferAsset:e,feeAsset:t,source:s})=>{let a=s,i=new ot(n.hub),r=_i(e,a),o=Ma(e,a),[c,m,g,f,p]=await Promise.all([i.getBridgeDeliveryFeeV1(),i.calculateDeliveryFee(r,fa),i.calculateDestinationFee(r,t),i.calculateDeliveryFee(o,a.parachainId),i.calculateDestinationFee(o,t)]);return{amount:c+m+we(g,25n)+f+we(p,25n),breakdown:{bridgeDeliveryFee:c,bridgeHubDeliveryFee:m,assetHubDestinationFee:g,returnToSenderDeliveryFee:f,returnToSenderDestinationFee:p}}}})}}function Pd(){return{calculateDestFee:n=>({build:async({feeAsset:e,source:t,destination:s})=>{let a=t,i=s,r=n?.reserve;if(sc(e,a,i,r),r){let p=new Ct(i),b=new Ct(r),w=Fi(e,i),S=ic(e,r,i),[_,k]=await Promise.all([p.calculateDestinationFee(w,e),b.calculateDestinationFee(S,e)]),O=k+_,P=we(O,20n),W=P-O;return{amount:P,breakdown:{reserveFee:k,destinationFee:_,margin:W}}}let o=new Ct(i),c=ac(e,i),m=await o.calculateDestinationFee(c,e),g=we(m,20n),f=g-m;return{amount:g,breakdown:{totalFee:m,margin:f}}}})}}function Ed(){return{quoteExecutorCost:()=>({build:async({address:n,destinationAsset:e,transferAsset:t,source:s,destination:a})=>{let i=s,r=wt.Ntt.fromChain(i,t),o=wt.Wormhole.fromChain(i),c=wt.Wormhole.fromChain(a),m=await Jt(a,e).getRedeemBudget(n),[g,f]=await Promise.all([i.evmClient.getProvider().readContract({abi:wt.Abi.NttManager,address:r.manager,args:[c.getWormholeId(),Ds],functionName:"quoteDeliveryPrice"}),Ms.quote(o.getWormholeId(),c.getWormholeId(),m)]);return{amount:g[1]+f.estimatedCost,breakdown:{deliveryPrice:g[1],executorCost:f.estimatedCost}}}})}}function Bd(){return{quoteFee:()=>({build:async({feeAsset:n,source:e})=>{let t=e,s=wt.Basejump.fromChain(t),a=t.getAssetId(n);return{amount:await t.evmClient.getProvider().readContract({abi:wt.Abi.Basejump,address:s.getAddress(),args:[a],functionName:"quoteFee"})}}})}}function D(){return{Basejump:Bd,XcmPaymentApi:Pd,Snowbridge:Id,Wormhole:Ed}}function Rd(){return{build:async({address:n,chain:e})=>{let s=await new Ze(e).getFeeAsset(n),a=e.findAssetById(s);return a?a.asset:me}}}var Ld=()=>({accountCurrencyMap:Rd});function Hs(){return{multiTransactionPayment:Ld}}var mt=require("@galacticcouncil/xc-core");var Dd=()=>({build:async n=>{let{address:e,amount:t,asset:s,source:a,destination:i}=n,r=a.chain,o=i.chain,c=mt.Ntt.fromChain(r,s),m=mt.Wormhole.fromChain(o),g=e;o instanceof mt.EvmParachain&&(g=await o.getDerivatedAddress(e));let f=da(t,r.getAssetDecimals(s)??0,ha),p={recipient_chain:m.getWormholeId(),recipient:m.normalizeAddress(g)};return[new mt.FunctionCallConfig({receiverId:c.token,args:{receiver_id:c.manager,amount:f.toString(),msg:JSON.stringify(p)},gas:mt.NearGas.transfer,deposit:mt.NearDeposit.oneYocto,wrapNative:r.getBalanceType(s)===mt.NearBalanceType.Native,func:"ft_transfer_call",module:"NttManager"})]}}),Sc=()=>({transfer:Dd});function vc(){return{Ntt:Sc}}function Hi(){return{Wormhole:vc}}var ut=require("@galacticcouncil/xc-core"),kc=require("@mysten/sui/transactions"),Ta=require("@mysten/sui/utils"),Mc=require("@wormhole-foundation/sdk-base"),_d=()=>({build:async n=>{let{address:e,amount:t,asset:s,source:a,destination:i}=n,r=a.chain,o=i.chain,c=ut.Ntt.fromChain(r,s),m=ut.Wormhole.fromChain(r),g=ut.Wormhole.fromChain(o),f=r.client,p=e;o instanceof ut.EvmParachain&&(p=await o.getDerivatedAddress(e));let b=Mc.encoding.hex.decode(g.normalizeAddress(p)),w=m.getCoreBridge(),S=c.manager,_=c.transceiver.wormhole,k=c.token,[O,P,W,U]=await Promise.all([ut.suiPkg.getWormholePackageId(f,w),ut.suiPkg.getCurrentPackageId(f,S),ut.suiPkg.getCurrentPackageId(f,_),ut.suiPkg.getCoinMetadataId(f,k)]),T=new kc.Transaction,[ne]=T.splitCoins(T.gas,[T.pure.u64(t)]),[Fe]=T.moveCall({target:`${P}::upgrades::new_version_gated`,arguments:[]}),[vt,nn]=T.moveCall({target:`${P}::ntt::prepare_transfer`,typeArguments:[k],arguments:[T.object(S),ne,T.object(U),T.pure.u16(g.getWormholeId()),T.pure.vector("u8",Array.from(b)),T.pure.option("vector<u8>",null),T.pure.bool(!1)]}),[ln]=T.moveCall({target:`${P}::state::get_next_sequence`,typeArguments:[k],arguments:[T.object(S)]});T.moveCall({target:`${P}::ntt::transfer_tx_sender`,typeArguments:[k],arguments:[T.object(S),Fe,T.object(U),vt,T.object(Ta.SUI_CLOCK_OBJECT_ID)]});let[le]=T.moveCall({target:`${P}::state::create_transceiver_message`,typeArguments:[`${W}::wormhole_transceiver::TransceiverAuth`,k],arguments:[T.object(S),ln,T.object(Ta.SUI_CLOCK_OBJECT_ID)]}),[l]=T.moveCall({target:`${W}::wormhole_transceiver::release_outbound`,typeArguments:[`${P}::auth::ManagerAuth`],arguments:[T.object(_),le]}),[d]=T.splitCoins(T.gas,[T.pure.u64(0n)]);T.moveCall({target:`${O}::publish_message::publish_message`,arguments:[T.object(w),d,l,T.object(Ta.SUI_CLOCK_OBJECT_ID)]});let[u]=T.moveCall({target:"0x2::coin::from_balance",typeArguments:[k],arguments:[nn]});return T.mergeCoins(T.gas,[u]),[new ut.MoveConfig({transaction:T,func:"transfer",module:"NttManager"})]}}),Cc=()=>({transfer:_d});function Tc(){return{Ntt:Cc}}function Ui(){return{Wormhole:Tc}}var Pt=require("@galacticcouncil/xc-core"),dm=require("@solana/spl-token"),Na=require("@solana/web3.js"),lm=require("@wormhole-foundation/sdk-base"),fm=require("@wormhole-foundation/sdk-definitions"),gm=require("@wormhole-foundation/sdk-solana"),LA=require("@wormhole-foundation/sdk-definitions-ntt");async function Xd(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 Vd(n,e,t){let s=await Xd(n,e),a="message"in e?Na.TransactionMessage.decompile(e.message,{addressLookupTableAccounts:s}).instructions:e.instructions;return new Pt.ProgramConfig({instructions:a,signers:t,lookupTables:s,func:"transfer",module:"NttManager"})}var Od=()=>({build:async n=>{let{address:e,amount:t,asset:s,sender:a,source:i,destination:r}=n,o=i.chain,c=r.chain,m=Pt.Ntt.fromChain(o,s),g=Pt.Wormhole.fromChain(o),f=Pt.Wormhole.fromChain(c),p=e;c instanceof Pt.EvmParachain&&(p=await c.getDerivatedAddress(e));let{SolanaNtt:b}=await Promise.resolve().then(()=>(um(),mm)),w=new b("Mainnet","Solana",o.connection,{coreBridge:g.getCoreBridge(),ntt:{manager:m.manager,token:m.token,transceiver:{wormhole:m.transceiver.wormhole}}}),S=o.getBalanceType(s)===Pt.SolanaBalanceType.Native,_=Na.Keypair.generate(),k=[];for await(let W of w.transfer(new gm.SolanaAddress(a),t,{chain:(0,lm.toChain)(f.getWormholeId()),address:new fm.UniversalAddress(f.normalizeAddress(p))},{queue:!1,automatic:!1,wrapNative:S},_)){let{transaction:U,signers:T}=W.transaction;k.push(await Vd(o.connection,U,T??[]))}let O=S?BigInt(await(0,dm.getMinimumBalanceForRentExemptAccount)(o.connection)):0n,P=k[k.length-1];return[...k.slice(0,-1),new Pt.ProgramConfig({instructions:P.instructions,signers:P.signers,lookupTables:P.lookupTables,rentReserve:O,func:"transfer",module:"NttManager"})]}}),pm=()=>({transfer:Od});function hm(){return{Ntt:pm}}function nr(){return{Wormhole:hm}}var ar={};fn(ar,{Tag:()=>Ut});var Ut=(o=>(o.Basejump="Basejump",o.Ntt="Ntt",o.NttExecutor="NttExecutor",o.Wormhole="Wormhole",o.Relayer="Relayer",o.Snowbridge="Snowbridge",o.SnowbridgeV1="SnowbridgeV1",o))(Ut||{});function ym(n,e){return new ir.AssetRoute({source:{asset:n,fee:{asset:C}},destination:{chain:A,asset:e,fee:{amount:0,asset:n}},contract:J().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function bm(n,e){return new ir.AssetRoute({source:{asset:n,fee:{asset:C}},destination:{chain:A,asset:e,fee:{amount:D().Wormhole().quoteExecutorCost(),asset:C,prepaid:!0}},contract:J().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}var Wd=[ym(Rt,zt)],Hd=[bm(Rt,zt)],xm=new Am.ChainRoutes({chain:Ln,routes:[...Wd,...Hd]});var ta=require("@galacticcouncil/xc-core");var es=require("@galacticcouncil/xc-core");function Tn(n,e){return new es.AssetRoute({source:{asset:n,fee:{asset:C}},destination:{chain:A,asset:e,fee:{amount:0,asset:n}},contract:J().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function ts(n,e){return new es.AssetRoute({source:{asset:n,fee:{asset:C}},destination:{chain:A,asset:e,fee:{amount:D().Wormhole().quoteExecutorCost(),asset:C,prepaid:!0}},contract:J().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}function wm(n,e){return new es.AssetRoute({source:{asset:n,fee:{asset:C}},destination:{chain:A,asset:e,fee:{amount:0,asset:n}},contract:J().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}function De(n,e){return new es.AssetRoute({source:{asset:n,fee:{asset:C}},destination:{chain:A,asset:e,fee:{amount:D().Snowbridge().calculateInboundFee({hub:X}),asset:C}},contract:J().Snowbridge().v2SendMessage(),tags:["Snowbridge"]})}function _e(n,e){return new es.AssetRoute({source:{asset:n,fee:{asset:C}},destination:{chain:A,asset:e,fee:{amount:D().Snowbridge().calculateInboundFeeV1({hub:X}),asset:C}},contract:J().Snowbridge().sendToken(),tags:["Snowbridge","SnowbridgeV1"]})}function Sm(n,e){return new es.AssetRoute({source:{asset:n,fee:{asset:C},destinationFee:n},destination:{chain:A,asset:e,fee:{amount:D().Basejump().quoteFee(),asset:n}},contract:J().Basejump().bridgeViaWormhole(),tags:["Basejump"]})}var Ud=[Tn(Bt,qt),Tn(pt,jt),Tn(L,Ft),Tn(I,$t),Tn(ht,Yt),Tn(Re,ie),Tn(C,ie)],Kd=[ts(Bt,qt),ts(pt,jt),ts(L,Ft),ts(I,$t),ts(ht,Yt),ts(Re,ie),wm(C,ie)],Gd=[Sm(L,Ft)],qd=[new ta.AssetRoute({source:{asset:C,fee:{asset:C}},destination:{chain:A,asset:C,fee:{amount:D().Snowbridge().calculateInboundFee({hub:X}),asset:C}},contract:J().Snowbridge().v2SendMessage(),tags:["Snowbridge"]}),De(Xe,Xe),De(Ve,Ve),De(Oe,Oe),De(We,We),De(Ge,Ge),De($e,$e),De(Ye,Ye),De(Ue,Ue),De(He,He),De(Ke,Ke),De(qe,qe),De(Qe,Qe),De(Je,Je),De(L,an),De(I,sn)],zd=[new ta.AssetRoute({source:{asset:C,fee:{asset:C}},destination:{chain:A,asset:C,fee:{amount:D().Snowbridge().calculateInboundFeeV1({hub:X}),asset:C}},contract:J().Snowbridge().sendToken(),tags:["Snowbridge","SnowbridgeV1"]}),_e(Xe,Xe),_e(Ve,Ve),_e(Oe,Oe),_e(We,We),_e(Ge,Ge),_e($e,$e),_e(Ye,Ye),_e(Ue,Ue),_e(He,He),_e(Ke,Ke),_e(qe,qe),_e(Qe,Qe),_e(Je,Je),_e(L,an),_e(I,sn)],vm=new ta.ChainRoutes({chain:B,routes:[...Ud,...Kd,...Gd,...qd,...zd]});var Cm=require("@galacticcouncil/xc-core");var Xa=require("@galacticcouncil/xc-core");function rr(n,e){return new Xa.AssetRoute({source:{asset:n,fee:{asset:Y}},destination:{chain:A,asset:e,fee:{amount:0,asset:n}},contract:J().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function km(n,e){return new Xa.AssetRoute({source:{asset:n,fee:{asset:Y}},destination:{chain:A,asset:e,fee:{amount:D().Wormhole().quoteExecutorCost(),asset:Y,prepaid:!0}},contract:J().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}function Mm(n,e){return new Xa.AssetRoute({source:{asset:n,fee:{asset:Y}},destination:{chain:A,asset:e,fee:{amount:0,asset:n}},contract:J().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}var jd=[rr(Y,Y),rr(Bn,Y)],$d=[Mm(Y,Y),km(Bn,Y)],Tm=new Cm.ChainRoutes({chain:_n,routes:[...jd,...$d]});var Pm=require("@galacticcouncil/xc-core");var Va=require("@galacticcouncil/xc-core");function Ps(n,e){return new Va.AssetRoute({source:{asset:n,fee:{asset:C}},destination:{chain:A,asset:e,fee:{amount:0,asset:n}},contract:J().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function na(n,e){return new Va.AssetRoute({source:{asset:n,fee:{asset:C}},destination:{chain:A,asset:e,fee:{amount:D().Wormhole().quoteExecutorCost(),asset:C,prepaid:!0}},contract:J().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}function Im(n,e){return new Va.AssetRoute({source:{asset:n,fee:{asset:C}},destination:{chain:A,asset:e,fee:{amount:0,asset:n}},contract:J().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}var Yd=[Ps(me,me),Ps(be,be),Ps(ke,ke),Ps(Re,ie),Ps(C,ie)],Qd=[na(me,me),na(be,be),na(ke,ke),na(Re,ie),Im(C,ie)],Em=new Pm.ChainRoutes({chain:bt,routes:[...Yd,...Qd]});var Bm=[xm,vm,Tm,Em];var In=require("@galacticcouncil/xc-core");var Oa=require("@galacticcouncil/xc-core");var ns=0,Jd=n=>{let{source:e}=n;return!!e.feeSwap},Zd=n=>{let{source:e}=n,{enabled:t}=e.destinationFeeSwap||{};return!!t},Rm=x().assetConversion().swapTokensForExactTokens({slippage:30});function el(n,e,t){return new Oa.AssetRoute({source:{asset:n,fee:{asset:E,extra:ns}},destination:{chain:e,asset:n,fee:{amount:t,asset:I}},extrinsic:un(Zd,Rm).prior(x().polkadotXcm().limitedReserveTransferAssets())})}function Wa(n,e,t){return new Oa.AssetRoute({source:{asset:n,fee:{asset:n,swap:!n.isEqual(E)}},destination:{chain:e,asset:n,fee:{amount:t,asset:n}},extrinsic:un(Jd,Rm).prior(x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"}))})}function sa(n,e,t){return new Oa.AssetRoute({source:{asset:n,fee:{asset:E,extra:ns}},destination:{chain:e,asset:n,fee:{amount:t,asset:n}},extrinsic:x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})})}function Ha(n){return el(n,A,.02)}var tl=[new In.AssetRoute({source:{asset:E,fee:{asset:E,extra:ns}},destination:{chain:A,asset:E,fee:{amount:.001,asset:E}},extrinsic:x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),new In.AssetRoute({source:{asset:N,fee:{asset:E,extra:ns}},destination:{chain:A,asset:N,fee:{amount:1e-4,asset:N}},extrinsic:x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),sa(I,A,.02),sa(L,A,.02),Ha(rn)],nl=[new In.AssetRoute({source:{asset:N,fee:{asset:E,extra:ns}},destination:{chain:Xt,asset:N,fee:{amount:.001,asset:N}},extrinsic:x().polkadotXcm().transferAssets()})],sl=[sa(I,re,.03),sa(L,re,.03)],al=[new In.AssetRoute({source:{asset:ae,fee:{asset:E,extra:ns}},destination:{chain:hn,asset:ae,fee:{amount:2.5,asset:ae}},extrinsic:x().polkadotXcm().limitedTeleportAssets()})],Lm=new In.ChainRoutes({chain:pn,routes:[Wa(I,A,.02),Wa(L,A,.02),Wa(E,A,.001)]}),Dm=new In.ChainRoutes({chain:X,routes:[...tl,...nl,...sl,...al]});var Kt=require("@galacticcouncil/xc-core");var il=[new Kt.AssetRoute({source:{asset:j},destination:{chain:A,asset:j,fee:{amount:.044306118,asset:j}},extrinsic:x().polkadotXcm().reserveTransferAssets()}),new Kt.AssetRoute({source:{asset:K,fee:{asset:j}},destination:{chain:A,asset:K,fee:{amount:D().XcmPaymentApi().calculateDestFee({reserve:re}),asset:K}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new Kt.AssetRoute({source:{asset:oe,fee:{asset:j}},destination:{chain:A,asset:oe,fee:{amount:2e-6,asset:oe}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new Kt.AssetRoute({source:{asset:ft,fee:{asset:j}},destination:{chain:A,asset:ft,fee:{amount:.01,asset:ft}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new Kt.AssetRoute({source:{asset:xe,fee:{asset:j}},destination:{chain:A,asset:xe,fee:{amount:D().XcmPaymentApi().calculateDestFee({reserve:re}),asset:xe}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new Kt.AssetRoute({source:{asset:Ae,fee:{asset:j}},destination:{chain:A,asset:Ae,fee:{amount:D().XcmPaymentApi().calculateDestFee({reserve:re}),asset:Ae}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new Kt.AssetRoute({source:{asset:I,fee:{asset:j}},destination:{chain:A,asset:I,fee:{amount:D().XcmPaymentApi().calculateDestFee({reserve:X}),asset:I}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new Kt.AssetRoute({source:{asset:L,fee:{asset:j}},destination:{chain:A,asset:L,fee:{amount:D().XcmPaymentApi().calculateDestFee({reserve:X}),asset:L}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()})],_m=new Kt.ChainRoutes({chain:Le,routes:[...il]});var St=require("@galacticcouncil/xc-core");var rl=[new St.AssetRoute({source:{asset:K},destination:{chain:A,asset:K,fee:{amount:D().XcmPaymentApi().calculateDestFee(),asset:K}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new St.AssetRoute({source:{asset:xe,fee:{asset:K}},destination:{chain:A,asset:xe,fee:{amount:D().XcmPaymentApi().calculateDestFee(),asset:xe}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new St.AssetRoute({source:{asset:Ae,fee:{asset:K}},destination:{chain:A,asset:Ae,fee:{amount:D().XcmPaymentApi().calculateDestFee(),asset:Ae}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new St.AssetRoute({source:{asset:E,fee:{asset:K}},destination:{chain:A,asset:E,fee:{amount:D().XcmPaymentApi().calculateDestFee({reserve:X}),asset:E}},extrinsic:x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"RemoteReserve"})}),new St.AssetRoute({source:{asset:j,fee:{asset:K}},destination:{chain:A,asset:j,fee:{amount:D().XcmPaymentApi().calculateDestFee({reserve:Le}),asset:j}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new St.AssetRoute({source:{asset:oe,fee:{asset:K}},destination:{chain:A,asset:oe,fee:{amount:625e-8,asset:oe}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new St.AssetRoute({source:{asset:I,fee:{asset:K}},destination:{chain:A,asset:I,fee:{amount:D().XcmPaymentApi().calculateDestFee({reserve:X}),asset:I}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new St.AssetRoute({source:{asset:L,fee:{asset:K}},destination:{chain:A,asset:L,fee:{amount:D().XcmPaymentApi().calculateDestFee({reserve:X}),asset:L}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()})],ol=[new St.AssetRoute({source:{asset:I,fee:{asset:K}},destination:{chain:X,asset:I,fee:{amount:D().XcmPaymentApi().calculateDestFee(),asset:I}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new St.AssetRoute({source:{asset:L,fee:{asset:K}},destination:{chain:X,asset:L,fee:{amount:D().XcmPaymentApi().calculateDestFee(),asset:L}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()})],Fm=new St.ChainRoutes({chain:re,routes:[...rl,...ol]});var tn=require("@galacticcouncil/xc-core");var Te=()=>({asset:Hs().multiTransactionPayment().accountCurrencyMap()});var dn=require("@galacticcouncil/xc-core");var cl=.02,Ua=n=>{let{source:e}=n,{enabled:t}=e.destinationFeeSwap||{};return!!t},Ka=x().router().buy({slippage:30});function tt(n,e,t){return new dn.AssetRoute({source:{asset:n,fee:Te()},destination:{chain:e,asset:n,fee:{amount:D().XcmPaymentApi().calculateDestFee(t?{reserve:t}:void 0),asset:n}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()})}function Pn(n,e){return new dn.AssetRoute({source:{asset:n,fee:Te()},destination:{chain:e,asset:n,fee:{amount:D().XcmPaymentApi().calculateDestFee(),asset:n}},extrinsic:x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})})}function Ga(n){return new dn.AssetRoute({source:{asset:n,fee:Te()},destination:{chain:X,asset:n,fee:{amount:cl,asset:I}},extrinsic:un(Ua,Ka).prior(x().polkadotXcm().limitedReserveTransferAssets())})}function or(n,e,t){return new dn.AssetRoute({source:{asset:n,fee:Te()},destination:{chain:Xt,asset:n,fee:{amount:e,asset:n}},extrinsic:x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve",executionFee:t})})}function ye(n,e,t){let s=J().Wormhole().Ntt().transfer();return new dn.AssetRoute({source:{asset:n,fee:Te()},destination:{chain:t,asset:e,fee:{amount:0,asset:n}},contract:s,extrinsic:x().evm().call(s),tags:["Wormhole","Ntt"]})}function Ie(n,e,t){let s=J().Wormhole().Ntt().transferViaExecutor();return new dn.AssetRoute({source:{asset:n,fee:Te()},destination:{chain:t,asset:e,fee:{amount:D().Wormhole().quoteExecutorCost(),asset:ie,prepaid:!0}},contract:s,extrinsic:un(Ua,Ka).prior(x().evm().call(s)),tags:["Wormhole","Ntt","NttExecutor"]})}function Pe(n,e,t){return new dn.AssetRoute({source:{asset:n,fee:Te()},destination:{chain:t,asset:e,fee:{amount:D().Snowbridge().calculateOutboundFee({hub:X}),asset:E}},extrinsic:un(Ua,Ka).prior(x().polkadotXcm().execute().viaSnowbridge()),tags:["Snowbridge"]})}function Ee(n,e,t){return new dn.AssetRoute({source:{asset:n,fee:Te()},destination:{chain:t,asset:e,fee:{amount:D().Snowbridge().calculateOutboundFeeV1({hub:X}),asset:E}},extrinsic:un(Ua,Ka).prior(x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})),tags:["Snowbridge","SnowbridgeV1"]})}var ml=[Pn(E,X),Pn(N,X),Pn(I,X),Pn(L,X),Ga(rn)],ul=[or(N,.05,.005),or(E,.2,.02)],dl=[tt(j,Le),tt(K,Le,re),new tn.AssetRoute({source:{asset:oe,fee:Te()},destination:{chain:Le,asset:oe,fee:{amount:2e-6,asset:oe}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new tn.AssetRoute({source:{asset:ft,fee:Te()},destination:{chain:Le,asset:ft,fee:{amount:.01,asset:ft}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),tt(xe,Le,re),tt(Ae,Le,re),tt(I,Le,X),tt(L,Le,X)],ll=[tt(K,re),tt(xe,re),tt(Ae,re),tt(j,re,Le),new tn.AssetRoute({source:{asset:oe,fee:Te()},destination:{chain:re,asset:oe,fee:{amount:5e-6,asset:oe}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),tt(I,re,X),tt(L,re,X),new tn.AssetRoute({source:{asset:E,fee:Te()},destination:{chain:re,asset:E,fee:{amount:D().XcmPaymentApi().calculateDestFee({reserve:X}),asset:E}},extrinsic:x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"RemoteReserve"})})],fl=[new tn.AssetRoute({source:{asset:ae,fee:Te()},destination:{chain:hn,asset:ae,fee:{amount:2.5,asset:ae}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()})],gl=[tt(_t,ls)],pl=[new tn.AssetRoute({source:{asset:it,fee:Te()},destination:{chain:fs,asset:it,fee:{amount:.02,asset:it}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()})],hl=[new tn.AssetRoute({source:{asset:gt,fee:Te()},destination:{chain:ms,asset:gt,fee:{amount:1.1,asset:gt}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()})],yl=[tt(Dt,cs)],bl=[ye(qt,Bt,B),ye(jt,pt,B),ye(Ft,L,B),ye($t,I,B),ye(Yt,ht,B),ye(ie,C,B)],Al=[ye(zt,Rt,Ln)],xl=[ye(Y,Y,_n)],wl=[ye(me,me,bt),ye(be,be,bt),ye(ke,ke,bt),ye(ie,C,bt)],Sl=[ye(ze,ze,Nt),ye(at,at,Nt),ye(rt,rt,Nt)],vl=[ye(je,je,Wn)],kl=[Ie(qt,Bt,B),Ie(jt,pt,B),Ie(Ft,L,B),Ie($t,I,B),Ie(Yt,ht,B),Ie(ie,C,B),Ie(zt,Rt,Ln),Ie(Y,Y,_n),Ie(me,me,bt),Ie(be,be,bt),Ie(ke,ke,bt),Ie(ie,C,bt),Ie(ze,is,Nt),Ie(at,at,Nt),Ie(rt,rt,Nt),Ie(je,je,Wn)],Ml=[Pe(C,C,B),Pe(Xe,Xe,B),Pe(Ve,Ve,B),Pe(Oe,Oe,B),Pe(We,We,B),Pe(Ge,Ge,B),Pe($e,$e,B),Pe(Ye,Ye,B),Pe(Qe,Qe,B),Pe(Ue,Ue,B),Pe(He,He,B),Pe(Ke,Ke,B),Pe(qe,qe,B),Pe(Je,Je,B),Pe(an,L,B),Pe(sn,I,B)],Cl=[Ee(C,C,B),Ee(Xe,Xe,B),Ee(Ve,Ve,B),Ee(Oe,Oe,B),Ee(We,We,B),Ee(Ge,Ge,B),Ee($e,$e,B),Ee(Ye,Ye,B),Ee(Qe,Qe,B),Ee(Ue,Ue,B),Ee(He,He,B),Ee(Ke,Ke,B),Ee(qe,qe,B),Ee(Je,Je,B),Ee(an,L,B),Ee(sn,I,B)],Tl=[Pn(E,pn),Pn(I,pn),Pn(L,pn)],Nm=new tn.ChainRoutes({chain:A,routes:[...ml,...dl,...ll,...Tl,...Al,...bl,...Ml,...xl,...wl,...Sl,...vl,...kl,...Cl,...pl,...ul,...fl,...yl,...hl,...gl]});var aa=require("@galacticcouncil/xc-core");var Il=[new aa.AssetRoute({source:{asset:ae},destination:{chain:A,asset:ae,fee:{amount:.01,asset:ae}},extrinsic:x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})})],Pl=[new aa.AssetRoute({source:{asset:ae},destination:{chain:X,asset:ae,fee:{amount:.1,asset:ae}},extrinsic:x().polkadotXcm().limitedTeleportAssets()})],Xm=new aa.ChainRoutes({chain:hn,routes:[...Il,...Pl]});var qa=require("@galacticcouncil/xc-core");var El=[new qa.AssetRoute({source:{asset:_t},destination:{chain:A,asset:_t,fee:{amount:D().XcmPaymentApi().calculateDestFee(),asset:_t}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()})],Vm=new qa.ChainRoutes({chain:ls,routes:[...El]});var za=require("@galacticcouncil/xc-core");var Bl=[new za.AssetRoute({source:{asset:gt},destination:{chain:A,asset:gt,fee:{amount:.2,asset:gt}},extrinsic:x().polkadotXcm().reserveTransferAssets()})],Om=new za.ChainRoutes({chain:ms,routes:[...Bl]});var ja=require("@galacticcouncil/xc-core");var Rl=[new ja.AssetRoute({source:{asset:it,fee:{asset:it,extra:.030555}},destination:{chain:A,asset:it,fee:{amount:.03,asset:it}},extrinsic:x().polkadotXcm().reserveTransferAssets()})],Wm=new ja.ChainRoutes({chain:fs,routes:[...Rl]});var $a=require("@galacticcouncil/xc-core");var Ll=[new $a.AssetRoute({source:{asset:Dt},destination:{chain:A,asset:Dt,fee:{amount:.205,asset:Dt}},extrinsic:x().polkadotXcm().reserveTransferAssets()})],Hm=new $a.ChainRoutes({chain:cs,routes:[...Ll]});var Um=[Dm,Lm,_m,Fm,Nm,Xm,Hm,Vm,Om,Wm];var Ya=require("@galacticcouncil/xc-core");function cr(n){return new Ya.AssetRoute({source:{asset:n,fee:{asset:ze}},destination:{chain:A,asset:n,fee:{amount:0,asset:n}},program:nr().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}var Dl=[cr(ze),cr(at),cr(rt)],Km=new Ya.ChainRoutes({chain:Nt,routes:[...Dl]});var Gm=[Km];var Qa=require("@galacticcouncil/xc-core");function _l(n){return new Qa.AssetRoute({source:{asset:n,fee:{asset:je}},destination:{chain:A,asset:n,fee:{amount:0,asset:n}},move:Ui().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}var Fl=[_l(je)],qm=new Qa.ChainRoutes({chain:Wn,routes:[...Fl]});var zm=[qm];var ss=require("@galacticcouncil/xc-core");var Nl=require("@galacticcouncil/xc-core");var ia=.0015;var Xl=new ss.AssetRoute({source:{asset:N,fee:{asset:N,extra:ia}},destination:{chain:X,asset:N,fee:{amount:.002,asset:N}},extrinsic:x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),Vl=new ss.AssetRoute({source:{asset:N,fee:{asset:N,extra:ia}},destination:{chain:hs,asset:N,fee:{amount:.0012,asset:N}},extrinsic:x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),Ol=[new ss.AssetRoute({source:{asset:N,fee:{asset:N,extra:ia}},destination:{chain:A,asset:N,fee:{amount:.04,asset:N}},extrinsic:x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve",executionFee:.005})}),new ss.AssetRoute({source:{asset:E,fee:{asset:N,extra:ia}},destination:{chain:A,asset:E,fee:{amount:.15,asset:E}},extrinsic:x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve",executionFee:.01})})],jm=new ss.ChainRoutes({chain:Xt,routes:[Vl,Xl,...Ol]});var ra=require("@galacticcouncil/xc-core");var mr=()=>({asset:Hs().multiTransactionPayment().accountCurrencyMap()});var Wl=[new ra.AssetRoute({source:{asset:I,fee:mr()},destination:{chain:Xt,asset:I,fee:{amount:D().XcmPaymentApi().calculateDestFee(),asset:I}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()})],Hl=[new ra.AssetRoute({source:{asset:N,fee:mr()},destination:{chain:Xt,asset:N,fee:{amount:.0012,asset:N}},extrinsic:x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})})],$m=new ra.ChainRoutes({chain:hs,routes:[...Wl,...Hl]});var Ym=[jm,$m];var Ul=[...Bm,...Um,...Gm,...zm,...Ym],Qm=new Map(Ul.map(n=>[n.chain.key,n]));var ur=require("@galacticcouncil/xc-core");var En=require("@galacticcouncil/xc-core"),Ja=class extends En.TransferValidation{async validate(e){let{source:t}=e,{chain:s,fee:a,feeBalance:i}=t;if(i.amount<a.amount)throw new En.TransferValidationError("Insufficient_Fee_Balance",{amount:a.toDecimal(),asset:a.symbol,chain:s.name,error:"fee.insufficientBalance"})}},Za=class extends En.TransferValidation{async skipFor(e){let{asset:t,source:s}=e,{enabled:a}=s.destinationFeeSwap||{};return t.isEqual(s.destinationFee)&&!s.destinationFeePrepaid||!!a}async validate(e){if(await this.skipFor(e))return;let{amount:s,asset:a,source:i}=e,{chain:r,destinationFee:o,destinationFeeBalance:c}=i,m=a.isEqual(o)?s:0n,g=await this.getMin(r,o),f=o.copyWith({amount:o.amount+g+m});if(c.amount<f.amount)throw new En.TransferValidationError("Insufficient_Fee_Balance",{amount:f.toDecimal(),asset:f.symbol,chain:r.name,error:"destFee.insufficientBalance"})}async getMin(e,t){if(e instanceof En.Parachain)return(await e.getMin(t)).amount;let s=e.getAssetMin(t);return BigInt(s*10**t.decimals)}};var Et=require("@galacticcouncil/xc-core"),Zm=require("@galacticcouncil/common");function Jm(n,e){throw new Et.TransferValidationError("Ntt_Limit_Unreachable",{asset:n.originSymbol,chain:e.name,error:"ntt.limitUnreachable"})}function Kl(n,e){throw new Et.TransferValidationError("Ntt_Custody_Unreachable",{asset:n.originSymbol,chain:e.name,error:"ntt.custodyUnreachable"})}function eu(n){let{asset:e,destination:t,source:s}=n;return Et.Ntt.isKnown(s.chain,e)&&Et.Ntt.isKnown(t.chain,t.balance)}function tu(n){let{amount:e,destination:t,source:s}=n;return Zm.big.convertDecimals(e,s.balance.decimals,t.balance.decimals)}var ei=class extends Et.TransferValidation{skipFor(e){return!eu(e)}async validate(e){if(this.skipFor(e))return;let{amount:t,asset:s,destination:a,source:i}=e,[r,o]=await Promise.all([Jt(i.chain,s).getOutboundLimit().catch(()=>Jm(s,i.chain)),Jt(a.chain,a.balance).getInboundLimit(i.chain).catch(()=>Jm(a.balance,a.chain))]);if(r.windowMs>0&&t>r.capacity)throw new Et.TransferValidationError("Ntt_Outbound_Limit_Exceeded",{asset:s.originSymbol,chain:i.chain.name,decimals:i.balance.decimals,headroom:r.capacity,limit:r.limit,windowMs:r.windowMs,error:"ntt.outboundLimitExceeded"});if(o.windowMs>0&&tu(e)>o.capacity)throw new Et.TransferValidationError("Ntt_Inbound_Limit_Exceeded",{asset:a.balance.originSymbol,chain:a.chain.name,decimals:a.balance.decimals,headroom:o.capacity,limit:o.limit,windowMs:o.windowMs,error:"ntt.inboundLimitExceeded"})}},ti=class extends Et.TransferValidation{skipFor(e){return!eu(e)}async validate(e){if(this.skipFor(e))return;let{destination:t}=e,s=await Jt(t.chain,t.balance).getCustody().catch(()=>Kl(t.balance,t.chain));if(s!==void 0&&tu(e)>s)throw new Et.TransferValidationError("Ntt_Custody_Exceeded",{asset:t.balance.originSymbol,chain:t.chain.name,decimals:t.balance.decimals,headroom:s,error:"ntt.custodyExceeded"})}};var Es=require("@galacticcouncil/xc-core");var ni=class extends Es.TransferValidation{async skipFor(e){let{asset:t,destination:s}=e,a=s.chain;return await new ot(a).checkIfSufficient(t)}async validate(e){if(await this.skipFor(e))return;let{address:s,destination:a}=e,i=a.chain;if(await new ot(i).getSystemAccountBalance(s)===0n)throw new Es.TransferValidationError("Insufficient_Ed",{amount:"0.1",asset:"DOT",chain:a.chain.name,error:"account.insufficientDeposit"})}},si=class extends Es.TransferValidation{async validate(e){let{asset:t,sender:s,source:a}=e,i=a.chain;if(await new ot(i).checkIfFrozen(s,t))throw new Es.TransferValidationError("Asset_Frozen",{asset:t.originSymbol,chain:a.chain.name,error:"asset.frozen"})}};var Gt=require("@galacticcouncil/xc-core");var Gl=12,ql=1,ai=class extends Gt.TransferValidation{async skipFor(e){let{destination:t}=e,s=t.chain,a=new Ze(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 Ze(i),o=await r.getFeeAsset(s),c=i.findAssetById(o),m=c.min||ql,g=c.decimals||Gl,f=m*Math.pow(10,g),p=await r.getAssetBalance(s,o);if(BigInt(f*1.1)>p)throw new Gt.TransferValidationError("Insufficient_Ed",{amount:f,asset:c.asset.originSymbol,chain:i.name,error:"account.insufficientDeposit"})}},ii=class extends Gt.TransferValidation{async validate(e){let{amount:t,asset:s,destination:a}=e,i=a.chain,o=await new Ze(i).getAssetDepositLimit(s);if(o.locked)throw new Gt.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 Gt.TransferValidationError("Deposit_Limit_Exceeded",{asset:s.originSymbol,chain:i.name,headroom:o.headroom,limit:o.limit,error:"circuitBreaker.depositLimitExceeded"})}},ri=class extends Gt.TransferValidation{skipFor(e){let{destinationFee:t,destinationFeePrepaid:s,feeBalance:a}=e.source;return!s||a.isSame(t)}async validate(e){if(this.skipFor(e))return;let{amount:t,asset:s,source:a}=e,{chain:i,destinationFee:r,destinationFeeSwap:o,fee:c,feeBalance:m}=a,g=r.padByPct(5n),f;try{f=(await i.dex.getQuote(m,r,g)).amount}catch{return}let p=[c.isSame(m)?c.amount:0n,s.isEqual(m)?t:0n,o?.enabled&&o.aIn.isSame(m)?o.aIn.amount:0n].reduce((w,S)=>w+S,0n),b=m.copyWith({amount:f+p});if(m.amount<b.amount)throw new Gt.TransferValidationError("Insufficient_Fee_Balance",{amount:b.toDecimal(),asset:b.symbol,chain:i.name,error:"fee.insufficientBalance"})}},oi=class extends Gt.TransferValidation{async validate(e){let{source:t}=e,s=t.chain,i=await new Ze(s).getGlobalWithdrawLimit();if(i.lockdown)throw new Gt.TransferValidationError("Withdraw_Lockdown_Active",{chain:s.name,lockdownUntilMs:i.lockdownUntilMs,error:"circuitBreaker.withdrawLockdown"})}};var de={isAny:()=>!0,isHydration:n=>n instanceof ur.Parachain&&n.parachainId===2034,isHub:n=>n instanceof ur.Parachain&&n.parachainId===1e3,isEvm:n=>n.isEvmChain()},nu=[new Ja(de.isAny,de.isAny),new Za(de.isAny,de.isAny),new ni(de.isAny,de.isHub),new si(de.isHub,de.isAny),new ai(de.isAny,de.isHydration),new ii(de.isAny,de.isHydration),new oi(de.isHydration,de.isAny),new ri(de.isHydration,de.isAny),new ei(de.isAny,de.isAny),new ti(de.isAny,de.isAny)];var gr={};fn(gr,{AssethubDex:()=>fr,HydrationDex:()=>dr});var Bs=require("@galacticcouncil/sdk-next"),au=require("@galacticcouncil/common"),iu=require("polkadot-api");var su=(n,e=new Map)=>t=>{let s;return e.has(t)?e.get(t):(e.set(t,s=n(t)),s)};var{PoolType:ci}=Bs.pool,{TradeRouteBuilder:zl,TradeRouter:jl}=Bs.sor,{TxBuilderFactory:$l}=Bs.tx,dr=class{chain;client;poolCtx;txBuilder;getCtx=su(async e=>{console.log("init swap router",e,"\u2705");let t=new jl(this.poolCtx);return t.withFilter({useOnly:[ci.Aave,ci.Omni,ci.Stable,ci.XYK]}),t});constructor(e,t){this.chain=e,this.poolCtx=t,this.client=new Ze(this.chain),this.txBuilder=new $l(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),w=await(await this.txBuilder.trade(f).withBeneficiary(e).withSlippage(i).build()).get().getEncodedData();return iu.Binary.toHex(w)}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:zl.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,au.RUNTIME_DECIMALS);return i/BigInt(r)}};var lr=require("@galacticcouncil/common"),fr=class{chain;client;constructor(e){this.chain=e,this.client=new ot(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,lr.encodeLocation)(a),(0,lr.encodeLocation)(i),s.amount,!0);if(!r)throw new Error("Failed to get swap quote");return{amount:r}}};var hr={};fn(hr,{registerNear:()=>Jl});var mi=require("@galacticcouncil/xc-core");var ru=require("@galacticcouncil/xc-core");function pr(n,e){return new ru.AssetRoute({source:{asset:n,fee:{asset:Lt}},destination:{chain:A,asset:e,fee:{amount:0,asset:e}},functionCall:Hi().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}var Yl=1355,Ql={token:"0x000000000000000000000000000000010000054b",manager:"0x5b1334885320cFd7158760256c7bD0Af58006b09",transceiver:{wormhole:"0x5e875F689EA8dd25e11a69cfb6C9f844C4b3B207"}};function Jl(n){let e=n.getChain(A);e.updateAsset({asset:yt,decimals:24,id:Yl}),mi.Wormhole.fromChain(e).ntt[yt.key]=Ql,n.updateAsset(yt),n.updateChain(bs),n.updateRoutes(new mi.ChainRoutes({chain:bs,routes:[pr(yt,yt),pr(Lt,yt)]})),n.updateChainRoute(e,ye(yt,yt,bs))}var uu=require("@galacticcouncil/xc-core");var ou=require("@galacticcouncil/xc-core");function ui(n){let{id:e,origin:t,symbol:s}=n,a=s.toLowerCase();return new ou.Asset({key:[a,t,e].join("_"),originSymbol:s})}function cu(n){let{decimals:e,id:t}=n;return{asset:ui(n),decimals:e,id:t,xcmLocation:{parents:0,interior:{type:"X2",value:[{type:"PalletInstance",value:50},{type:"GeneralIndex",value:t}]}}}}function mu(n){let{decimals:e,id:t,internalId:s,origin:a}=n;return{asset:ui(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 di=class extends uu.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=ui(i),o=cu(i),c=mu(i);console.log("\u{1F480} Registering "+r.key),s.updateAsset(o),t.updateAsset(c),this.updateAsset(r),this.updateChainRoute(s,Ha(r)),this.updateChainRoute(t,Ga(r))})}};0&&(module.exports={HydrationConfigService,assetsMap,builders,chainsMap,clients,dex,routesMap,tags,testnet,validations});
1
+ "use strict";var du=Object.create;var ma=Object.defineProperty;var lu=Object.getOwnPropertyDescriptor;var fu=Object.getOwnPropertyNames;var gu=Object.getPrototypeOf,pu=Object.prototype.hasOwnProperty;var $=(n,e)=>()=>(n&&(e=n(n=0)),e);var fn=(n,e)=>{for(var t in e)ma(n,t,{get:e[t],enumerable:!0})},yr=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of fu(e))!pu.call(n,a)&&a!==t&&ma(n,a,{get:()=>e[a],enumerable:!(s=lu(e,a))||s.enumerable});return n};var as=(n,e,t)=>(t=n!=null?du(gu(n)):{},yr(e||!n||!n.__esModule?ma(t,"default",{value:n,enumerable:!0}):t,n)),hu=n=>yr(ma({},"__esModule",{value:!0}),n);var Ia,Ic=$(()=>{Ia={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 Pc,Ec=$(()=>{Pc={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 Us,Bc=$(()=>{Ic();Ec();(function(n){n.idl={ntt:Ia,transceiver:Ia,transceiverLegacy:Ia,governance:Pc}})(Us||(Us={}))});var Pa,Rc=$(()=>{Pa={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 Lc,Dc=$(()=>{Lc={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 Ks,_c=$(()=>{Rc();Dc();(function(n){n.idl={ntt:Pa,transceiver:Pa,transceiverLegacy:Pa,governance:Lc}})(Ks||(Ks={}))});var Fc,Nc=$(()=>{Fc={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 Xc,Vc=$(()=>{Xc={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 Oc,Wc=$(()=>{Oc={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 Hc,Uc=$(()=>{Hc={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 Gs,Kc=$(()=>{Nc();Vc();Wc();Uc();(function(n){n.idl={ntt:Fc,transceiver:Xc,transceiverLegacy:Oc,governance:Hc}})(Gs||(Gs={}))});var Ki=$(()=>{Bc();_c();Kc()});function qc(n){for(let[e,t]of Ea)if(Gc.Ntt.abiVersionMatches(n,e))return t;throw new Error(`Unknown IDL version: ${n}`)}function qs(n,e,t){let{idl:{ntt:s}}=qc(t);return new Gi.Program(s,e,{connection:n})}function Ba(n,e,t,s=!1){let{idl:{transceiver:a,transceiverLegacy:i}}=qc(t),r=s?i:a;return new Gi.Program(r,e,{connection:n})}var Gi,Gc,Ea,Ra=$(()=>{Gi=require("@coral-xyz/anchor");Ki();Gc=require("@wormhole-foundation/sdk-definitions-ntt"),Ea=[["3.0.0",Gs],["2.0.0",Ks],["1.0.0",Us]]});function js(n){return vn.PublicKey.findProgramAddressSync([new vn.PublicKey(n).toBytes()],Ts)[0]}function kn(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 te(n,e){let t=s=>typeof s=="string"?zs.encoding.bytes.encode(s):s;return vn.PublicKey.findProgramAddressSync(Array.isArray(n)?n.map(t):[t(n)],new vn.PublicKey(e))[0]}var vn,zs,qi,Ts,zc,jb,Mn,zi,$b,Yb,La=$(()=>{vn=require("@solana/web3.js"),zs=require("@wormhole-foundation/sdk-base"),qi=as(require("bn.js"),1),Ts=new vn.PublicKey("BPFLoaderUpgradeab1e11111111111111111111111");zc=[{name:"length",binary:"uint",endianness:"little",size:4},{name:"version",binary:"bytes"}],jb={MAX:new qi.default((2n**64n-1n).toString()),to:(n,e)=>{let t=new qi.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};Mn=n=>zs.encoding.bignum.toBytes((0,zs.toChainId)(n),2),zi=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)},$b=new vn.PublicKey(Buffer.from("owner".padEnd(32,"\0"))),Yb=new vn.PublicKey(Buffer.from("payer".padEnd(32,"\0")))});async function Da(n,e,t,s,a,i,r,o,c){let m=Z.getExtraAccountMetaAddress(a,t),g=await n.getAccountInfo(m,c);if(g==null)return e;let f=Z.getExtraAccountMetas(g);if(![s,a,i,r].every(b=>e.keys.some(w=>w.pubkey.equals(b))))throw new Error("Missing required account in instruction");let p=Z.createExecuteInstruction(t,s,a,i,r,m,BigInt(o));for(let b of f)p.keys.push(Fd(await Z.resolveExtraAccountMeta(n,b,p.keys,p.data,p.programId),p.keys));e.keys.push(...p.keys.slice(5)),e.keys.push({pubkey:t,isSigner:!1,isWritable:!1}),e.keys.push({pubkey:m,isSigner:!1,isWritable:!1})}function Fd(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,Z,ue,Ce,jc,_a,ji,$s,$c,z,Yc=$(()=>{Cn=require("@coral-xyz/anchor"),Z=as(require("@solana/spl-token"),1),ue=require("@solana/web3.js"),Ce=require("@wormhole-foundation/sdk-base"),jc=require("@wormhole-foundation/sdk-definitions"),_a=as(require("bn.js"),1),ji=require("@wormhole-foundation/sdk-definitions-ntt"),$s=require("@solana/spl-token"),$c=require("@wormhole-foundation/sdk-solana-core");Ra();La();(function(n){function e(l,d,u){return{amount:new _a.default(l.toString()),recipientChain:{id:(0,Ce.toChainId)(d.chain)},recipientAddress:Array.from(d.address.toUniversalAddress().toUint8Array()),shouldQueue:u}}n.transferArgs=e,n.pdas=l=>({configAccount:()=>te("config",l),outboxRateLimitAccount:()=>te("outbox_rate_limit",l),inboxRateLimitAccount:st=>te(["inbox_rate_limit",Mn(st)],l),inboxItemAccount:(st,lt)=>te(["inbox_item",ji.Ntt.messageDigest(st,lt)],l),upgradeLock:()=>te("upgrade_lock",l),sessionAuthority:(st,lt)=>te(["session_authority",st.toBytes(),(0,jc.keccak256)(Ce.encoding.bytes.concat(Ce.encoding.bytes.zpad(new Uint8Array(lt.amount.toArray()),8),Mn(lt.recipientChain.id),new Uint8Array(lt.recipientAddress),new Uint8Array([lt.shouldQueue?1:0])))],l),tokenAuthority:()=>te("token_authority",l),pendingTokenAuthority:()=>te("pending_token_authority",l),peerAccount:st=>te(["peer",Mn(st)],l),registeredTransceiver:st=>te(["registered_transceiver",st.toBytes()],l),lutAccount:()=>te("lut",l),lutAuthority:()=>te("lut_authority",l)}),n.transceiverPdas=l=>{let d=()=>te("emitter",l);return{emitterAccount:d,outboxItemSigner:()=>te(["outbox_item_signer"],l),transceiverPeerAccount:H=>te(["transceiver_peer",Mn(H)],l),transceiverMessageAccount:(H,fe)=>te(["transceiver_message",Mn(H),fe],l),unverifiedMessageAccount:(H,fe)=>te(["vaa_body",H.toBytes(),new Uint8Array(fe.toArray("be"))],l),wormholeMessageAccount:H=>te(["message",H.toBytes()],l),wormholeMessageWithShimAccount:H=>te(d().toBytes(),H)}};async function t(l,d,u){if(!u){let dt=l.rpcEndpoint===Ce.rpc.rpcAddress("Devnet","Solana")?"6sbzC1eH4FTujJXWj51eQe25cYvr4xfXbJ1vAj7j2k5J":l.rpcEndpoint.startsWith("http://localhost")?"98evdAiWr7ey9MAQzoQQMwFQkTsSR6KkWQuFqKrgwNwb":"Hk3SdYTJFpawrvRz4qRztuEt2SqoCG7BGj2yJfDJSFbJ";u=new ue.PublicKey(dt)}let h=qs(l,d.toString(),"1.0.0"),F=await h.methods.version().accountsStrict({}).instruction(),{blockhash:ee}=await h.provider.connection.getLatestBlockhash("finalized"),se=new ue.TransactionMessage({payerKey:u,recentBlockhash:ee,instructions:[F]}).compileToV0Message(),Be=new ue.VersionedTransaction(se),H=await h.provider.connection.simulateTransaction(Be,{sigVerify:!1});if(!H.value.returnData||H.value.err)throw new Error("Could not fetch IDL version: "+JSON.stringify((0,Cn.translateError)(H.value.err,(0,Cn.parseIdlErrors)(h.idl))));let fe=Ce.encoding.b64.decode(H.value.returnData?.data[0]),nt=(0,Ce.deserializeLayout)(zc,fe),Ne=Ce.encoding.bytes.decode(nt.version);for(let[dt]of Ea)if(ji.Ntt.abiVersionMatches(Ne,dt))return dt;throw new Error(`Unknown IDL version: ${Ne}`)}n.getVersion=t;async function s(l,d,u){let[h,,,]=kn(l.idl.version),F=d.mode==="burning"?{burning:{}}:{locking:{}},ee=(0,Ce.toChainId)(d.chain);u=u??n.pdas(l.programId);let se=new _a.default(d.outboundLimit.toString());return l.methods.initialize({chainId:ee,limit:se,mode:F}).accounts({payer:d.payer,deployer:d.owner,programData:js(l.programId),config:u.configAccount(),mint:d.mint,rateLimit:u.outboxRateLimitAccount(),tokenProgram:d.tokenProgram,tokenAuthority:u.tokenAuthority(),...h>=3&&{multisigTokenAuthority:d.multisigTokenAuthority??null},custody:await n.custodyAccountAddress(u,d.mint,d.tokenProgram),bpfLoaderUpgradeableProgram:Ts,associatedTokenProgram:Z.ASSOCIATED_TOKEN_PROGRAM_ID,systemProgram:ue.SystemProgram.programId}).instruction()}n.createInitializeInstruction=s;async function a(l,d,u,h,F){let[ee,,,]=kn(l.idl.version);if(ee<2)return;F=F??n.pdas(l.programId);let se=await l.provider.connection.getSlot()-1,[Be,H]=Cn.web3.AddressLookupTableProgram.createLookupTable({authority:F.lutAuthority(),payer:h.payer,recentSlot:se}),fe=$c.utils.getWormholeDerivedAccounts(u,h.wormholeId.toString()),nt={config:F.configAccount(),custody:d.custody,tokenProgram:d.tokenProgram,mint:d.mint,tokenAuthority:F.tokenAuthority(),outboxRateLimit:F.outboxRateLimitAccount(),wormhole:{bridge:fe.wormholeBridge,feeCollector:fe.wormholeFeeCollector,sequence:fe.wormholeSequence,program:h.wormholeId,systemProgram:ue.SystemProgram.programId,clock:Cn.web3.SYSVAR_CLOCK_PUBKEY,rent:Cn.web3.SYSVAR_RENT_PUBKEY}},Ne=lt=>{let oa=new Array;for(let Rs in lt){let ca=lt[Rs];ca instanceof ue.PublicKey?oa.push(ca):typeof ca=="object"&&oa.push(...Ne(ca))}return oa},dt=Ne(nt).map(lt=>lt.toBase58()),st=await ln(l,F);if(st!==null){let lt=st.state.addresses?.map(Rs=>Rs.toBase58())??[];if(dt.filter(Rs=>!lt.includes(Rs)).length===0)return null}return l.methods.initializeLut(new _a.default(se)).accountsStrict({payer:h.payer,owner:h.owner,authority:F.lutAuthority(),lutAddress:H,lut:F.lutAccount(),lutProgram:ue.AddressLookupTableProgram.programId,systemProgram:ue.SystemProgram.programId,entries:nt}).instruction()}n.initializeOrUpdateLUT=a;async function i(l,d,u,h){h=h??n.pdas(l.programId);let F=await le(h,d),ee=(0,Ce.toChain)(u.transferArgs.recipientChain.id),se=await l.methods.transferBurn(u.transferArgs).accountsStrict({common:{payer:u.payer,config:{config:h.configAccount()},mint:d.mint,from:u.from,tokenProgram:d.tokenProgram,outboxItem:u.outboxItem,outboxRateLimit:h.outboxRateLimitAccount(),systemProgram:ue.SystemProgram.programId,custody:F},peer:h.peerAccount(ee),inboxRateLimit:h.inboxRateLimitAccount(ee),sessionAuthority:h.sessionAuthority(u.fromAuthority,u.transferArgs),tokenAuthority:h.tokenAuthority()}).instruction(),Be=await Z.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),H=Z.getTransferHook(Be);if(H){let fe=u.from,nt=d.mint,Ne=await le(h,d),dt=h.sessionAuthority(u.fromAuthority,u.transferArgs);await Da(l.provider.connection,se,H.programId,fe,nt,Ne,dt,0)}return se}n.createTransferBurnInstruction=i;async function r(l,d,u,h){if(d.paused)throw new Error("Contract is paused");h=h??n.pdas(l.programId);let F=(0,Ce.toChain)(u.transferArgs.recipientChain.id),ee=await le(h,d),se=await l.methods.transferLock(u.transferArgs).accountsStrict({common:{payer:u.payer,config:{config:h.configAccount()},mint:d.mint,from:u.from,tokenProgram:d.tokenProgram,outboxItem:u.outboxItem,outboxRateLimit:h.outboxRateLimitAccount(),custody:ee,systemProgram:ue.SystemProgram.programId},peer:h.peerAccount(F),inboxRateLimit:h.inboxRateLimitAccount(F),sessionAuthority:h.sessionAuthority(u.fromAuthority,u.transferArgs),custody:ee}).instruction(),Be=await Z.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),H=Z.getTransferHook(Be);if(H){let fe=u.from,nt=await le(h,d),Ne=h.sessionAuthority(u.fromAuthority,u.transferArgs);await Da(l.provider.connection,se,H.programId,fe,d.mint,nt,Ne,0)}return se}n.createTransferLockInstruction=r;async function o(l,d,u,h){let[F,,,]=kn(l.idl.version);h=h??n.pdas(l.programId);let ee=await Z.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),se=null;ee.mintAuthority?.equals(h.tokenAuthority())||(se=ee.mintAuthority);let Be=u.recipient??(await nn(l,u.chain,u.nttMessage)).recipientAddress,H=await l.methods.releaseInboundMint({revertOnDelay:u.revertWhenNotReady,revertWhenNotReady:u.revertWhenNotReady}).accounts({common:{payer:u.payer,config:{config:h.configAccount()},inboxItem:h.inboxItemAccount(u.chain,u.nttMessage),recipient:(0,$s.getAssociatedTokenAddressSync)(d.mint,Be,!0,d.tokenProgram),mint:d.mint,tokenAuthority:h.tokenAuthority(),tokenProgram:d.tokenProgram,custody:await le(h,d)},...F>=3&&{multisigTokenAuthority:se}}).instruction(),fe=Z.getTransferHook(ee);if(fe){let nt=await le(h,d),Ne=d.mint,dt=(0,$s.getAssociatedTokenAddressSync)(Ne,Be,!0,d.tokenProgram),st=h.tokenAuthority();await Da(l.provider.connection,H,fe.programId,nt,Ne,dt,st,0)}return H}n.createReleaseInboundMintInstruction=o;async function c(l,d,u,h){let F=u.recipient??(await n.getInboxItem(l,u.chain,u.nttMessage)).recipientAddress;h=h??n.pdas(l.programId);let ee=await le(h,d),se=await l.methods.releaseInboundUnlock({revertOnDelay:u.revertWhenNotReady,revertWhenNotReady:u.revertWhenNotReady}).accountsStrict({common:{payer:u.payer,config:{config:h.configAccount()},inboxItem:h.inboxItemAccount(u.chain,u.nttMessage),recipient:(0,$s.getAssociatedTokenAddressSync)(d.mint,F,!0,d.tokenProgram),mint:d.mint,tokenAuthority:h.tokenAuthority(),tokenProgram:d.tokenProgram,custody:ee},custody:ee}).instruction(),Be=await Z.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),H=Z.getTransferHook(Be);if(H){let fe=await le(h,d),nt=d.mint,Ne=(0,$s.getAssociatedTokenAddressSync)(nt,F,!0,d.tokenProgram),dt=h.tokenAuthority();await Da(l.provider.connection,se,H.programId,fe,nt,Ne,dt,0)}return se}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:js(l.programId),bpfLoaderUpgradeableProgram:Ts}).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:js(l.programId),bpfLoaderUpgradeableProgram:Ts}).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:js(l.programId),bpfLoaderUpgradeableProgram:Ts}).instruction()}n.createClaimOwnershipInstruction=f;async function p(l,d,u,h){return h=h??n.pdas(l.programId),l.methods.acceptTokenAuthority().accountsStrict({common:{config:h.configAccount(),mint:d.mint,tokenProgram:d.tokenProgram,tokenAuthority:h.tokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},currentAuthority:u.currentAuthority}).instruction()}n.createAcceptTokenAuthorityInstruction=p;async function b(l,d,u,h){return h=h??n.pdas(l.programId),l.methods.acceptTokenAuthorityFromMultisig().accountsStrict({common:{config:h.configAccount(),mint:d.mint,tokenProgram:d.tokenProgram,tokenAuthority:h.tokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},currentMultisigAuthority:u.currentMultisigAuthority}).remainingAccounts(u.additionalSigners.map(F=>({pubkey:F,isSigner:!0,isWritable:!1}))).instruction()}n.createAcceptTokenAuthorityFromMultisigInstruction=b;async function w(l,d,u,h){return h=h??n.pdas(l.programId),l.methods.setTokenAuthorityOneStepUnchecked().accountsStrict({common:{config:h.configAccount(),tokenAuthority:h.tokenAuthority(),mint:d.mint,owner:u.owner,newAuthority:u.newAuthority,multisigTokenAuthority:u.multisigTokenAuthority??null},tokenProgram:d.tokenProgram}).instruction()}n.createSetTokenAuthorityOneStepUncheckedInstruction=w;async function S(l,d,u,h){return h=h??n.pdas(l.programId),l.methods.setTokenAuthority().accountsStrict({common:{config:h.configAccount(),tokenAuthority:h.tokenAuthority(),mint:d.mint,owner:u.owner,newAuthority:u.newAuthority,multisigTokenAuthority:u.multisigTokenAuthority??null},rentPayer:u.rentPayer,pendingTokenAuthority:h.pendingTokenAuthority(),systemProgram:ue.SystemProgram.programId}).instruction()}n.createSetTokenAuthorityInstruction=S;async function _(l,d,u,h){return h=h??n.pdas(l.programId),l.methods.revertTokenAuthority().accountsStrict({common:{config:h.configAccount(),mint:d.mint,tokenAuthority:h.tokenAuthority(),tokenProgram:d.tokenProgram,systemProgram:ue.SystemProgram.programId,rentPayer:u.rentPayer,pendingTokenAuthority:h.pendingTokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},owner:u.owner}).instruction()}n.createRevertTokenAuthorityInstruction=_;async function k(l,d,u,h){return h=h??n.pdas(l.programId),l.methods.claimTokenAuthority().accountsStrict({common:{config:h.configAccount(),mint:d.mint,tokenAuthority:h.tokenAuthority(),tokenProgram:d.tokenProgram,systemProgram:ue.SystemProgram.programId,rentPayer:u.rentPayer,pendingTokenAuthority:h.pendingTokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},newAuthority:u.newAuthority}).instruction()}n.createClaimTokenAuthorityInstruction=k;async function O(l,d,u,h){return h=h??n.pdas(l.programId),l.methods.claimTokenAuthorityToMultisig().accountsStrict({common:{config:h.configAccount(),mint:d.mint,tokenAuthority:h.tokenAuthority(),tokenProgram:d.tokenProgram,systemProgram:ue.SystemProgram.programId,rentPayer:u.rentPayer,pendingTokenAuthority:h.pendingTokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},newMultisigAuthority:u.newMultisigAuthority}).remainingAccounts(u.additionalSigners.map(F=>({pubkey:F,isSigner:!0,isWritable:!1}))).instruction()}n.createClaimTokenAuthorityToMultisigInstruction=O;async function P(l,d,u){return u=u??n.pdas(l.programId),l.methods.setPeer({chainId:{id:(0,Ce.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=P;async function W(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=W;async function U(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=U;async function T(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=T;async function ne(l,d,u){return u=u??n.pdas(l.programId),l.methods.setInboundLimit({chainId:{id:(0,Ce.toChainId)(d.chain)},limit:d.limit}).accounts({owner:d.owner,config:u.configAccount(),rateLimit:u.inboxRateLimitAccount(d.chain)}).instruction()}n.createSetInboundLimitInstruction=ne;async function Fe(l,d,u,h,F,ee){F=F??n.pdas(l.programId),ee=ee??n.transceiverPdas(u);let se=h.vaa,Be=se.payload.nttManagerPayload,H=se.emitterChain;return l.methods.redeem({}).accounts({payer:h.payer,config:F.configAccount(),peer:F.peerAccount(H),transceiverMessage:ee.transceiverMessageAccount(H,Be.id),transceiver:F.registeredTransceiver(u),mint:d.mint,inboxItem:F.inboxItemAccount(H,Be),inboxRateLimit:F.inboxRateLimitAccount(H),outboxRateLimit:F.outboxRateLimitAccount()}).instruction()}n.createRedeemInstruction=Fe;async function vt(l,d){return l.account.config.fetch(d.configAccount())}n.getConfig=vt;async function nn(l,d,u){return l.account.inboxItem.fetch(n.pdas(l.programId).inboxItemAccount(d,u))}n.getInboxItem=nn;async function ln(l,d){let[u,,,]=kn(l.idl.version);if(u<2)return null;d=d??n.pdas(l.programId);let h=await l.account.lut.fetchNullable(d.lutAccount());if(!h)return null;let F=await l.provider.connection.getAddressLookupTable(h.address);if(F.value===null)throw new Error("Could not fetch LUT");return F.value}n.getAddressLookupTable=ln;async function le(l,d,u=Z.TOKEN_PROGRAM_ID){return d instanceof ue.PublicKey?Z.getAssociatedTokenAddress(d,l.tokenAuthority(),!0,u):Z.getAssociatedTokenAddress(d.mint,l.tokenAuthority(),!0,d.tokenProgram)}n.custodyAccountAddress=le})(z||(z={}))});var $i=$(()=>{Yc();Ra();Ki()});var Qc,Jc=$(()=>{Qc={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 Zc,em=$(()=>{Zc={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 Yi,et,R,Qi,Zn,Ji,G,Qn,Jn,Ys,Qs,Zi=$(()=>{Yi=require("@coral-xyz/anchor"),et=as(require("@solana/spl-token"),1),R=require("@solana/web3.js"),Qi=require("@wormhole-foundation/sdk-base"),Zn=require("@wormhole-foundation/sdk-definitions"),Ji=require("@wormhole-foundation/sdk-definitions-ntt"),G=require("@wormhole-foundation/sdk-solana"),Qn=require("@wormhole-foundation/sdk-solana-core"),Jn=as(require("bn.js"),1);Ra();$i();La();Jc();em();Ys=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??Ji.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 Yi.Program(Qc,i,{connection:this.program.provider.connection});let r=a.verifyVaaShimOverride??Ji.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 Yi.Program(Zc,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 R.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]=R.PublicKey.findProgramAddressSync([Buffer.from("GuardianSet"),o],this.manager.core.coreBridge.programId);if(a){let g=new Jn.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:zi((0,Zn.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:Qn.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 Jn.default(e.hash.subarray(-8)),r=zi((0,Zn.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 R.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 R.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 Jn.default(t.hash.subarray(-8)),a=await this.program.methods.closeUnverifiedWormholeMessageAccount(s).accounts({payer:e,message:this.pdas.unverifiedMessageAccount(e,s)}).instruction(),i=new R.Transaction;i.feePayer=e,i.add(a),yield this.manager.createUnsignedTx({transaction:i},"Ntt.CloseUnverifiedWormholeMessageAccount")}async getTransceiverType(e){let[t,,,]=kn(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 R.TransactionMessage({payerKey:s,recentBlockhash:i.blockhash,instructions:[a]}).compileToV0Message(),o=new R.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,Zn.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,Qi.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:R.Keypair.generate(),r=await this.createBroadcastWormholePeerIx(e.chain,s,i?.publicKey),o=new R.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,Zn.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=Qn.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:te(["__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=Qn.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,Qi.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:te(["__event_authority"],this.postMessageShim.programId)}}}).instruction()}async createReleaseWormholeOutboundIx(e,t,s){let[a,,,]=kn(this.version),i=Qn.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:te(["__event_authority"],this.postMessageShim.programId)}},...a>=3&&{manager:this.manager.program.programId,outboxItemSigner:this.pdas.outboxItemSigner()}}).instruction()}},Qs=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=qs(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 R.PublicKey(a.ntt.manager),m=new R.PublicKey(a.ntt.transceiver[o]);if(z.transceiverPdas(c).emitterAccount().equals(m)||c.equals(m)){let g=new Ys(this,Ba(s,a.ntt.manager,i,!a.ntt.svmShims),i,a.ntt.svmShims);this.transceivers.push(g.program)}else this.transceivers.push(Ba(s,a.ntt.transceiver[o],i,!a.ntt.svmShims))}),this.managerAddress=a.ntt.manager,this.tokenAddress=a.ntt.token,this.core=new Qn.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 Ys(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 R.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 R.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 R.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 R.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,Zn.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 R.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 R.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 R.PublicKey(this.core.address)});if(!i)return;let r=new R.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:R.Keypair.generate(),c=await r.createBroadcastWormholeIdIx(t,a,o?.publicKey),m=new R.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:R.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 Jn.default(s.toString()),tokenDecimals:t}),o=new R.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??R.Keypair.generate();let o=new G.SolanaAddress(e).unwrap(),c=o,m=await this.getTokenAccount(c);if(a.wrapNative){if(this.tokenAddress!==et.NATIVE_MINT.toBase58())throw new Error("Configured token must be native mint for wrapping");let P=et.getAssociatedTokenAddressSync(et.NATIVE_MINT,o),U=[...await this.connection.getAccountInfo(P)?[]:[et.createAssociatedTokenAccountInstruction(o,P,o,et.NATIVE_MINT)],R.SystemProgram.transfer({fromPubkey:o,toPubkey:P,lamports:t}),et.createSyncNativeInstruction(P)],{blockhash:T}=await this.connection.getLatestBlockhash(),ne=new R.TransactionMessage({payerKey:o,instructions:U,recentBlockhash:T}).compileToV0Message(),Fe=new R.VersionedTransaction(ne);yield this.createUnsignedTx({transaction:Fe},"Ntt.WrapNative")}let g=z.transferArgs(t,s,a.queue),f={transferArgs:g,payer:o,from:m,fromAuthority:c,outboxItem:i.publicKey},p=et.createApproveInstruction(m,this.pdas.sessionAuthority(c,g),c,t,[],r.tokenProgram),b=[],w=r.mode.locking!=null?z.createTransferLockInstruction(this.program,r,f,this.pdas):z.createTransferBurnInstruction(this.program,r,f,this.pdas);b.push(w);for(let P=0;P<this.transceivers.length;++P)if(P===0){let W=await this.getWormholeTransceiver();if(!W)throw new Error("Wormhole transceiver not found");let U=W.createReleaseWormholeOutboundIx(o,i.publicKey,!a.queue);b.push(U)}let S=new R.Transaction;S.feePayer=o,S.add(p,...await Promise.all(b));let _=[];try{_.push(await this.getAddressLookupTable())}catch{}let k=new R.TransactionMessage({payerKey:o,instructions:S.instructions,recentBlockhash:(await this.connection.getLatestBlockhash()).blockhash}).compileToV0Message(_),O=new R.VersionedTransaction(k);yield this.createUnsignedTx({transaction:O,signers:[i]},"Ntt.Transfer")}async getTokenAccount(e){let t=await this.getConfig();return await et.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 R.Transaction().add(et.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 P=R.Keypair.generate(),W=await o.verifyVaaShim.methods.postSignatures(r.guardianSet,r.signatures.length,r.signatures.map(ne=>[ne.guardianIndex,...ne.signature.encode()])).accounts({payer:c,guardianSignatures:P.publicKey}).instruction(),U=new R.Transaction;U.feePayer=c,U.add(W),yield this.createUnsignedTx({transaction:U,signers:[P]},"VerifyVAAShim.PostSignature"),m.push(o.createReceiveIx(r,c,P.publicKey,!1)),m.push(o.verifyVaaShim.methods.closeSignatures().accounts({guardianSignatures:P.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,p=r.emitterChain,b={payer:c,config:s,nttMessage:f,recipient:new R.PublicKey(f.payload.recipientAddress.toUint8Array()),chain:p,revertWhenNotReady:!1},w=s.mode.locking!=null?z.createReleaseInboundUnlockInstruction(this.program,s,{...b}):z.createReleaseInboundMintInstruction(this.program,s,{...b}),S=new R.Transaction;S.feePayer=c,S.add(...await Promise.all([...m,g,w]));let _=[];try{_.push(await this.getAddressLookupTable())}catch{}let k=new R.TransactionMessage({payerKey:c,instructions:S.instructions,recentBlockhash:(await this.connection.getLatestBlockhash()).blockhash}).compileToV0Message(_),O=new R.VersionedTransaction(k);yield this.createUnsignedTx({transaction:O},"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 Jn.default(e.toString())}),i=new R.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 Jn.default(t.toString())}),r=new R.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 R.Transaction;r.feePayer=i;let o={payer:i,config:a,nttMessage:t,recipient:new R.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 tm,nm=$(()=>{tm={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 sm,am=$(()=>{sm={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 er,en,q,im,Js,Fa,Zs,tr=$(()=>{er=require("@coral-xyz/anchor"),en=require("@solana/spl-token"),q=require("@solana/web3.js"),im=require("@wormhole-foundation/sdk-base"),Js=require("@wormhole-foundation/sdk-solana"),Fa=as(require("bn.js"),1);nm();am();La();Zs=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 Js.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 Js.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 p=[];try{p.push(await i.getAddressLookupTable())}catch(k){console.debug(k)}let b=q.TransactionMessage.decompile(f.transaction.transaction.message,{addressLookupTableAccounts:p});if(a.transferTokenFee>0n){let k=new q.PublicKey(a.referrer.address.toString()),{mint:O,tokenProgram:P}=await i.getConfig(),W=(0,en.getAssociatedTokenAddressSync)(O,k,!0,P),U=(0,en.getAssociatedTokenAddressSync)(O,o,!0,P);await this.connection.getAccountInfo(W)||b.instructions.push((0,en.createAssociatedTokenAccountIdempotentInstruction)(o,W,k,O,P));let ne=await(0,en.getMint)(this.connection,O,void 0,P);b.instructions.push((0,en.createTransferCheckedInstruction)(U,O,W,o,a.transferTokenFee,ne.decimals,void 0,P))}if(a.nativeTokenFee>0n){let k=new q.PublicKey(a.referrer.address.toString());b.instructions.push(q.SystemProgram.transfer({fromPubkey:o,toPubkey:k,lamports:a.nativeTokenFee}))}let w=new er.Program(sm,this.nttWithExecutorProgramId,{connection:this.connection}),S=new q.PublicKey(this.contracts.ntt.manager),_=q.PublicKey.findProgramAddressSync([Buffer.from("peer"),Mn(t.chain)],S)[0];if(b.instructions.push(await w.methods.relayNttMesage({execAmount:new Fa.default(a.estimatedCost.toString()),recipientChain:(0,im.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:_,nttMessage:m.publicKey,executorProgram:this.executorProgramId}).instruction()),p.length===0){console.debug("no manager lookup table found, checking helper program");let k=new er.Program(tm,this.nttLutProgramId,{connection:this.connection}),O=q.PublicKey.findProgramAddressSync([Buffer.from("lut"),S.toBuffer()],k.programId)[0],P=await k.account.lut.fetchNullable(O);if(!P){console.debug("no helper program lookup table found, initializing...");let[U]=await q.PublicKey.findProgramAddressSync([Buffer.from("config")],S),[T]=await q.PublicKey.findProgramAddressSync([Buffer.from("lut_authority")],k.programId),ne=await this.connection.getSlot("finalized")-10,[Fe]=await q.PublicKey.findProgramAddressSync([T.toBuffer(),new Fa.default(ne).toArrayLike(Buffer,"le",8)],q.AddressLookupTableProgram.programId),[vt]=await q.PublicKey.findProgramAddressSync([Buffer.from("lut"),S.toBuffer()],k.programId),nn=await k.methods.initializeLut(new Fa.default(ne)).accounts({nttProgramId:S,nttConfig:U,authority:T,lutAddress:Fe,lut:vt,lutProgram:q.AddressLookupTableProgram.programId,systemProgram:q.SystemProgram.programId,payer:o}).instruction(),ln=new q.TransactionMessage({payerKey:o,recentBlockhash:(await this.connection.getLatestBlockhash("finalized")).blockhash,instructions:[nn]}).compileToV0Message();yield i.createUnsignedTx({transaction:new q.VersionedTransaction(ln)},"NttSvmLut.InitializeLut"),console.debug(`initialized lookup table: ${f}`);let le=0;for(;!P&&le<10;)await new Promise(l=>setTimeout(l,2e3)),P=await k.account.lut.fetchNullable(O),le++}let W=await this.connection.getAddressLookupTable(P.address);if(!W.value)throw new Error("unable to fetch lookup table");p.push(W.value)}f.transaction.transaction.message=b.compileToV0Message(p),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 Js.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,en.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 rm=$(()=>{"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 Nd(){(0,om.register)(),(0,Is.protocolIsRegistered)(ea._platform,"Ntt")||(0,Is.registerProtocol)(ea._platform,"Ntt",Qs),(0,Is.protocolIsRegistered)(ea._platform,"NttWithExecutor")||(0,Is.registerProtocol)(ea._platform,"NttWithExecutor",Zs)}var Is,ea,om,cm=$(()=>{Is=require("@wormhole-foundation/sdk-definitions"),ea=require("@wormhole-foundation/sdk-solana");Zi();tr();om=require("@wormhole-foundation/sdk-definitions-ntt");rm();Zi();tr()});var mm={};fn(mm,{IdlVersions:()=>Ea,NTT:()=>z,SolanaNtt:()=>Qs,SolanaNttWithExecutor:()=>Zs,SolanaNttWormholeTransceiver:()=>Ys,_1_0_0:()=>Us,_2_0_0:()=>Ks,_3_0_0:()=>Gs,getNttProgram:()=>qs,getTransceiverProgram:()=>Ba,register:()=>Nd});var um=$(()=>{cm();$i()});var Zl={};fn(Zl,{HydrationConfigService:()=>di,assetsMap:()=>br,builders:()=>sr,chainsMap:()=>Vr,clients:()=>Ti,dex:()=>gr,routesMap:()=>Qm,tags:()=>ar,testnet:()=>hr,validations:()=>nu});module.exports=hu(Zl);var M=require("@galacticcouncil/xc-core"),Xe=new M.Asset({key:"aave",originSymbol:"AAVE"}),li=new M.Asset({key:"ajun",originSymbol:"AJUN"}),Ve=new M.Asset({key:"apyusd",originSymbol:"apyUSD"}),j=new M.Asset({key:"astr",originSymbol:"ASTR"}),K=new M.Asset({key:"bnc",originSymbol:"BNC"}),fi=new M.Asset({key:"bsx",originSymbol:"BSX"}),Oe=new M.Asset({key:"cfg_new",originSymbol:"CFG"}),gi=new M.Asset({key:"cru",originSymbol:"CRU"}),Bt=new M.Asset({key:"dai",originSymbol:"DAI"}),qt=new M.Asset({...Bt,key:"dai_wh"}),E=new M.Asset({key:"dot",originSymbol:"DOT"}),C=new M.Asset({key:"eth",originSymbol:"ETH"}),We=new M.Asset({key:"ena",originSymbol:"ENA"}),Rt=new M.Asset({key:"eurc",originSymbol:"EURC"}),zt=new M.Asset({...Rt,key:"eurc_wh"}),gn=new M.Asset({key:"glmr",originSymbol:"GLMR"}),me=new M.Asset({key:"hdx",originSymbol:"HDX"}),be=new M.Asset({key:"hollar",originSymbol:"HOLLAR"}),Y=new M.Asset({key:"hype",originSymbol:"HYPE"}),oe=new M.Asset({key:"ibtc",originSymbol:"IBTC"}),ft=new M.Asset({key:"intr",originSymbol:"INTR"}),at=new M.Asset({key:"jitoSol",originSymbol:"jitoSOL"}),N=new M.Asset({key:"ksm",originSymbol:"KSM"}),He=new M.Asset({key:"ldo",originSymbol:"LDO"}),Ue=new M.Asset({key:"lbtc",originSymbol:"LBTC"}),it=new M.Asset({key:"ewt",originSymbol:"EWT"}),Ke=new M.Asset({key:"link",originSymbol:"LINK"}),ae=new M.Asset({key:"myth",originSymbol:"MYTH"}),Lt=new M.Asset({key:"near",originSymbol:"NEAR"}),Dt=new M.Asset({key:"neuro",originSymbol:"NEURO"}),gt=new M.Asset({key:"pen",originSymbol:"PEN"}),Ge=new M.Asset({key:"paxg",originSymbol:"PAXG"}),rt=new M.Asset({key:"prime",originSymbol:"PRIME"}),qe=new M.Asset({key:"sky",originSymbol:"SKY"}),ze=new M.Asset({key:"sol",originSymbol:"SOL"}),ke=new M.Asset({key:"spy",originSymbol:"SPY"}),je=new M.Asset({key:"sui",originSymbol:"SUI"}),$e=new M.Asset({key:"susde",originSymbol:"sUSDe"}),pt=new M.Asset({key:"susds",originSymbol:"sUSDS"}),jt=new M.Asset({...pt,key:"susds_wh"}),Ye=new M.Asset({key:"tbtc",originSymbol:"tBTC"}),Qe=new M.Asset({key:"trac",originSymbol:"TRAC"}),_t=new M.Asset({key:"unq",originSymbol:"UNQ"}),I=new M.Asset({key:"usdt",originSymbol:"USDT"}),$t=new M.Asset({...I,key:"usdt_wh"}),sn=new M.Asset({...I,key:"usdt_eth"}),L=new M.Asset({key:"usdc",originSymbol:"USDC"}),Ft=new M.Asset({...L,key:"usdc_wh"}),an=new M.Asset({...L,key:"usdc_eth"}),Ae=new M.Asset({key:"vastr",originSymbol:"vASTR"}),xe=new M.Asset({key:"vdot",originSymbol:"vDOT"}),Re=new M.Asset({key:"weth",originSymbol:"WETH"}),ie=new M.Asset({...Re,key:"weth_wh"}),ht=new M.Asset({key:"wbtc",originSymbol:"WBTC"}),Yt=new M.Asset({...ht,key:"wbtc_wh"}),Bn=new M.Asset({key:"whype",originSymbol:"WHYPE"}),yt=new M.Asset({key:"wnear",originSymbol:"wNEAR"}),is=new M.Asset({key:"wsol",originSymbol:"wSOL"}),Je=new M.Asset({key:"wsteth",originSymbol:"wstETH"}),rn=new M.Asset({key:"wud",originSymbol:"WUD"}),pi=new M.Asset({key:"zec",originSymbol:"ZEC"}),yu=[Xe,li,Ve,j,fi,Oe,gi,K,Bt,qt,E,We,Rt,zt,C,gn,me,be,Y,oe,ft,N,He,Ue,it,at,Ke,ae,Lt,Dt,Ge,gt,rt,qe,ze,ke,je,$e,pt,jt,Qe,Ye,_t,L,Ft,an,I,$t,sn,Ae,xe,ht,Yt,Re,ie,Bn,yt,is,Je,rn,pi],br=new Map(yu.map(n=>[n.key,n]));var Rn=require("@galacticcouncil/xc-core");var Ar=require("viem/chains"),Ln=new Rn.EvmChain({id:8453,key:"base",name:"Base",assetsData:[{asset:C,decimals:18,id:"0x4200000000000000000000000000000000000006"},{asset:Rt,decimals:6,id:"0x60a3e35cc302bfa44cb288bc5a4f316fdb1adb42"},{asset:L,decimals:6,id:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}],balance:Rn.EvmBalanceType.Erc20,balanceOverrides:{[C.key]:Rn.EvmBalanceType.Native},ecosystem:Rn.ChainEcosystem.Ethereum,evmChain:Ar.base,explorer:"https://basescan.org/",rpcs:["https://stylish-quick-firefly.base-mainnet.quiknode.pro/"],wormhole:{id:30,coreBridge:"0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6",executor:"0x9E1936E91A4a5AE5A5F75fFc472D6cb8e93597ea",nttExecutor:"0x27db1967D469D89318B7119Ced5609f327095de4",ntt:{[Rt.key]:{token:"0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42",manager:"0xD1dc3517732c98502b5c1ba2389AcA9E9016d89a",transceiver:{wormhole:"0xa84b362290b0CFdB55e877dfc633284091e0B3F7"}}}}});var Dn=require("@galacticcouncil/xc-core");var xr=require("viem/chains"),_n=new Dn.EvmChain({id:999,key:"hyperevm",name:"HyperEVM",assetsData:[{asset:Y,decimals:18,id:"0x5555555555555555555555555555555555555555"},{asset:Bn,decimals:18,id:"0x5555555555555555555555555555555555555555"}],balance:Dn.EvmBalanceType.Erc20,balanceOverrides:{[Y.key]:Dn.EvmBalanceType.Native},ecosystem:Dn.ChainEcosystem.Ethereum,evmChain:xr.hyperEvm,explorer:"https://hyperevmscan.io/",rpcs:["https://rpc.hyperliquid.xyz/evm"],wormhole:{id:47,coreBridge:"0x7C0faFc4384551f063e05aee704ab943b8B53aB3",executor:"0xd7717899cc4381033Bc200431286D0AC14265F78",nttExecutor:"0xBc275e094e031e990b060134AbbDa00132f9A163",ntt:{[Y.key]:{token:"0x5555555555555555555555555555555555555555",manager:"0xdcDd08BFB7b3B9381149A852Ba5F69Bd5d87676f",transceiver:{wormhole:"0xe3eD8E1217AB419123D54E2F0850BC736b595D68"}},[Bn.key]:{token:"0x5555555555555555555555555555555555555555",manager:"0xdcDd08BFB7b3B9381149A852Ba5F69Bd5d87676f",transceiver:{wormhole:"0xe3eD8E1217AB419123D54E2F0850BC736b595D68"}}}}});var Fn=require("@galacticcouncil/xc-core");var wr=require("viem/chains"),B=new Fn.EvmChain({id:1,key:"ethereum",name:"Ethereum",assetsData:[{asset:C,decimals:18,id:"0x0000000000000000000000000000000000000000"},{asset:Xe,decimals:18,id:"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"},{asset:Ve,decimals:18,id:"0x38eeb52f0771140d10c4e9a9a72349a329fe8a6a"},{asset:Oe,decimals:18,id:"0xcccccccccc33d538dbc2ee4feab0a7a1ff4e8a94"},{asset:Re,decimals:18,id:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"},{asset:Bt,decimals:18,id:"0x6B175474E89094C44Da98b954EedeAC495271d0F"},{asset:We,decimals:18,id:"0x57e114b691db790c35207b2e685d4a43181e6061"},{asset:$e,decimals:18,id:"0x9d39a5de30e57443bff2a8307a4256c8797a3497"},{asset:pt,decimals:18,id:"0xa3931d71877c0e7a3148cb7eb4463524fec27fbd"},{asset:Ye,decimals:18,id:"0x18084fba666a33d37592fa2633fd49a74dd93a88"},{asset:ht,decimals:8,id:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"},{asset:Ue,decimals:8,id:"0x8236a87084f8b84306f72007f36f2618a5634494"},{asset:L,decimals:6,id:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"},{asset:I,decimals:6,id:"0xdAC17F958D2ee523a2206206994597C13D831ec7"},{asset:He,decimals:18,id:"0x5a98fcbea516cf06857215779fd812ca3bef1b32"},{asset:Ke,decimals:18,id:"0x514910771af9ca656af840dff83e8264ecf986ca"},{asset:Ge,decimals:18,id:"0x45804880de22913dafe09f4980848ece6ecbaf78"},{asset:qe,decimals:18,id:"0x56072c95faa701256059aa122697b133aded9279"},{asset:Qe,decimals:18,id:"0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F"},{asset:Je,decimals:18,id:"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"}],balance:Fn.EvmBalanceType.Erc20,balanceOverrides:{[C.key]:Fn.EvmBalanceType.Native},ecosystem:Fn.ChainEcosystem.Ethereum,evmChain:wr.mainnet,explorer:"https://etherscan.io/",rpcs:["https://ethereum-rpc.publicnode.com","https://cosmopolitan-dimensional-diagram.quiknode.pro"],basejump:{address:"0xa72e2bf29c840eb93adbb9ee1aa41580f01c9944"},snowbridge:{id:1,gateway:"0x27ca963c279c93801941e1eb8799c23f407d68e7"},wormhole:{id:2,coreBridge:"0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B",executor:"0x84EEe8dBa37C36947397E1E11251cA9A06Fc6F8a",nttExecutor:"0xC079bFA54F348199bA51B2717595fE24e96f1542",ntt:{[Bt.key]:{token:"0x6B175474E89094C44Da98b954EedeAC495271d0F",manager:"0x804F123f75cCa0A9c0Cba341F82f4A4DA86a5259",transceiver:{wormhole:"0x99673a01C5779Ebf59399B4B228c1825c0113571"}},[pt.key]:{token:"0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD",manager:"0x5085A4863f89eC9553F70187EE73B5aAe0fd14b5",transceiver:{wormhole:"0x7C236d237BEbBE1b7902131B31b7b3270005a810"}},[L.key]:{token:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",manager:"0x447b2c7485A3d6813F8197E605b10BcCD8dd8398",transceiver:{wormhole:"0xA108BD5dBc6CE665aEbB6895351e0609c76F8EFc"}},[I.key]:{token:"0xdAC17F958D2ee523a2206206994597C13D831ec7",manager:"0x9fbd9F16cE7Fa17097E91cc36DC1B7b47aDCa9De",transceiver:{wormhole:"0x45c566f6595CF93e639E77cc1bbE57A8D27901c2"}},[ht.key]:{token:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",manager:"0x081b76AC3cFb65DCe93961d66cea44A74EC8Ef28",transceiver:{wormhole:"0x3FE8fBB8505c8dB2264f6Ebc5559c7C2b2647218"}},[Re.key]:{token:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",manager:"0x283B14B5Dd352e32154Df014EA96834F395E04b6",transceiver:{wormhole:"0xbA0Cd32131b8206AF4feB79A1A3aaF0AEfe18b48"}},[C.key]:{token:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",manager:"0x283B14B5Dd352e32154Df014EA96834F395E04b6",transceiver:{wormhole:"0xbA0Cd32131b8206AF4feB79A1A3aaF0AEfe18b48"}}}}});var Nn=require("@galacticcouncil/xc-core");var Sr=require("viem/chains"),bt=new Nn.EvmChain({id:4663,key:"robinhood",name:"Robinhood",assetsData:[{asset:C,decimals:18,id:"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73"},{asset:Re,decimals:18,id:"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73"},{asset:me,decimals:12,id:"0xb423C0B59C615793b0903668dc414e4fA3A64A33"},{asset:be,decimals:18,id:"0xD1dc3517732c98502b5c1ba2389AcA9E9016d89a"},{asset:ke,decimals:18,id:"0x117cc2133c37B721F49dE2A7a74833232B3B4C0C"}],balance:Nn.EvmBalanceType.Erc20,balanceOverrides:{[C.key]:Nn.EvmBalanceType.Native},ecosystem:Nn.ChainEcosystem.Ethereum,evmChain:Sr.robinhood,explorer:"https://robinhoodchain.blockscout.com/",rpcs:["https://rpc.mainnet.chain.robinhood.com"],wormhole:{id:72,coreBridge:"0x141fBa8AD5D61bdaB45A047cF60b5Ad9784987FB",executor:"0xd19aAd5a69F7D35Cee169D9D90e1BbCB795ABB38",nttExecutor:"0x0AdA5f1289Ee5EC07e397Ee86dB6bc861ce0A728",ntt:{[me.key]:{token:"0xb423C0B59C615793b0903668dc414e4fA3A64A33",manager:"0xf1a5fE4252D9a1C39b0Fb9DE1F19049ee57ED188",transceiver:{wormhole:"0x97Cd0d08c376005d09afcC47fa9ce0C384fbA406"}},[be.key]:{token:"0xD1dc3517732c98502b5c1ba2389AcA9E9016d89a",manager:"0xE58D508743DD36368946D5A72A7dcD7cE960cE12",transceiver:{wormhole:"0x27afd50e83379a53458446E9d5F4a557B5f55c19"}},[Re.key]:{token:"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73",manager:"0xB1A2ABCbC1FA276212f6eD239645161DeeA9861a",transceiver:{wormhole:"0x1352881a04cb9f9f5fB8442bc925e99EC15D3642"}},[C.key]:{token:"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73",manager:"0xB1A2ABCbC1FA276212f6eD239645161DeeA9861a",transceiver:{wormhole:"0x1352881a04cb9f9f5fB8442bc925e99EC15D3642"}},[ke.key]:{token:"0x117cc2133c37B721F49dE2A7a74833232B3B4C0C",manager:"0x963835C20884dE59E6988030eB49D4D0eA24a26d",transceiver:{wormhole:"0x283B14B5Dd352e32154Df014EA96834F395E04b6"}}}}});var vr=[Ln,B,_n,bt];var kt=require("@galacticcouncil/xc-core");var kr={assetsData:[{asset:E,decimals:10,id:0,xcmLocation:{parents:1,interior:"Here"}},{asset:I,decimals:6,id:1984,min:.7,xcmLocation:{parents:0,interior:{X2:[{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:L,decimals:6,id:1337,min:.7,xcmLocation:{parents:0,interior:{X2:[{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:rn,decimals:10,id:31337,xcmLocation:{parents:0,interior:{X2:[{PalletInstance:50},{GeneralIndex:31337}]}}},{asset:ae,decimals:18,min:3e-8,xcmLocation:{parents:1,interior:{X1:[{Parachain:3369}]}}},{asset:N,decimals:12,min:1e-4,xcmLocation:{parents:2,interior:{X1:[{GlobalConsensus:"Kusama"}]}}}],balance:kt.SubstrateBalanceType.Assets,balanceOverrides:{[E.key]:kt.SubstrateBalanceType.System,[N.key]:kt.SubstrateBalanceType.ForeignAssets,[ae.key]:kt.SubstrateBalanceType.ForeignAssets},min:kt.SubstrateMinType.Assets,ecosystem:kt.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 kt.Parachain({...kr,key:"assethub",name:"AssetHub Polkadot"}),pn=new kt.Parachain({...kr,key:"assethub_cex",name:"AssetHub (CEX)",usesSignerFee:!0,isTestChain:!0,balanceOverrides:{}});var Xn=require("@galacticcouncil/xc-core");var Le=new Xn.Parachain({assetsData:[{asset:j,xcmLocation:{parents:0,interior:"Here"}},{asset:E,id:"340282366920938463463374607431768211455",decimals:10,min:1e-4,xcmLocation:{parents:1,interior:"Here"}},{asset:I,id:"4294969280",decimals:6,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:L,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:gn,id:"18446744073709551619",decimals:18,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:oe,id:"18446744073709551620",decimals:8,min:1e-6,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:ft,id:"18446744073709551621",decimals:10,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0002000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:xe,id:"18446744073709551624",decimals:10,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:Ae,id:"18446744073709551632",decimals:18,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}}],balance:Xn.SubstrateBalanceType.Assets,balanceOverrides:{[j.key]:Xn.SubstrateBalanceType.System},ecosystem:Xn.ChainEcosystem.Polkadot,explorer:"https://astar.subscan.io",genesisHash:"0x9eb76c5184c4ab8679d2d5d819fdf90b9c001403e9e17da2e14b6d8aec4029c6",key:"astar",name:"Astar",parachainId:2006,ss58Format:5,ws:"wss://rpc.astar.network"});var Vn=require("@galacticcouncil/xc-core");var bu=["wss://eu.bifrost-polkadot-rpc.liebi.com/ws","wss://hk.p.bifrost-rpc.liebi.com/ws","wss://bifrost-polkadot.dotters.network"],re=new Vn.Parachain({assetsData:[{asset:K,id:{Native:K.originSymbol},xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:xe,id:{VToken2:0},decimals:10,min:1e-4,xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:Ae,id:{VToken2:3},decimals:18,min:.01,xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:E,id:{Token2:0},decimals:10,min:1e-4,xcmLocation:{parents:1,interior:"Here"}},{asset:I,id:{Token2:2},decimals:6,min:.001,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:L,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:gn,id:{Token2:1},decimals:18,min:1e-5,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:oe,id:{Token2:6},decimals:8,min:1e-6,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}}],balance:Vn.SubstrateBalanceType.Tokens,balanceOverrides:{[K.key]:Vn.SubstrateBalanceType.System},ecosystem:Vn.ChainEcosystem.Polkadot,explorer:"https://bifrost.subscan.io",genesisHash:"0x262e1b2ad728475fd6fe88e62d34c200abe6fd693931ddad144059b1eb884e5b",key:"bifrost",name:"Bifrost",parachainId:2030,ss58Format:6,ws:bu});var on=require("@galacticcouncil/xc-core"),Ir=require("viem");var Cr=require("@galacticcouncil/common"),Tr=require("polkadot-api"),{isEvmAccount:Au,H160:Mr}=Cr.h160,ua=class{async toH160(e,t){if(Au(e))return Mr.fromAccount(e);let s=Mr.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,Tr.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 xu=new ua,hi=["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"],yi=["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"],wu=(0,Ir.defineChain)({id:222222,name:"Hydration",network:"hydration",nativeCurrency:{decimals:18,name:"WETH",symbol:"WETH"},rpcUrls:{public:{http:hi,webSocket:yi},default:{http:hi,webSocket:yi}},blockExplorers:{default:{name:"Hydration Explorer",url:"https://hydration.subscan.io"}},contracts:{multicall3:{address:"0x61f69c81D31fd8D47580f738d089105Cf0C995d8",blockCreated:15271520}},testnet:!1}),A=new on.EvmParachain({assetsData:[{asset:me,decimals:12,id:0,xcmLocation:{parents:0,interior:{X1:[{GeneralIndex:0}]}}},{asset:Xe,decimals:18,id:1000624,min:6e-5,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"}}]}}},{asset:li,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:Oe,decimals:18,id:41,min:.1,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xcccccccccc33d538dbc2ee4feab0a7a1ff4e8a94"}}]}}},{asset:gi,decimals:12,id:27,min:.0079,xcmLocation:{parents:1,interior:{X1:{Parachain:2008}}}},{asset:E,decimals:10,id:5,min:.0018,xcmLocation:{parents:1,interior:"Here"}},{asset:qt,decimals:18,id:18,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f"}}]}}},{asset:C,decimals:18,id:34,min:55e-7,xcmLocation:{parents:2,interior:{X1:{GlobalConsensus:{Ethereum:{chain_id:1}}}}}},{asset:Ve,decimals:18,id:46,min:.0147058823529412,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x38eeb52f0771140d10c4e9a9a72349a329fe8a6a"}}]}}},{asset:We,decimals:18,id:38,min:.037,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x57e114b691db790c35207b2e685d4a43181e6061"}}]}}},{asset:gn,decimals:18,id:16,min:.035,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:be,decimals:18,id:222,balanceId:"0x531a654d1696ED52e7275A8cede955E82620f99a",min:.02,xcmLocation:{parents:0,interior:{X1:[{AccountKey20:{network:null,key:"0x531a654d1696ed52e7275a8cede955e82620f99a"}}]}}},{asset:Y,decimals:18,id:1001355,min:.000114285714285714,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:47},{GeneralKey:{length:32,data:"0x0000000000000000000000005555555555555555555555555555555555555555"}}]}}},{asset:oe,decimals:8,id:11,min:36e-8,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:ft,decimals:10,id:17,min:.62,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0002000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:at,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:rt,decimals:6,id:43,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:1},{GeneralKey:{length:32,data:"0x26759f460ee5f743ed66d27c8f2a5623bf39d53ed575955320661e6e13e0e3da"}}]}}},{asset:it,decimals:18,id:252525,min:.022,xcmLocation:{parents:1,interior:{X1:{Parachain:3345}}}},{asset:He,decimals:18,id:1000796,min:.013,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x5a98fcbea516cf06857215779fd812ca3bef1b32"}}]}}},{asset:N,decimals:12,id:1000771,min:35e-5,xcmLocation:{parents:2,interior:{X1:{GlobalConsensus:"Kusama"}}}},{asset:Ue,decimals:8,id:1000851,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x8236a87084f8b84306f72007f36f2618a5634494"}}]}}},{asset:Ke,decimals:18,id:1000794,min:.001,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x514910771af9ca656af840dff83e8264ecf986ca"}}]}}},{asset:Ge,decimals:18,id:39,min:5e-6,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x45804880de22913dafe09f4980848ece6ecbaf78"}}]}}},{asset:ae,decimals:18,id:30,min:.022,xcmLocation:{parents:1,interior:{X1:{Parachain:3369}}}},{asset:Dt,decimals:12,id:36,min:.001,xcmLocation:{parents:1,interior:{X2:[{Parachain:2043},{PalletInstance:10}]}}},{asset:gt,decimals:12,id:1000081,min:.16,xcmLocation:{parents:1,interior:{X2:[{Parachain:2094},{PalletInstance:10}]}}},{asset:qe,decimals:18,id:1000795,min:.52,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x56072c95faa701256059aa122697b133aded9279"}}]}}},{asset:ze,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:ke,decimals:18,id:1001356,min:13061480386097e-18,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:72},{GeneralKey:{length:32,data:"0x000000000000000000000000117cc2133c37b721f49de2a7a74833232b3b4c0c"}}]}}},{asset:je,decimals:9,id:1000753,min:.003,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:21},{GeneralKey:{length:32,data:"0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3"}}]}}},{asset:$e,decimals:18,id:1000625,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x9d39a5de30e57443bff2a8307a4256c8797a3497"}}]}}},{asset:pt,decimals:18,id:1000626,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xa3931d71877c0e7a3148cb7eb4463524fec27fbd"}}]}}},{asset:jt,decimals:18,id:1000745,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000a3931d71877c0e7a3148cb7eb4463524fec27fbd"}}]}}},{asset:Ye,decimals:18,id:1000765,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x18084fba666a33d37592fa2633fd49a74dd93a88"}}]}}},{asset:Qe,decimals:18,id:35,min:.028,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F"}}]}}},{asset:_t,decimals:18,id:25,min:1.23,xcmLocation:{parents:1,interior:{X1:{Parachain:2037}}}},{asset:L,decimals:6,id:22,min:.01,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:Ft,decimals:6,id:21,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"}}]}}},{asset:zt,decimals:6,id:44,min:.014,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:30},{GeneralKey:{length:32,data:"0x00000000000000000000000060a3e35cc302bfa44cb288bc5a4f316fdb1adb42"}}]}}},{asset:an,decimals:6,id:1000766,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"}}]}}},{asset:I,decimals:6,id:10,min:.01,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:$t,decimals:6,id:23,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7"}}]}}},{asset:sn,decimals:6,id:1000767,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xdac17f958d2ee523a2206206994597c13d831ec7"}}]}}},{asset:Ae,decimals:18,id:33,min:.14,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:xe,decimals:10,id:15,min:.0019,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:ht,decimals:8,id:1000190,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"}}]}}},{asset:Yt,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:Re,decimals:18,id:1000189,min:61e-7,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"}}]}}},{asset:ie,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:Je,decimals:18,id:1000809,min:635e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"}}]}}},{asset:rn,decimals:10,id:1000085,min:2e4,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:31337}]}}}],balance:on.SubstrateBalanceType.Tokens,balanceOverrides:{[me.key]:on.SubstrateBalanceType.System,[be.key]:on.EvmBalanceType.Erc20},ecosystem:on.ChainEcosystem.Polkadot,evmChain:wu,evmResolver:xu,explorer:"https://hydration.subscan.io",genesisHash:"0xafdc188f45c71dacbaa0b62e16a91f726c7b8699a9748cdf715459de6b7f366d",key:"hydration",name:"Hydration",parachainId:2034,ss58Format:63,wormhole:{id:73,coreBridge:"0x3792a6d63c31941B2805181771795D9176fA82A1",executor:"0xd633d8d1ceee8c8252196d44857c0f41b8dcb0d9",nttExecutor:"0xd3Dda7c8608Ea251C42c6E0A2A686aDc5e9C0C03",ntt:{[qt.key]:{token:"0x0000000000000000000000000000000100000012",manager:"0xcFd576F88C90844AEBF45378Fd09931281D8b14d",transceiver:{wormhole:"0xe8660CA48f6f4D98BC48DB7Dd07C1a8E555801eA"}},[zt.key]:{token:"0x000000000000000000000000000000010000002C",manager:"0x8dd1286A29dF5a2785FB638d6fB1598144Cfbc4C",transceiver:{wormhole:"0x2e84fac378D67Dc2e11026fB4919E80263a87375"}},[me.key]:{token:"0x0000000000000000000000000000000100000000",manager:"0x16Ac5B8d9078ed4cf5A522F907fd9dDb6C8841f1",transceiver:{wormhole:"0xdDE268D8B89834f6EF213002651D0586Ced646b9"}},[be.key]:{token:"0x531a654d1696ED52e7275A8cede955E82620f99a",manager:"0x4188f147eec68921C1ee2d72898a263722a76844",transceiver:{wormhole:"0xE1d75C3c712BC61eBE892312F3455A67EC5D4799"}},[Y.key]:{token:"0x00000000000000000000000000000001000f478b",manager:"0x76FA328577Ee8A0E1872eD182c1bcd0A2dB47750",transceiver:{wormhole:"0xe74f52D5816174D070Dc7DC0ef8cC80dd6eFc160"}},[at.key]:{token:"0x0000000000000000000000000000000100000028",manager:"0xcE73C15B9ED02413066DE5B904A36F8e8f9B5331",transceiver:{wormhole:"0xF38D9C3bA6999Dc331b32B416083Fd7e02D17B04"}},[rt.key]:{token:"0x000000000000000000000000000000010000002B",manager:"0xFCaF4aA069C565d25539028970703F01e47D3E0B",transceiver:{wormhole:"0x4e7b1E55D2354d4Dc6ABD876096Dc201de0541D1"}},[ze.key]:{token:"0x00000000000000000000000000000001000F4530",manager:"0x9e200C0f28D92D296b201D96C8269d3CAFFfA9FF",transceiver:{wormhole:"0x2F04AcF249091425d51e67EeA3C3161ccE283202"}},[ke.key]:{token:"0x00000000000000000000000000000001000f478c",manager:"0x4382cC762FdbB90d756FF5F2f099a76281f1A2aF",transceiver:{wormhole:"0x9fAF16E590352B61ab5542af2560D54Fc62E97aA"}},[je.key]:{token:"0x00000000000000000000000000000001000F4531",manager:"0x978443f00cAB6b09445140321EC73a221ebFF5F8",transceiver:{wormhole:"0xA224D6f4e0E276b34D91bfE6c3A5fE6838322AF7"}},[jt.key]:{token:"0x00000000000000000000000000000001000F4529",manager:"0x1973E7044d9A7C7bB2d6ea1693A296a9e4B7E448",transceiver:{wormhole:"0x68Ecadd7934D4FcFEABAfB209C95D379B96400cb"}},[Ft.key]:{token:"0x0000000000000000000000000000000100000015",manager:"0xEcEab64542A875C4472671D9Ed1E690cdD4e28fC",transceiver:{wormhole:"0x0d7488B39AA64468a709eC3b3d354DeFE539eD97"}},[$t.key]:{token:"0x0000000000000000000000000000000100000017",manager:"0x5E6C488103b47F804824AE15861638af4C436795",transceiver:{wormhole:"0xd2a16B736F32Df7C0DE72838837656FE0f85Ac0F"}},[Yt.key]:{token:"0x0000000000000000000000000000000100000013",manager:"0x6BFca089916c045b0Ca4A09B655aF9F926189993",transceiver:{wormhole:"0x9a8a1ab288f6749Ce5626DEE1B5d59441BdC187F"}},[ie.key]:{token:"0x0000000000000000000000000000000100000014",manager:"0xB5cEf790D52A57fa619eD96eDd64c5328F3DCFb7",transceiver:{wormhole:"0x8acce9CA511d5D7213F8C3f813B8916087cd00ae"}}}},ws:yi,rpcs:hi});var rs=require("@galacticcouncil/xc-core");var hn=new rs.Parachain({assetsData:[{asset:ae,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:rs.SubstrateBalanceType.System,ecosystem:rs.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 os=require("@galacticcouncil/xc-core");var cs=new os.Parachain({assetsData:[{asset:Dt,xcmLocation:{parents:0,interior:{X1:{PalletInstance:10}}}}],balance:os.SubstrateBalanceType.System,ecosystem:os.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 yn=require("@galacticcouncil/xc-core");var ms=new yn.Parachain({assetsData:[{asset:gt,id:"Native",xcmLocation:{parents:0,interior:{X1:{PalletInstance:10}}}}],balance:yn.SubstrateBalanceType.System,ecosystem:yn.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:yn.XcmVersion.v3});var us=require("@galacticcouncil/xc-core");var Su={assetsData:[{asset:E,xcmLocation:{parents:0,interior:"Here"}}],balance:us.SubstrateBalanceType.System,ecosystem:us.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"},Pr=new us.Parachain({...Su,key:"polkadot"});var ds=require("@galacticcouncil/xc-core");var ls=new ds.Parachain({assetsData:[{asset:_t,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:ds.SubstrateBalanceType.System,ecosystem:ds.ChainEcosystem.Polkadot,explorer:"https://unique.subscan.io",genesisHash:"0x84322d9cddbf35088f1e54e9a85c967a41a56a4f43445768125e61af166c7d31",key:"unique",name:"Unique network",parachainId:2037,ss58Format:7391,ws:"wss://ws.unique.network"});var bn=require("@galacticcouncil/xc-core");var fs=new bn.Parachain({assetsData:[{asset:it,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:bn.SubstrateBalanceType.System,ecosystem:bn.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:bn.XcmVersion.v3});var Er=[X,pn,Le,re,A,cs,hn,ms,Pr,ls,fs];var On=require("@galacticcouncil/xc-core");var Nt=new On.SolanaChain({id:101,key:"solana",name:"Solana",assetsData:[{asset:ze,decimals:9},{asset:is,id:"So11111111111111111111111111111111111111112",decimals:9},{asset:at,id:"J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",decimals:9},{asset:rt,id:"3b8X44fLF9ooXaUm3hhSgjpmVs6rZZ3pPoGnGahc3Uu7",decimals:6}],balance:On.SolanaBalanceType.Token,balanceOverrides:{[ze.key]:On.SolanaBalanceType.Native},ecosystem:On.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:{[ze.key]:{token:"So11111111111111111111111111111111111111112",manager:"DiGxk55uAQNVzzg2FucPgdrQ4azb5SDvWQvzpzJD3o7J",transceiver:{wormhole:"5J12e7mMcbbN3VkCrUPfZp2bDHMH3t1rKvxGcwuN53wx"},emitter:"2WUYeRrK2JctBEvNVXY4mRG2ewMzhidi7L4Y5dCwqY9D"},[is.key]:{token:"So11111111111111111111111111111111111111112",manager:"DiGxk55uAQNVzzg2FucPgdrQ4azb5SDvWQvzpzJD3o7J",transceiver:{wormhole:"5J12e7mMcbbN3VkCrUPfZp2bDHMH3t1rKvxGcwuN53wx"},emitter:"2WUYeRrK2JctBEvNVXY4mRG2ewMzhidi7L4Y5dCwqY9D"},[at.key]:{token:"J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",manager:"9HFvXujdkXubvmf93gyzkH1g3VPowDrmp85sWsfdcBTh",transceiver:{wormhole:"HgxvrPomT84AxgxknddAcC1iW9ysqHxmeoiKNZmQcovs"},emitter:"9Ss1eMHE8iDv9kCxERH5nabp9tx75AVoUWWEKaGgMrh9"},[rt.key]:{token:"3b8X44fLF9ooXaUm3hhSgjpmVs6rZZ3pPoGnGahc3Uu7",manager:"4T5m5NtRVewiCVzP2mnfeUoMYRqncfkrS21X2dhVCNRT",transceiver:{wormhole:"GiTY93vtrK4jZZchrxdV9r28JByRs7Ary2rsTPyPabJc"},emitter:"HuvSXe6hQaSMgo5dc8GYzavcS3aB4Bix9XYgVdfsq2sY"}},platformAddressFormat:"base58"}});var Br=[Nt];var gs=require("@galacticcouncil/xc-core");var Wn=new gs.SuiChain({id:"0x35834a8a",key:"sui",name:"Sui",assetsData:[{asset:je,decimals:9}],balance:gs.SuiBalanceType.Native,ecosystem:gs.ChainEcosystem.Sui,explorer:"https://suiscan.xyz/",rpc:"https://rpc-mainnet.suiscan.xyz",wormhole:{id:21,coreBridge:"0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c",ntt:{[je.key]:{token:"0x2::sui::SUI",manager:"0xa0bc45e0384140dc125f273eda89cad1434f5dee430726cf6364bdcceba1e9a3",transceiver:{wormhole:"0x6afb4a6a9c4e5b6eeed568381ce95a79590f0c17ab8d0c59295826f2775bf832"},emitter:"0x25437da9f99dfab32c1a275663f51cd5c99eb867ab4d1f630e3799c5e68215da"}}}});var Rr=[Wn];var Qt=require("@galacticcouncil/xc-core");var Xt=new Qt.Parachain({assetsData:[{asset:N,decimals:12,id:0,xcmLocation:{parents:1,interior:"Here"}},{asset:E,decimals:10,min:.001,xcmLocation:{parents:2,interior:{X1:[{GlobalConsensus:"Polkadot"}]}}},{asset:I,decimals:6,id:1984,xcmLocation:{parents:1,interior:{X2:[{PalletInstance:50},{GeneralIndex:1984}]}}}],balance:Qt.SubstrateBalanceType.Assets,balanceOverrides:{[N.key]:Qt.SubstrateBalanceType.System,[E.key]:Qt.SubstrateBalanceType.ForeignAssets},min:Qt.SubstrateMinType.Assets,ecosystem:Qt.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 ps=require("@galacticcouncil/xc-core");var hs=new ps.Parachain({assetsData:[{asset:fi,id:0,xcmLocation:{parents:0,interior:"Here"}},{asset:N,decimals:12,id:1,xcmLocation:{parents:1,interior:"Here"}},{asset:I,decimals:6,id:14,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}}],balance:ps.SubstrateBalanceType.Tokens,ecosystem:ps.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 Lr=[Xt,hs];var ys=require("@galacticcouncil/xc-core");var Dr=new ys.NearChain({key:"near",name:"NEAR",assetsData:[{asset:Lt,decimals:24}],balance:ys.NearBalanceType.Native,ecosystem:ys.ChainEcosystem.Near,explorer:"https://nearblocks.io/",rpc:"https://free.rpc.fastnear.com"});var Hn=require("@galacticcouncil/xc-core");var _r={token:"wrap.testnet",manager:"ntt-near.whm-ntt-0bugdc.testnet",transceiver:{wormhole:"ntt-near.whm-ntt-0bugdc.testnet"},emitter:"0x34831e4dba0ea821cb7f0af0ce96f5efe4beb0db1fded12219e4329ff95a7213"},bs=new Hn.NearChain({key:"near_testnet",name:"NEAR Testnet",assetsData:[{asset:Lt,decimals:24},{asset:yt,id:"wrap.testnet",decimals:24}],balance:Hn.NearBalanceType.Ft,balanceOverrides:{[Lt.key]:Hn.NearBalanceType.Native},ecosystem:Hn.ChainEcosystem.Near,explorer:"https://testnet.nearblocks.io/",isTestChain:!0,rpc:"https://test.rpc.fastnear.com",wormhole:{id:15,coreBridge:"wormhole.wormhole.testnet",ntt:{[yt.key]:_r,[Lt.key]:_r},platformAddressFormat:"sha256"}});var Fr=[Dr,bs];var As=require("@galacticcouncil/xc-core");var Nr=new As.ZecChain({key:"zec",name:"Zcash",assetsData:[{asset:pi,decimals:8}],balance:As.ZecBalanceType.Transparent,ecosystem:As.ChainEcosystem.Zcash,explorer:"https://mainnet.zcashexplorer.app/"});var Xr=[Nr];var vu=[...vr,...Er,...Br,...Rr,...Lr,...Fr,...Xr],Vr=new Map(vu.map(n=>[n.key,n]));var Am=require("@galacticcouncil/xc-core");var ir=require("@galacticcouncil/xc-core");var sr={};fn(sr,{ContractBuilder:()=>J,ExtrinsicBuilder:()=>x,ExtrinsicDecorator:()=>un,FeeAmountBuilder:()=>D,FeeAssetBuilder:()=>Hs,FunctionCallBuilder:()=>Hi,MoveBuilder:()=>Ui,ProgramBuilder:()=>nr,XcmTransferType:()=>xt,XcmVersion:()=>mn});var Un=require("@galacticcouncil/xc-core"),Or=require("viem"),ku=n=>({build:async e=>{let s=(await Promise.all(n.map(o=>o.build(e)))).flat(),a=s.map(o=>o.address),i=[0,0],r=s.map(o=>(0,Or.encodeFunctionData)({abi:Un.Abi[o.module],functionName:o.func,args:o.args}));return[new Un.ContractConfig({abi:Un.Abi.Batch,address:Un.Precompile.Batch,args:[a,i,r,[]],func:"batchAll",module:"Batch"})]}}),Wr=()=>({batchAll:ku});var xs=require("@galacticcouncil/xc-core");function da(n,e,t){if(e<=t)return n;let s=10n**BigInt(e-t);return n-n%s}function we(n,e){if(e<0||e>100)throw Error(`padPercent ${e} not in range of 0 to 100.`);return n+n*e/100n}function Kn(n){return typeof n=="object"?Object.values(n)[0]:n}function Hr(){return{approve:n=>({build:async e=>{let{amount:t,asset:s,source:a}=e,i=a.chain,r=xs.Wormhole.fromChain(i),o=i.getAssetId(s);return[new xs.ContractConfig({abi:xs.Abi.Erc20,address:Kn(o).toString(),args:[n(r),t],func:"approve",module:"Erc20"})]}})}}var ws=require("@galacticcouncil/xc-core");var Ur=require("@galacticcouncil/common"),Kr=require("polkadot-api"),Gr=require("@polkadot-api/utils"),{H160:Mu,isEvmAddress:Cu}=Ur.h160;function Tu(n){let e=Cu(n)?Mu.toAccount(n):n;return(0,Gr.toHex)((0,Kr.AccountId)().enc(e))}var Iu=()=>({build:async n=>{let{address:e,amount:t,asset:s,source:a}=n,i=a.chain,r=ws.Basejump.fromChain(i),o=i.getAssetId(s);return[new ws.ContractConfig({abi:ws.Abi.Basejump,address:r.getAddress(),args:[Kn(o),t,Tu(e),"0x"],func:"bridgeViaWormhole",module:"Basejump"})]}}),qr=()=>({bridgeViaWormhole:Iu});var Vt=require("@galacticcouncil/xc-core"),jr=require("@galacticcouncil/common"),{Ss58Addr:zr}=Vt.addr;function Pu(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 bi(n,e){let t=n.getAssetId(e);return typeof t=="string"?Pu(t):t}function $r(){return{transferAssetsToPara32:()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=bi(a.chain,t);return[new Vt.ContractConfig({abi:Vt.Abi.PolkadotXcm,address:Vt.Precompile.PolkadotXcm,args:[s.chain.parachainId,zr.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=bi(a.chain,t),r=bi(a.chain,a.destinationFeeBalance),o=jr.big.toBigInt(s.fee.amount,s.fee.decimals);return[new Vt.ContractConfig({abi:Vt.Abi.PolkadotXcm,address:Vt.Precompile.PolkadotXcm,args:[s.chain.parachainId,zr.getPubKey(n),[{asset:i,amount:e},{asset:r,amount:o}],1],func:"transferAssetsToPara32",module:"PolkadotXcm"})]}})}}var Wt=require("@galacticcouncil/xc-core"),xn=require("@galacticcouncil/descriptors"),oo=require("@polkadot-api/substrate-bindings"),ga=require("@polkadot-api/utils"),co=require("viem");var Yr=require("@galacticcouncil/xc-core"),la=null;async function Qr(){if(la)return la;let n=await Yr.codec.getHubCodecs();return la={message:n.tx.PolkadotXcm.send.inner.message,location:n.tx.PolkadotXcm.send.inner.dest},la}var no=require("@galacticcouncil/xc-core"),y=require("@galacticcouncil/descriptors"),so=require("@polkadot-api/substrate-bindings"),ao=require("@polkadot-api/utils");var Jr=require("@galacticcouncil/descriptors"),Se=340282366920938463463374607431768211455n,Ot="0x0000000000000000000000000000000000000000000000000000000000000000",ge={parents:1,interior:Jr.XcmV3Junctions.Here()},Zr=0,An=1e3,fa=1002,Mt=1,Gn="5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY",eo="0x0000000000000000000000000000000000000000000000000000000000000000",to="0x0000000000000000000000000000000000000000";var Ai="0x0000000000000000000000000000000000000000",Ss=n=>({parents:2,interior:y.XcmV5Junctions.X1(y.XcmV5Junction.GlobalConsensus(y.XcmV5NetworkId.Ethereum({chain_id:BigInt(n)})))}),xi=(n,e)=>({parents:2,interior:y.XcmV5Junctions.X2([y.XcmV5Junction.GlobalConsensus(y.XcmV5NetworkId.Ethereum({chain_id:BigInt(n)})),y.XcmV5Junction.AccountKey20({key:e,network:void 0})])});function io(n,e){let t=Ss(n),s=xi(n,"0x"+"00".repeat(20)),a=1000000000000n,i=1000000000n,r=[y.XcmV5Instruction.ReserveAssetDeposited([{id:t,fun:y.XcmV3MultiassetFungibility.Fungible(a)},{id:s,fun:y.XcmV3MultiassetFungibility.Fungible(a)}]),y.XcmV5Instruction.ExchangeAsset({give:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.AllOf({id:t,fun:{type:"Fungible",value:void 0}})),want:[{id:ge,fun:y.XcmV3MultiassetFungibility.Fungible(i)}],maximal:!1}),y.XcmV5Instruction.PayFees({asset:{id:ge,fun:y.XcmV3MultiassetFungibility.Fungible(i)}})],o=wi({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 wi(n){let{ethChainId:e,destinationParaId:t,tokenAddress:s,beneficiaryHex:a,tokenAmount:i,hydrationDotFee:r,topic:o}=n,c=Ss(e),m=s===Ai?c:xi(e,s),f=a.length===42&&a.startsWith("0x")?y.XcmV5Junction.AccountKey20({key:a,network:void 0}):y.XcmV5Junction.AccountId32({id:a,network:void 0}),p={parents:0,interior:y.XcmV5Junctions.X1(f)};return[y.XcmV5Instruction.SetAppendix([y.XcmV5Instruction.RefundSurplus(),y.XcmV5Instruction.DepositAsset({assets:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.All()),beneficiary:p})]),y.XcmV5Instruction.ExchangeAsset({give:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.AllOf({id:c,fun:{type:"Fungible",value:void 0}})),want:[{id:ge,fun:y.XcmV3MultiassetFungibility.Fungible(r)}],maximal:!1}),y.XcmV5Instruction.InitiateTransfer({destination:{parents:1,interior:y.XcmV5Junctions.X1(y.XcmV5Junction.Parachain(t))},remote_fees:{type:"ReserveDeposit",value:y.XcmV5AssetFilter.Definite([{id:ge,fun:y.XcmV3MultiassetFungibility.Fungible(r)}])},preserve_origin:!1,assets:[{type:"ReserveDeposit",value:y.XcmV5AssetFilter.Definite([{id:m,fun:y.XcmV3MultiassetFungibility.Fungible(i)}])}],remote_xcm:[y.XcmV5Instruction.DepositAsset({assets:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.AllCounted(3)),beneficiary:p}),y.XcmV5Instruction.SetTopic(o)]}),y.XcmV5Instruction.RefundSurplus(),y.XcmV5Instruction.DepositAsset({assets:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.All()),beneficiary:p}),y.XcmV5Instruction.SetTopic(o)]}function Si(n){let{tokenAddress:e,senderPubKey:t,beneficiaryHex:s,tokenAmount:a,sourceExecutionFee:i,dotRemoteFee:r,dotToEtherSwapAmount:o,etherFeeAmount:c,topic:m}=n,g=Ss(Mt),f=e===Ai?g:xi(Mt,e),p={parents:0,interior:y.XcmV5Junctions.X1(y.XcmV5Junction.AccountId32({id:t,network:void 0}))},b={parents:0,interior:y.XcmV5Junctions.X1(y.XcmV5Junction.AccountKey20({key:s,network:void 0}))},w={parents:2,interior:y.XcmV5Junctions.X1(y.XcmV5Junction.GlobalConsensus(y.XcmV5NetworkId.Ethereum({chain_id:BigInt(Mt)})))},S=[y.XcmV5Instruction.DepositAsset({assets:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.AllCounted(3)),beneficiary:b}),y.XcmV5Instruction.SetTopic(m)],_=[y.XcmV5Instruction.SetAppendix([y.XcmV5Instruction.SetHints({hints:[{type:"AssetClaimer",value:{location:p}}]}),y.XcmV5Instruction.RefundSurplus(),y.XcmV5Instruction.DepositAsset({assets:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.All()),beneficiary:p})])];_.push(y.XcmV5Instruction.ExchangeAsset({give:y.XcmV5AssetFilter.Definite([{id:ge,fun:y.XcmV3MultiassetFungibility.Fungible(o)}]),want:[{id:g,fun:y.XcmV3MultiassetFungibility.Fungible(c)}],maximal:!1}));let k=[{type:"ReserveWithdraw",value:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.AllOf({id:f,fun:{type:"Fungible",value:void 0}}))}],O=y.XcmV5AssetFilter.Definite([{id:g,fun:y.XcmV3MultiassetFungibility.Fungible(c)}]);_.push(y.XcmV5Instruction.InitiateTransfer({destination:w,remote_fees:{type:"ReserveWithdraw",value:O},preserve_origin:!0,assets:k,remote_xcm:S}),y.XcmV5Instruction.SetTopic(m));let P=i+r+o,W=[{id:ge,fun:y.XcmV3MultiassetFungibility.Fungible(P)},{id:f,fun:y.XcmV3MultiassetFungibility.Fungible(a)}],U=[{id:ge,fun:y.XcmV3MultiassetFungibility.Fungible(i)}],T={type:"ReserveWithdraw",value:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.AllOf({id:f,fun:{type:"Fungible",value:void 0}}))},ne=[{type:"ReserveWithdraw",value:y.XcmV5AssetFilter.Definite([{id:ge,fun:y.XcmV3MultiassetFungibility.Fungible(o)}])},T];return[y.XcmV5Instruction.WithdrawAsset(W),y.XcmV5Instruction.PayFees({asset:U[0]}),y.XcmV5Instruction.SetAppendix([y.XcmV5Instruction.SetHints({hints:[{type:"AssetClaimer",value:{location:p}}]}),y.XcmV5Instruction.RefundSurplus(),y.XcmV5Instruction.DepositAsset({assets:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.All()),beneficiary:p})]),y.XcmV5Instruction.InitiateTransfer({destination:{parents:1,interior:y.XcmV5Junctions.X1(y.XcmV5Junction.Parachain(An))},remote_fees:{type:"ReserveWithdraw",value:y.XcmV5AssetFilter.Definite([{id:ge,fun:y.XcmV3MultiassetFungibility.Fungible(r)}])},preserve_origin:!0,assets:ne,remote_xcm:_}),y.XcmV5Instruction.SetTopic(m)]}function ro(n){let{address:e,amount:t,asset:s,sender:a,source:i,destination:r,messageId:o}=n,c=i.chain,m=(0,so.getSs58AddressInfo)(a);if(!m.isValid)throw new Error(`Invalid SS58 address: ${a}`);let g=(0,ao.toHex)(m.publicKey),f=c.getAssetXcmLocation(s),p=f?no.multiloc.findNestedKey(f,"key"):void 0,b=p?p.key:Ai,w=r.feeBreakdown,S=w.sourceExecutionFee??0n,_=w.dotRemoteFee??0n,k=w.dotToEtherSwapAmount??0n,O=w.etherFeeAmount??0n,W=Si({tokenAddress:b,senderPubKey:g,beneficiaryHex:e,tokenAmount:t,sourceExecutionFee:S,dotRemoteFee:_,dotToEtherSwapAmount:k,etherFeeAmount:O,topic:o??"0x0000000000000000000000000000000000000000000000000000000000000000"});return y.XcmVersionedXcm.V5(W)}var{Ss58Addr:mo}=Wt.addr,Eu="0x0000000000000000000000000000000000000000",Bu=()=>({build:async n=>{let{address:e,amount:t,asset:s,sender:a,source:i,destination:r}=n,o=i.chain,c=r.chain,m=Wt.Snowbridge.fromChain(o),g=o.getAssetId(s),f=Kn(g),p=s.originSymbol==="ETH",b=r.feeBreakdown.executionFee,w=r.feeBreakdown.relayerFee,S=r.feeBreakdown.hydrationDotFee,_=r.fee.amount,k=mo.getPubKey(e),O=new TextEncoder().encode(`${c.parachainId}${a}${f}${k}${t}${Date.now()}`),P=(0,ga.toHex)((0,oo.Blake2256)(O)),W=wi({ethChainId:Mt,destinationParaId:c.parachainId,tokenAddress:p?Eu:f,beneficiaryHex:k,tokenAmount:t,hydrationDotFee:S,topic:P}),U=await Qr(),T=(0,ga.toHex)(U.message.enc(xn.XcmVersionedXcm.V5(W))),ne=[];p||ne.push((0,co.encodeAbiParameters)([{type:"uint8"},{type:"address"},{type:"uint128"}],[0,f,t]));let Fe=U.location.enc(xn.XcmVersionedLocation.V5({parents:0,interior:xn.XcmV5Junctions.X1(xn.XcmV5Junction.AccountId32({id:k,network:void 0}))})),vt=(0,ga.toHex)(Fe.slice(1));return[new Wt.ContractConfig({abi:Wt.Abi.Snowbridge,address:m.getGateway(),args:[T,ne,vt,b,w],value:p?_+t:_,func:"v2_sendMessage",module:"Snowbridge"})]}}),Ru=()=>({build:async n=>{let{address:e,amount:t,asset:s,source:a,destination:i}=n,r=a.chain,o=i.chain,c=Wt.Snowbridge.fromChain(r),m=r.getAssetId(s),g=Kn(m),f=s.originSymbol==="ETH",p=i.feeBreakdown.bridgeFeeInDot,b=i.fee.amount;return[new Wt.ContractConfig({abi:Wt.Abi.Snowbridge,address:c.getGateway(),args:[g,o.parachainId,[1,mo.getPubKey(e)],p,t],value:f?b+t:b,func:"sendToken",module:"Snowbridge"})]}}),uo=()=>({v2SendMessage:Bu,sendToken:Ru});var Q=require("@galacticcouncil/xc-core");var Ls=require("@wormhole-foundation/sdk-base"),pa=require("@wormhole-foundation/sdk-definitions"),Ds="0x00",ha=8,lo="https://executor.labsapis.com",Lu=[{name:"prefix",binary:"bytes",size:4},{name:"srcChain",binary:"uint",size:2},{name:"srcManager",binary:"bytes",size:32},{name:"messageId",binary:"uint",size:32}],fo=(n,e,t)=>{let s=(0,Ls.serializeLayout)(Lu,{prefix:Ls.encoding.bytes.encode(pa.RequestPrefix.ERN1),srcChain:n,srcManager:new pa.UniversalAddress(e,"hex").toUint8Array(),messageId:t});return Ls.encoding.hex.encode(s,!0)};var Ti={};fn(Ti,{ASSET_LOCKDOWN_PERIOD_BLOCKS:()=>ho,AssethubClient:()=>ot,BaseClient:()=>Ct,ExecutorClient:()=>Aa,HydrationClient:()=>Ze,NttEvmClient:()=>Fs,NttNearClient:()=>Ns,NttSolanaClient:()=>Xs,NttSuiClient:()=>Os,UNMETERED:()=>Ht,capacityAt:()=>qn,executorClient:()=>Ms,getAllAssetDepositLimits:()=>Mi,getAssetDepositLimit:()=>ki,getGlobalWithdrawLimit:()=>Ci,nttClient:()=>Jt,nttDef:()=>ct});var vi=require("@galacticcouncil/common"),_s=require("@galacticcouncil/descriptors"),Ct=class{chain;descriptor;constructor(e,t){this.chain=e,this.descriptor=t??_s.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,vi.encodeLocation)(a),r=await this.refApi.apis.XcmPaymentApi.query_weight_to_asset_fee(s.value,_s.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,vi.encodeLocation)(a),r=await this.refApi.apis.XcmPaymentApi.query_weight_to_asset_fee(s.value,_s.XcmVersionedAssetId.V4(i));if(!r.success)throw Error(`Can't convert weight to fee in ${t.originSymbol}`);return BigInt(r.value)}};var At=require("@galacticcouncil/descriptors"),go=require("@galacticcouncil/common"),ya=require("@polkadot-api/substrate-bindings"),po=require("@polkadot-api/utils");var ot=class extends Ct{constructor(e){super(e)}async checkIfSufficient(e){let t=this.chain.getAssetId(e),s=this.chain.getAssetXcmLocation(e),a=(0,go.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,po.toHex)((0,ya.Twox128)(s)),i=await this.client._request("state_getStorage",[a]);if(!i)return t;let r=ya.u128.dec(i);return r===0n?t:r}async calculateDeliveryFee(e,t){let s=At.XcmVersionedLocation.V5({parents:1,interior:At.XcmV5Junctions.X1(At.XcmV5Junction.Parachain(t))}),a=At.XcmVersionedAssetId.V5({parents:1,interior:{type:"Here",value:void 0}}),i=await this.api().apis.XcmPaymentApi.query_delivery_fees(s,At.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:At.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:At.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:At.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 bo=require("@galacticcouncil/common"),Ao=require("@galacticcouncil/descriptors");var ho=14400;function yo(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,p;t&&(t.type==="Locked"?(g=t.value,m=a<t.value):(f=t.value[0],p=t.value[1]));let b=s?.type==="Local"?"Local":"External",w=!m&&f!==void 0&&f+ho<=a,S=null;if(r!==null)if(m)S=0n;else if(w)S=r;else{let _=p??i,k=i>_?i-_:0n;S=r>k?r-k:0n}return{assetId:n,symbol:o,decimals:c,limit:r,locked:m,lockedUntilBlock:g,lastResetBlock:f,baselineIssuance:p,currentIssuance:i,headroom:S,category:b,periodExpired:w}}async function ki(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 yo(e,s,a,i,r,o)}async function Mi(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 p=f.keyArgs[0],b=f.value;if(b?.xcm_rate_limit==null)continue;let w=p===0?i:m.get(p)??0n,S=yo(p,b,o.get(p),c.get(p),a,w);g.set(p.toString(),S)}return g}async function Ci(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 b=a>c?a-c:0n;if(b>0n){let w=b>g?g:b,S=o*w/g;f=o>S?o-S:0n}}let p=r||f>=m?0n:m-f;return{configured:!0,limit:m,windowMs:g,used:f,lastUpdateMs:c,headroom:p,lockdown:r,lockdownUntilMs:i}}var Ze=class extends Ct{constructor(e){super(e,Ao.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=this.chain.getNormalizedAddress(e),s=await this.api().query.MultiTransactionPayment.AccountCurrencyMap.getValue(t);return s!==void 0?s.toString():bo.h160.isEvmAccount(t)?this.chain.getAssetId(ie).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(this.chain.getNormalizedAddress(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(this.chain.getNormalizedAddress(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 ki(this.api(),t)}getAllAssetDepositLimits(){return Mi(this.api())}getGlobalWithdrawLimit(){return Ci(this.api())}};var ks=require("@galacticcouncil/xc-core");var vs=require("@galacticcouncil/xc-core"),So=require("@galacticcouncil/common");var xo=require("@galacticcouncil/xc-core"),Ht={capacity:0n,limit:0n,windowMs:0,capacityAtLastTx:0n,lastTxMs:0};function ct(n,e){if(!e)throw new Error("No ntt asset given for "+n.name+".");return xo.Ntt.fromChain(n,e)}function qn(n,e,t,s,a){let i=s>t?s-t:0n,r=e+n*i/a;return r<n?r:n}var Du=500000n,_u={robinhood:800000n},Fu=0;function wo(n,e){let t=n>>8n,s=Number(n&0xffn);return t*So.big.pow10(e-s)}var Fs=class{constructor(e,t){this.chain=e;this.asset=t}getOutboundLimit(){return this.getLimit()}getInboundLimit(e){return this.getLimit(vs.Wormhole.fromChain(e).getWormholeId())}async getRedeemBudget(){return{gasLimit:_u[this.chain.key]??Du,msgValue:0n}}async getCustody(){let e=this.chain.evmClient.getProvider(),{manager:t,token:s}=ct(this.chain,this.asset);if(await e.readContract({abi:vs.Abi.NttManager,address:t,functionName:"mode"})===Fu)return e.readContract({abi:vs.Abi.Erc20,address:s,args:[t],functionName:"balanceOf"})}async getLimit(e){let t=this.chain.evmClient.getProvider(),s=vs.Abi.NttManager,a=ct(this.chain,this.asset).manager,[i,r,o,c]=await Promise.all([t.readContract({abi:s,address:a,functionName:"rateLimitDuration"}),t.readContract({abi:s,address:a,functionName:"tokenDecimals"}),e===void 0?t.readContract({abi:s,address:a,functionName:"getCurrentOutboundCapacity"}):t.readContract({abi:s,address:a,functionName:"getCurrentInboundCapacity",args:[e]}),e===void 0?t.readContract({abi:s,address:a,functionName:"getOutboundLimitParams"}):t.readContract({abi:s,address:a,functionName:"getInboundLimitParams",args:[e]})]);return i===0n?Ht:{capacity:o,limit:wo(c.limit,r),windowMs:Number(i)*1e3,capacityAtLastTx:wo(c.currentCapacity,r),lastTxMs:Number(c.lastTxTimestamp)*1e3}}};var ko=require("@galacticcouncil/xc-core");var vo=3600*24,Nu=new TextEncoder().encode("STATE"),Xu=1;function Mo(n,e){let t=s=>n.getBigUint64(s,!0)+(n.getBigUint64(s+8,!0)<<64n);return{limit:t(e),capacityAtLastTx:t(e+16),lastTxTimestamp:n.getBigUint64(e+32,!0)}}function Vu(n){let e=new DataView(n.buffer,n.byteOffset,n.byteLength),t=0,s=()=>{t+=4+e.getUint32(t,!0)};return s(),t+=1,s(),t+=17,s(),t+=8,s(),Mo(e,t)}function Ou(n){let e=new Uint8Array(3);return e[0]=Xu,new DataView(e.buffer).setUint16(1,n,!0),e}var Ns=class{constructor(e,t){this.chain=e;this.asset=t}getOutboundLimit(){return this.getLimit()}getInboundLimit(e){return this.getLimit(ko.Wormhole.fromChain(e).getWormholeId())}async getRedeemBudget(){throw new Error("No executor delivery to "+this.chain.name+".")}async getCustody(){let{manager:e,token:t}=ct(this.chain,this.asset),s=await this.chain.client.view(t,"ft_balance_of",{account_id:e});return BigInt(s)}async getLimit(e){let t=await this.readLimit(e);if(!t)return Ht;let{limit:s,capacityAtLastTx:a,lastTxTimestamp:i}=t,r=BigInt(Math.floor(Date.now()/1e3));return{capacity:qn(s,a,i,r,BigInt(vo)),limit:s,windowMs:vo*1e3,capacityAtLastTx:a,lastTxMs:Number(i)*1e3}}async readLimit(e){let t=ct(this.chain,this.asset).manager,s=e===void 0?Nu:Ou(e),[a]=await this.chain.client.viewState(t,s);if(!a)return;if(e===void 0)return Vu(a.value);let{buffer:i,byteOffset:r,byteLength:o}=a.value;return Mo(new DataView(i,r,o),0)}};var ba=require("@galacticcouncil/xc-core"),To=require("@solana/spl-token"),cn=require("@solana/web3.js");var Wu=250000n,Hu=10000000n,Uu=2039280n,Co=3600*24,Ku=8,Gu=9,qu=0;function zu(n){let e=41;e+=n[e]===1?33:1,e+=64;let t=n[e];e+=22;let s=new cn.PublicKey(n.subarray(e,e+32));return{mode:t,custody:s}}function ju(n,e){let t=new DataView(n.buffer,n.byteOffset,n.byteLength);return{limit:t.getBigUint64(e,!0),capacityAtLastTx:t.getBigUint64(e+8,!0),lastTxTimestamp:t.getBigInt64(e+16,!0)}}var Xs=class{constructor(e,t){this.chain=e;this.asset=t}getOutboundLimit(){return this.getLimit()}getInboundLimit(e){return this.getLimit(ba.Wormhole.fromChain(e).getWormholeId())}async getRedeemBudget(e){let{connection:t}=this.chain,s={gasLimit:Wu,msgValue:Hu};if(!this.asset||!e)return{...s,msgValue:s.msgValue+Uu};let a=new cn.PublicKey(ct(this.chain,this.asset).token),{ata:i}=await ba.spl.getTokenAccount(t,a,new cn.PublicKey(e));if(await t.getAccountInfo(i))return s;let o=await(0,To.getMinimumBalanceForRentExemptAccount)(t);return{...s,msgValue:s.msgValue+BigInt(o)}}async getCustody(){let{connection:e}=this.chain,t=new cn.PublicKey(ct(this.chain,this.asset).manager),[s]=cn.PublicKey.findProgramAddressSync([new TextEncoder().encode("config")],t),a=await e.getAccountInfo(s);if(!a)throw new Error("Ntt config missing for "+t.toBase58());let{mode:i,custody:r}=zu(a.data);if(i!==qu)return;let{value:o}=await e.getTokenAccountBalance(r);return BigInt(o.amount)}async getLimit(e){let{pda:t,offset:s}=this.rateLimitPda(e),a=await this.chain.connection.getAccountInfo(t);if(!a)return Ht;let{limit:i,capacityAtLastTx:r,lastTxTimestamp:o}=ju(a.data,s),c=BigInt(Math.floor(Date.now()/1e3));return{capacity:qn(i,r,o,c,BigInt(Co)),limit:i,windowMs:Co*1e3,capacityAtLastTx:r,lastTxMs:Number(o)*1e3}}rateLimitPda(e){let t=new cn.PublicKey(ct(this.chain,this.asset).manager),s=new TextEncoder;if(e===void 0){let[r]=cn.PublicKey.findProgramAddressSync([s.encode("outbox_rate_limit")],t);return{pda:r,offset:Ku}}let a=new Uint8Array(2);new DataView(a.buffer).setUint16(0,e,!1);let[i]=cn.PublicKey.findProgramAddressSync([s.encode("inbox_rate_limit"),a],t);return{pda:i,offset:Gu}}};var Vs=require("@galacticcouncil/xc-core");var $u=10000000n,Io=3600*24*1e3;function Po(n){let e=BigInt(n.limit),t=BigInt(n.capacity_at_last_tx),s=BigInt(n.last_tx_timestamp),a=BigInt(Date.now());return{capacity:qn(e,t,s,a,BigInt(Io)),limit:e,windowMs:Io,capacityAtLastTx:t,lastTxMs:Number(s)}}var Os=class{constructor(e,t){this.chain=e;this.asset=t}getOutboundLimit(){return this.getLimit()}getInboundLimit(e){return this.getLimit(Vs.Wormhole.fromChain(e).getWormholeId())}async getRedeemBudget(){return{gasLimit:$u,msgValue:0n}}async getCustody(){let e=ct(this.chain,this.asset).manager,t=await Vs.suiPkg.getObject(this.chain.client,e);if(t.fields.mode?.variant==="Locking")return BigInt(t.fields.balance)}async getLimit(e){let t=this.chain.client,s=ct(this.chain,this.asset).manager,a=await Vs.suiPkg.getObject(t,s);if(e===void 0){let m=a.fields.outbox?.fields?.rate_limit?.fields;return m?Po(m):Ht}let i=a.fields.peers?.fields?.id?.id;if(!i)return Ht;let{data:r}=await t.getDynamicFieldObject({parentId:i,name:{type:"u16",value:e}}),c=r?.content?.fields?.value?.fields?.inbound_rate_limit?.fields;return c?Po(c):Ht}};function Jt(n,e){return n instanceof ks.SolanaChain?new Xs(n,e):n instanceof ks.SuiChain?new Os(n,e):n instanceof ks.NearChain?new Ns(n,e):new Fs(n,e)}var zn=require("@wormhole-foundation/sdk-base"),xa=require("@wormhole-foundation/sdk-definitions");var Yu=300*1e3,Qu=n=>{try{let{quote:e}=(0,zn.deserializeLayout)(xa.signedQuoteLayout,zn.encoding.hex.decode(n));return e.expiryTime.getTime()}catch{return 0}},Aa=class{quotes=new Map;async quote(e,t,s){let{gasLimit:a,msgValue:i}=s,r=[e,t,a,i].join(":"),o=this.quotes.get(r);if(o&&Qu(o.signedQuote)-Date.now()>Yu)return o;let c=zn.encoding.hex.encode((0,zn.serializeLayout)(xa.relayInstructionsLayout,{requests:[{request:{type:"GasInstruction",gasLimit:a,msgValue:i}}]}),!0),m=await fetch(lo+"/v0/quote",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({srcChain:e,dstChain:t,relayInstructions:c})});if(!m.ok)throw new Error("Executor quote failed ["+e+"->"+t+"]");let{signedQuote:g,estimatedCost:f}=await m.json();if(!g||!f)throw new Error("Executor quote incomplete");let p={signedQuote:g,estimatedCost:BigInt(f),relayInstructions:c};return this.quotes.set(r,p),p}},Ms=new Aa;var Ii=async n=>{let{address:e,amount:t,asset:s,source:a,destination:i}=n,r=a.chain,o=i.chain,c=Q.Ntt.fromChain(r,s),m=Q.Wormhole.fromChain(o),g=e;o instanceof Q.EvmParachain&&(g=await o.getDerivatedAddress(e));let f=await r.evmClient.getProvider().readContract({abi:Q.Abi.NttManager,address:c.manager,args:[m.getWormholeId(),Ds],functionName:"quoteDeliveryPrice"}),p=da(t,r.getAssetDecimals(s)??0,ha);return{ctx:r,ntt:c,rcvWh:m,rcvAddress:g,transferAmount:p,deliveryPrice:f[1],wrapNative:r.getBalanceType(s)===Q.EvmBalanceType.Native}},Ju=()=>({build:async n=>{let{ntt:e,rcvWh:t,rcvAddress:s,transferAmount:a,deliveryPrice:i,wrapNative:r}=await Ii(n);return[new Q.ContractConfig({abi:Q.Abi.NttManager,address:e.manager,args:[a,t.getWormholeId(),t.normalizeAddress(s)],token:e.token,wrapNative:r,value:i,func:"transfer",module:"NttManager"})]}}),Zu=()=>({build:async n=>{let{ctx:e,ntt:t,rcvWh:s,rcvAddress:a,transferAmount:i,deliveryPrice:r,wrapNative:o}=await Ii(n),c=Q.Wormhole.fromChain(e),m=c.getNttExecutor(),g=e instanceof Q.EvmParachain?await e.getDerivatedAddress(n.sender):n.sender,f=await Jt(n.destination.chain,n.destination.balance).getRedeemBudget(n.address),{signedQuote:p,estimatedCost:b,relayInstructions:w}=await Ms.quote(c.getWormholeId(),s.getWormholeId(),f),S=s.normalizeAddress(a),_={value:b,refundAddress:g,signedQuote:p,instructions:w},k={transferTokenFee:0n,nativeTokenFee:0n,payee:g};return[new Q.ContractConfig({abi:Q.Abi.NttManagerWithExecutor,address:m,args:[t.manager,i,s.getWormholeId(),S,S,Ds,_,k],token:t.token,wrapNative:o,value:r+b,func:"transfer",module:"NttManagerWithExecutor"})]}}),ed=()=>({build:async n=>{let{ctx:e,ntt:t,rcvWh:s,rcvAddress:a,transferAmount:i,deliveryPrice:r,wrapNative:o}=await Ii(n),c=Q.Wormhole.fromChain(e),m=n.destination.chain,g=Q.Ntt.find(m,n.destination.balance.key);if(!g)throw new Error("Ntt deployment missing on "+m.key);let f=e instanceof Q.EvmParachain?await e.getDerivatedAddress(n.sender):n.sender,p=await Jt(m,n.destination.balance).getRedeemBudget(n.address),[b,w]=await Promise.all([Ms.quote(c.getWormholeId(),s.getWormholeId(),p),e.evmClient.getProvider().readContract({abi:Q.Abi.NttManager,address:t.manager,functionName:"nextMessageSequence"})]);return[new Q.ContractConfig({abi:Q.Abi.NttManager,address:t.manager,args:[i,s.getWormholeId(),s.normalizeAddress(a)],token:t.token,wrapNative:o,value:r,func:"transfer",module:"NttManager"}),new Q.ContractConfig({abi:Q.Abi.Executor,address:c.getExecutor(),args:[s.getWormholeId(),s.normalizeAddress(g.manager),f,b.signedQuote,fo(c.getWormholeId(),t.manager,BigInt(w)),b.relayInstructions],value:b.estimatedCost,func:"requestExecution",module:"Executor"})]}}),Eo=()=>({transfer:Ju,transferWithExecutor:Zu,transferViaExecutor:ed});function Bo(){return{Ntt:Eo}}function J(){return{Batch:Wr,Erc20:Hr,Basejump:qr,PolkadotXcm:$r,Snowbridge:uo,Wormhole:Bo}}var Pi=require("@galacticcouncil/common"),Lo=require("@galacticcouncil/xc-core"),Ro="AssetConversion",td=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,Pi.encodeLocation)(c.getAssetXcmLocation(r)),g=(0,Pi.encodeLocation)(c.getAssetXcmLocation(o)),f=r.amount+r.amount*BigInt(n.slippage)/100n,p=o.amount;return new Lo.ExtrinsicConfig({module:Ro,func:e,getTx:b=>b.getUnsafeApi().tx[Ro][e]({path:[m,g],amount_out:p,amount_in_max:f,send_to:t,keep_alive:!0})})}}},Do=()=>({swapTokensForExactTokens:td});var wa=require("@galacticcouncil/descriptors"),_o=require("@galacticcouncil/xc-core"),nd="Assets",sd=()=>{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 _o.ExtrinsicConfig({module:nd,func:n,getTx:m=>m.getTypedApi(wa.hub).tx.Assets.transfer({id:Number(c),target:wa.MultiAddress.Id(s),amount:o})})}}},Fo=()=>({transfer:sd});var Xo=require("@galacticcouncil/xc-core"),No="Balances",ad=(n=!1)=>{let e="transfer_all";return{build:async({address:t})=>new Xo.ExtrinsicConfig({module:No,func:e,getTx:s=>s.getUnsafeApi().tx[No][e]({dest:t,keep_alive:n})})}},Vo=()=>({transferAll:ad});var Cs=require("@galacticcouncil/xc-core"),Ho=require("polkadot-api"),Oo="EVM",Sa=(1n<<64n)-1n,Wo=n=>[n&Sa,n>>64n&Sa,n>>128n&Sa,n>>192n&Sa],id=n=>({build:async e=>{let t=e.source.chain,s=t.evmClient,a=await n.build(e),[i,r]=await Promise.all([t.getDerivatedAddress(e.sender),s.getProvider().getGasPrice()]),o=r+r/10n,m=[...await(0,Cs.getEvmPrerequisites)(s,i,e.amount,a[0]),...a.map(f=>({to:f.address,data:f.encodeFunctionData(),value:f.value,gas:Cs.Gas.transfer}))],g=m.length>1;return new Cs.ExtrinsicConfig({module:g?"Utility":Oo,func:g?"batch_all":"call",getTx:f=>{let p=f.getUnsafeApi(),b=m.map(w=>p.tx[Oo].call({source:i,target:w.to,input:Ho.Binary.fromHex(w.data),value:Wo(w.value??0n),gas_limit:w.gas,max_fee_per_gas:Wo(o),max_priority_fee_per_gas:void 0,nonce:void 0,access_list:[],authorization_list:[]}));return g?p.tx.Utility.batch_all({calls:b.map(w=>w.decodedCall)}):b[0]}})}}),Uo=()=>({call:id});var Ko=require("@galacticcouncil/descriptors"),Go=require("@galacticcouncil/xc-core"),rd="Router",od=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,p=i.amount+i.amount*BigInt(n.slippage)/100n;return new Go.ExtrinsicConfig({module:rd,func:"buy",getTx:b=>b.getTypedApi(Ko.hydration).tx.Router.buy({asset_in:Number(m),asset_out:Number(g),amount_out:f,max_amount_in:p,route:o})})}}),qo=()=>({buy:od});var zo=require("@galacticcouncil/xc-core"),Ei="Utility",jo=n=>n?.type===Ei&&n?.value?.type==="batch_all"?n.value.value.calls.flatMap(jo):[n],cd=n=>{let e="batch_all";return{build:async t=>{let s=await Promise.all(n.map(a=>a.build(t)));return new zo.ExtrinsicConfig({module:Ei,func:e,getTx:a=>{let i=s.flatMap(r=>jo(r.getTx(a).decodedCall));return a.getUnsafeApi().tx[Ei][e]({calls:i})}})}}},$o=()=>({batchAll:cd});var Yn=require("@galacticcouncil/xc-core"),fc=require("@galacticcouncil/common");var jn=require("@galacticcouncil/xc-core"),v=require("@galacticcouncil/descriptors");var ve=require("@galacticcouncil/descriptors");var Yo=require("@galacticcouncil/common"),Bi=require("@galacticcouncil/descriptors"),Qo=require("@polkadot-api/substrate-bindings"),Jo=require("@polkadot-api/utils");function Me(n){if(n.length===42&&n.startsWith("0x"))return Bi.XcmV3Junction.AccountKey20({key:n,network:void 0});let t=(0,Qo.getSs58AddressInfo)(n);if(!t.isValid)throw new Error(`Invalid SS58 address: ${n}`);return Bi.XcmV3Junction.AccountId32({id:(0,Jo.toHex)(t.publicKey),network:void 0})}function va(n,e,t){return Yo.acc.getMultilocationDerivatedAccount(n.parachainId,e,t.parachainId===0?0:1,t.usesH160Acc)}var Ri=require("@galacticcouncil/xc-core");function Zo(n,e){let t=Ri.multiloc.findNestedKey(n,"GeneralIndex"),s=Ri.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 ce(n,e){let t=n.getAssetXcmLocation(e);if(!t)throw new Error(e.originSymbol+" location config is missing.");return t}var ka={};fn(ka,{ETHER_TOKEN_ADDRESS:()=>Li,erc20Location:()=>ud,erc20LocationReanchored:()=>dd,ethereumLocation:()=>tc,parachainLocation:()=>md});var Tt=require("@galacticcouncil/descriptors"),Li="0x0000000000000000000000000000000000000000",ec=n=>Tt.XcmV3Junction.GlobalConsensus(Tt.XcmV3JunctionNetworkId.Ethereum({chain_id:BigInt(n)}));function tc(n){return{parents:2,interior:Tt.XcmV3Junctions.X1(ec(n))}}function md(n){return{parents:1,interior:Tt.XcmV3Junctions.X1(Tt.XcmV3Junction.Parachain(n))}}function ud(n,e){return e===Li?tc(n):{parents:2,interior:Tt.XcmV3Junctions.X2([ec(n),Tt.XcmV3Junction.AccountKey20({key:e})])}}function dd(n){return n===Li?{parents:0,interior:{type:"Here"}}:{parents:0,interior:Tt.XcmV3Junctions.X1(Tt.XcmV3Junction.AccountKey20({key:n}))}}var Di=require("@galacticcouncil/common"),nc=require("@galacticcouncil/xc-core");function pe(n,e){return ld(e)>=4?(0,Di.encodeLocation)(n):fd(n)}function ld(n){let e=n.toString().replace("V","").replace("v","");return Number(e)}function fd(n){return{type:"Concrete",value:(0,Di.encodeLocation)(n)}}var gd=1e3;function pd(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 hd(n){if(n)return pd(n)?gd:nc.multiloc.findParachain(n)}function sc(n,e,t,s){let a=e.getAssetXcmLocation(n),i=hd(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}"`)}var mn=(i=>(i.v1="V1",i.v2="V2",i.v3="V3",i.v4="V4",i.v5="V5",i))(mn||{}),xt=(a=>(a.Teleport="Teleport",a.LocalReserve="LocalReserve",a.DestinationReserve="DestinationReserve",a.RemoteReserve="RemoteReserve",a))(xt||{});function Ma(n,e){let t="V4",s=pe(ce(e,n),t),a=Ot;return[ve.XcmV4Instruction.ReserveAssetDeposited([{id:ge,fun:ve.XcmV3MultiassetFungibility.Fungible(Se)},{id:s,fun:ve.XcmV3MultiassetFungibility.Fungible(Se)}]),ve.XcmV4Instruction.ClearOrigin(),ve.XcmV4Instruction.BuyExecution({fees:{id:ge,fun:ve.XcmV3MultiassetFungibility.Fungible(Se)},weight_limit:ve.XcmV3WeightLimit.Unlimited()}),ve.XcmV4Instruction.DepositAsset({assets:ve.XcmV4AssetAssetFilter.Wild(ve.XcmV4AssetWildAsset.AllCounted(2)),beneficiary:{parents:0,interior:ve.XcmV3Junctions.X1(Me(Gn))}}),ve.XcmV4Instruction.SetTopic(a)]}var Zt=require("@galacticcouncil/descriptors");function _i(n,e){let t="V4",s=pe(ce(e,n),t),a=Ca("V4",Me(to),Me(Gn),s,Ot);return[Zt.XcmV4Instruction.WithdrawAsset([{id:ge,fun:Zt.XcmV3MultiassetFungibility.Fungible(Se)},{id:s,fun:Zt.XcmV3MultiassetFungibility.Fungible(Se)}]),Zt.XcmV4Instruction.ClearOrigin(),Zt.XcmV4Instruction.BuyExecution({fees:{id:ge,fun:Zt.XcmV3MultiassetFungibility.Fungible(Se)},weight_limit:Zt.XcmV3WeightLimit.Unlimited()}),...a.value]}var V=require("@galacticcouncil/descriptors");function ac(n,e){let t="V4",s=pe(ce(e,n),t),a=Ot;return[V.XcmV4Instruction.WithdrawAsset([{id:s,fun:V.XcmV3MultiassetFungibility.Fungible(Se)}]),V.XcmV4Instruction.ClearOrigin(),V.XcmV4Instruction.BuyExecution({fees:{id:s,fun:V.XcmV3MultiassetFungibility.Fungible(Se)},weight_limit:V.XcmV3WeightLimit.Unlimited()}),V.XcmV4Instruction.DepositAsset({assets:V.XcmV4AssetAssetFilter.Wild(V.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:V.XcmV3Junctions.X1(Me(Gn))}}),V.XcmV4Instruction.SetTopic(a)]}function Fi(n,e){let t="V4",s=pe(ce(e,n),t);return[V.XcmV4Instruction.BuyExecution({fees:{id:s,fun:V.XcmV3MultiassetFungibility.Fungible(Se)},weight_limit:V.XcmV3WeightLimit.Unlimited()}),V.XcmV4Instruction.DepositAsset({assets:V.XcmV4AssetAssetFilter.Wild(V.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:V.XcmV3Junctions.X1(Me(Gn))}})]}function ic(n,e,t){let s="V4",a=pe(ce(e,n),s),i=Ot,r=Fi(n,t);return[V.XcmV4Instruction.WithdrawAsset([{id:a,fun:V.XcmV3MultiassetFungibility.Fungible(Se)}]),V.XcmV4Instruction.ClearOrigin(),V.XcmV4Instruction.BuyExecution({fees:{id:a,fun:V.XcmV3MultiassetFungibility.Fungible(Se)},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 he=require("@galacticcouncil/descriptors");function rc(n,e){let t="V5",s=pe(ce(e,n),t),a={parents:0,interior:he.XcmV5Junctions.X1(he.XcmV5Junction.AccountId32({id:eo,network:void 0}))};return[he.XcmV5Instruction.ReserveAssetDeposited([{id:ge,fun:he.XcmV3MultiassetFungibility.Fungible(Se)}]),he.XcmV5Instruction.PayFees({asset:{id:ge,fun:he.XcmV3MultiassetFungibility.Fungible(Se)}}),he.XcmV5Instruction.ReserveAssetDeposited([{id:s,fun:he.XcmV3MultiassetFungibility.Fungible(Se)}]),he.XcmV5Instruction.ClearOrigin(),he.XcmV5Instruction.DepositAsset({assets:he.XcmV5AssetFilter.Wild(he.XcmV5WildAsset.AllCounted(3)),beneficiary:a}),he.XcmV5Instruction.SetTopic(Ot)]}var oc=[jn.ChainEcosystem.Polkadot,jn.ChainEcosystem.Kusama],yd={parents:1,interior:v.XcmV3Junctions.X1(v.XcmV3Junction.Parachain(1e3))},bd=n=>{let{parents:e,interior:t}=n;return e!==1?!1:t==="Here"||t?.type==="Here"},cc=(n,e)=>!n.ecosystem||!e.ecosystem?!1:oc.includes(n.ecosystem)&&oc.includes(e.ecosystem)&&n.ecosystem!==e.ecosystem,mc=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},wn=(n,e,t)=>{if(cc(e,t))return{type:n,value:Ni(t.ecosystem,t.parachainId)};if(t.parachainId===Zr)return{type:n,value:{parents:1,interior:v.XcmV3Junctions.Here()}};let s=t.key==="ethereum"?An:t.parachainId;return{type:n,value:{parents:1,interior:v.XcmV3Junctions.X1(v.XcmV3Junction.Parachain(s))}}},Ad=n=>n===jn.ChainEcosystem.Kusama?v.XcmV3JunctionNetworkId.Kusama():v.XcmV3JunctionNetworkId.Polkadot(),Ni=(n,e)=>({parents:2,interior:v.XcmV3Junctions.X2([v.XcmV3Junction.GlobalConsensus(Ad(n)),v.XcmV3Junction.Parachain(e)])}),uc=(n,e,t,s)=>{if(cc(e,t)){if(e.parachainId!==An){let a=jn.multiloc.findGlobalConsensus(ce(e,s)),i=typeof a=="string"&&a===t.ecosystem;return{dest:{type:n,value:{parents:1,interior:v.XcmV3Junctions.X1(v.XcmV3Junction.Parachain(An))}},mode:i?"bridge-withdraw":"bridge-deposit"}}if(t.parachainId!==An)return{dest:{type:n,value:Ni(t.ecosystem,An)},mode:"onward"}}},$n=(n,e)=>({type:n,value:{parents:0,interior:v.XcmV3Junctions.X1(e)}}),Xi=(n,e,t)=>e==="RemoteReserve"?{type:"RemoteReserve",value:{type:n,value:bd(t)?yd:t}}:{type:e},Sn=(n,e)=>({id:n,fun:v.XcmV3MultiassetFungibility.Fungible(e)}),dc=(n,e,t)=>({type:n,value:[v.XcmV4Instruction.DepositAsset({assets:v.XcmV4AssetAssetFilter.Wild(v.XcmV4AssetWildAsset.AllCounted(t)),beneficiary:{parents:0,interior:v.XcmV3Junctions.X1(e)}})]}),Ca=(n,e,t,s,a)=>{let i=a;return{type:n,value:[v.XcmV4Instruction.SetAppendix([v.XcmV4Instruction.DepositAsset({assets:v.XcmV4AssetAssetFilter.Wild(v.XcmV4AssetWildAsset.All()),beneficiary:{parents:0,interior:v.XcmV3Junctions.X1(t)}})]),v.XcmV4Instruction.InitiateReserveWithdraw({assets:v.XcmV4AssetAssetFilter.Wild(v.XcmV4AssetWildAsset.AllOf({id:s,fun:v.XcmV2MultiassetWildFungibility.Fungible()})),reserve:ka.ethereumLocation(Mt),xcm:[v.XcmV4Instruction.BuyExecution({fees:{id:xd(s),fun:v.XcmV3MultiassetFungibility.Fungible(1n)},weight_limit:v.XcmV3WeightLimit.Unlimited()}),v.XcmV4Instruction.DepositAsset({assets:v.XcmV4AssetAssetFilter.Wild(v.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:v.XcmV3Junctions.X1(e)}}),v.XcmV4Instruction.SetTopic(i)]}),v.XcmV4Instruction.SetTopic(i)]}},lc=(n,e,t,s,a,i)=>{let r=s==="onward"?{parents:1,interior:v.XcmV3Junctions.X1(v.XcmV3Junction.Parachain(t.parachainId))}:Ni(t.ecosystem,t.parachainId),o={parents:0,interior:v.XcmV3Junctions.X1(e)},c=v.XcmV4AssetAssetFilter.Wild(v.XcmV4AssetWildAsset.AllCounted(1)),m=[v.XcmV4Instruction.BuyExecution({fees:{id:a,fun:v.XcmV3MultiassetFungibility.Fungible(i)},weight_limit:v.XcmV3WeightLimit.Unlimited()}),v.XcmV4Instruction.DepositAsset({assets:c,beneficiary:o})],g=s==="bridge-withdraw"?v.XcmV4Instruction.InitiateReserveWithdraw({assets:c,reserve:r,xcm:m}):v.XcmV4Instruction.DepositReserveAsset({assets:c,dest:r,xcm:m});return{type:n,value:[v.XcmV4Instruction.SetAppendix([v.XcmV4Instruction.DepositAsset({assets:v.XcmV4AssetAssetFilter.Wild(v.XcmV4AssetWildAsset.All()),beneficiary:o})]),g]}},xd=n=>{let e=jn.multiloc.findNestedKey(n,"key");return e?{parents:0,interior:v.XcmV3Junctions.X1(v.XcmV3Junction.AccountKey20({key:e.key}))}:{parents:0,interior:v.XcmV3Junctions.Here()}};var It="PolkadotXcm",wd=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=Me(n),r=a.chain,o=s.chain,c="V4",m=ce(r,t),g=ce(r,s.fee),f=pe(m,c),p=pe(g,c),b=Sn(f,e),w=Sn(p,s.fee.amount),S="limited_reserve_transfer_assets";return new Yn.ExtrinsicConfig({module:It,func:S,getTx:_=>{let k=_.getUnsafeApi().tx[It][S];return t.key===s.fee.key?k({dest:wn(c,r,o),beneficiary:$n(c,i),assets:{type:c,value:[b]},fee_asset_item:0,weight_limit:{type:"Unlimited"}}):Zo(m,g)?k({dest:wn(c,r,o),beneficiary:$n(c,i),assets:{type:c,value:[w,b]},fee_asset_item:0,weight_limit:{type:"Unlimited"}}):k({dest:wn(c,r,o),beneficiary:$n(c,i),assets:{type:c,value:[b,w]},fee_asset_item:1,weight_limit:{type:"Unlimited"}})}})}}),Sd=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=Me(n),r=a.chain,o=s.chain,c="V4",m=pe(ce(r,t),c),g=Sn(m,e),f=wn(c,r,o),p=$n(c,i),b={type:c,value:[g]},w="limited_teleport_assets";return new Yn.ExtrinsicConfig({module:It,func:w,getTx:S=>S.getUnsafeApi().tx[It][w]({dest:f,beneficiary:p,assets:b,fee_asset_item:0,weight_limit:{type:"Unlimited"}})})}}),vd=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=Me(n),r=a.chain,o=s.chain,c=r.xcmVersion??"V4",m=pe(ce(r,t),c),g=Sn(m,e),f=wn(c,r,o),p=$n(c,i),b={type:c,value:[g]},w="reserve_transfer_assets";return new Yn.ExtrinsicConfig({module:It,func:w,getTx:S=>S.getUnsafeApi().tx[It][w]({dest:f,beneficiary:p,assets:b,fee_asset_item:0})})}}),kd=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=Me(n),r=a.chain,o=s.chain,c="V4",m=pe(ce(r,t),c),g=Sn(m,e),f=wn(c,r,o),p=$n(c,i),b={type:c,value:[g]},w="transfer_assets";return new Yn.ExtrinsicConfig({module:It,func:w,getTx:S=>S.getUnsafeApi().tx[It][w]({dest:f,beneficiary:p,assets:b,fee_asset_item:0,weight_limit:{type:"Unlimited"}})})}}),Md=n=>({build:async({address:e,asset:t,amount:s,destination:a,messageId:i,sender:r,source:o})=>{let c="V4",m=o.chain,g=a.chain,f=a.fee.amount,p=a.fee,b=Me(r),w=g.usesCexForwarding?va(m,r,g):e,S=Me(w),{transferType:_}=n,k=pe(ce(m,t),c),O=pe(ce(m,p),c),P=Sn(k,s),W=Sn(O,f),U=t.isEqual(p),T=uc(c,m,g,t),ne=T?.dest??wn(c,m,g),Fe={type:c,value:U?[P]:[W,P]},vt=Xi(c,_,k),nn={type:c,value:U?k:O},ln=Xi(c,_,O),le;if(mc(k)&&a.chain.isEvmChain())le=Ca(c,S,b,k,i);else if(T){let d=fc.big.toBigInt(n.executionFee??a.fee.amount,a.fee.decimals),u=pe(ce(g,t),c);le=lc(c,S,g,T.mode,u,d)}else le=dc(c,S,Fe.value.length);let l="transfer_assets_using_type_and_then";return new Yn.ExtrinsicConfig({module:It,func:l,getTx:d=>d.getUnsafeApi().tx[It][l]({dest:ne,assets:Fe,assets_transfer_type:vt,remote_fees_id:nn,fees_transfer_type:ln,custom_xcm_on_dest:le,weight_limit:{type:"Unlimited"}})})}});function Cd(n){let e=t=>({build:async s=>{let a=t(s),i="execute";return new Yn.ExtrinsicConfig({module:It,func:i,getTx:r=>r.getUnsafeApi().tx[It][i]({message:a,max_weight:{ref_time:20000000000n,proof_size:500000n}})})}});return n?e(n):{viaSnowbridge:()=>e(ro)}}var Vi=()=>({limitedReserveTransferAssets:wd,limitedTeleportAssets:Sd,reserveTransferAssets:vd,transferAssets:kd,transferAssetsUsingTypeAndThen:Md,execute:Cd});var hc=require("@galacticcouncil/xc-core"),yc=require("@galacticcouncil/common");var Ws=require("@galacticcouncil/descriptors"),gc=(n,e,t)=>e.parachainId===0?{type:n,value:{parents:1,interior:Ws.XcmV3Junctions.X1(t)}}:{type:n,value:{parents:1,interior:Ws.XcmV3Junctions.X2([Ws.XcmV3Junction.Parachain(e.parachainId),t])}};var pc="XTokens",Td=()=>({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?va(r,a,o):n,g=Me(m),f=r.getAssetId(t),p=(0,yc.encodeAssetId)(f),b="transfer";return new hc.ExtrinsicConfig({module:pc,func:b,getTx:w=>w.getUnsafeApi().tx[pc][b]({currency_id:p,amount:e,dest:gc(c,o,g),dest_weight_limit:{type:"Unlimited"}})})}}),Oi=()=>({transfer:Td});function x(){return{assetConversion:Do,assets:Fo,balances:Vo,evm:Uo,polkadotXcm:Vi,router:qo,utility:$o,xTokens:Oi}}function un(n,e){return{prior:function(t){return{build:async s=>n(s)?x().utility().batchAll([e,t]).build(s):t.build(s)}},priorMulti:function(t){return{build:async s=>n(s)?x().utility().batchAll([e,...t]).build(s):x().utility().batchAll([...t]).build(s)}}}}var wt=require("@galacticcouncil/xc-core");var bc=80000n,Ac=120000n,xc=100000n,wc=2000000n,Wi=15000000000000n;function Id(){return{calculateInboundFee:n=>({build:async({feeAsset:e,destination:t})=>{let s=t,a=new Ze(s),i=new ot(n.hub),r=Ma(e,s),o=rc(e,s),c=Ss(Mt),m=250000000n,g=io(Mt,s.parachainId),[f,p,b,w]=await Promise.all([a.calculateDestinationFeeV5(o,E),i.calculateDeliveryFee(r,s.parachainId),i.calculateDeliveryFee(r,fa),i.calculateDestinationFeeV5(g,E)]),S=we(f,33n),_=we(p,33n),k=we(b,33n),P=we(w,33n)+_,W=S,U=await i.quoteEtherForDot(c,P),T=we(U,30n),ne=T<Wi*2n?Wi*2n:T,Fe=we(await i.quoteEtherForDot(c,W),100n),vt=we(await i.quoteDotToEther(c,m+k),30n);return{amount:ne+vt+Fe,breakdown:{executionFee:ne,relayerFee:vt,remoteEtherFee:Fe,hydrationDotFee:W}}}}),calculateOutboundFee:n=>({build:async({transferAsset:e,feeAsset:t,source:s,destination:a})=>{let i=s,r=a,o=new ot(n.hub),c=Ss(Mt),m=_i(e,i),[g,f,p]=await Promise.all([o.getBridgeDeliveryFee(),o.calculateDeliveryFee(m,fa),o.calculateDestinationFee(m,t)]),b=await r.evmClient.getProvider().getGasPrice(),w=wc+Ac+bc+xc,S=b*w,_=we(S,10n),k=g+we(f,33n)+we(p,33n),O=we(await o.quoteDotForExactEther(c,_),20n),P=new Ze(i),W=Si({tokenAddress:"0x0000000000000000000000000000000000000000",senderPubKey:"0x"+"00".repeat(32),beneficiaryHex:"0x"+"00".repeat(20),tokenAmount:1000000000000n,sourceExecutionFee:1000000000n,dotRemoteFee:1000000000n,dotToEtherSwapAmount:1000000000n,etherFeeAmount:1000000000n,topic:Ot}),U=we(await P.calculateDestinationFeeV5(W,E),33n);return{amount:k+O+U,breakdown:{dotRemoteFee:k,dotToEtherSwapAmount:O,etherFeeAmount:_,sourceExecutionFee:U}}}}),calculateInboundFeeV1:n=>({build:async({feeAsset:e,destination:t,source:s})=>{let a=s,i=t,r=wt.Snowbridge.fromChain(a),o=new Ct(i),c=new ot(n.hub),m=Ma(e,i),[g,f]=await Promise.all([o.calculateDestinationFee(m,E),c.calculateDeliveryFee(m,i.parachainId)]),p=f+we(g,25n),b=a.getAssetId(e);return{amount:await a.evmClient.getProvider().readContract({abi:wt.Abi.Snowbridge,address:r.getGateway(),args:[b,i.parachainId,p],functionName:"quoteSendTokenFee"}),breakdown:{bridgeFeeInDot:p}}}}),calculateOutboundFeeV1:n=>({build:async({transferAsset:e,feeAsset:t,source:s})=>{let a=s,i=new ot(n.hub),r=_i(e,a),o=Ma(e,a),[c,m,g,f,p]=await Promise.all([i.getBridgeDeliveryFeeV1(),i.calculateDeliveryFee(r,fa),i.calculateDestinationFee(r,t),i.calculateDeliveryFee(o,a.parachainId),i.calculateDestinationFee(o,t)]);return{amount:c+m+we(g,25n)+f+we(p,25n),breakdown:{bridgeDeliveryFee:c,bridgeHubDeliveryFee:m,assetHubDestinationFee:g,returnToSenderDeliveryFee:f,returnToSenderDestinationFee:p}}}})}}function Pd(){return{calculateDestFee:n=>({build:async({feeAsset:e,source:t,destination:s})=>{let a=t,i=s,r=n?.reserve;if(sc(e,a,i,r),r){let p=new Ct(i),b=new Ct(r),w=Fi(e,i),S=ic(e,r,i),[_,k]=await Promise.all([p.calculateDestinationFee(w,e),b.calculateDestinationFee(S,e)]),O=k+_,P=we(O,20n),W=P-O;return{amount:P,breakdown:{reserveFee:k,destinationFee:_,margin:W}}}let o=new Ct(i),c=ac(e,i),m=await o.calculateDestinationFee(c,e),g=we(m,20n),f=g-m;return{amount:g,breakdown:{totalFee:m,margin:f}}}})}}function Ed(){return{quoteExecutorCost:()=>({build:async({address:n,destinationAsset:e,transferAsset:t,source:s,destination:a})=>{let i=s,r=wt.Ntt.fromChain(i,t),o=wt.Wormhole.fromChain(i),c=wt.Wormhole.fromChain(a),m=await Jt(a,e).getRedeemBudget(n),[g,f]=await Promise.all([i.evmClient.getProvider().readContract({abi:wt.Abi.NttManager,address:r.manager,args:[c.getWormholeId(),Ds],functionName:"quoteDeliveryPrice"}),Ms.quote(o.getWormholeId(),c.getWormholeId(),m)]);return{amount:g[1]+f.estimatedCost,breakdown:{deliveryPrice:g[1],executorCost:f.estimatedCost}}}})}}function Bd(){return{quoteFee:()=>({build:async({feeAsset:n,source:e})=>{let t=e,s=wt.Basejump.fromChain(t),a=t.getAssetId(n);return{amount:await t.evmClient.getProvider().readContract({abi:wt.Abi.Basejump,address:s.getAddress(),args:[a],functionName:"quoteFee"})}}})}}function D(){return{Basejump:Bd,XcmPaymentApi:Pd,Snowbridge:Id,Wormhole:Ed}}function Rd(){return{build:async({address:n,chain:e})=>{let s=await new Ze(e).getFeeAsset(n),a=e.findAssetById(s);return a?a.asset:me}}}var Ld=()=>({accountCurrencyMap:Rd});function Hs(){return{multiTransactionPayment:Ld}}var mt=require("@galacticcouncil/xc-core");var Dd=()=>({build:async n=>{let{address:e,amount:t,asset:s,source:a,destination:i}=n,r=a.chain,o=i.chain,c=mt.Ntt.fromChain(r,s),m=mt.Wormhole.fromChain(o),g=e;o instanceof mt.EvmParachain&&(g=await o.getDerivatedAddress(e));let f=da(t,r.getAssetDecimals(s)??0,ha),p={recipient_chain:m.getWormholeId(),recipient:m.normalizeAddress(g)};return[new mt.FunctionCallConfig({receiverId:c.token,args:{receiver_id:c.manager,amount:f.toString(),msg:JSON.stringify(p)},gas:mt.NearGas.transfer,deposit:mt.NearDeposit.oneYocto,wrapNative:r.getBalanceType(s)===mt.NearBalanceType.Native,func:"ft_transfer_call",module:"NttManager"})]}}),Sc=()=>({transfer:Dd});function vc(){return{Ntt:Sc}}function Hi(){return{Wormhole:vc}}var ut=require("@galacticcouncil/xc-core"),kc=require("@mysten/sui/transactions"),Ta=require("@mysten/sui/utils"),Mc=require("@wormhole-foundation/sdk-base"),_d=()=>({build:async n=>{let{address:e,amount:t,asset:s,source:a,destination:i}=n,r=a.chain,o=i.chain,c=ut.Ntt.fromChain(r,s),m=ut.Wormhole.fromChain(r),g=ut.Wormhole.fromChain(o),f=r.client,p=e;o instanceof ut.EvmParachain&&(p=await o.getDerivatedAddress(e));let b=Mc.encoding.hex.decode(g.normalizeAddress(p)),w=m.getCoreBridge(),S=c.manager,_=c.transceiver.wormhole,k=c.token,[O,P,W,U]=await Promise.all([ut.suiPkg.getWormholePackageId(f,w),ut.suiPkg.getCurrentPackageId(f,S),ut.suiPkg.getCurrentPackageId(f,_),ut.suiPkg.getCoinMetadataId(f,k)]),T=new kc.Transaction,[ne]=T.splitCoins(T.gas,[T.pure.u64(t)]),[Fe]=T.moveCall({target:`${P}::upgrades::new_version_gated`,arguments:[]}),[vt,nn]=T.moveCall({target:`${P}::ntt::prepare_transfer`,typeArguments:[k],arguments:[T.object(S),ne,T.object(U),T.pure.u16(g.getWormholeId()),T.pure.vector("u8",Array.from(b)),T.pure.option("vector<u8>",null),T.pure.bool(!1)]}),[ln]=T.moveCall({target:`${P}::state::get_next_sequence`,typeArguments:[k],arguments:[T.object(S)]});T.moveCall({target:`${P}::ntt::transfer_tx_sender`,typeArguments:[k],arguments:[T.object(S),Fe,T.object(U),vt,T.object(Ta.SUI_CLOCK_OBJECT_ID)]});let[le]=T.moveCall({target:`${P}::state::create_transceiver_message`,typeArguments:[`${W}::wormhole_transceiver::TransceiverAuth`,k],arguments:[T.object(S),ln,T.object(Ta.SUI_CLOCK_OBJECT_ID)]}),[l]=T.moveCall({target:`${W}::wormhole_transceiver::release_outbound`,typeArguments:[`${P}::auth::ManagerAuth`],arguments:[T.object(_),le]}),[d]=T.splitCoins(T.gas,[T.pure.u64(0n)]);T.moveCall({target:`${O}::publish_message::publish_message`,arguments:[T.object(w),d,l,T.object(Ta.SUI_CLOCK_OBJECT_ID)]});let[u]=T.moveCall({target:"0x2::coin::from_balance",typeArguments:[k],arguments:[nn]});return T.mergeCoins(T.gas,[u]),[new ut.MoveConfig({transaction:T,func:"transfer",module:"NttManager"})]}}),Cc=()=>({transfer:_d});function Tc(){return{Ntt:Cc}}function Ui(){return{Wormhole:Tc}}var Pt=require("@galacticcouncil/xc-core"),dm=require("@solana/spl-token"),Na=require("@solana/web3.js"),lm=require("@wormhole-foundation/sdk-base"),fm=require("@wormhole-foundation/sdk-definitions"),gm=require("@wormhole-foundation/sdk-solana"),LA=require("@wormhole-foundation/sdk-definitions-ntt");async function Xd(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 Vd(n,e,t){let s=await Xd(n,e),a="message"in e?Na.TransactionMessage.decompile(e.message,{addressLookupTableAccounts:s}).instructions:e.instructions;return new Pt.ProgramConfig({instructions:a,signers:t,lookupTables:s,func:"transfer",module:"NttManager"})}var Od=()=>({build:async n=>{let{address:e,amount:t,asset:s,sender:a,source:i,destination:r}=n,o=i.chain,c=r.chain,m=Pt.Ntt.fromChain(o,s),g=Pt.Wormhole.fromChain(o),f=Pt.Wormhole.fromChain(c),p=e;c instanceof Pt.EvmParachain&&(p=await c.getDerivatedAddress(e));let{SolanaNtt:b}=await Promise.resolve().then(()=>(um(),mm)),w=new b("Mainnet","Solana",o.connection,{coreBridge:g.getCoreBridge(),ntt:{manager:m.manager,token:m.token,transceiver:{wormhole:m.transceiver.wormhole}}}),S=o.getBalanceType(s)===Pt.SolanaBalanceType.Native,_=Na.Keypair.generate(),k=[];for await(let W of w.transfer(new gm.SolanaAddress(a),t,{chain:(0,lm.toChain)(f.getWormholeId()),address:new fm.UniversalAddress(f.normalizeAddress(p))},{queue:!1,automatic:!1,wrapNative:S},_)){let{transaction:U,signers:T}=W.transaction;k.push(await Vd(o.connection,U,T??[]))}let O=S?BigInt(await(0,dm.getMinimumBalanceForRentExemptAccount)(o.connection)):0n,P=k[k.length-1];return[...k.slice(0,-1),new Pt.ProgramConfig({instructions:P.instructions,signers:P.signers,lookupTables:P.lookupTables,rentReserve:O,func:"transfer",module:"NttManager"})]}}),pm=()=>({transfer:Od});function hm(){return{Ntt:pm}}function nr(){return{Wormhole:hm}}var ar={};fn(ar,{Tag:()=>Ut});var Ut=(o=>(o.Basejump="Basejump",o.Ntt="Ntt",o.NttExecutor="NttExecutor",o.Wormhole="Wormhole",o.Relayer="Relayer",o.Snowbridge="Snowbridge",o.SnowbridgeV1="SnowbridgeV1",o))(Ut||{});function ym(n,e){return new ir.AssetRoute({source:{asset:n,fee:{asset:C}},destination:{chain:A,asset:e,fee:{amount:0,asset:n}},contract:J().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function bm(n,e){return new ir.AssetRoute({source:{asset:n,fee:{asset:C}},destination:{chain:A,asset:e,fee:{amount:D().Wormhole().quoteExecutorCost(),asset:C,prepaid:!0}},contract:J().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}var Wd=[ym(Rt,zt)],Hd=[bm(Rt,zt)],xm=new Am.ChainRoutes({chain:Ln,routes:[...Wd,...Hd]});var ta=require("@galacticcouncil/xc-core");var es=require("@galacticcouncil/xc-core");function Tn(n,e){return new es.AssetRoute({source:{asset:n,fee:{asset:C}},destination:{chain:A,asset:e,fee:{amount:0,asset:n}},contract:J().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function ts(n,e){return new es.AssetRoute({source:{asset:n,fee:{asset:C}},destination:{chain:A,asset:e,fee:{amount:D().Wormhole().quoteExecutorCost(),asset:C,prepaid:!0}},contract:J().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}function wm(n,e){return new es.AssetRoute({source:{asset:n,fee:{asset:C}},destination:{chain:A,asset:e,fee:{amount:0,asset:n}},contract:J().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}function De(n,e){return new es.AssetRoute({source:{asset:n,fee:{asset:C}},destination:{chain:A,asset:e,fee:{amount:D().Snowbridge().calculateInboundFee({hub:X}),asset:C}},contract:J().Snowbridge().v2SendMessage(),tags:["Snowbridge"]})}function _e(n,e){return new es.AssetRoute({source:{asset:n,fee:{asset:C}},destination:{chain:A,asset:e,fee:{amount:D().Snowbridge().calculateInboundFeeV1({hub:X}),asset:C}},contract:J().Snowbridge().sendToken(),tags:["Snowbridge","SnowbridgeV1"]})}function Sm(n,e){return new es.AssetRoute({source:{asset:n,fee:{asset:C},destinationFee:n},destination:{chain:A,asset:e,fee:{amount:D().Basejump().quoteFee(),asset:n}},contract:J().Basejump().bridgeViaWormhole(),tags:["Basejump"]})}var Ud=[Tn(Bt,qt),Tn(pt,jt),Tn(L,Ft),Tn(I,$t),Tn(ht,Yt),Tn(Re,ie),Tn(C,ie)],Kd=[ts(Bt,qt),ts(pt,jt),ts(L,Ft),ts(I,$t),ts(ht,Yt),ts(Re,ie),wm(C,ie)],Gd=[Sm(L,Ft)],qd=[new ta.AssetRoute({source:{asset:C,fee:{asset:C}},destination:{chain:A,asset:C,fee:{amount:D().Snowbridge().calculateInboundFee({hub:X}),asset:C}},contract:J().Snowbridge().v2SendMessage(),tags:["Snowbridge"]}),De(Xe,Xe),De(Ve,Ve),De(Oe,Oe),De(We,We),De(Ge,Ge),De($e,$e),De(Ye,Ye),De(Ue,Ue),De(He,He),De(Ke,Ke),De(qe,qe),De(Qe,Qe),De(Je,Je),De(L,an),De(I,sn)],zd=[new ta.AssetRoute({source:{asset:C,fee:{asset:C}},destination:{chain:A,asset:C,fee:{amount:D().Snowbridge().calculateInboundFeeV1({hub:X}),asset:C}},contract:J().Snowbridge().sendToken(),tags:["Snowbridge","SnowbridgeV1"]}),_e(Xe,Xe),_e(Ve,Ve),_e(Oe,Oe),_e(We,We),_e(Ge,Ge),_e($e,$e),_e(Ye,Ye),_e(Ue,Ue),_e(He,He),_e(Ke,Ke),_e(qe,qe),_e(Qe,Qe),_e(Je,Je),_e(L,an),_e(I,sn)],vm=new ta.ChainRoutes({chain:B,routes:[...Ud,...Kd,...Gd,...qd,...zd]});var Cm=require("@galacticcouncil/xc-core");var Xa=require("@galacticcouncil/xc-core");function rr(n,e){return new Xa.AssetRoute({source:{asset:n,fee:{asset:Y}},destination:{chain:A,asset:e,fee:{amount:0,asset:n}},contract:J().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function km(n,e){return new Xa.AssetRoute({source:{asset:n,fee:{asset:Y}},destination:{chain:A,asset:e,fee:{amount:D().Wormhole().quoteExecutorCost(),asset:Y,prepaid:!0}},contract:J().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}function Mm(n,e){return new Xa.AssetRoute({source:{asset:n,fee:{asset:Y}},destination:{chain:A,asset:e,fee:{amount:0,asset:n}},contract:J().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}var jd=[rr(Y,Y),rr(Bn,Y)],$d=[Mm(Y,Y),km(Bn,Y)],Tm=new Cm.ChainRoutes({chain:_n,routes:[...jd,...$d]});var Pm=require("@galacticcouncil/xc-core");var Va=require("@galacticcouncil/xc-core");function Ps(n,e){return new Va.AssetRoute({source:{asset:n,fee:{asset:C}},destination:{chain:A,asset:e,fee:{amount:0,asset:n}},contract:J().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function na(n,e){return new Va.AssetRoute({source:{asset:n,fee:{asset:C}},destination:{chain:A,asset:e,fee:{amount:D().Wormhole().quoteExecutorCost(),asset:C,prepaid:!0}},contract:J().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}function Im(n,e){return new Va.AssetRoute({source:{asset:n,fee:{asset:C}},destination:{chain:A,asset:e,fee:{amount:0,asset:n}},contract:J().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}var Yd=[Ps(me,me),Ps(be,be),Ps(ke,ke),Ps(Re,ie),Ps(C,ie)],Qd=[na(me,me),na(be,be),na(ke,ke),na(Re,ie),Im(C,ie)],Em=new Pm.ChainRoutes({chain:bt,routes:[...Yd,...Qd]});var Bm=[xm,vm,Tm,Em];var In=require("@galacticcouncil/xc-core");var Oa=require("@galacticcouncil/xc-core");var ns=0,Jd=n=>{let{source:e}=n;return!!e.feeSwap},Zd=n=>{let{source:e}=n,{enabled:t}=e.destinationFeeSwap||{};return!!t},Rm=x().assetConversion().swapTokensForExactTokens({slippage:30});function el(n,e,t){return new Oa.AssetRoute({source:{asset:n,fee:{asset:E,extra:ns}},destination:{chain:e,asset:n,fee:{amount:t,asset:I}},extrinsic:un(Zd,Rm).prior(x().polkadotXcm().limitedReserveTransferAssets())})}function Wa(n,e,t){return new Oa.AssetRoute({source:{asset:n,fee:{asset:n,swap:!n.isEqual(E)}},destination:{chain:e,asset:n,fee:{amount:t,asset:n}},extrinsic:un(Jd,Rm).prior(x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"}))})}function sa(n,e,t){return new Oa.AssetRoute({source:{asset:n,fee:{asset:E,extra:ns}},destination:{chain:e,asset:n,fee:{amount:t,asset:n}},extrinsic:x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})})}function Ha(n){return el(n,A,.02)}var tl=[new In.AssetRoute({source:{asset:E,fee:{asset:E,extra:ns}},destination:{chain:A,asset:E,fee:{amount:.001,asset:E}},extrinsic:x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),new In.AssetRoute({source:{asset:N,fee:{asset:E,extra:ns}},destination:{chain:A,asset:N,fee:{amount:1e-4,asset:N}},extrinsic:x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),sa(I,A,.02),sa(L,A,.02),Ha(rn)],nl=[new In.AssetRoute({source:{asset:N,fee:{asset:E,extra:ns}},destination:{chain:Xt,asset:N,fee:{amount:.001,asset:N}},extrinsic:x().polkadotXcm().transferAssets()})],sl=[sa(I,re,.03),sa(L,re,.03)],al=[new In.AssetRoute({source:{asset:ae,fee:{asset:E,extra:ns}},destination:{chain:hn,asset:ae,fee:{amount:2.5,asset:ae}},extrinsic:x().polkadotXcm().limitedTeleportAssets()})],Lm=new In.ChainRoutes({chain:pn,routes:[Wa(I,A,.02),Wa(L,A,.02),Wa(E,A,.001)]}),Dm=new In.ChainRoutes({chain:X,routes:[...tl,...nl,...sl,...al]});var Kt=require("@galacticcouncil/xc-core");var il=[new Kt.AssetRoute({source:{asset:j},destination:{chain:A,asset:j,fee:{amount:.044306118,asset:j}},extrinsic:x().polkadotXcm().reserveTransferAssets()}),new Kt.AssetRoute({source:{asset:K,fee:{asset:j}},destination:{chain:A,asset:K,fee:{amount:D().XcmPaymentApi().calculateDestFee({reserve:re}),asset:K}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new Kt.AssetRoute({source:{asset:oe,fee:{asset:j}},destination:{chain:A,asset:oe,fee:{amount:2e-6,asset:oe}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new Kt.AssetRoute({source:{asset:ft,fee:{asset:j}},destination:{chain:A,asset:ft,fee:{amount:.01,asset:ft}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new Kt.AssetRoute({source:{asset:xe,fee:{asset:j}},destination:{chain:A,asset:xe,fee:{amount:D().XcmPaymentApi().calculateDestFee({reserve:re}),asset:xe}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new Kt.AssetRoute({source:{asset:Ae,fee:{asset:j}},destination:{chain:A,asset:Ae,fee:{amount:D().XcmPaymentApi().calculateDestFee({reserve:re}),asset:Ae}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new Kt.AssetRoute({source:{asset:I,fee:{asset:j}},destination:{chain:A,asset:I,fee:{amount:D().XcmPaymentApi().calculateDestFee({reserve:X}),asset:I}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new Kt.AssetRoute({source:{asset:L,fee:{asset:j}},destination:{chain:A,asset:L,fee:{amount:D().XcmPaymentApi().calculateDestFee({reserve:X}),asset:L}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()})],_m=new Kt.ChainRoutes({chain:Le,routes:[...il]});var St=require("@galacticcouncil/xc-core");var rl=[new St.AssetRoute({source:{asset:K},destination:{chain:A,asset:K,fee:{amount:D().XcmPaymentApi().calculateDestFee(),asset:K}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new St.AssetRoute({source:{asset:xe,fee:{asset:K}},destination:{chain:A,asset:xe,fee:{amount:D().XcmPaymentApi().calculateDestFee(),asset:xe}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new St.AssetRoute({source:{asset:Ae,fee:{asset:K}},destination:{chain:A,asset:Ae,fee:{amount:D().XcmPaymentApi().calculateDestFee(),asset:Ae}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new St.AssetRoute({source:{asset:E,fee:{asset:K}},destination:{chain:A,asset:E,fee:{amount:D().XcmPaymentApi().calculateDestFee({reserve:X}),asset:E}},extrinsic:x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"RemoteReserve"})}),new St.AssetRoute({source:{asset:j,fee:{asset:K}},destination:{chain:A,asset:j,fee:{amount:D().XcmPaymentApi().calculateDestFee({reserve:Le}),asset:j}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new St.AssetRoute({source:{asset:oe,fee:{asset:K}},destination:{chain:A,asset:oe,fee:{amount:625e-8,asset:oe}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new St.AssetRoute({source:{asset:I,fee:{asset:K}},destination:{chain:A,asset:I,fee:{amount:D().XcmPaymentApi().calculateDestFee({reserve:X}),asset:I}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new St.AssetRoute({source:{asset:L,fee:{asset:K}},destination:{chain:A,asset:L,fee:{amount:D().XcmPaymentApi().calculateDestFee({reserve:X}),asset:L}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()})],ol=[new St.AssetRoute({source:{asset:I,fee:{asset:K}},destination:{chain:X,asset:I,fee:{amount:D().XcmPaymentApi().calculateDestFee(),asset:I}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new St.AssetRoute({source:{asset:L,fee:{asset:K}},destination:{chain:X,asset:L,fee:{amount:D().XcmPaymentApi().calculateDestFee(),asset:L}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()})],Fm=new St.ChainRoutes({chain:re,routes:[...rl,...ol]});var tn=require("@galacticcouncil/xc-core");var Te=()=>({asset:Hs().multiTransactionPayment().accountCurrencyMap()});var dn=require("@galacticcouncil/xc-core");var cl=.02,Ua=n=>{let{source:e}=n,{enabled:t}=e.destinationFeeSwap||{};return!!t},Ka=x().router().buy({slippage:30});function tt(n,e,t){return new dn.AssetRoute({source:{asset:n,fee:Te()},destination:{chain:e,asset:n,fee:{amount:D().XcmPaymentApi().calculateDestFee(t?{reserve:t}:void 0),asset:n}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()})}function Pn(n,e){return new dn.AssetRoute({source:{asset:n,fee:Te()},destination:{chain:e,asset:n,fee:{amount:D().XcmPaymentApi().calculateDestFee(),asset:n}},extrinsic:x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})})}function Ga(n){return new dn.AssetRoute({source:{asset:n,fee:Te()},destination:{chain:X,asset:n,fee:{amount:cl,asset:I}},extrinsic:un(Ua,Ka).prior(x().polkadotXcm().limitedReserveTransferAssets())})}function or(n,e,t){return new dn.AssetRoute({source:{asset:n,fee:Te()},destination:{chain:Xt,asset:n,fee:{amount:e,asset:n}},extrinsic:x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve",executionFee:t})})}function ye(n,e,t){let s=J().Wormhole().Ntt().transfer();return new dn.AssetRoute({source:{asset:n,fee:Te()},destination:{chain:t,asset:e,fee:{amount:0,asset:n}},contract:s,extrinsic:x().evm().call(s),tags:["Wormhole","Ntt"]})}function Ie(n,e,t){let s=J().Wormhole().Ntt().transferViaExecutor();return new dn.AssetRoute({source:{asset:n,fee:Te()},destination:{chain:t,asset:e,fee:{amount:D().Wormhole().quoteExecutorCost(),asset:ie,prepaid:!0}},contract:s,extrinsic:un(Ua,Ka).prior(x().evm().call(s)),tags:["Wormhole","Ntt","NttExecutor"]})}function Pe(n,e,t){return new dn.AssetRoute({source:{asset:n,fee:Te()},destination:{chain:t,asset:e,fee:{amount:D().Snowbridge().calculateOutboundFee({hub:X}),asset:E}},extrinsic:un(Ua,Ka).prior(x().polkadotXcm().execute().viaSnowbridge()),tags:["Snowbridge"]})}function Ee(n,e,t){return new dn.AssetRoute({source:{asset:n,fee:Te()},destination:{chain:t,asset:e,fee:{amount:D().Snowbridge().calculateOutboundFeeV1({hub:X}),asset:E}},extrinsic:un(Ua,Ka).prior(x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})),tags:["Snowbridge","SnowbridgeV1"]})}var ml=[Pn(E,X),Pn(N,X),Pn(I,X),Pn(L,X),Ga(rn)],ul=[or(N,.05,.005),or(E,.2,.02)],dl=[tt(j,Le),tt(K,Le,re),new tn.AssetRoute({source:{asset:oe,fee:Te()},destination:{chain:Le,asset:oe,fee:{amount:2e-6,asset:oe}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),new tn.AssetRoute({source:{asset:ft,fee:Te()},destination:{chain:Le,asset:ft,fee:{amount:.01,asset:ft}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),tt(xe,Le,re),tt(Ae,Le,re),tt(I,Le,X),tt(L,Le,X)],ll=[tt(K,re),tt(xe,re),tt(Ae,re),tt(j,re,Le),new tn.AssetRoute({source:{asset:oe,fee:Te()},destination:{chain:re,asset:oe,fee:{amount:5e-6,asset:oe}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()}),tt(I,re,X),tt(L,re,X),new tn.AssetRoute({source:{asset:E,fee:Te()},destination:{chain:re,asset:E,fee:{amount:D().XcmPaymentApi().calculateDestFee({reserve:X}),asset:E}},extrinsic:x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"RemoteReserve"})})],fl=[new tn.AssetRoute({source:{asset:ae,fee:Te()},destination:{chain:hn,asset:ae,fee:{amount:2.5,asset:ae}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()})],gl=[tt(_t,ls)],pl=[new tn.AssetRoute({source:{asset:it,fee:Te()},destination:{chain:fs,asset:it,fee:{amount:.02,asset:it}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()})],hl=[new tn.AssetRoute({source:{asset:gt,fee:Te()},destination:{chain:ms,asset:gt,fee:{amount:1.1,asset:gt}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()})],yl=[tt(Dt,cs)],bl=[ye(qt,Bt,B),ye(jt,pt,B),ye(Ft,L,B),ye($t,I,B),ye(Yt,ht,B),ye(ie,C,B)],Al=[ye(zt,Rt,Ln)],xl=[ye(Y,Y,_n)],wl=[ye(me,me,bt),ye(be,be,bt),ye(ke,ke,bt),ye(ie,C,bt)],Sl=[ye(ze,ze,Nt),ye(at,at,Nt),ye(rt,rt,Nt)],vl=[ye(je,je,Wn)],kl=[Ie(qt,Bt,B),Ie(jt,pt,B),Ie(Ft,L,B),Ie($t,I,B),Ie(Yt,ht,B),Ie(ie,C,B),Ie(zt,Rt,Ln),Ie(Y,Y,_n),Ie(me,me,bt),Ie(be,be,bt),Ie(ke,ke,bt),Ie(ie,C,bt),Ie(ze,is,Nt),Ie(at,at,Nt),Ie(rt,rt,Nt),Ie(je,je,Wn)],Ml=[Pe(C,C,B),Pe(Xe,Xe,B),Pe(Ve,Ve,B),Pe(Oe,Oe,B),Pe(We,We,B),Pe(Ge,Ge,B),Pe($e,$e,B),Pe(Ye,Ye,B),Pe(Qe,Qe,B),Pe(Ue,Ue,B),Pe(He,He,B),Pe(Ke,Ke,B),Pe(qe,qe,B),Pe(Je,Je,B),Pe(an,L,B),Pe(sn,I,B)],Cl=[Ee(C,C,B),Ee(Xe,Xe,B),Ee(Ve,Ve,B),Ee(Oe,Oe,B),Ee(We,We,B),Ee(Ge,Ge,B),Ee($e,$e,B),Ee(Ye,Ye,B),Ee(Qe,Qe,B),Ee(Ue,Ue,B),Ee(He,He,B),Ee(Ke,Ke,B),Ee(qe,qe,B),Ee(Je,Je,B),Ee(an,L,B),Ee(sn,I,B)],Tl=[Pn(E,pn),Pn(I,pn),Pn(L,pn)],Nm=new tn.ChainRoutes({chain:A,routes:[...ml,...dl,...ll,...Tl,...Al,...bl,...Ml,...xl,...wl,...Sl,...vl,...kl,...Cl,...pl,...ul,...fl,...yl,...hl,...gl]});var aa=require("@galacticcouncil/xc-core");var Il=[new aa.AssetRoute({source:{asset:ae},destination:{chain:A,asset:ae,fee:{amount:.01,asset:ae}},extrinsic:x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})})],Pl=[new aa.AssetRoute({source:{asset:ae},destination:{chain:X,asset:ae,fee:{amount:.1,asset:ae}},extrinsic:x().polkadotXcm().limitedTeleportAssets()})],Xm=new aa.ChainRoutes({chain:hn,routes:[...Il,...Pl]});var qa=require("@galacticcouncil/xc-core");var El=[new qa.AssetRoute({source:{asset:_t},destination:{chain:A,asset:_t,fee:{amount:D().XcmPaymentApi().calculateDestFee(),asset:_t}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()})],Vm=new qa.ChainRoutes({chain:ls,routes:[...El]});var za=require("@galacticcouncil/xc-core");var Bl=[new za.AssetRoute({source:{asset:gt},destination:{chain:A,asset:gt,fee:{amount:.2,asset:gt}},extrinsic:x().polkadotXcm().reserveTransferAssets()})],Om=new za.ChainRoutes({chain:ms,routes:[...Bl]});var ja=require("@galacticcouncil/xc-core");var Rl=[new ja.AssetRoute({source:{asset:it,fee:{asset:it,extra:.030555}},destination:{chain:A,asset:it,fee:{amount:.03,asset:it}},extrinsic:x().polkadotXcm().reserveTransferAssets()})],Wm=new ja.ChainRoutes({chain:fs,routes:[...Rl]});var $a=require("@galacticcouncil/xc-core");var Ll=[new $a.AssetRoute({source:{asset:Dt},destination:{chain:A,asset:Dt,fee:{amount:.205,asset:Dt}},extrinsic:x().polkadotXcm().reserveTransferAssets()})],Hm=new $a.ChainRoutes({chain:cs,routes:[...Ll]});var Um=[Dm,Lm,_m,Fm,Nm,Xm,Hm,Vm,Om,Wm];var Ya=require("@galacticcouncil/xc-core");function cr(n){return new Ya.AssetRoute({source:{asset:n,fee:{asset:ze}},destination:{chain:A,asset:n,fee:{amount:0,asset:n}},program:nr().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}var Dl=[cr(ze),cr(at),cr(rt)],Km=new Ya.ChainRoutes({chain:Nt,routes:[...Dl]});var Gm=[Km];var Qa=require("@galacticcouncil/xc-core");function _l(n){return new Qa.AssetRoute({source:{asset:n,fee:{asset:je}},destination:{chain:A,asset:n,fee:{amount:0,asset:n}},move:Ui().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}var Fl=[_l(je)],qm=new Qa.ChainRoutes({chain:Wn,routes:[...Fl]});var zm=[qm];var ss=require("@galacticcouncil/xc-core");var Nl=require("@galacticcouncil/xc-core");var ia=.0015;var Xl=new ss.AssetRoute({source:{asset:N,fee:{asset:N,extra:ia}},destination:{chain:X,asset:N,fee:{amount:.002,asset:N}},extrinsic:x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),Vl=new ss.AssetRoute({source:{asset:N,fee:{asset:N,extra:ia}},destination:{chain:hs,asset:N,fee:{amount:.0012,asset:N}},extrinsic:x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),Ol=[new ss.AssetRoute({source:{asset:N,fee:{asset:N,extra:ia}},destination:{chain:A,asset:N,fee:{amount:.04,asset:N}},extrinsic:x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve",executionFee:.005})}),new ss.AssetRoute({source:{asset:E,fee:{asset:N,extra:ia}},destination:{chain:A,asset:E,fee:{amount:.15,asset:E}},extrinsic:x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve",executionFee:.01})})],jm=new ss.ChainRoutes({chain:Xt,routes:[Vl,Xl,...Ol]});var ra=require("@galacticcouncil/xc-core");var mr=()=>({asset:Hs().multiTransactionPayment().accountCurrencyMap()});var Wl=[new ra.AssetRoute({source:{asset:I,fee:mr()},destination:{chain:Xt,asset:I,fee:{amount:D().XcmPaymentApi().calculateDestFee(),asset:I}},extrinsic:x().polkadotXcm().limitedReserveTransferAssets()})],Hl=[new ra.AssetRoute({source:{asset:N,fee:mr()},destination:{chain:Xt,asset:N,fee:{amount:.0012,asset:N}},extrinsic:x().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})})],$m=new ra.ChainRoutes({chain:hs,routes:[...Wl,...Hl]});var Ym=[jm,$m];var Ul=[...Bm,...Um,...Gm,...zm,...Ym],Qm=new Map(Ul.map(n=>[n.chain.key,n]));var ur=require("@galacticcouncil/xc-core");var En=require("@galacticcouncil/xc-core"),Ja=class extends En.TransferValidation{async validate(e){let{source:t}=e,{chain:s,fee:a,feeBalance:i}=t;if(i.amount<a.amount)throw new En.TransferValidationError("Insufficient_Fee_Balance",{amount:a.toDecimal(),asset:a.symbol,chain:s.name,error:"fee.insufficientBalance"})}},Za=class extends En.TransferValidation{async skipFor(e){let{asset:t,source:s}=e,{enabled:a}=s.destinationFeeSwap||{};return t.isEqual(s.destinationFee)&&!s.destinationFeePrepaid||!!a}async validate(e){if(await this.skipFor(e))return;let{amount:s,asset:a,source:i}=e,{chain:r,destinationFee:o,destinationFeeBalance:c}=i,m=a.isEqual(o)?s:0n,g=await this.getMin(r,o),f=o.copyWith({amount:o.amount+g+m});if(c.amount<f.amount)throw new En.TransferValidationError("Insufficient_Fee_Balance",{amount:f.toDecimal(),asset:f.symbol,chain:r.name,error:"destFee.insufficientBalance"})}async getMin(e,t){if(e instanceof En.Parachain)return(await e.getMin(t)).amount;let s=e.getAssetMin(t);return BigInt(s*10**t.decimals)}};var Et=require("@galacticcouncil/xc-core"),Zm=require("@galacticcouncil/common");function Jm(n,e){throw new Et.TransferValidationError("Ntt_Limit_Unreachable",{asset:n.originSymbol,chain:e.name,error:"ntt.limitUnreachable"})}function Kl(n,e){throw new Et.TransferValidationError("Ntt_Custody_Unreachable",{asset:n.originSymbol,chain:e.name,error:"ntt.custodyUnreachable"})}function eu(n){let{asset:e,destination:t,source:s}=n;return Et.Ntt.isKnown(s.chain,e)&&Et.Ntt.isKnown(t.chain,t.balance)}function tu(n){let{amount:e,destination:t,source:s}=n;return Zm.big.convertDecimals(e,s.balance.decimals,t.balance.decimals)}var ei=class extends Et.TransferValidation{skipFor(e){return!eu(e)}async validate(e){if(this.skipFor(e))return;let{amount:t,asset:s,destination:a,source:i}=e,[r,o]=await Promise.all([Jt(i.chain,s).getOutboundLimit().catch(()=>Jm(s,i.chain)),Jt(a.chain,a.balance).getInboundLimit(i.chain).catch(()=>Jm(a.balance,a.chain))]);if(r.windowMs>0&&t>r.capacity)throw new Et.TransferValidationError("Ntt_Outbound_Limit_Exceeded",{asset:s.originSymbol,chain:i.chain.name,decimals:i.balance.decimals,headroom:r.capacity,limit:r.limit,windowMs:r.windowMs,error:"ntt.outboundLimitExceeded"});if(o.windowMs>0&&tu(e)>o.capacity)throw new Et.TransferValidationError("Ntt_Inbound_Limit_Exceeded",{asset:a.balance.originSymbol,chain:a.chain.name,decimals:a.balance.decimals,headroom:o.capacity,limit:o.limit,windowMs:o.windowMs,error:"ntt.inboundLimitExceeded"})}},ti=class extends Et.TransferValidation{skipFor(e){return!eu(e)}async validate(e){if(this.skipFor(e))return;let{destination:t}=e,s=await Jt(t.chain,t.balance).getCustody().catch(()=>Kl(t.balance,t.chain));if(s!==void 0&&tu(e)>s)throw new Et.TransferValidationError("Ntt_Custody_Exceeded",{asset:t.balance.originSymbol,chain:t.chain.name,decimals:t.balance.decimals,headroom:s,error:"ntt.custodyExceeded"})}};var Es=require("@galacticcouncil/xc-core");var ni=class extends Es.TransferValidation{async skipFor(e){let{asset:t,destination:s}=e,a=s.chain;return await new ot(a).checkIfSufficient(t)}async validate(e){if(await this.skipFor(e))return;let{address:s,destination:a}=e,i=a.chain;if(await new ot(i).getSystemAccountBalance(s)===0n)throw new Es.TransferValidationError("Insufficient_Ed",{amount:"0.1",asset:"DOT",chain:a.chain.name,error:"account.insufficientDeposit"})}},si=class extends Es.TransferValidation{async validate(e){let{asset:t,sender:s,source:a}=e,i=a.chain;if(await new ot(i).checkIfFrozen(s,t))throw new Es.TransferValidationError("Asset_Frozen",{asset:t.originSymbol,chain:a.chain.name,error:"asset.frozen"})}};var Gt=require("@galacticcouncil/xc-core");var Gl=12,ql=1,ai=class extends Gt.TransferValidation{async skipFor(e){let{destination:t}=e,s=t.chain,a=new Ze(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 Ze(i),o=await r.getFeeAsset(s),c=i.findAssetById(o),m=c.min||ql,g=c.decimals||Gl,f=m*Math.pow(10,g),p=await r.getAssetBalance(s,o);if(BigInt(f*1.1)>p)throw new Gt.TransferValidationError("Insufficient_Ed",{amount:f,asset:c.asset.originSymbol,chain:i.name,error:"account.insufficientDeposit"})}},ii=class extends Gt.TransferValidation{async validate(e){let{amount:t,asset:s,destination:a}=e,i=a.chain,o=await new Ze(i).getAssetDepositLimit(s);if(o.locked)throw new Gt.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 Gt.TransferValidationError("Deposit_Limit_Exceeded",{asset:s.originSymbol,chain:i.name,headroom:o.headroom,limit:o.limit,error:"circuitBreaker.depositLimitExceeded"})}},ri=class extends Gt.TransferValidation{skipFor(e){let{destinationFee:t,destinationFeePrepaid:s,feeBalance:a}=e.source;return!s||a.isSame(t)}async validate(e){if(this.skipFor(e))return;let{amount:t,asset:s,source:a}=e,{chain:i,destinationFee:r,destinationFeeSwap:o,fee:c,feeBalance:m}=a,g=r.padByPct(5n),f;try{f=(await i.dex.getQuote(m,r,g)).amount}catch{return}let p=[c.isSame(m)?c.amount:0n,s.isEqual(m)?t:0n,o?.enabled&&o.aIn.isSame(m)?o.aIn.amount:0n].reduce((w,S)=>w+S,0n),b=m.copyWith({amount:f+p});if(m.amount<b.amount)throw new Gt.TransferValidationError("Insufficient_Fee_Balance",{amount:b.toDecimal(),asset:b.symbol,chain:i.name,error:"fee.insufficientBalance"})}},oi=class extends Gt.TransferValidation{async validate(e){let{source:t}=e,s=t.chain,i=await new Ze(s).getGlobalWithdrawLimit();if(i.lockdown)throw new Gt.TransferValidationError("Withdraw_Lockdown_Active",{chain:s.name,lockdownUntilMs:i.lockdownUntilMs,error:"circuitBreaker.withdrawLockdown"})}};var de={isAny:()=>!0,isHydration:n=>n instanceof ur.Parachain&&n.parachainId===2034,isHub:n=>n instanceof ur.Parachain&&n.parachainId===1e3,isEvm:n=>n.isEvmChain()},nu=[new Ja(de.isAny,de.isAny),new Za(de.isAny,de.isAny),new ni(de.isAny,de.isHub),new si(de.isHub,de.isAny),new ai(de.isAny,de.isHydration),new ii(de.isAny,de.isHydration),new oi(de.isHydration,de.isAny),new ri(de.isHydration,de.isAny),new ei(de.isAny,de.isAny),new ti(de.isAny,de.isAny)];var gr={};fn(gr,{AssethubDex:()=>fr,HydrationDex:()=>dr});var Bs=require("@galacticcouncil/sdk-next"),au=require("@galacticcouncil/common"),iu=require("polkadot-api");var su=(n,e=new Map)=>t=>{let s;return e.has(t)?e.get(t):(e.set(t,s=n(t)),s)};var{PoolType:ci}=Bs.pool,{TradeRouteBuilder:zl,TradeRouter:jl}=Bs.sor,{TxBuilderFactory:$l}=Bs.tx,dr=class{chain;client;poolCtx;txBuilder;getCtx=su(async e=>{console.log("init swap router",e,"\u2705");let t=new jl(this.poolCtx);return t.withFilter({useOnly:[ci.Aave,ci.Omni,ci.Stable,ci.XYK]}),t});constructor(e,t){this.chain=e,this.poolCtx=t,this.client=new Ze(this.chain),this.txBuilder=new $l(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),w=await(await this.txBuilder.trade(f).withBeneficiary(e).withSlippage(i).build()).get().getEncodedData();return iu.Binary.toHex(w)}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:zl.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,au.RUNTIME_DECIMALS);return i/BigInt(r)}};var lr=require("@galacticcouncil/common"),fr=class{chain;client;constructor(e){this.chain=e,this.client=new ot(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,lr.encodeLocation)(a),(0,lr.encodeLocation)(i),s.amount,!0);if(!r)throw new Error("Failed to get swap quote");return{amount:r}}};var hr={};fn(hr,{registerNear:()=>Jl});var mi=require("@galacticcouncil/xc-core");var ru=require("@galacticcouncil/xc-core");function pr(n,e){return new ru.AssetRoute({source:{asset:n,fee:{asset:Lt}},destination:{chain:A,asset:e,fee:{amount:0,asset:e}},functionCall:Hi().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}var Yl=1355,Ql={token:"0x000000000000000000000000000000010000054b",manager:"0x5b1334885320cFd7158760256c7bD0Af58006b09",transceiver:{wormhole:"0x5e875F689EA8dd25e11a69cfb6C9f844C4b3B207"}};function Jl(n){let e=n.getChain(A);e.updateAsset({asset:yt,decimals:24,id:Yl}),mi.Wormhole.fromChain(e).ntt[yt.key]=Ql,n.updateAsset(yt),n.updateChain(bs),n.updateRoutes(new mi.ChainRoutes({chain:bs,routes:[pr(yt,yt),pr(Lt,yt)]})),n.updateChainRoute(e,ye(yt,yt,bs))}var uu=require("@galacticcouncil/xc-core");var ou=require("@galacticcouncil/xc-core");function ui(n){let{id:e,origin:t,symbol:s}=n,a=s.toLowerCase();return new ou.Asset({key:[a,t,e].join("_"),originSymbol:s})}function cu(n){let{decimals:e,id:t}=n;return{asset:ui(n),decimals:e,id:t,xcmLocation:{parents:0,interior:{type:"X2",value:[{type:"PalletInstance",value:50},{type:"GeneralIndex",value:t}]}}}}function mu(n){let{decimals:e,id:t,internalId:s,origin:a}=n;return{asset:ui(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 di=class extends uu.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=ui(i),o=cu(i),c=mu(i);console.log("\u{1F480} Registering "+r.key),s.updateAsset(o),t.updateAsset(c),this.updateAsset(r),this.updateChainRoute(s,Ha(r)),this.updateChainRoute(t,Ga(r))})}};0&&(module.exports={HydrationConfigService,assetsMap,builders,chainsMap,clients,dex,routesMap,tags,testnet,validations});