@galacticcouncil/xc-cfg 2.5.0 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var fm=Object.create;var Hs=Object.defineProperty;var gm=Object.getOwnPropertyDescriptor;var pm=Object.getOwnPropertyNames;var hm=Object.getPrototypeOf,ym=Object.prototype.hasOwnProperty;var $=(n,e)=>()=>(n&&(e=n(n=0)),e);var wn=(n,e)=>{for(var t in e)Hs(n,t,{get:e[t],enumerable:!0})},Hi=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of pm(e))!ym.call(n,a)&&a!==t&&Hs(n,a,{get:()=>e[a],enumerable:!(s=gm(e,a))||s.enumerable});return n};var Hn=(n,e,t)=>(t=n!=null?fm(hm(n)):{},Hi(e||!n||!n.__esModule?Hs(t,"default",{value:n,enumerable:!0}):t,n)),bm=n=>Hi(Hs({},"__esModule",{value:!0}),n);var ca,Oo=$(()=>{ca={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 Wo,Ho=$(()=>{Wo={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 vs,Uo=$(()=>{Oo();Ho();(function(n){n.idl={ntt:ca,transceiver:ca,transceiverLegacy:ca,governance:Wo}})(vs||(vs={}))});var ma,Ko=$(()=>{ma={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 Go,qo=$(()=>{Go={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,zo=$(()=>{Ko();qo();(function(n){n.idl={ntt:ma,transceiver:ma,transceiverLegacy:ma,governance:Go}})(ks||(ks={}))});var jo,$o=$(()=>{jo={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 Qo,Yo=$(()=>{Qo={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 Jo,Zo=$(()=>{Jo={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 ec,tc=$(()=>{ec={version:"3.0.0",name:"wormhole_governance",instructions:[{name:"governance",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"governance",isMut:!0,isSigner:!1,docs:["governed program. This account is validated by Wormhole, not this program."]},{name:"vaa",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"replay",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"replayProtection",type:{kind:"struct",fields:[{name:"bump",type:"u8"}]}}],errors:[{code:6e3,name:"InvalidGovernanceChain",msg:"InvalidGovernanceChain"},{code:6001,name:"InvalidGovernanceEmitter",msg:"InvalidGovernanceEmitter"},{code:6002,name:"InvalidGovernanceProgram",msg:"InvalidGovernanceProgram"}]}});var Ms,nc=$(()=>{$o();Yo();Zo();tc();(function(n){n.idl={ntt:jo,transceiver:Qo,transceiverLegacy:Jo,governance:ec}})(Ms||(Ms={}))});var Ai=$(()=>{Uo();zo();nc()});function ac(n){for(let[e,t]of ua)if(sc.Ntt.abiVersionMatches(n,e))return t;throw new Error(`Unknown IDL version: ${n}`)}function Is(n,e,t){let{idl:{ntt:s}}=ac(t);return new wi.Program(s,e,{connection:n})}function da(n,e,t,s=!1){let{idl:{transceiver:a,transceiverLegacy:i}}=ac(t),r=s?i:a;return new wi.Program(r,e,{connection:n})}var wi,sc,ua,la=$(()=>{wi=require("@coral-xyz/anchor");Ai();sc=require("@wormhole-foundation/sdk-definitions-ntt"),ua=[["3.0.0",Ms],["2.0.0",ks],["1.0.0",vs]]});function Cs(n){return dn.PublicKey.findProgramAddressSync([new dn.PublicKey(n).toBytes()],cs)[0]}function ln(n){let e=n.split(".");if(e.length<3)throw new Error("Invalid version string");let t=e[2],s=t.split(/[^0-9]/)[0],a=t.slice(s.length);return[Number(e[0]),Number(e[1]),Number(s),a]}function Z(n,e){let t=s=>typeof s=="string"?Ts.encoding.bytes.encode(s):s;return dn.PublicKey.findProgramAddressSync(Array.isArray(n)?n.map(t):[t(n)],new dn.PublicKey(e))[0]}var dn,Ts,xi,cs,ic,Gh,fn,Si,qh,zh,fa=$(()=>{dn=require("@solana/web3.js"),Ts=require("@wormhole-foundation/sdk-base"),xi=Hn(require("bn.js"),1),cs=new dn.PublicKey("BPFLoaderUpgradeab1e11111111111111111111111");ic=[{name:"length",binary:"uint",endianness:"little",size:4},{name:"version",binary:"bytes"}],Gh={MAX:new xi.default((2n**64n-1n).toString()),to:(n,e)=>{let t=new xi.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};fn=n=>Ts.encoding.bignum.toBytes((0,Ts.toChainId)(n),2),Si=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)},qh=new dn.PublicKey(Buffer.from("owner".padEnd(32,"\0"))),zh=new dn.PublicKey(Buffer.from("payer".padEnd(32,"\0")))});async function ga(n,e,t,s,a,i,r,o,c){let m=Y.getExtraAccountMetaAddress(a,t),g=await n.getAccountInfo(m,c);if(g==null)return e;let f=Y.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 y=Y.createExecuteInstruction(t,s,a,i,r,m,BigInt(o));for(let b of f)y.keys.push(Eu(await Y.resolveExtraAccountMeta(n,b,y.keys,y.data,y.programId),y.keys));e.keys.push(...y.keys.slice(5)),e.keys.push({pubkey:t,isSigner:!1,isWritable:!1}),e.keys.push({pubkey:m,isSigner:!1,isWritable:!1})}function Eu(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 gn,Y,re,Ae,rc,pa,vi,Ps,oc,z,cc=$(()=>{gn=require("@coral-xyz/anchor"),Y=Hn(require("@solana/spl-token"),1),re=require("@solana/web3.js"),Ae=require("@wormhole-foundation/sdk-base"),rc=require("@wormhole-foundation/sdk-definitions"),pa=Hn(require("bn.js"),1),vi=require("@wormhole-foundation/sdk-definitions-ntt"),Ps=require("@solana/spl-token"),oc=require("@wormhole-foundation/sdk-solana-core");la();fa();(function(n){function e(l,d,u){return{amount:new pa.default(l.toString()),recipientChain:{id:(0,Ae.toChainId)(d.chain)},recipientAddress:Array.from(d.address.toUniversalAddress().toUint8Array()),shouldQueue:u}}n.transferArgs=e,n.pdas=l=>({configAccount:()=>Z("config",l),outboxRateLimitAccount:()=>Z("outbox_rate_limit",l),inboxRateLimitAccount:$e=>Z(["inbox_rate_limit",fn($e)],l),inboxItemAccount:($e,st)=>Z(["inbox_item",vi.Ntt.messageDigest($e,st)],l),upgradeLock:()=>Z("upgrade_lock",l),sessionAuthority:($e,st)=>Z(["session_authority",$e.toBytes(),(0,rc.keccak256)(Ae.encoding.bytes.concat(Ae.encoding.bytes.zpad(new Uint8Array(st.amount.toArray()),8),fn(st.recipientChain.id),new Uint8Array(st.recipientAddress),new Uint8Array([st.shouldQueue?1:0])))],l),tokenAuthority:()=>Z("token_authority",l),pendingTokenAuthority:()=>Z("pending_token_authority",l),peerAccount:$e=>Z(["peer",fn($e)],l),registeredTransceiver:$e=>Z(["registered_transceiver",$e.toBytes()],l),lutAccount:()=>Z("lut",l),lutAuthority:()=>Z("lut_authority",l)}),n.transceiverPdas=l=>{let d=()=>Z("emitter",l);return{emitterAccount:d,outboxItemSigner:()=>Z(["outbox_item_signer"],l),transceiverPeerAccount:H=>Z(["transceiver_peer",fn(H)],l),transceiverMessageAccount:(H,ce)=>Z(["transceiver_message",fn(H),ce],l),unverifiedMessageAccount:(H,ce)=>Z(["vaa_body",H.toBytes(),new Uint8Array(ce.toArray("be"))],l),wormholeMessageAccount:H=>Z(["message",H.toBytes()],l),wormholeMessageWithShimAccount:H=>Z(d().toBytes(),H)}};async function t(l,d,u){if(!u){let nt=l.rpcEndpoint===Ae.rpc.rpcAddress("Devnet","Solana")?"6sbzC1eH4FTujJXWj51eQe25cYvr4xfXbJ1vAj7j2k5J":l.rpcEndpoint.startsWith("http://localhost")?"98evdAiWr7ey9MAQzoQQMwFQkTsSR6KkWQuFqKrgwNwb":"Hk3SdYTJFpawrvRz4qRztuEt2SqoCG7BGj2yJfDJSFbJ";u=new re.PublicKey(nt)}let p=Is(l,d.toString(),"1.0.0"),D=await p.methods.version().accountsStrict({}).instruction(),{blockhash:J}=await p.provider.connection.getLatestBlockhash("finalized"),te=new re.TransactionMessage({payerKey:u,recentBlockhash:J,instructions:[D]}).compileToV0Message(),ve=new re.VersionedTransaction(te),H=await p.provider.connection.simulateTransaction(ve,{sigVerify:!1});if(!H.value.returnData||H.value.err)throw new Error("Could not fetch IDL version: "+JSON.stringify((0,gn.translateError)(H.value.err,(0,gn.parseIdlErrors)(p.idl))));let ce=Ae.encoding.b64.decode(H.value.returnData?.data[0]),je=(0,Ae.deserializeLayout)(ic,ce),Pe=Ae.encoding.bytes.decode(je.version);for(let[nt]of ua)if(vi.Ntt.abiVersionMatches(Pe,nt))return nt;throw new Error(`Unknown IDL version: ${Pe}`)}n.getVersion=t;async function s(l,d,u){let[p,,,]=ln(l.idl.version),D=d.mode==="burning"?{burning:{}}:{locking:{}},J=(0,Ae.toChainId)(d.chain);u=u??n.pdas(l.programId);let te=new pa.default(d.outboundLimit.toString());return l.methods.initialize({chainId:J,limit:te,mode:D}).accounts({payer:d.payer,deployer:d.owner,programData:Cs(l.programId),config:u.configAccount(),mint:d.mint,rateLimit:u.outboxRateLimitAccount(),tokenProgram:d.tokenProgram,tokenAuthority:u.tokenAuthority(),...p>=3&&{multisigTokenAuthority:d.multisigTokenAuthority??null},custody:await n.custodyAccountAddress(u,d.mint,d.tokenProgram),bpfLoaderUpgradeableProgram:cs,associatedTokenProgram:Y.ASSOCIATED_TOKEN_PROGRAM_ID,systemProgram:re.SystemProgram.programId}).instruction()}n.createInitializeInstruction=s;async function a(l,d,u,p,D){let[J,,,]=ln(l.idl.version);if(J<2)return;D=D??n.pdas(l.programId);let te=await l.provider.connection.getSlot()-1,[ve,H]=gn.web3.AddressLookupTableProgram.createLookupTable({authority:D.lutAuthority(),payer:p.payer,recentSlot:te}),ce=oc.utils.getWormholeDerivedAccounts(u,p.wormholeId.toString()),je={config:D.configAccount(),custody:d.custody,tokenProgram:d.tokenProgram,mint:d.mint,tokenAuthority:D.tokenAuthority(),outboxRateLimit:D.outboxRateLimitAccount(),wormhole:{bridge:ce.wormholeBridge,feeCollector:ce.wormholeFeeCollector,sequence:ce.wormholeSequence,program:p.wormholeId,systemProgram:re.SystemProgram.programId,clock:gn.web3.SYSVAR_CLOCK_PUBKEY,rent:gn.web3.SYSVAR_RENT_PUBKEY}},Pe=st=>{let Os=new Array;for(let fs in st){let Ws=st[fs];Ws instanceof re.PublicKey?Os.push(Ws):typeof Ws=="object"&&Os.push(...Pe(Ws))}return Os},nt=Pe(je).map(st=>st.toBase58()),$e=await Zt(l,D);if($e!==null){let st=$e.state.addresses?.map(fs=>fs.toBase58())??[];if(nt.filter(fs=>!st.includes(fs)).length===0)return null}return l.methods.initializeLut(new pa.default(te)).accountsStrict({payer:p.payer,owner:p.owner,authority:D.lutAuthority(),lutAddress:H,lut:D.lutAccount(),lutProgram:re.AddressLookupTableProgram.programId,systemProgram:re.SystemProgram.programId,entries:je}).instruction()}n.initializeOrUpdateLUT=a;async function i(l,d,u,p){p=p??n.pdas(l.programId);let D=await oe(p,d),J=(0,Ae.toChain)(u.transferArgs.recipientChain.id),te=await l.methods.transferBurn(u.transferArgs).accountsStrict({common:{payer:u.payer,config:{config:p.configAccount()},mint:d.mint,from:u.from,tokenProgram:d.tokenProgram,outboxItem:u.outboxItem,outboxRateLimit:p.outboxRateLimitAccount(),systemProgram:re.SystemProgram.programId,custody:D},peer:p.peerAccount(J),inboxRateLimit:p.inboxRateLimitAccount(J),sessionAuthority:p.sessionAuthority(u.fromAuthority,u.transferArgs),tokenAuthority:p.tokenAuthority()}).instruction(),ve=await Y.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),H=Y.getTransferHook(ve);if(H){let ce=u.from,je=d.mint,Pe=await oe(p,d),nt=p.sessionAuthority(u.fromAuthority,u.transferArgs);await ga(l.provider.connection,te,H.programId,ce,je,Pe,nt,0)}return te}n.createTransferBurnInstruction=i;async function r(l,d,u,p){if(d.paused)throw new Error("Contract is paused");p=p??n.pdas(l.programId);let D=(0,Ae.toChain)(u.transferArgs.recipientChain.id),J=await oe(p,d),te=await l.methods.transferLock(u.transferArgs).accountsStrict({common:{payer:u.payer,config:{config:p.configAccount()},mint:d.mint,from:u.from,tokenProgram:d.tokenProgram,outboxItem:u.outboxItem,outboxRateLimit:p.outboxRateLimitAccount(),custody:J,systemProgram:re.SystemProgram.programId},peer:p.peerAccount(D),inboxRateLimit:p.inboxRateLimitAccount(D),sessionAuthority:p.sessionAuthority(u.fromAuthority,u.transferArgs),custody:J}).instruction(),ve=await Y.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),H=Y.getTransferHook(ve);if(H){let ce=u.from,je=await oe(p,d),Pe=p.sessionAuthority(u.fromAuthority,u.transferArgs);await ga(l.provider.connection,te,H.programId,ce,d.mint,je,Pe,0)}return te}n.createTransferLockInstruction=r;async function o(l,d,u,p){let[D,,,]=ln(l.idl.version);p=p??n.pdas(l.programId);let J=await Y.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),te=null;J.mintAuthority?.equals(p.tokenAuthority())||(te=J.mintAuthority);let ve=u.recipient??(await Ht(l,u.chain,u.nttMessage)).recipientAddress,H=await l.methods.releaseInboundMint({revertOnDelay:u.revertWhenNotReady,revertWhenNotReady:u.revertWhenNotReady}).accounts({common:{payer:u.payer,config:{config:p.configAccount()},inboxItem:p.inboxItemAccount(u.chain,u.nttMessage),recipient:(0,Ps.getAssociatedTokenAddressSync)(d.mint,ve,!0,d.tokenProgram),mint:d.mint,tokenAuthority:p.tokenAuthority(),tokenProgram:d.tokenProgram,custody:await oe(p,d)},...D>=3&&{multisigTokenAuthority:te}}).instruction(),ce=Y.getTransferHook(J);if(ce){let je=await oe(p,d),Pe=d.mint,nt=(0,Ps.getAssociatedTokenAddressSync)(Pe,ve,!0,d.tokenProgram),$e=p.tokenAuthority();await ga(l.provider.connection,H,ce.programId,je,Pe,nt,$e,0)}return H}n.createReleaseInboundMintInstruction=o;async function c(l,d,u,p){let D=u.recipient??(await n.getInboxItem(l,u.chain,u.nttMessage)).recipientAddress;p=p??n.pdas(l.programId);let J=await oe(p,d),te=await l.methods.releaseInboundUnlock({revertOnDelay:u.revertWhenNotReady,revertWhenNotReady:u.revertWhenNotReady}).accountsStrict({common:{payer:u.payer,config:{config:p.configAccount()},inboxItem:p.inboxItemAccount(u.chain,u.nttMessage),recipient:(0,Ps.getAssociatedTokenAddressSync)(d.mint,D,!0,d.tokenProgram),mint:d.mint,tokenAuthority:p.tokenAuthority(),tokenProgram:d.tokenProgram,custody:J},custody:J}).instruction(),ve=await Y.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),H=Y.getTransferHook(ve);if(H){let ce=await oe(p,d),je=d.mint,Pe=(0,Ps.getAssociatedTokenAddressSync)(je,D,!0,d.tokenProgram),nt=p.tokenAuthority();await ga(l.provider.connection,te,H.programId,ce,je,Pe,nt,0)}return te}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:Cs(l.programId),bpfLoaderUpgradeableProgram:cs}).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:Cs(l.programId),bpfLoaderUpgradeableProgram:cs}).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:Cs(l.programId),bpfLoaderUpgradeableProgram:cs}).instruction()}n.createClaimOwnershipInstruction=f;async function y(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.acceptTokenAuthority().accountsStrict({common:{config:p.configAccount(),mint:d.mint,tokenProgram:d.tokenProgram,tokenAuthority:p.tokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},currentAuthority:u.currentAuthority}).instruction()}n.createAcceptTokenAuthorityInstruction=y;async function b(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.acceptTokenAuthorityFromMultisig().accountsStrict({common:{config:p.configAccount(),mint:d.mint,tokenProgram:d.tokenProgram,tokenAuthority:p.tokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},currentMultisigAuthority:u.currentMultisigAuthority}).remainingAccounts(u.additionalSigners.map(D=>({pubkey:D,isSigner:!0,isWritable:!1}))).instruction()}n.createAcceptTokenAuthorityFromMultisigInstruction=b;async function w(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.setTokenAuthorityOneStepUnchecked().accountsStrict({common:{config:p.configAccount(),tokenAuthority:p.tokenAuthority(),mint:d.mint,owner:u.owner,newAuthority:u.newAuthority,multisigTokenAuthority:u.multisigTokenAuthority??null},tokenProgram:d.tokenProgram}).instruction()}n.createSetTokenAuthorityOneStepUncheckedInstruction=w;async function x(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.setTokenAuthority().accountsStrict({common:{config:p.configAccount(),tokenAuthority:p.tokenAuthority(),mint:d.mint,owner:u.owner,newAuthority:u.newAuthority,multisigTokenAuthority:u.multisigTokenAuthority??null},rentPayer:u.rentPayer,pendingTokenAuthority:p.pendingTokenAuthority(),systemProgram:re.SystemProgram.programId}).instruction()}n.createSetTokenAuthorityInstruction=x;async function _(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.revertTokenAuthority().accountsStrict({common:{config:p.configAccount(),mint:d.mint,tokenAuthority:p.tokenAuthority(),tokenProgram:d.tokenProgram,systemProgram:re.SystemProgram.programId,rentPayer:u.rentPayer,pendingTokenAuthority:p.pendingTokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},owner:u.owner}).instruction()}n.createRevertTokenAuthorityInstruction=_;async function v(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.claimTokenAuthority().accountsStrict({common:{config:p.configAccount(),mint:d.mint,tokenAuthority:p.tokenAuthority(),tokenProgram:d.tokenProgram,systemProgram:re.SystemProgram.programId,rentPayer:u.rentPayer,pendingTokenAuthority:p.pendingTokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},newAuthority:u.newAuthority}).instruction()}n.createClaimTokenAuthorityInstruction=v;async function O(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.claimTokenAuthorityToMultisig().accountsStrict({common:{config:p.configAccount(),mint:d.mint,tokenAuthority:p.tokenAuthority(),tokenProgram:d.tokenProgram,systemProgram:re.SystemProgram.programId,rentPayer:u.rentPayer,pendingTokenAuthority:p.pendingTokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},newMultisigAuthority:u.newMultisigAuthority}).remainingAccounts(u.additionalSigners.map(D=>({pubkey:D,isSigner:!0,isWritable:!1}))).instruction()}n.createClaimTokenAuthorityToMultisigInstruction=O;async function C(l,d,u){return u=u??n.pdas(l.programId),l.methods.setPeer({chainId:{id:(0,Ae.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=C;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 M(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=M;async function ee(l,d,u){return u=u??n.pdas(l.programId),l.methods.setInboundLimit({chainId:{id:(0,Ae.toChainId)(d.chain)},limit:d.limit}).accounts({owner:d.owner,config:u.configAccount(),rateLimit:u.inboxRateLimitAccount(d.chain)}).instruction()}n.createSetInboundLimitInstruction=ee;async function Ce(l,d,u,p,D,J){D=D??n.pdas(l.programId),J=J??n.transceiverPdas(u);let te=p.vaa,ve=te.payload.nttManagerPayload,H=te.emitterChain;return l.methods.redeem({}).accounts({payer:p.payer,config:D.configAccount(),peer:D.peerAccount(H),transceiverMessage:J.transceiverMessageAccount(H,ve.id),transceiver:D.registeredTransceiver(u),mint:d.mint,inboxItem:D.inboxItemAccount(H,ve),inboxRateLimit:D.inboxRateLimitAccount(H),outboxRateLimit:D.outboxRateLimitAccount()}).instruction()}n.createRedeemInstruction=Ce;async function lt(l,d){return l.account.config.fetch(d.configAccount())}n.getConfig=lt;async function Ht(l,d,u){return l.account.inboxItem.fetch(n.pdas(l.programId).inboxItemAccount(d,u))}n.getInboxItem=Ht;async function Zt(l,d){let[u,,,]=ln(l.idl.version);if(u<2)return null;d=d??n.pdas(l.programId);let p=await l.account.lut.fetchNullable(d.lutAccount());if(!p)return null;let D=await l.provider.connection.getAddressLookupTable(p.address);if(D.value===null)throw new Error("Could not fetch LUT");return D.value}n.getAddressLookupTable=Zt;async function oe(l,d,u=Y.TOKEN_PROGRAM_ID){return d instanceof re.PublicKey?Y.getAssociatedTokenAddress(d,l.tokenAuthority(),!0,u):Y.getAssociatedTokenAddress(d.mint,l.tokenAuthority(),!0,d.tokenProgram)}n.custodyAccountAddress=oe})(z||(z={}))});var ki=$(()=>{cc();la();Ai()});var mc,uc=$(()=>{mc={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 dc,lc=$(()=>{dc={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 Mi,qe,B,Ii,Nn,Ti,G,Fn,Xn,Es,Bs,Ci=$(()=>{Mi=require("@coral-xyz/anchor"),qe=Hn(require("@solana/spl-token"),1),B=require("@solana/web3.js"),Ii=require("@wormhole-foundation/sdk-base"),Nn=require("@wormhole-foundation/sdk-definitions"),Ti=require("@wormhole-foundation/sdk-definitions-ntt"),G=require("@wormhole-foundation/sdk-solana"),Fn=require("@wormhole-foundation/sdk-solana-core"),Xn=Hn(require("bn.js"),1);la();ki();fa();uc();lc();Es=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??Ti.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 Mi.Program(mc,i,{connection:this.program.provider.connection});let r=a.verifyVaaShimOverride??Ti.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 Mi.Program(dc,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 B.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]=B.PublicKey.findProgramAddressSync([Buffer.from("GuardianSet"),o],this.manager.core.coreBridge.programId);if(a){let g=new Xn.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:Si((0,Nn.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:Fn.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 Xn.default(e.hash.subarray(-8)),r=Si((0,Nn.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 B.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 B.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 Xn.default(t.hash.subarray(-8)),a=await this.program.methods.closeUnverifiedWormholeMessageAccount(s).accounts({payer:e,message:this.pdas.unverifiedMessageAccount(e,s)}).instruction(),i=new B.Transaction;i.feePayer=e,i.add(a),yield this.manager.createUnsignedTx({transaction:i},"Ntt.CloseUnverifiedWormholeMessageAccount")}async getTransceiverType(e){let[t,,,]=ln(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 B.TransactionMessage({payerKey:s,recentBlockhash:i.blockhash,instructions:[a]}).compileToV0Message(),o=new B.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,Nn.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,Ii.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:B.Keypair.generate(),r=await this.createBroadcastWormholePeerIx(e.chain,s,i?.publicKey),o=new B.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,Nn.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=Fn.utils.getWormholeDerivedAccounts(this.program.programId,this.manager.core.address);return s=this.postMessageShim?this.pdas.wormholeMessageWithShimAccount(this.postMessageShim.programId):s,this.program.methods.broadcastWormholeId().accounts({payer:e,config:this.manager.pdas.configAccount(),mint:t.mint,wormholeMessage:s,emitter:a.wormholeEmitter,wormhole:{bridge:a.wormholeBridge,feeCollector:a.wormholeFeeCollector,sequence:a.wormholeSequence,program:this.manager.core.address,...this.postMessageShim&&{postMessageShim:this.postMessageShim.programId,wormholePostMessageShimEa:Z(["__event_authority"],this.postMessageShim.programId)}}}).instruction()}async createBroadcastWormholePeerIx(e,t,s){if(!this.postMessageShim&&!s)throw new Error("wormholeMessage must be passed in if Wormhole Post Message Shim is not configured");let a=Fn.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,Ii.toChainId)(e)}).accounts({payer:t,config:this.manager.pdas.configAccount(),peer:this.pdas.transceiverPeerAccount(e),wormholeMessage:s,emitter:a.wormholeEmitter,wormhole:{bridge:a.wormholeBridge,feeCollector:a.wormholeFeeCollector,sequence:a.wormholeSequence,program:this.manager.core.address,...this.postMessageShim&&{postMessageShim:this.postMessageShim.programId,wormholePostMessageShimEa:Z(["__event_authority"],this.postMessageShim.programId)}}}).instruction()}async createReleaseWormholeOutboundIx(e,t,s){let[a,,,]=ln(this.version),i=Fn.utils.getWormholeDerivedAccounts(this.program.programId,this.manager.core.address),r=this.postMessageShim?this.pdas.wormholeMessageWithShimAccount(this.postMessageShim.programId):this.pdas.wormholeMessageAccount(t);return this.program.methods.releaseWormholeOutbound({revertOnDelay:s}).accounts({payer:e,config:{config:this.manager.pdas.configAccount()},outboxItem:t,wormholeMessage:r,emitter:i.wormholeEmitter,transceiver:this.manager.pdas.registeredTransceiver(this.program.programId),wormhole:{bridge:i.wormholeBridge,feeCollector:i.wormholeFeeCollector,sequence:i.wormholeSequence,program:this.manager.core.address,...this.postMessageShim&&{postMessageShim:this.postMessageShim.programId,wormholePostMessageShimEa:Z(["__event_authority"],this.postMessageShim.programId)}},...a>=3&&{manager:this.manager.program.programId,outboxItemSigner:this.pdas.outboxItemSigner()}}).instruction()}},Bs=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=Is(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 B.PublicKey(a.ntt.manager),m=new B.PublicKey(a.ntt.transceiver[o]);if(z.transceiverPdas(c).emitterAccount().equals(m)||c.equals(m)){let g=new Es(this,da(s,a.ntt.manager,i,!a.ntt.svmShims),i,a.ntt.svmShims);this.transceivers.push(g.program)}else this.transceivers.push(da(s,a.ntt.transceiver[o],i,!a.ntt.svmShims))}),this.managerAddress=a.ntt.manager,this.tokenAddress=a.ntt.token,this.core=new Fn.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 Es(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 B.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 B.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 B.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 B.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,Nn.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 B.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 B.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 B.PublicKey(this.core.address)});if(!i)return;let r=new B.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:B.Keypair.generate(),c=await r.createBroadcastWormholeIdIx(t,a,o?.publicKey),m=new B.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:B.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 Xn.default(s.toString()),tokenDecimals:t}),o=new B.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??B.Keypair.generate();let o=new G.SolanaAddress(e).unwrap(),c=o,m=await this.getTokenAccount(c);if(a.wrapNative){if(this.tokenAddress!==qe.NATIVE_MINT.toBase58())throw new Error("Configured token must be native mint for wrapping");let C=qe.getAssociatedTokenAddressSync(qe.NATIVE_MINT,o),U=[...await this.connection.getAccountInfo(C)?[]:[qe.createAssociatedTokenAccountInstruction(o,C,o,qe.NATIVE_MINT)],B.SystemProgram.transfer({fromPubkey:o,toPubkey:C,lamports:t}),qe.createSyncNativeInstruction(C)],{blockhash:M}=await this.connection.getLatestBlockhash(),ee=new B.TransactionMessage({payerKey:o,instructions:U,recentBlockhash:M}).compileToV0Message(),Ce=new B.VersionedTransaction(ee);yield this.createUnsignedTx({transaction:Ce},"Ntt.WrapNative")}let g=z.transferArgs(t,s,a.queue),f={transferArgs:g,payer:o,from:m,fromAuthority:c,outboxItem:i.publicKey},y=qe.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 C=0;C<this.transceivers.length;++C)if(C===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 x=new B.Transaction;x.feePayer=o,x.add(y,...await Promise.all(b));let _=[];try{_.push(await this.getAddressLookupTable())}catch{}let v=new B.TransactionMessage({payerKey:o,instructions:x.instructions,recentBlockhash:(await this.connection.getLatestBlockhash()).blockhash}).compileToV0Message(_),O=new B.VersionedTransaction(v);yield this.createUnsignedTx({transaction:O,signers:[i]},"Ntt.Transfer")}async getTokenAccount(e){let t=await this.getConfig();return await qe.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 B.Transaction().add(qe.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 C=B.Keypair.generate(),W=await o.verifyVaaShim.methods.postSignatures(r.guardianSet,r.signatures.length,r.signatures.map(ee=>[ee.guardianIndex,...ee.signature.encode()])).accounts({payer:c,guardianSignatures:C.publicKey}).instruction(),U=new B.Transaction;U.feePayer=c,U.add(W),yield this.createUnsignedTx({transaction:U,signers:[C]},"VerifyVAAShim.PostSignature"),m.push(o.createReceiveIx(r,c,C.publicKey,!1)),m.push(o.verifyVaaShim.methods.closeSignatures().accounts({guardianSignatures:C.publicKey,refundRecipient:c}).instruction())}else yield*this.core.postVaa(t,r),m.push(o.createReceiveIx(r,c));let g=z.createRedeemInstruction(this.program,s,o.program.programId,{payer:c,vaa:r}),f=r.payload.nttManagerPayload,y=r.emitterChain,b={payer:c,config:s,nttMessage:f,recipient:new B.PublicKey(f.payload.recipientAddress.toUint8Array()),chain:y,revertWhenNotReady:!1},w=s.mode.locking!=null?z.createReleaseInboundUnlockInstruction(this.program,s,{...b}):z.createReleaseInboundMintInstruction(this.program,s,{...b}),x=new B.Transaction;x.feePayer=c,x.add(...await Promise.all([...m,g,w]));let _=[];try{_.push(await this.getAddressLookupTable())}catch{}let v=new B.TransactionMessage({payerKey:c,instructions:x.instructions,recentBlockhash:(await this.connection.getLatestBlockhash()).blockhash}).compileToV0Message(_),O=new B.VersionedTransaction(v);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 Xn.default(e.toString())}),i=new B.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 Xn.default(t.toString())}),r=new B.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 B.Transaction;r.feePayer=i;let o={payer:i,config:a,nttMessage:t,recipient:new B.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 fc,gc=$(()=>{fc={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 pc,hc=$(()=>{pc={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 Pi,Ot,q,yc,Ls,ha,Rs,Ei=$(()=>{Pi=require("@coral-xyz/anchor"),Ot=require("@solana/spl-token"),q=require("@solana/web3.js"),yc=require("@wormhole-foundation/sdk-base"),Ls=require("@wormhole-foundation/sdk-solana"),ha=Hn(require("bn.js"),1);gc();hc();fa();Rs=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 Ls.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 Ls.SolanaAddress(e).unwrap(),c={queue:!1,automatic:!1,wrapNative:r},m=q.Keypair.generate(),g=i.transfer(e,a.remainingAmount,t,c,m);for await(let f of g)if(f.description==="Ntt.Transfer"){let y=[];try{y.push(await i.getAddressLookupTable())}catch(v){console.debug(v)}let b=q.TransactionMessage.decompile(f.transaction.transaction.message,{addressLookupTableAccounts:y});if(a.transferTokenFee>0n){let v=new q.PublicKey(a.referrer.address.toString()),{mint:O,tokenProgram:C}=await i.getConfig(),W=(0,Ot.getAssociatedTokenAddressSync)(O,v,!0,C),U=(0,Ot.getAssociatedTokenAddressSync)(O,o,!0,C);await this.connection.getAccountInfo(W)||b.instructions.push((0,Ot.createAssociatedTokenAccountIdempotentInstruction)(o,W,v,O,C));let ee=await(0,Ot.getMint)(this.connection,O,void 0,C);b.instructions.push((0,Ot.createTransferCheckedInstruction)(U,O,W,o,a.transferTokenFee,ee.decimals,void 0,C))}if(a.nativeTokenFee>0n){let v=new q.PublicKey(a.referrer.address.toString());b.instructions.push(q.SystemProgram.transfer({fromPubkey:o,toPubkey:v,lamports:a.nativeTokenFee}))}let w=new Pi.Program(pc,this.nttWithExecutorProgramId,{connection:this.connection}),x=new q.PublicKey(this.contracts.ntt.manager),_=q.PublicKey.findProgramAddressSync([Buffer.from("peer"),fn(t.chain)],x)[0];if(b.instructions.push(await w.methods.relayNttMesage({execAmount:new ha.default(a.estimatedCost.toString()),recipientChain:(0,yc.toChainId)(t.chain),signedQuoteBytes:Buffer.from(a.signedQuote),relayInstructions:Buffer.from(a.relayInstructions)}).accounts({payer:o,payee:new q.PublicKey(a.payeeAddress),nttProgramId:x,nttPeer:_,nttMessage:m.publicKey,executorProgram:this.executorProgramId}).instruction()),y.length===0){console.debug("no manager lookup table found, checking helper program");let v=new Pi.Program(fc,this.nttLutProgramId,{connection:this.connection}),O=q.PublicKey.findProgramAddressSync([Buffer.from("lut"),x.toBuffer()],v.programId)[0],C=await v.account.lut.fetchNullable(O);if(!C){console.debug("no helper program lookup table found, initializing...");let[U]=await q.PublicKey.findProgramAddressSync([Buffer.from("config")],x),[M]=await q.PublicKey.findProgramAddressSync([Buffer.from("lut_authority")],v.programId),ee=await this.connection.getSlot("finalized")-10,[Ce]=await q.PublicKey.findProgramAddressSync([M.toBuffer(),new ha.default(ee).toArrayLike(Buffer,"le",8)],q.AddressLookupTableProgram.programId),[lt]=await q.PublicKey.findProgramAddressSync([Buffer.from("lut"),x.toBuffer()],v.programId),Ht=await v.methods.initializeLut(new ha.default(ee)).accounts({nttProgramId:x,nttConfig:U,authority:M,lutAddress:Ce,lut:lt,lutProgram:q.AddressLookupTableProgram.programId,systemProgram:q.SystemProgram.programId,payer:o}).instruction(),Zt=new q.TransactionMessage({payerKey:o,recentBlockhash:(await this.connection.getLatestBlockhash("finalized")).blockhash,instructions:[Ht]}).compileToV0Message();yield i.createUnsignedTx({transaction:new q.VersionedTransaction(Zt)},"NttSvmLut.InitializeLut"),console.debug(`initialized lookup table: ${f}`);let oe=0;for(;!C&&oe<10;)await new Promise(l=>setTimeout(l,2e3)),C=await v.account.lut.fetchNullable(O),oe++}let W=await this.connection.getAddressLookupTable(C.address);if(!W.value)throw new Error("unable to fetch lookup table");y.push(W.value)}f.transaction.transaction.message=b.compileToV0Message(y),yield f}else yield f}static associatedTokenAccountMinRent=void 0;async estimateMsgValueAndGasLimit(e){let t=0n;if(t+=2n*5000n+7n*5000n+1400000n,t+=2n*5000n+7n*5000n,t+=5000n+3200000n,t+=5000n+5000000n,t+=5000n,e){let s=new q.PublicKey(e.address.toString()),a=new Ls.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,Ot.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 bc=$(()=>{"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 Bu(){(0,Ac.register)(),(0,ms.protocolIsRegistered)(_s._platform,"Ntt")||(0,ms.registerProtocol)(_s._platform,"Ntt",Bs),(0,ms.protocolIsRegistered)(_s._platform,"NttWithExecutor")||(0,ms.registerProtocol)(_s._platform,"NttWithExecutor",Rs)}var ms,_s,Ac,wc=$(()=>{ms=require("@wormhole-foundation/sdk-definitions"),_s=require("@wormhole-foundation/sdk-solana");Ci();Ei();Ac=require("@wormhole-foundation/sdk-definitions-ntt");bc();Ci();Ei()});var xc={};wn(xc,{IdlVersions:()=>ua,NTT:()=>z,SolanaNtt:()=>Bs,SolanaNttWithExecutor:()=>Rs,SolanaNttWormholeTransceiver:()=>Es,_1_0_0:()=>vs,_2_0_0:()=>ks,_3_0_0:()=>Ms,getNttProgram:()=>Is,getTransceiverProgram:()=>da,register:()=>Bu});var Sc=$(()=>{wc();ki()});var Xd={};wn(Xd,{HydrationConfigService:()=>Wa,assetsMap:()=>Ui,builders:()=>Li,chainsMap:()=>sr,clients:()=>si,dex:()=>Wi,routesMap:()=>nm,tags:()=>Ri,validations:()=>im});module.exports=bm(Xd);var I=require("@galacticcouncil/xc-core"),Ee=new I.Asset({key:"aave",originSymbol:"AAVE"}),Ha=new I.Asset({key:"ajun",originSymbol:"AJUN"}),Be=new I.Asset({key:"apyusd",originSymbol:"apyUSD"}),j=new I.Asset({key:"astr",originSymbol:"ASTR"}),K=new I.Asset({key:"bnc",originSymbol:"BNC"}),Ua=new I.Asset({key:"bsx",originSymbol:"BSX"}),Le=new I.Asset({key:"cfg_new",originSymbol:"CFG"}),Ka=new I.Asset({key:"cru",originSymbol:"CRU"}),St=new I.Asset({key:"dai",originSymbol:"DAI"}),Lt=new I.Asset({...St,key:"dai_wh"}),P=new I.Asset({key:"dot",originSymbol:"DOT"}),R=new I.Asset({key:"eth",originSymbol:"ETH"}),Re=new I.Asset({key:"ena",originSymbol:"ENA"}),ft=new I.Asset({key:"eurc",originSymbol:"EURC"}),vt=new I.Asset({...ft,key:"eurc_wh"}),en=new I.Asset({key:"glmr",originSymbol:"GLMR"}),Un=new I.Asset({key:"hdx",originSymbol:"HDX"}),ae=new I.Asset({key:"ibtc",originSymbol:"IBTC"}),at=new I.Asset({key:"intr",originSymbol:"INTR"}),Qe=new I.Asset({key:"jitoSol",originSymbol:"jitoSOL"}),F=new I.Asset({key:"ksm",originSymbol:"KSM"}),_e=new I.Asset({key:"ldo",originSymbol:"LDO"}),De=new I.Asset({key:"lbtc",originSymbol:"LBTC"}),Ye=new I.Asset({key:"ewt",originSymbol:"EWT"}),Fe=new I.Asset({key:"link",originSymbol:"LINK"}),ne=new I.Asset({key:"myth",originSymbol:"MYTH"}),kt=new I.Asset({key:"neuro",originSymbol:"NEURO"}),it=new I.Asset({key:"pen",originSymbol:"PEN"}),Xe=new I.Asset({key:"paxg",originSymbol:"PAXG"}),Je=new I.Asset({key:"prime",originSymbol:"PRIME"}),Ne=new I.Asset({key:"sky",originSymbol:"SKY"}),Ve=new I.Asset({key:"sol",originSymbol:"SOL"}),Oe=new I.Asset({key:"sui",originSymbol:"SUI"}),We=new I.Asset({key:"susde",originSymbol:"sUSDe"}),rt=new I.Asset({key:"susds",originSymbol:"sUSDS"}),Rt=new I.Asset({...rt,key:"susds_wh"}),He=new I.Asset({key:"tbtc",originSymbol:"tBTC"}),Ue=new I.Asset({key:"trac",originSymbol:"TRAC"}),Mt=new I.Asset({key:"unq",originSymbol:"UNQ"}),T=new I.Asset({key:"usdt",originSymbol:"USDT"}),_t=new I.Asset({...T,key:"usdt_wh"}),Ut=new I.Asset({...T,key:"usdt_eth"}),L=new I.Asset({key:"usdc",originSymbol:"USDC"}),Dt=new I.Asset({...L,key:"usdc_wh"}),Kt=new I.Asset({...L,key:"usdc_eth"}),le=new I.Asset({key:"vastr",originSymbol:"vASTR"}),fe=new I.Asset({key:"vdot",originSymbol:"vDOT"}),Ft=new I.Asset({key:"weth",originSymbol:"WETH"}),Ze=new I.Asset({...Ft,key:"weth_wh"}),ot=new I.Asset({key:"wbtc",originSymbol:"WBTC"}),Xt=new I.Asset({...ot,key:"wbtc_wh"}),Kn=new I.Asset({key:"wsol",originSymbol:"wSOL"}),Ke=new I.Asset({key:"wsteth",originSymbol:"wstETH"}),Gt=new I.Asset({key:"wud",originSymbol:"WUD"}),Am=[Ee,Ha,Be,j,Ua,Le,Ka,K,St,Lt,P,Re,ft,vt,R,en,Un,ae,at,F,_e,De,Ye,Qe,Fe,ne,kt,Xe,it,Je,Ne,Ve,Oe,We,rt,Rt,Ue,He,Mt,L,Dt,Kt,T,_t,Ut,le,fe,ot,Xt,Ft,Ze,Kn,Ke,Gt],Ui=new Map(Am.map(n=>[n.key,n]));var xn=require("@galacticcouncil/xc-core");var Ki=require("viem/chains"),Sn=new xn.EvmChain({id:8453,key:"base",name:"Base",assetsData:[{asset:R,decimals:18,id:"0x4200000000000000000000000000000000000006"},{asset:ft,decimals:6,id:"0x60a3e35cc302bfa44cb288bc5a4f316fdb1adb42"},{asset:L,decimals:6,id:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}],balance:xn.EvmBalanceType.Erc20,balanceOverrides:{[R.key]:xn.EvmBalanceType.Native},ecosystem:xn.ChainEcosystem.Ethereum,evmChain:Ki.base,explorer:"https://basescan.org/",rpcs:["https://stylish-quick-firefly.base-mainnet.quiknode.pro/"],basejump:{address:"0xf5b9334e44f800382cb47fc19669401d694e529b"},wormhole:{id:30,coreBridge:"0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6",executor:"0x9E1936E91A4a5AE5A5F75fFc472D6cb8e93597ea",nttExecutor:"0x27db1967D469D89318B7119Ced5609f327095de4",ntt:{[ft.key]:{token:"0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42",manager:"0xD1dc3517732c98502b5c1ba2389AcA9E9016d89a",transceiver:{wormhole:"0xa84b362290b0CFdB55e877dfc633284091e0B3F7"}}}}});var vn=require("@galacticcouncil/xc-core");var Gi=require("viem/chains"),E=new vn.EvmChain({id:1,key:"ethereum",name:"Ethereum",assetsData:[{asset:R,decimals:18,id:"0x0000000000000000000000000000000000000000"},{asset:Ee,decimals:18,id:"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"},{asset:Be,decimals:18,id:"0x38eeb52f0771140d10c4e9a9a72349a329fe8a6a"},{asset:Le,decimals:18,id:"0xcccccccccc33d538dbc2ee4feab0a7a1ff4e8a94"},{asset:Ft,decimals:18,id:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"},{asset:St,decimals:18,id:"0x6B175474E89094C44Da98b954EedeAC495271d0F"},{asset:Re,decimals:18,id:"0x57e114b691db790c35207b2e685d4a43181e6061"},{asset:We,decimals:18,id:"0x9d39a5de30e57443bff2a8307a4256c8797a3497"},{asset:rt,decimals:18,id:"0xa3931d71877c0e7a3148cb7eb4463524fec27fbd"},{asset:He,decimals:18,id:"0x18084fba666a33d37592fa2633fd49a74dd93a88"},{asset:ot,decimals:8,id:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"},{asset:De,decimals:8,id:"0x8236a87084f8b84306f72007f36f2618a5634494"},{asset:L,decimals:6,id:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"},{asset:T,decimals:6,id:"0xdAC17F958D2ee523a2206206994597C13D831ec7"},{asset:_e,decimals:18,id:"0x5a98fcbea516cf06857215779fd812ca3bef1b32"},{asset:Fe,decimals:18,id:"0x514910771af9ca656af840dff83e8264ecf986ca"},{asset:Xe,decimals:18,id:"0x45804880de22913dafe09f4980848ece6ecbaf78"},{asset:Ne,decimals:18,id:"0x56072c95faa701256059aa122697b133aded9279"},{asset:Ue,decimals:18,id:"0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F"},{asset:Ke,decimals:18,id:"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"}],balance:vn.EvmBalanceType.Erc20,balanceOverrides:{[R.key]:vn.EvmBalanceType.Native},ecosystem:vn.ChainEcosystem.Ethereum,evmChain:Gi.mainnet,explorer:"https://etherscan.io/",rpcs:["https://ethereum-rpc.publicnode.com","https://cosmopolitan-dimensional-diagram.quiknode.pro"],snowbridge:{id:1,gateway:"0x27ca963c279c93801941e1eb8799c23f407d68e7"},wormhole:{id:2,coreBridge:"0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B",executor:"0x84EEe8dBa37C36947397E1E11251cA9A06Fc6F8a",nttExecutor:"0xC079bFA54F348199bA51B2717595fE24e96f1542",ntt:{[St.key]:{token:"0x6B175474E89094C44Da98b954EedeAC495271d0F",manager:"0x804F123f75cCa0A9c0Cba341F82f4A4DA86a5259",transceiver:{wormhole:"0x99673a01C5779Ebf59399B4B228c1825c0113571"}},[rt.key]:{token:"0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD",manager:"0x5085A4863f89eC9553F70187EE73B5aAe0fd14b5",transceiver:{wormhole:"0x7C236d237BEbBE1b7902131B31b7b3270005a810"}},[L.key]:{token:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",manager:"0x447b2c7485A3d6813F8197E605b10BcCD8dd8398",transceiver:{wormhole:"0xA108BD5dBc6CE665aEbB6895351e0609c76F8EFc"}},[T.key]:{token:"0xdAC17F958D2ee523a2206206994597C13D831ec7",manager:"0x9fbd9F16cE7Fa17097E91cc36DC1B7b47aDCa9De",transceiver:{wormhole:"0x45c566f6595CF93e639E77cc1bbE57A8D27901c2"}},[ot.key]:{token:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",manager:"0x081b76AC3cFb65DCe93961d66cea44A74EC8Ef28",transceiver:{wormhole:"0x3FE8fBB8505c8dB2264f6Ebc5559c7C2b2647218"}},[Ft.key]:{token:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",manager:"0x283B14B5Dd352e32154Df014EA96834F395E04b6",transceiver:{wormhole:"0xbA0Cd32131b8206AF4feB79A1A3aaF0AEfe18b48"}},[R.key]:{token:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",manager:"0x283B14B5Dd352e32154Df014EA96834F395E04b6",transceiver:{wormhole:"0xbA0Cd32131b8206AF4feB79A1A3aaF0AEfe18b48"}}}}});var qi=[Sn,E];var gt=require("@galacticcouncil/xc-core");var zi={assetsData:[{asset:P,decimals:10,id:0,xcmLocation:{parents:1,interior:"Here"}},{asset:T,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:Gt,decimals:10,id:31337,xcmLocation:{parents:0,interior:{X2:[{PalletInstance:50},{GeneralIndex:31337}]}}},{asset:ne,decimals:18,min:3e-8,xcmLocation:{parents:1,interior:{X1:[{Parachain:3369}]}}},{asset:F,decimals:12,min:1e-4,xcmLocation:{parents:2,interior:{X1:[{GlobalConsensus:"Kusama"}]}}}],balance:gt.SubstrateBalanceType.Assets,balanceOverrides:{[P.key]:gt.SubstrateBalanceType.System,[F.key]:gt.SubstrateBalanceType.ForeignAssets,[ne.key]:gt.SubstrateBalanceType.ForeignAssets},min:gt.SubstrateMinType.Assets,ecosystem:gt.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"]},N=new gt.Parachain({...zi,key:"assethub",name:"AssetHub Polkadot"}),tn=new gt.Parachain({...zi,key:"assethub_cex",name:"AssetHub (CEX)",usesSignerFee:!0,isTestChain:!0,balanceOverrides:{}});var kn=require("@galacticcouncil/xc-core");var ke=new kn.Parachain({assetsData:[{asset:j,xcmLocation:{parents:0,interior:"Here"}},{asset:P,id:"340282366920938463463374607431768211455",decimals:10,min:1e-4,xcmLocation:{parents:1,interior:"Here"}},{asset:T,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:en,id:"18446744073709551619",decimals:18,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:ae,id:"18446744073709551620",decimals:8,min:1e-6,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:at,id:"18446744073709551621",decimals:10,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0002000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:fe,id:"18446744073709551624",decimals:10,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:le,id:"18446744073709551632",decimals:18,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}}],balance:kn.SubstrateBalanceType.Assets,balanceOverrides:{[j.key]:kn.SubstrateBalanceType.System},ecosystem:kn.ChainEcosystem.Polkadot,explorer:"https://astar.subscan.io",genesisHash:"0x9eb76c5184c4ab8679d2d5d819fdf90b9c001403e9e17da2e14b6d8aec4029c6",key:"astar",name:"Astar",parachainId:2006,ss58Format:5,ws:"wss://rpc.astar.network"});var Mn=require("@galacticcouncil/xc-core");var wm=["wss://eu.bifrost-polkadot-rpc.liebi.com/ws","wss://hk.p.bifrost-rpc.liebi.com/ws","wss://bifrost-polkadot.dotters.network"],se=new Mn.Parachain({assetsData:[{asset:K,id:{Native:K.originSymbol},xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:fe,id:{VToken2:0},decimals:10,min:1e-4,xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:le,id:{VToken2:3},decimals:18,min:.01,xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:P,id:{Token2:0},decimals:10,min:1e-4,xcmLocation:{parents:1,interior:"Here"}},{asset:T,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:en,id:{Token2:1},decimals:18,min:1e-5,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:ae,id:{Token2:6},decimals:8,min:1e-6,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}}],balance:Mn.SubstrateBalanceType.Tokens,balanceOverrides:{[K.key]:Mn.SubstrateBalanceType.System},ecosystem:Mn.ChainEcosystem.Polkadot,explorer:"https://bifrost.subscan.io",genesisHash:"0x262e1b2ad728475fd6fe88e62d34c200abe6fd693931ddad144059b1eb884e5b",key:"bifrost",name:"Bifrost",parachainId:2030,ss58Format:6,ws:wm});var In=require("@galacticcouncil/xc-core"),Yi=require("viem");var $i=require("@galacticcouncil/common"),Qi=require("polkadot-api"),{isEvmAccount:xm,H160:ji}=$i.h160,Us=class{async toH160(e,t){if(xm(e))return ji.fromAccount(e);let s=ji.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,Qi.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 Sm=new Us,Ga=["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"],qa=["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"],vm=(0,Yi.defineChain)({id:222222,name:"Hydration",network:"hydration",nativeCurrency:{decimals:18,name:"WETH",symbol:"WETH"},rpcUrls:{public:{http:Ga,webSocket:qa},default:{http:Ga,webSocket:qa}},blockExplorers:{default:{name:"Hydration Explorer",url:"https://hydration.subscan.io"}},testnet:!1}),k=new In.EvmParachain({assetsData:[{asset:Un,id:0,xcmLocation:{parents:0,interior:{X1:[{GeneralIndex:0}]}}},{asset:Ee,decimals:18,id:1000624,min:6e-5,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"}}]}}},{asset:Ha,decimals:12,id:32,min:.11,xcmLocation:{parents:1,interior:{X2:[{Parachain:2051},{GeneralKey:{length:4,data:"0x414a554e00000000000000000000000000000000000000000000000000000000"}}]}}},{asset:j,decimals:18,id:9,min:.15,xcmLocation:{parents:1,interior:{X1:{Parachain:2006}}}},{asset:K,decimals:12,id:14,min:.069,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:Le,decimals:18,id:41,min:.1,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xcccccccccc33d538dbc2ee4feab0a7a1ff4e8a94"}}]}}},{asset:Ka,decimals:12,id:27,min:.0079,xcmLocation:{parents:1,interior:{X1:{Parachain:2008}}}},{asset:P,decimals:10,id:5,min:.0018,xcmLocation:{parents:1,interior:"Here"}},{asset:Lt,decimals:18,id:18,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f"}}]}}},{asset:R,decimals:18,id:34,min:55e-7,xcmLocation:{parents:2,interior:{X1:{GlobalConsensus:{Ethereum:{chain_id:1}}}}}},{asset:Be,decimals:18,id:46,min:.0147058823529412,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x38eeb52f0771140d10c4e9a9a72349a329fe8a6a"}}]}}},{asset:Re,decimals:18,id:38,min:.037,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x57e114b691db790c35207b2e685d4a43181e6061"}}]}}},{asset:en,decimals:18,id:16,min:.035,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:ae,decimals:8,id:11,min:36e-8,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:at,decimals:10,id:17,min:.62,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0002000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:Qe,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:Je,decimals:6,id:43,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:1},{GeneralKey:{length:32,data:"0x26759f460ee5f743ed66d27c8f2a5623bf39d53ed575955320661e6e13e0e3da"}}]}}},{asset:Ye,decimals:18,id:252525,min:.022,xcmLocation:{parents:1,interior:{X1:{Parachain:3345}}}},{asset:_e,decimals:18,id:1000796,min:.013,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x5a98fcbea516cf06857215779fd812ca3bef1b32"}}]}}},{asset:F,decimals:12,id:1000771,min:35e-5,xcmLocation:{parents:2,interior:{X1:{GlobalConsensus:"Kusama"}}}},{asset:De,decimals:8,id:1000851,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x8236a87084f8b84306f72007f36f2618a5634494"}}]}}},{asset:Fe,decimals:18,id:1000794,min:.001,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x514910771af9ca656af840dff83e8264ecf986ca"}}]}}},{asset:Xe,decimals:18,id:39,min:5e-6,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x45804880de22913dafe09f4980848ece6ecbaf78"}}]}}},{asset:ne,decimals:18,id:30,min:.022,xcmLocation:{parents:1,interior:{X1:{Parachain:3369}}}},{asset:kt,decimals:12,id:36,min:.001,xcmLocation:{parents:1,interior:{X2:[{Parachain:2043},{PalletInstance:10}]}}},{asset:it,decimals:12,id:1000081,min:.16,xcmLocation:{parents:1,interior:{X2:[{Parachain:2094},{PalletInstance:10}]}}},{asset:Ne,decimals:18,id:1000795,min:.52,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x56072c95faa701256059aa122697b133aded9279"}}]}}},{asset:Ve,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:Oe,decimals:9,id:1000753,min:.003,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:21},{GeneralKey:{length:32,data:"0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3"}}]}}},{asset:We,decimals:18,id:1000625,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x9d39a5de30e57443bff2a8307a4256c8797a3497"}}]}}},{asset:rt,decimals:18,id:1000626,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xa3931d71877c0e7a3148cb7eb4463524fec27fbd"}}]}}},{asset:Rt,decimals:18,id:1000745,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000a3931d71877c0e7a3148cb7eb4463524fec27fbd"}}]}}},{asset:He,decimals:18,id:1000765,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x18084fba666a33d37592fa2633fd49a74dd93a88"}}]}}},{asset:Ue,decimals:18,id:35,min:.028,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F"}}]}}},{asset:Mt,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:Dt,decimals:6,id:21,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"}}]}}},{asset:vt,decimals:6,id:44,min:.014,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:30},{GeneralKey:{length:32,data:"0x00000000000000000000000060a3e35cc302bfa44cb288bc5a4f316fdb1adb42"}}]}}},{asset:Kt,decimals:6,id:1000766,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"}}]}}},{asset:T,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:Ut,decimals:6,id:1000767,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xdac17f958d2ee523a2206206994597c13d831ec7"}}]}}},{asset:le,decimals:18,id:33,min:.14,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:fe,decimals:10,id:15,min:.0019,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:ot,decimals:8,id:1000190,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"}}]}}},{asset:Xt,decimals:8,id:19,min:34e-8,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599"}}]}}},{asset:Ft,decimals:18,id:1000189,min:61e-7,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"}}]}}},{asset:Ze,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:Ke,decimals:18,id:1000809,min:635e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"}}]}}},{asset:Gt,decimals:10,id:1000085,min:2e4,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:31337}]}}}],balance:In.SubstrateBalanceType.Tokens,balanceOverrides:{[Un.key]:In.SubstrateBalanceType.System},ecosystem:In.ChainEcosystem.Polkadot,evmChain:vm,evmResolver:Sm,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:{[Lt.key]:{token:"0x0000000000000000000000000000000100000012",manager:"0xcFd576F88C90844AEBF45378Fd09931281D8b14d",transceiver:{wormhole:"0xe8660CA48f6f4D98BC48DB7Dd07C1a8E555801eA"}},[vt.key]:{token:"0x000000000000000000000000000000010000002C",manager:"0x8dd1286A29dF5a2785FB638d6fB1598144Cfbc4C",transceiver:{wormhole:"0x2e84fac378D67Dc2e11026fB4919E80263a87375"}},[Qe.key]:{token:"0x0000000000000000000000000000000100000028",manager:"0xcE73C15B9ED02413066DE5B904A36F8e8f9B5331",transceiver:{wormhole:"0xF38D9C3bA6999Dc331b32B416083Fd7e02D17B04"}},[Je.key]:{token:"0x000000000000000000000000000000010000002B",manager:"0xFCaF4aA069C565d25539028970703F01e47D3E0B",transceiver:{wormhole:"0x4e7b1E55D2354d4Dc6ABD876096Dc201de0541D1"}},[Ve.key]:{token:"0x00000000000000000000000000000001000F4530",manager:"0x9e200C0f28D92D296b201D96C8269d3CAFFfA9FF",transceiver:{wormhole:"0x2F04AcF249091425d51e67EeA3C3161ccE283202"}},[Oe.key]:{token:"0x00000000000000000000000000000001000F4531",manager:"0x978443f00cAB6b09445140321EC73a221ebFF5F8",transceiver:{wormhole:"0xA224D6f4e0E276b34D91bfE6c3A5fE6838322AF7"}},[Rt.key]:{token:"0x00000000000000000000000000000001000F4529",manager:"0x1973E7044d9A7C7bB2d6ea1693A296a9e4B7E448",transceiver:{wormhole:"0x68Ecadd7934D4FcFEABAfB209C95D379B96400cb"}},[Dt.key]:{token:"0x0000000000000000000000000000000100000015",manager:"0xEcEab64542A875C4472671D9Ed1E690cdD4e28fC",transceiver:{wormhole:"0x0d7488B39AA64468a709eC3b3d354DeFE539eD97"}},[_t.key]:{token:"0x0000000000000000000000000000000100000017",manager:"0x5E6C488103b47F804824AE15861638af4C436795",transceiver:{wormhole:"0xd2a16B736F32Df7C0DE72838837656FE0f85Ac0F"}},[Xt.key]:{token:"0x0000000000000000000000000000000100000013",manager:"0x6BFca089916c045b0Ca4A09B655aF9F926189993",transceiver:{wormhole:"0x9a8a1ab288f6749Ce5626DEE1B5d59441BdC187F"}},[Ze.key]:{token:"0x0000000000000000000000000000000100000014",manager:"0xB5cEf790D52A57fa619eD96eDd64c5328F3DCFb7",transceiver:{wormhole:"0x8acce9CA511d5D7213F8C3f813B8916087cd00ae"}}}},ws:qa,rpcs:Ga});var Gn=require("@galacticcouncil/xc-core");var nn=new Gn.Parachain({assetsData:[{asset:ne,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:Gn.SubstrateBalanceType.System,ecosystem:Gn.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 qn=require("@galacticcouncil/xc-core");var zn=new qn.Parachain({assetsData:[{asset:kt,xcmLocation:{parents:0,interior:{X1:{PalletInstance:10}}}}],balance:qn.SubstrateBalanceType.System,ecosystem:qn.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 sn=require("@galacticcouncil/xc-core");var jn=new sn.Parachain({assetsData:[{asset:it,id:"Native",xcmLocation:{parents:0,interior:{X1:{PalletInstance:10}}}}],balance:sn.SubstrateBalanceType.System,ecosystem:sn.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:sn.XcmVersion.v3});var $n=require("@galacticcouncil/xc-core");var km={assetsData:[{asset:P,xcmLocation:{parents:0,interior:"Here"}}],balance:$n.SubstrateBalanceType.System,ecosystem:$n.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"},Ji=new $n.Parachain({...km,key:"polkadot"});var Qn=require("@galacticcouncil/xc-core");var Yn=new Qn.Parachain({assetsData:[{asset:Mt,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:Qn.SubstrateBalanceType.System,ecosystem:Qn.ChainEcosystem.Polkadot,explorer:"https://unique.subscan.io",genesisHash:"0x84322d9cddbf35088f1e54e9a85c967a41a56a4f43445768125e61af166c7d31",key:"unique",name:"Unique network",parachainId:2037,ss58Format:7391,ws:"wss://ws.unique.network"});var an=require("@galacticcouncil/xc-core");var Jn=new an.Parachain({assetsData:[{asset:Ye,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:an.SubstrateBalanceType.System,ecosystem:an.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:an.XcmVersion.v3});var Zi=[N,tn,ke,se,k,zn,nn,jn,Ji,Yn,Jn];var Tn=require("@galacticcouncil/xc-core");var It=new Tn.SolanaChain({id:101,key:"solana",name:"Solana",assetsData:[{asset:Ve,decimals:9},{asset:Kn,id:"So11111111111111111111111111111111111111112",decimals:9},{asset:Qe,id:"J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",decimals:9},{asset:Je,id:"3b8X44fLF9ooXaUm3hhSgjpmVs6rZZ3pPoGnGahc3Uu7",decimals:6}],balance:Tn.SolanaBalanceType.Token,balanceOverrides:{[Ve.key]:Tn.SolanaBalanceType.Native},ecosystem:Tn.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:{[Ve.key]:{token:"So11111111111111111111111111111111111111112",manager:"DiGxk55uAQNVzzg2FucPgdrQ4azb5SDvWQvzpzJD3o7J",transceiver:{wormhole:"5J12e7mMcbbN3VkCrUPfZp2bDHMH3t1rKvxGcwuN53wx"},emitter:"2WUYeRrK2JctBEvNVXY4mRG2ewMzhidi7L4Y5dCwqY9D"},[Kn.key]:{token:"So11111111111111111111111111111111111111112",manager:"DiGxk55uAQNVzzg2FucPgdrQ4azb5SDvWQvzpzJD3o7J",transceiver:{wormhole:"5J12e7mMcbbN3VkCrUPfZp2bDHMH3t1rKvxGcwuN53wx"},emitter:"2WUYeRrK2JctBEvNVXY4mRG2ewMzhidi7L4Y5dCwqY9D"},[Qe.key]:{token:"J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",manager:"9HFvXujdkXubvmf93gyzkH1g3VPowDrmp85sWsfdcBTh",transceiver:{wormhole:"HgxvrPomT84AxgxknddAcC1iW9ysqHxmeoiKNZmQcovs"},emitter:"9Ss1eMHE8iDv9kCxERH5nabp9tx75AVoUWWEKaGgMrh9"},[Je.key]:{token:"3b8X44fLF9ooXaUm3hhSgjpmVs6rZZ3pPoGnGahc3Uu7",manager:"4T5m5NtRVewiCVzP2mnfeUoMYRqncfkrS21X2dhVCNRT",transceiver:{wormhole:"GiTY93vtrK4jZZchrxdV9r28JByRs7Ary2rsTPyPabJc"},emitter:"HuvSXe6hQaSMgo5dc8GYzavcS3aB4Bix9XYgVdfsq2sY"}},platformAddressFormat:"base58"}});var er=[It];var Zn=require("@galacticcouncil/xc-core");var Cn=new Zn.SuiChain({id:"0x35834a8a",key:"sui",name:"Sui",assetsData:[{asset:Oe,decimals:9}],balance:Zn.SuiBalanceType.Native,ecosystem:Zn.ChainEcosystem.Sui,explorer:"https://suiscan.xyz/",rpc:"https://rpc-mainnet.suiscan.xyz",wormhole:{id:21,coreBridge:"0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c",ntt:{[Oe.key]:{token:"0x2::sui::SUI",manager:"0xa0bc45e0384140dc125f273eda89cad1434f5dee430726cf6364bdcceba1e9a3",transceiver:{wormhole:"0x6afb4a6a9c4e5b6eeed568381ce95a79590f0c17ab8d0c59295826f2775bf832"},emitter:"0x25437da9f99dfab32c1a275663f51cd5c99eb867ab4d1f630e3799c5e68215da"}}}});var tr=[Cn];var Nt=require("@galacticcouncil/xc-core");var Tt=new Nt.Parachain({assetsData:[{asset:F,decimals:12,id:0,xcmLocation:{parents:1,interior:"Here"}},{asset:P,decimals:10,min:.001,xcmLocation:{parents:2,interior:{X1:[{GlobalConsensus:"Polkadot"}]}}},{asset:T,decimals:6,id:1984,xcmLocation:{parents:1,interior:{X2:[{PalletInstance:50},{GeneralIndex:1984}]}}}],balance:Nt.SubstrateBalanceType.Assets,balanceOverrides:{[F.key]:Nt.SubstrateBalanceType.System,[P.key]:Nt.SubstrateBalanceType.ForeignAssets},min:Nt.SubstrateMinType.Assets,ecosystem:Nt.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 es=require("@galacticcouncil/xc-core");var ts=new es.Parachain({assetsData:[{asset:Ua,id:0,xcmLocation:{parents:0,interior:"Here"}},{asset:F,decimals:12,id:1,xcmLocation:{parents:1,interior:"Here"}},{asset:T,decimals:6,id:14,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}}],balance:es.SubstrateBalanceType.Tokens,ecosystem:es.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 nr=[Tt,ts];var Mm=[...qi,...Zi,...er,...tr,...nr],sr=new Map(Mm.map(n=>[n.key,n]));var Lc=require("@galacticcouncil/xc-core");var ba=require("@galacticcouncil/xc-core");var Li={};wn(Li,{ContractBuilder:()=>ye,ExtrinsicBuilder:()=>A,ExtrinsicDecorator:()=>$t,FeeAmountBuilder:()=>X,FeeAssetBuilder:()=>Ss,MoveBuilder:()=>bi,ProgramBuilder:()=>Bi,XcmTransferType:()=>mt,XcmVersion:()=>jt});var Pn=require("@galacticcouncil/xc-core"),ar=require("viem"),Im=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,ar.encodeFunctionData)({abi:Pn.Abi[o.module],functionName:o.func,args:o.args}));return[new Pn.ContractConfig({abi:Pn.Abi.Batch,address:Pn.Precompile.Batch,args:[a,i,r,[]],func:"batchAll",module:"Batch"})]}}),ir=()=>({batchAll:Im});var ns=require("@galacticcouncil/xc-core");function ge(n,e){if(e<0||e>100)throw Error(`padPercent ${e} not in range of 0 to 100.`);return n+n*e/100n}function En(n){return typeof n=="object"?Object.values(n)[0]:n}function rr(){return{approve:n=>({build:async e=>{let{amount:t,asset:s,source:a}=e,i=a.chain,r=ns.Wormhole.fromChain(i),o=i.getAssetId(s);return[new ns.ContractConfig({abi:ns.Abi.Erc20,address:En(o).toString(),args:[n(r),t],func:"approve",module:"Erc20"})]}})}}var ss=require("@galacticcouncil/xc-core");var or=require("@galacticcouncil/common"),cr=require("polkadot-api"),mr=require("@polkadot-api/utils"),{H160:Tm,isEvmAddress:Cm}=or.h160;function Pm(n){let e=Cm(n)?Tm.toAccount(n):n;return(0,mr.toHex)((0,cr.AccountId)().enc(e))}var Em=()=>({build:async n=>{let{address:e,amount:t,asset:s,source:a}=n,i=a.chain,r=ss.Basejump.fromChain(i),o=i.getAssetId(s);return[new ss.ContractConfig({abi:ss.Abi.Basejump,address:r.getAddress(),args:[En(o),t,Pm(e)],func:"bridgeViaWormhole",module:"Basejump"})]}}),ur=()=>({bridgeViaWormhole:Em});var Ct=require("@galacticcouncil/xc-core"),lr=require("@galacticcouncil/common"),{Ss58Addr:dr}=Ct.addr;function Bm(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 za(n,e){let t=n.getAssetId(e);return typeof t=="string"?Bm(t):t}function fr(){return{transferAssetsToPara32:()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=za(a.chain,t);return[new Ct.ContractConfig({abi:Ct.Abi.PolkadotXcm,address:Ct.Precompile.PolkadotXcm,args:[s.chain.parachainId,dr.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=za(a.chain,t),r=za(a.chain,a.destinationFeeBalance),o=lr.big.toBigInt(s.fee.amount,s.fee.decimals);return[new Ct.ContractConfig({abi:Ct.Abi.PolkadotXcm,address:Ct.Precompile.PolkadotXcm,args:[s.chain.parachainId,dr.getPubKey(n),[{asset:i,amount:e},{asset:r,amount:o}],1],func:"transferAssetsToPara32",module:"PolkadotXcm"})]}})}}var Et=require("@galacticcouncil/xc-core"),on=require("@galacticcouncil/descriptors"),Mr=require("@polkadot-api/substrate-bindings"),qs=require("@polkadot-api/utils"),Ir=require("viem");var gr=require("@galacticcouncil/xc-core"),Ks=null;async function pr(){if(Ks)return Ks;let n=await gr.codec.getHubCodecs();return Ks={message:n.tx.PolkadotXcm.send.inner.message,location:n.tx.PolkadotXcm.send.inner.dest},Ks}var wr=require("@galacticcouncil/xc-core"),h=require("@galacticcouncil/descriptors"),xr=require("@polkadot-api/substrate-bindings"),Sr=require("@polkadot-api/utils");var hr=require("@galacticcouncil/descriptors"),pe=340282366920938463463374607431768211455n,Pt="0x0000000000000000000000000000000000000000000000000000000000000000",me={parents:1,interior:hr.XcmV3Junctions.Here()},yr=0,rn=1e3,Gs=1002,pt=1,Bn="5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY",br="0x0000000000000000000000000000000000000000000000000000000000000000",Ar="0x0000000000000000000000000000000000000000";var ja="0x0000000000000000000000000000000000000000",as=n=>({parents:2,interior:h.XcmV5Junctions.X1(h.XcmV5Junction.GlobalConsensus(h.XcmV5NetworkId.Ethereum({chain_id:BigInt(n)})))}),$a=(n,e)=>({parents:2,interior:h.XcmV5Junctions.X2([h.XcmV5Junction.GlobalConsensus(h.XcmV5NetworkId.Ethereum({chain_id:BigInt(n)})),h.XcmV5Junction.AccountKey20({key:e,network:void 0})])});function vr(n,e){let t=as(n),s=$a(n,"0x"+"00".repeat(20)),a=1000000000000n,i=1000000000n,r=[h.XcmV5Instruction.ReserveAssetDeposited([{id:t,fun:h.XcmV3MultiassetFungibility.Fungible(a)},{id:s,fun:h.XcmV3MultiassetFungibility.Fungible(a)}]),h.XcmV5Instruction.ExchangeAsset({give:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.AllOf({id:t,fun:{type:"Fungible",value:void 0}})),want:[{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(i)}],maximal:!1}),h.XcmV5Instruction.PayFees({asset:{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(i)}})],o=Qa({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 Qa(n){let{ethChainId:e,destinationParaId:t,tokenAddress:s,beneficiaryHex:a,tokenAmount:i,hydrationDotFee:r,topic:o}=n,c=as(e),m=s===ja?c:$a(e,s),f=a.length===42&&a.startsWith("0x")?h.XcmV5Junction.AccountKey20({key:a,network:void 0}):h.XcmV5Junction.AccountId32({id:a,network:void 0}),y={parents:0,interior:h.XcmV5Junctions.X1(f)};return[h.XcmV5Instruction.SetAppendix([h.XcmV5Instruction.RefundSurplus(),h.XcmV5Instruction.DepositAsset({assets:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.All()),beneficiary:y})]),h.XcmV5Instruction.ExchangeAsset({give:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.AllOf({id:c,fun:{type:"Fungible",value:void 0}})),want:[{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(r)}],maximal:!1}),h.XcmV5Instruction.InitiateTransfer({destination:{parents:1,interior:h.XcmV5Junctions.X1(h.XcmV5Junction.Parachain(t))},remote_fees:{type:"ReserveDeposit",value:h.XcmV5AssetFilter.Definite([{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(r)}])},preserve_origin:!1,assets:[{type:"ReserveDeposit",value:h.XcmV5AssetFilter.Definite([{id:m,fun:h.XcmV3MultiassetFungibility.Fungible(i)}])}],remote_xcm:[h.XcmV5Instruction.DepositAsset({assets:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.AllCounted(3)),beneficiary:y}),h.XcmV5Instruction.SetTopic(o)]}),h.XcmV5Instruction.RefundSurplus(),h.XcmV5Instruction.DepositAsset({assets:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.All()),beneficiary:y}),h.XcmV5Instruction.SetTopic(o)]}function Ya(n){let{tokenAddress:e,senderPubKey:t,beneficiaryHex:s,tokenAmount:a,sourceExecutionFee:i,dotRemoteFee:r,dotToEtherSwapAmount:o,etherFeeAmount:c,topic:m}=n,g=as(pt),f=e===ja?g:$a(pt,e),y={parents:0,interior:h.XcmV5Junctions.X1(h.XcmV5Junction.AccountId32({id:t,network:void 0}))},b={parents:0,interior:h.XcmV5Junctions.X1(h.XcmV5Junction.AccountKey20({key:s,network:void 0}))},w={parents:2,interior:h.XcmV5Junctions.X1(h.XcmV5Junction.GlobalConsensus(h.XcmV5NetworkId.Ethereum({chain_id:BigInt(pt)})))},x=[h.XcmV5Instruction.DepositAsset({assets:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.AllCounted(3)),beneficiary:b}),h.XcmV5Instruction.SetTopic(m)],_=[h.XcmV5Instruction.SetAppendix([h.XcmV5Instruction.SetHints({hints:[{type:"AssetClaimer",value:{location:y}}]}),h.XcmV5Instruction.RefundSurplus(),h.XcmV5Instruction.DepositAsset({assets:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.All()),beneficiary:y})])];_.push(h.XcmV5Instruction.ExchangeAsset({give:h.XcmV5AssetFilter.Definite([{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(o)}]),want:[{id:g,fun:h.XcmV3MultiassetFungibility.Fungible(c)}],maximal:!1}));let v=[{type:"ReserveWithdraw",value:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.AllOf({id:f,fun:{type:"Fungible",value:void 0}}))}],O=h.XcmV5AssetFilter.Definite([{id:g,fun:h.XcmV3MultiassetFungibility.Fungible(c)}]);_.push(h.XcmV5Instruction.InitiateTransfer({destination:w,remote_fees:{type:"ReserveWithdraw",value:O},preserve_origin:!0,assets:v,remote_xcm:x}),h.XcmV5Instruction.SetTopic(m));let C=i+r+o,W=[{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(C)},{id:f,fun:h.XcmV3MultiassetFungibility.Fungible(a)}],U=[{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(i)}],M={type:"ReserveWithdraw",value:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.AllOf({id:f,fun:{type:"Fungible",value:void 0}}))},ee=[{type:"ReserveWithdraw",value:h.XcmV5AssetFilter.Definite([{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(o)}])},M];return[h.XcmV5Instruction.WithdrawAsset(W),h.XcmV5Instruction.PayFees({asset:U[0]}),h.XcmV5Instruction.SetAppendix([h.XcmV5Instruction.SetHints({hints:[{type:"AssetClaimer",value:{location:y}}]}),h.XcmV5Instruction.RefundSurplus(),h.XcmV5Instruction.DepositAsset({assets:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.All()),beneficiary:y})]),h.XcmV5Instruction.InitiateTransfer({destination:{parents:1,interior:h.XcmV5Junctions.X1(h.XcmV5Junction.Parachain(rn))},remote_fees:{type:"ReserveWithdraw",value:h.XcmV5AssetFilter.Definite([{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(r)}])},preserve_origin:!0,assets:ee,remote_xcm:_}),h.XcmV5Instruction.SetTopic(m)]}function kr(n){let{address:e,amount:t,asset:s,sender:a,source:i,destination:r,messageId:o}=n,c=i.chain,m=(0,xr.getSs58AddressInfo)(a);if(!m.isValid)throw new Error(`Invalid SS58 address: ${a}`);let g=(0,Sr.toHex)(m.publicKey),f=c.getAssetXcmLocation(s),y=f?wr.multiloc.findNestedKey(f,"key"):void 0,b=y?y.key:ja,w=r.feeBreakdown,x=w.sourceExecutionFee??0n,_=w.dotRemoteFee??0n,v=w.dotToEtherSwapAmount??0n,O=w.etherFeeAmount??0n,W=Ya({tokenAddress:b,senderPubKey:g,beneficiaryHex:e,tokenAmount:t,sourceExecutionFee:x,dotRemoteFee:_,dotToEtherSwapAmount:v,etherFeeAmount:O,topic:o??"0x0000000000000000000000000000000000000000000000000000000000000000"});return h.XcmVersionedXcm.V5(W)}var{Ss58Addr:Tr}=Et.addr,Lm="0x0000000000000000000000000000000000000000",Rm=()=>({build:async n=>{let{address:e,amount:t,asset:s,sender:a,source:i,destination:r}=n,o=i.chain,c=r.chain,m=Et.Snowbridge.fromChain(o),g=o.getAssetId(s),f=En(g),y=s.originSymbol==="ETH",b=r.feeBreakdown.executionFee,w=r.feeBreakdown.relayerFee,x=r.feeBreakdown.hydrationDotFee,_=r.fee.amount,v=Tr.getPubKey(e),O=new TextEncoder().encode(`${c.parachainId}${a}${f}${v}${t}${Date.now()}`),C=(0,qs.toHex)((0,Mr.Blake2256)(O)),W=Qa({ethChainId:pt,destinationParaId:c.parachainId,tokenAddress:y?Lm:f,beneficiaryHex:v,tokenAmount:t,hydrationDotFee:x,topic:C}),U=await pr(),M=(0,qs.toHex)(U.message.enc(on.XcmVersionedXcm.V5(W))),ee=[];y||ee.push((0,Ir.encodeAbiParameters)([{type:"uint8"},{type:"address"},{type:"uint128"}],[0,f,t]));let Ce=U.location.enc(on.XcmVersionedLocation.V5({parents:0,interior:on.XcmV5Junctions.X1(on.XcmV5Junction.AccountId32({id:v,network:void 0}))})),lt=(0,qs.toHex)(Ce.slice(1));return[new Et.ContractConfig({abi:Et.Abi.Snowbridge,address:m.getGateway(),args:[M,ee,lt,b,w],value:y?_+t:_,func:"v2_sendMessage",module:"Snowbridge"})]}}),_m=()=>({build:async n=>{let{address:e,amount:t,asset:s,source:a,destination:i}=n,r=a.chain,o=i.chain,c=Et.Snowbridge.fromChain(r),m=r.getAssetId(s),g=En(m),f=s.originSymbol==="ETH",y=i.feeBreakdown.bridgeFeeInDot,b=i.fee.amount;return[new Et.ContractConfig({abi:Et.Abi.Snowbridge,address:c.getGateway(),args:[g,o.parachainId,[1,Tr.getPubKey(e)],y,t],value:f?b+t:b,func:"sendToken",module:"Snowbridge"})]}}),Cr=()=>({v2SendMessage:Rm,sendToken:_m});var Q=require("@galacticcouncil/xc-core");var gs=require("@wormhole-foundation/sdk-base"),zs=require("@wormhole-foundation/sdk-definitions"),ps="0x00",Ja=8,Pr="https://executor.labsapis.com",Dm=[{name:"prefix",binary:"bytes",size:4},{name:"srcChain",binary:"uint",size:2},{name:"srcManager",binary:"bytes",size:32},{name:"messageId",binary:"uint",size:32}],Er=(n,e,t)=>{let s=(0,gs.serializeLayout)(Dm,{prefix:gs.encoding.bytes.encode(zs.RequestPrefix.ERN1),srcChain:n,srcManager:new zs.UniversalAddress(e,"hex").toUint8Array(),messageId:t});return gs.encoding.hex.encode(s,!0)};var si={};wn(si,{ASSET_LOCKDOWN_PERIOD_BLOCKS:()=>Rr,AssethubClient:()=>et,BaseClient:()=>ht,ExecutorClient:()=>Zs,HydrationClient:()=>Ge,NttEvmClient:()=>bs,NttSolanaClient:()=>As,NttSuiClient:()=>ws,UNMETERED:()=>qt,capacityAt:()=>ys,executorClient:()=>rs,getAllAssetDepositLimits:()=>ti,getAssetDepositLimit:()=>ei,getGlobalWithdrawLimit:()=>ni,nttClient:()=>zt,nttDef:()=>cn});var Za=require("@galacticcouncil/common"),hs=require("@galacticcouncil/descriptors"),ht=class{chain;descriptor;constructor(e,t){this.chain=e,this.descriptor=t??hs.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,Za.encodeLocation)(a),r=await this.refApi.apis.XcmPaymentApi.query_weight_to_asset_fee(s.value,hs.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,Za.encodeLocation)(a),r=await this.refApi.apis.XcmPaymentApi.query_weight_to_asset_fee(s.value,hs.XcmVersionedAssetId.V4(i));if(!r.success)throw Error(`Can't convert weight to fee in ${t.originSymbol}`);return BigInt(r.value)}};var ct=require("@galacticcouncil/descriptors"),Br=require("@galacticcouncil/common"),js=require("@polkadot-api/substrate-bindings"),Lr=require("@polkadot-api/utils");var et=class extends ht{constructor(e){super(e)}async checkIfSufficient(e){let t=this.chain.getAssetId(e),s=this.chain.getAssetXcmLocation(e),a=(0,Br.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,Lr.toHex)((0,js.Twox128)(s)),i=await this.client._request("state_getStorage",[a]);if(!i)return t;let r=js.u128.dec(i);return r===0n?t:r}async calculateDeliveryFee(e,t){let s=ct.XcmVersionedLocation.V5({parents:1,interior:ct.XcmV5Junctions.X1(ct.XcmV5Junction.Parachain(t))}),a=ct.XcmVersionedAssetId.V5({parents:1,interior:{type:"Here",value:void 0}}),i=await this.api().apis.XcmPaymentApi.query_delivery_fees(s,ct.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:ct.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:ct.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:ct.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 Dr=require("@galacticcouncil/descriptors");var Rr=14400;function _r(n,e,t,s,a,i){let r=e?.xcm_rate_limit!=null?BigInt(e.xcm_rate_limit):null,o=e?.symbol?new TextDecoder().decode(e.symbol):`#${n}`,c=e?.decimals??12,m=!1,g,f,y;t&&(t.type==="Locked"?(g=t.value,m=a<t.value):(f=t.value[0],y=t.value[1]));let b=s?.type==="Local"?"Local":"External",w=!m&&f!==void 0&&f+Rr<=a,x=null;if(r!==null)if(m)x=0n;else if(w)x=r;else{let _=y??i,v=i>_?i-_:0n;x=r>v?r-v:0n}return{assetId:n,symbol:o,decimals:c,limit:r,locked:m,lockedUntilBlock:g,lastResetBlock:f,baselineIssuance:y,currentIssuance:i,headroom:x,category:b,periodExpired:w}}async function ei(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 _r(e,s,a,i,r,o)}async function ti(n){let[e,t,s,a,i,r]=await Promise.all([n.query.AssetRegistry.Assets.getEntries({at:"best"}),n.query.CircuitBreaker.AssetLockdownState.getEntries({at:"best"}),n.query.CircuitBreaker.GlobalAssetOverrides.getEntries({at:"best"}),n.query.System.Number.getValue({at:"best"}),n.query.Balances.TotalIssuance.getValue({at:"best"}),n.query.Tokens.TotalIssuance.getEntries({at:"best"})]),o=new Map(t.map(f=>[f.keyArgs[0],f.value])),c=new Map(s.map(f=>[f.keyArgs[0],f.value])),m=new Map(r.map(f=>[f.keyArgs[0],f.value])),g=new Map;for(let f of e){let y=f.keyArgs[0],b=f.value;if(b?.xcm_rate_limit==null)continue;let w=y===0?i:m.get(y)??0n,x=_r(y,b,o.get(y),c.get(y),a,w);g.set(y.toString(),x)}return g}async function ni(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,x=o*w/g;f=o>x?o-x:0n}}let y=r||f>=m?0n:m-f;return{configured:!0,limit:m,windowMs:g,used:f,lastUpdateMs:c,headroom:y,lockdown:r,lockdownUntilMs:i}}var Ge=class extends ht{constructor(e){super(e,Dr.hydration)}async checkIfSufficient(e){let t=this.chain.getAssetId(e),s=Number(t),a=await this.api().query.AssetRegistry.Assets.getValue(s);return a?a.is_sufficient||!1:!0}async getFeeAsset(e){let t=await this.api().query.MultiTransactionPayment.AccountCurrencyMap.getValue(e);return t?t.toString():"0"}async getAssetBalance(e,t){return t==="0"?this.getSystemAccountBalance(e):this.getTokensAccountsBalance(e,t)}async getSystemAccountBalance(e){let s=(await this.api().query.System.Account.getValue(e)).data,{free:a,frozen:i}=s;return BigInt(a)-BigInt(i)}async getTokensAccountsBalance(e,t){let s=Number(t),a=await this.api().query.Tokens.Accounts.getValue(e,s),{free:i,frozen:r}=a;return BigInt(i)-BigInt(r)}getAssetDepositLimit(e){let t=typeof e=="number"?e:Number(this.chain.getAssetId(e));return ei(this.api(),t)}getAllAssetDepositLimits(){return ti(this.api())}getGlobalWithdrawLimit(){return ni(this.api())}};var Js=require("@galacticcouncil/xc-core");var $s=require("@galacticcouncil/xc-core"),Nr=require("@galacticcouncil/common");var Fr=require("@galacticcouncil/xc-core"),qt={capacity:0n,limit:0n,windowMs:0,capacityAtLastTx:0n,lastTxMs:0};function cn(n,e){if(!e)throw new Error("No ntt asset given for "+n.name+".");return Fr.Ntt.fromChain(n,e)}function ys(n,e,t,s,a){let i=s>t?s-t:0n,r=e+n*i/a;return r<n?r:n}var Fm=500000n;function Xr(n,e){let t=n>>8n,s=Number(n&0xffn);return t*Nr.big.pow10(e-s)}var bs=class{constructor(e,t){this.chain=e;this.asset=t}getOutboundLimit(){return this.getLimit()}getInboundLimit(e){return this.getLimit($s.Wormhole.fromChain(e).getWormholeId())}async getRedeemBudget(){return{gasLimit:Fm,msgValue:0n}}async getLimit(e){let t=this.chain.evmClient.getProvider(),s=$s.Abi.NttManager,a=cn(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?qt:{capacity:o,limit:Xr(c.limit,r),windowMs:Number(i)*1e3,capacityAtLastTx:Xr(c.currentCapacity,r),lastTxMs:Number(c.lastTxTimestamp)*1e3}}};var Qs=require("@galacticcouncil/xc-core"),Or=require("@solana/spl-token"),is=require("@solana/web3.js");var Xm=250000n,Nm=10000000n,Vm=2039280n,Vr=3600*24,Om=8,Wm=9;function Hm(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 As=class{constructor(e,t){this.chain=e;this.asset=t}getOutboundLimit(){return this.getLimit()}getInboundLimit(e){return this.getLimit(Qs.Wormhole.fromChain(e).getWormholeId())}async getRedeemBudget(e){let{connection:t}=this.chain,s={gasLimit:Xm,msgValue:Nm};if(!this.asset||!e)return{...s,msgValue:s.msgValue+Vm};let a=new is.PublicKey(cn(this.chain,this.asset).token),{ata:i}=await Qs.spl.getTokenAccount(t,a,new is.PublicKey(e));if(await t.getAccountInfo(i))return s;let o=await(0,Or.getMinimumBalanceForRentExemptAccount)(t);return{...s,msgValue:s.msgValue+BigInt(o)}}async getLimit(e){let{pda:t,offset:s}=this.rateLimitPda(e),a=await this.chain.connection.getAccountInfo(t);if(!a)return qt;let{limit:i,capacityAtLastTx:r,lastTxTimestamp:o}=Hm(a.data,s),c=BigInt(Math.floor(Date.now()/1e3));return{capacity:ys(i,r,o,c,BigInt(Vr)),limit:i,windowMs:Vr*1e3,capacityAtLastTx:r,lastTxMs:Number(o)*1e3}}rateLimitPda(e){let t=new is.PublicKey(cn(this.chain,this.asset).manager),s=new TextEncoder;if(e===void 0){let[r]=is.PublicKey.findProgramAddressSync([s.encode("outbox_rate_limit")],t);return{pda:r,offset:Om}}let a=new Uint8Array(2);new DataView(a.buffer).setUint16(0,e,!1);let[i]=is.PublicKey.findProgramAddressSync([s.encode("inbox_rate_limit"),a],t);return{pda:i,offset:Wm}}};var Ys=require("@galacticcouncil/xc-core");var Um=10000000n,Wr=3600*24*1e3;function Hr(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:ys(e,t,s,a,BigInt(Wr)),limit:e,windowMs:Wr,capacityAtLastTx:t,lastTxMs:Number(s)}}var ws=class{constructor(e,t){this.chain=e;this.asset=t}getOutboundLimit(){return this.getLimit()}getInboundLimit(e){return this.getLimit(Ys.Wormhole.fromChain(e).getWormholeId())}async getRedeemBudget(){return{gasLimit:Um,msgValue:0n}}async getLimit(e){let t=this.chain.client,s=cn(this.chain,this.asset).manager,a=await Ys.suiPkg.getObject(t,s);if(e===void 0){let m=a.fields.outbox?.fields?.rate_limit?.fields;return m?Hr(m):qt}let i=a.fields.peers?.fields?.id?.id;if(!i)return qt;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?Hr(c):qt}};function zt(n,e){return n instanceof Js.SolanaChain?new As(n,e):n instanceof Js.SuiChain?new ws(n,e):new bs(n,e)}var Ln=require("@wormhole-foundation/sdk-base"),ea=require("@wormhole-foundation/sdk-definitions");var Km=300*1e3,Gm=n=>{try{let{quote:e}=(0,Ln.deserializeLayout)(ea.signedQuoteLayout,Ln.encoding.hex.decode(n));return e.expiryTime.getTime()}catch{return 0}},Zs=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&&Gm(o.signedQuote)-Date.now()>Km)return o;let c=Ln.encoding.hex.encode((0,Ln.serializeLayout)(ea.relayInstructionsLayout,{requests:[{request:{type:"GasInstruction",gasLimit:a,msgValue:i}}]}),!0),m=await fetch(Pr+"/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 y={signedQuote:g,estimatedCost:BigInt(f),relayInstructions:c};return this.quotes.set(r,y),y}},rs=new Zs;var ai=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(),ps],functionName:"quoteDeliveryPrice"}),y=r.getAssetDecimals(s)??0,b=t;if(y>Ja){let w=10n**BigInt(y-Ja);b=t-t%w}return{ctx:r,ntt:c,rcvWh:m,rcvAddress:g,transferAmount:b,deliveryPrice:f[1],wrapNative:r.getBalanceType(s)===Q.EvmBalanceType.Native}},qm=()=>({build:async n=>{let{ntt:e,rcvWh:t,rcvAddress:s,transferAmount:a,deliveryPrice:i,wrapNative:r}=await ai(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"})]}}),zm=()=>({build:async n=>{let{ctx:e,ntt:t,rcvWh:s,rcvAddress:a,transferAmount:i,deliveryPrice:r,wrapNative:o}=await ai(n),c=Q.Wormhole.fromChain(e),m=c.getNttExecutor(),g=e instanceof Q.EvmParachain?await e.getDerivatedAddress(n.sender):n.sender,f=await zt(n.destination.chain,n.destination.balance).getRedeemBudget(n.address),{signedQuote:y,estimatedCost:b,relayInstructions:w}=await rs.quote(c.getWormholeId(),s.getWormholeId(),f),x=s.normalizeAddress(a),_={value:b,refundAddress:g,signedQuote:y,instructions:w},v={transferTokenFee:0n,nativeTokenFee:0n,payee:g};return[new Q.ContractConfig({abi:Q.Abi.NttManagerWithExecutor,address:m,args:[t.manager,i,s.getWormholeId(),x,x,ps,_,v],token:t.token,wrapNative:o,value:r+b,func:"transfer",module:"NttManagerWithExecutor"})]}}),jm=()=>({build:async n=>{let{ctx:e,ntt:t,rcvWh:s,rcvAddress:a,transferAmount:i,deliveryPrice:r,wrapNative:o}=await ai(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,y=await zt(m,n.destination.balance).getRedeemBudget(n.address),[b,w]=await Promise.all([rs.quote(c.getWormholeId(),s.getWormholeId(),y),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,Er(c.getWormholeId(),t.manager,BigInt(w)),b.relayInstructions],value:b.estimatedCost,func:"requestExecution",module:"Executor"})]}}),Ur=()=>({transfer:qm,transferWithExecutor:zm,transferViaExecutor:jm});function Kr(){return{Ntt:Ur}}function ye(){return{Batch:ir,Erc20:rr,Basejump:ur,PolkadotXcm:fr,Snowbridge:Cr,Wormhole:Kr}}var ii=require("@galacticcouncil/common"),qr=require("@galacticcouncil/xc-core"),Gr="AssetConversion",$m=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,ii.encodeLocation)(c.getAssetXcmLocation(r)),g=(0,ii.encodeLocation)(c.getAssetXcmLocation(o)),f=r.amount+r.amount*BigInt(n.slippage)/100n,y=o.amount;return new qr.ExtrinsicConfig({module:Gr,func:e,getTx:b=>b.getUnsafeApi().tx[Gr][e]({path:[m,g],amount_out:y,amount_in_max:f,send_to:t,keep_alive:!0})})}}},zr=()=>({swapTokensForExactTokens:$m});var ta=require("@galacticcouncil/descriptors"),jr=require("@galacticcouncil/xc-core"),Qm="Assets",Ym=()=>{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 jr.ExtrinsicConfig({module:Qm,func:n,getTx:m=>m.getTypedApi(ta.hub).tx.Assets.transfer({id:Number(c),target:ta.MultiAddress.Id(s),amount:o})})}}},$r=()=>({transfer:Ym});var Yr=require("@galacticcouncil/xc-core"),Qr="Balances",Jm=(n=!1)=>{let e="transfer_all";return{build:async({address:t})=>new Yr.ExtrinsicConfig({module:Qr,func:e,getTx:s=>s.getUnsafeApi().tx[Qr][e]({dest:t,keep_alive:n})})}},Jr=()=>({transferAll:Jm});var os=require("@galacticcouncil/xc-core"),to=require("polkadot-api"),Zr="EVM",na=(1n<<64n)-1n,eo=n=>[n&na,n>>64n&na,n>>128n&na,n>>192n&na],Zm=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,os.getEvmPrerequisites)(s,i,e.amount,a[0]),...a.map(f=>({to:f.address,data:f.encodeFunctionData(),value:f.value,gas:os.Gas.transfer}))],g=m.length>1;return new os.ExtrinsicConfig({module:g?"Utility":Zr,func:g?"batch_all":"call",getTx:f=>{let y=f.getUnsafeApi(),b=m.map(w=>y.tx[Zr].call({source:i,target:w.to,input:to.Binary.fromHex(w.data),value:eo(w.value??0n),gas_limit:w.gas,max_fee_per_gas:eo(o),max_priority_fee_per_gas:void 0,nonce:void 0,access_list:[],authorization_list:[]}));return g?y.tx.Utility.batch_all({calls:b.map(w=>w.decodedCall)}):b[0]}})}}),no=()=>({call:Zm});var so=require("@galacticcouncil/descriptors"),ao=require("@galacticcouncil/xc-core"),eu="Router",tu=n=>({build:async({source:t})=>{let{chain:s,destinationFeeSwap:a}=t;if(!a)throw new Error("Swap context not found.");let{aIn:i,aOut:r,route:o}=a,c=s,m=c.getMetadataAssetId(i),g=c.getMetadataAssetId(r),f=r.amount,y=i.amount+i.amount*BigInt(n.slippage)/100n;return new ao.ExtrinsicConfig({module:eu,func:"buy",getTx:b=>b.getTypedApi(so.hydration).tx.Router.buy({asset_in:Number(m),asset_out:Number(g),amount_out:f,max_amount_in:y,route:o})})}}),io=()=>({buy:tu});var ro=require("@galacticcouncil/xc-core"),ri="Utility",oo=n=>n?.type===ri&&n?.value?.type==="batch_all"?n.value.value.calls.flatMap(oo):[n],nu=n=>{let e="batch_all";return{build:async t=>{let s=await Promise.all(n.map(a=>a.build(t)));return new ro.ExtrinsicConfig({module:ri,func:e,getTx:a=>{let i=s.flatMap(r=>oo(r.getTx(a).decodedCall));return a.getUnsafeApi().tx[ri][e]({calls:i})}})}}},co=()=>({batchAll:nu});var Dn=require("@galacticcouncil/xc-core"),To=require("@galacticcouncil/common");var Rn=require("@galacticcouncil/xc-core"),S=require("@galacticcouncil/descriptors");var he=require("@galacticcouncil/descriptors");var mo=require("@galacticcouncil/common"),oi=require("@galacticcouncil/descriptors"),uo=require("@polkadot-api/substrate-bindings"),lo=require("@polkadot-api/utils");function be(n){if(n.length===42&&n.startsWith("0x"))return oi.XcmV3Junction.AccountKey20({key:n,network:void 0});let t=(0,uo.getSs58AddressInfo)(n);if(!t.isValid)throw new Error(`Invalid SS58 address: ${n}`);return oi.XcmV3Junction.AccountId32({id:(0,lo.toHex)(t.publicKey),network:void 0})}function sa(n,e,t){return mo.acc.getMultilocationDerivatedAccount(n.parachainId,e,t.parachainId===0?0:1,t.usesH160Acc)}var ci=require("@galacticcouncil/xc-core");function fo(n,e){let t=ci.multiloc.findNestedKey(n,"GeneralIndex"),s=ci.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 ie(n,e){let t=n.getAssetXcmLocation(e);if(!t)throw new Error(e.originSymbol+" location config is missing.");return t}var aa={};wn(aa,{ETHER_TOKEN_ADDRESS:()=>mi,erc20Location:()=>au,erc20LocationReanchored:()=>iu,ethereumLocation:()=>po,parachainLocation:()=>su});var yt=require("@galacticcouncil/descriptors"),mi="0x0000000000000000000000000000000000000000",go=n=>yt.XcmV3Junction.GlobalConsensus(yt.XcmV3JunctionNetworkId.Ethereum({chain_id:BigInt(n)}));function po(n){return{parents:2,interior:yt.XcmV3Junctions.X1(go(n))}}function su(n){return{parents:1,interior:yt.XcmV3Junctions.X1(yt.XcmV3Junction.Parachain(n))}}function au(n,e){return e===mi?po(n):{parents:2,interior:yt.XcmV3Junctions.X2([go(n),yt.XcmV3Junction.AccountKey20({key:e})])}}function iu(n){return n===mi?{parents:0,interior:{type:"Here"}}:{parents:0,interior:yt.XcmV3Junctions.X1(yt.XcmV3Junction.AccountKey20({key:n}))}}var ui=require("@galacticcouncil/common"),ho=require("@galacticcouncil/xc-core");function ue(n,e){return ru(e)>=4?(0,ui.encodeLocation)(n):ou(n)}function ru(n){let e=n.toString().replace("V","").replace("v","");return Number(e)}function ou(n){return{type:"Concrete",value:(0,ui.encodeLocation)(n)}}var cu=1e3;function mu(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 uu(n){if(n)return mu(n)?cu:ho.multiloc.findParachain(n)}function yo(n,e,t,s){let a=e.getAssetXcmLocation(n),i=uu(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 jt=(i=>(i.v1="V1",i.v2="V2",i.v3="V3",i.v4="V4",i.v5="V5",i))(jt||{}),mt=(a=>(a.Teleport="Teleport",a.LocalReserve="LocalReserve",a.DestinationReserve="DestinationReserve",a.RemoteReserve="RemoteReserve",a))(mt||{});function ia(n,e){let t="V4",s=ue(ie(e,n),t),a=Pt;return[he.XcmV4Instruction.ReserveAssetDeposited([{id:me,fun:he.XcmV3MultiassetFungibility.Fungible(pe)},{id:s,fun:he.XcmV3MultiassetFungibility.Fungible(pe)}]),he.XcmV4Instruction.ClearOrigin(),he.XcmV4Instruction.BuyExecution({fees:{id:me,fun:he.XcmV3MultiassetFungibility.Fungible(pe)},weight_limit:he.XcmV3WeightLimit.Unlimited()}),he.XcmV4Instruction.DepositAsset({assets:he.XcmV4AssetAssetFilter.Wild(he.XcmV4AssetWildAsset.AllCounted(2)),beneficiary:{parents:0,interior:he.XcmV3Junctions.X1(be(Bn))}}),he.XcmV4Instruction.SetTopic(a)]}var Vt=require("@galacticcouncil/descriptors");function di(n,e){let t="V4",s=ue(ie(e,n),t),a=ra("V4",be(Ar),be(Bn),s,Pt);return[Vt.XcmV4Instruction.WithdrawAsset([{id:me,fun:Vt.XcmV3MultiassetFungibility.Fungible(pe)},{id:s,fun:Vt.XcmV3MultiassetFungibility.Fungible(pe)}]),Vt.XcmV4Instruction.ClearOrigin(),Vt.XcmV4Instruction.BuyExecution({fees:{id:me,fun:Vt.XcmV3MultiassetFungibility.Fungible(pe)},weight_limit:Vt.XcmV3WeightLimit.Unlimited()}),...a.value]}var V=require("@galacticcouncil/descriptors");function bo(n,e){let t="V4",s=ue(ie(e,n),t),a=Pt;return[V.XcmV4Instruction.WithdrawAsset([{id:s,fun:V.XcmV3MultiassetFungibility.Fungible(pe)}]),V.XcmV4Instruction.ClearOrigin(),V.XcmV4Instruction.BuyExecution({fees:{id:s,fun:V.XcmV3MultiassetFungibility.Fungible(pe)},weight_limit:V.XcmV3WeightLimit.Unlimited()}),V.XcmV4Instruction.DepositAsset({assets:V.XcmV4AssetAssetFilter.Wild(V.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:V.XcmV3Junctions.X1(be(Bn))}}),V.XcmV4Instruction.SetTopic(a)]}function li(n,e){let t="V4",s=ue(ie(e,n),t);return[V.XcmV4Instruction.BuyExecution({fees:{id:s,fun:V.XcmV3MultiassetFungibility.Fungible(pe)},weight_limit:V.XcmV3WeightLimit.Unlimited()}),V.XcmV4Instruction.DepositAsset({assets:V.XcmV4AssetAssetFilter.Wild(V.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:V.XcmV3Junctions.X1(be(Bn))}})]}function Ao(n,e,t){let s="V4",a=ue(ie(e,n),s),i=Pt,r=li(n,t);return[V.XcmV4Instruction.WithdrawAsset([{id:a,fun:V.XcmV3MultiassetFungibility.Fungible(pe)}]),V.XcmV4Instruction.ClearOrigin(),V.XcmV4Instruction.BuyExecution({fees:{id:a,fun:V.XcmV3MultiassetFungibility.Fungible(pe)},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 de=require("@galacticcouncil/descriptors");function wo(n,e){let t="V5",s=ue(ie(e,n),t),a={parents:0,interior:de.XcmV5Junctions.X1(de.XcmV5Junction.AccountId32({id:br,network:void 0}))};return[de.XcmV5Instruction.ReserveAssetDeposited([{id:me,fun:de.XcmV3MultiassetFungibility.Fungible(pe)}]),de.XcmV5Instruction.PayFees({asset:{id:me,fun:de.XcmV3MultiassetFungibility.Fungible(pe)}}),de.XcmV5Instruction.ReserveAssetDeposited([{id:s,fun:de.XcmV3MultiassetFungibility.Fungible(pe)}]),de.XcmV5Instruction.ClearOrigin(),de.XcmV5Instruction.DepositAsset({assets:de.XcmV5AssetFilter.Wild(de.XcmV5WildAsset.AllCounted(3)),beneficiary:a}),de.XcmV5Instruction.SetTopic(Pt)]}var xo=[Rn.ChainEcosystem.Polkadot,Rn.ChainEcosystem.Kusama],du={parents:1,interior:S.XcmV3Junctions.X1(S.XcmV3Junction.Parachain(1e3))},lu=n=>{let{parents:e,interior:t}=n;return e!==1?!1:t==="Here"||t?.type==="Here"},So=(n,e)=>!n.ecosystem||!e.ecosystem?!1:xo.includes(n.ecosystem)&&xo.includes(e.ecosystem)&&n.ecosystem!==e.ecosystem,vo=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},mn=(n,e,t)=>{if(So(e,t))return{type:n,value:fi(t.ecosystem,t.parachainId)};if(t.parachainId===yr)return{type:n,value:{parents:1,interior:S.XcmV3Junctions.Here()}};let s=t.key==="ethereum"?rn:t.parachainId;return{type:n,value:{parents:1,interior:S.XcmV3Junctions.X1(S.XcmV3Junction.Parachain(s))}}},fu=n=>n===Rn.ChainEcosystem.Kusama?S.XcmV3JunctionNetworkId.Kusama():S.XcmV3JunctionNetworkId.Polkadot(),fi=(n,e)=>({parents:2,interior:S.XcmV3Junctions.X2([S.XcmV3Junction.GlobalConsensus(fu(n)),S.XcmV3Junction.Parachain(e)])}),ko=(n,e,t,s)=>{if(So(e,t)){if(e.parachainId!==rn){let a=Rn.multiloc.findGlobalConsensus(ie(e,s)),i=typeof a=="string"&&a===t.ecosystem;return{dest:{type:n,value:{parents:1,interior:S.XcmV3Junctions.X1(S.XcmV3Junction.Parachain(rn))}},mode:i?"bridge-withdraw":"bridge-deposit"}}if(t.parachainId!==rn)return{dest:{type:n,value:fi(t.ecosystem,rn)},mode:"onward"}}},_n=(n,e)=>({type:n,value:{parents:0,interior:S.XcmV3Junctions.X1(e)}}),gi=(n,e,t)=>e==="RemoteReserve"?{type:"RemoteReserve",value:{type:n,value:lu(t)?du:t}}:{type:e},un=(n,e)=>({id:n,fun:S.XcmV3MultiassetFungibility.Fungible(e)}),Mo=(n,e,t)=>({type:n,value:[S.XcmV4Instruction.DepositAsset({assets:S.XcmV4AssetAssetFilter.Wild(S.XcmV4AssetWildAsset.AllCounted(t)),beneficiary:{parents:0,interior:S.XcmV3Junctions.X1(e)}})]}),ra=(n,e,t,s,a)=>{let i=a;return{type:n,value:[S.XcmV4Instruction.SetAppendix([S.XcmV4Instruction.DepositAsset({assets:S.XcmV4AssetAssetFilter.Wild(S.XcmV4AssetWildAsset.All()),beneficiary:{parents:0,interior:S.XcmV3Junctions.X1(t)}})]),S.XcmV4Instruction.InitiateReserveWithdraw({assets:S.XcmV4AssetAssetFilter.Wild(S.XcmV4AssetWildAsset.AllOf({id:s,fun:S.XcmV2MultiassetWildFungibility.Fungible()})),reserve:aa.ethereumLocation(pt),xcm:[S.XcmV4Instruction.BuyExecution({fees:{id:gu(s),fun:S.XcmV3MultiassetFungibility.Fungible(1n)},weight_limit:S.XcmV3WeightLimit.Unlimited()}),S.XcmV4Instruction.DepositAsset({assets:S.XcmV4AssetAssetFilter.Wild(S.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:S.XcmV3Junctions.X1(e)}}),S.XcmV4Instruction.SetTopic(i)]}),S.XcmV4Instruction.SetTopic(i)]}},Io=(n,e,t,s,a,i)=>{let r=s==="onward"?{parents:1,interior:S.XcmV3Junctions.X1(S.XcmV3Junction.Parachain(t.parachainId))}:fi(t.ecosystem,t.parachainId),o={parents:0,interior:S.XcmV3Junctions.X1(e)},c=S.XcmV4AssetAssetFilter.Wild(S.XcmV4AssetWildAsset.AllCounted(1)),m=[S.XcmV4Instruction.BuyExecution({fees:{id:a,fun:S.XcmV3MultiassetFungibility.Fungible(i)},weight_limit:S.XcmV3WeightLimit.Unlimited()}),S.XcmV4Instruction.DepositAsset({assets:c,beneficiary:o})],g=s==="bridge-withdraw"?S.XcmV4Instruction.InitiateReserveWithdraw({assets:c,reserve:r,xcm:m}):S.XcmV4Instruction.DepositReserveAsset({assets:c,dest:r,xcm:m});return{type:n,value:[S.XcmV4Instruction.SetAppendix([S.XcmV4Instruction.DepositAsset({assets:S.XcmV4AssetAssetFilter.Wild(S.XcmV4AssetWildAsset.All()),beneficiary:o})]),g]}},gu=n=>{let e=Rn.multiloc.findNestedKey(n,"key");return e?{parents:0,interior:S.XcmV3Junctions.X1(S.XcmV3Junction.AccountKey20({key:e.key}))}:{parents:0,interior:S.XcmV3Junctions.Here()}};var bt="PolkadotXcm",pu=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=be(n),r=a.chain,o=s.chain,c="V4",m=ie(r,t),g=ie(r,s.fee),f=ue(m,c),y=ue(g,c),b=un(f,e),w=un(y,s.fee.amount),x="limited_reserve_transfer_assets";return new Dn.ExtrinsicConfig({module:bt,func:x,getTx:_=>{let v=_.getUnsafeApi().tx[bt][x];return t.key===s.fee.key?v({dest:mn(c,r,o),beneficiary:_n(c,i),assets:{type:c,value:[b]},fee_asset_item:0,weight_limit:{type:"Unlimited"}}):fo(m,g)?v({dest:mn(c,r,o),beneficiary:_n(c,i),assets:{type:c,value:[w,b]},fee_asset_item:0,weight_limit:{type:"Unlimited"}}):v({dest:mn(c,r,o),beneficiary:_n(c,i),assets:{type:c,value:[b,w]},fee_asset_item:1,weight_limit:{type:"Unlimited"}})}})}}),hu=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=be(n),r=a.chain,o=s.chain,c="V4",m=ue(ie(r,t),c),g=un(m,e),f=mn(c,r,o),y=_n(c,i),b={type:c,value:[g]},w="limited_teleport_assets";return new Dn.ExtrinsicConfig({module:bt,func:w,getTx:x=>x.getUnsafeApi().tx[bt][w]({dest:f,beneficiary:y,assets:b,fee_asset_item:0,weight_limit:{type:"Unlimited"}})})}}),yu=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=be(n),r=a.chain,o=s.chain,c=r.xcmVersion??"V4",m=ue(ie(r,t),c),g=un(m,e),f=mn(c,r,o),y=_n(c,i),b={type:c,value:[g]},w="reserve_transfer_assets";return new Dn.ExtrinsicConfig({module:bt,func:w,getTx:x=>x.getUnsafeApi().tx[bt][w]({dest:f,beneficiary:y,assets:b,fee_asset_item:0})})}}),bu=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=be(n),r=a.chain,o=s.chain,c="V4",m=ue(ie(r,t),c),g=un(m,e),f=mn(c,r,o),y=_n(c,i),b={type:c,value:[g]},w="transfer_assets";return new Dn.ExtrinsicConfig({module:bt,func:w,getTx:x=>x.getUnsafeApi().tx[bt][w]({dest:f,beneficiary:y,assets:b,fee_asset_item:0,weight_limit:{type:"Unlimited"}})})}}),Au=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,y=a.fee,b=be(r),w=g.usesCexForwarding?sa(m,r,g):e,x=be(w),{transferType:_}=n,v=ue(ie(m,t),c),O=ue(ie(m,y),c),C=un(v,s),W=un(O,f),U=t.isEqual(y),M=ko(c,m,g,t),ee=M?.dest??mn(c,m,g),Ce={type:c,value:U?[C]:[W,C]},lt=gi(c,_,v),Ht={type:c,value:U?v:O},Zt=gi(c,_,O),oe;if(vo(v)&&a.chain.isEvmChain())oe=ra(c,x,b,v,i);else if(M){let d=To.big.toBigInt(n.executionFee??a.fee.amount,a.fee.decimals),u=ue(ie(g,t),c);oe=Io(c,x,g,M.mode,u,d)}else oe=Mo(c,x,Ce.value.length);let l="transfer_assets_using_type_and_then";return new Dn.ExtrinsicConfig({module:bt,func:l,getTx:d=>d.getUnsafeApi().tx[bt][l]({dest:ee,assets:Ce,assets_transfer_type:lt,remote_fees_id:Ht,fees_transfer_type:Zt,custom_xcm_on_dest:oe,weight_limit:{type:"Unlimited"}})})}});function wu(n){let e=t=>({build:async s=>{let a=t(s),i="execute";return new Dn.ExtrinsicConfig({module:bt,func:i,getTx:r=>r.getUnsafeApi().tx[bt][i]({message:a,max_weight:{ref_time:20000000000n,proof_size:500000n}})})}});return n?e(n):{viaSnowbridge:()=>e(kr)}}var pi=()=>({limitedReserveTransferAssets:pu,limitedTeleportAssets:hu,reserveTransferAssets:yu,transferAssets:bu,transferAssetsUsingTypeAndThen:Au,execute:wu});var Eo=require("@galacticcouncil/xc-core"),Bo=require("@galacticcouncil/common");var xs=require("@galacticcouncil/descriptors"),Co=(n,e,t)=>e.parachainId===0?{type:n,value:{parents:1,interior:xs.XcmV3Junctions.X1(t)}}:{type:n,value:{parents:1,interior:xs.XcmV3Junctions.X2([xs.XcmV3Junction.Parachain(e.parachainId),t])}};var Po="XTokens",xu=()=>({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?sa(r,a,o):n,g=be(m),f=r.getAssetId(t),y=(0,Bo.encodeAssetId)(f),b="transfer";return new Eo.ExtrinsicConfig({module:Po,func:b,getTx:w=>w.getUnsafeApi().tx[Po][b]({currency_id:y,amount:e,dest:Co(c,o,g),dest_weight_limit:{type:"Unlimited"}})})}}),hi=()=>({transfer:xu});function A(){return{assetConversion:zr,assets:$r,balances:Jr,evm:no,polkadotXcm:pi,router:io,utility:co,xTokens:hi}}function $t(n,e){return{prior:function(t){return{build:async s=>n(s)?A().utility().batchAll([e,t]).build(s):t.build(s)}},priorMulti:function(t){return{build:async s=>n(s)?A().utility().batchAll([e,...t]).build(s):A().utility().batchAll([...t]).build(s)}}}}var ut=require("@galacticcouncil/xc-core");var Lo=80000n,Ro=120000n,_o=100000n,Do=2000000n,yi=15000000000000n;function Su(){return{calculateInboundFee:n=>({build:async({feeAsset:e,destination:t})=>{let s=t,a=new Ge(s),i=new et(n.hub),r=ia(e,s),o=wo(e,s),c=as(pt),m=250000000n,g=vr(pt,s.parachainId),[f,y,b,w]=await Promise.all([a.calculateDestinationFeeV5(o,P),i.calculateDeliveryFee(r,s.parachainId),i.calculateDeliveryFee(r,Gs),i.calculateDestinationFeeV5(g,P)]),x=ge(f,33n),_=ge(y,33n),v=ge(b,33n),C=ge(w,33n)+_,W=x,U=await i.quoteEtherForDot(c,C),M=ge(U,30n),ee=M<yi*2n?yi*2n:M,Ce=ge(await i.quoteEtherForDot(c,W),100n),lt=ge(await i.quoteDotToEther(c,m+v),30n);return{amount:ee+lt+Ce,breakdown:{executionFee:ee,relayerFee:lt,remoteEtherFee:Ce,hydrationDotFee:W}}}}),calculateOutboundFee:n=>({build:async({transferAsset:e,feeAsset:t,source:s,destination:a})=>{let i=s,r=a,o=new et(n.hub),c=as(pt),m=di(e,i),[g,f,y]=await Promise.all([o.getBridgeDeliveryFee(),o.calculateDeliveryFee(m,Gs),o.calculateDestinationFee(m,t)]),b=await r.evmClient.getProvider().getGasPrice(),w=Do+Ro+Lo+_o,x=b*w,_=ge(x,10n),v=g+ge(f,33n)+ge(y,33n),O=ge(await o.quoteDotForExactEther(c,_),20n),C=new Ge(i),W=Ya({tokenAddress:"0x0000000000000000000000000000000000000000",senderPubKey:"0x"+"00".repeat(32),beneficiaryHex:"0x"+"00".repeat(20),tokenAmount:1000000000000n,sourceExecutionFee:1000000000n,dotRemoteFee:1000000000n,dotToEtherSwapAmount:1000000000n,etherFeeAmount:1000000000n,topic:Pt}),U=ge(await C.calculateDestinationFeeV5(W,P),33n);return{amount:v+O+U,breakdown:{dotRemoteFee:v,dotToEtherSwapAmount:O,etherFeeAmount:_,sourceExecutionFee:U}}}}),calculateInboundFeeV1:n=>({build:async({feeAsset:e,destination:t,source:s})=>{let a=s,i=t,r=ut.Snowbridge.fromChain(a),o=new ht(i),c=new et(n.hub),m=ia(e,i),[g,f]=await Promise.all([o.calculateDestinationFee(m,P),c.calculateDeliveryFee(m,i.parachainId)]),y=f+ge(g,25n),b=a.getAssetId(e);return{amount:await a.evmClient.getProvider().readContract({abi:ut.Abi.Snowbridge,address:r.getGateway(),args:[b,i.parachainId,y],functionName:"quoteSendTokenFee"}),breakdown:{bridgeFeeInDot:y}}}}),calculateOutboundFeeV1:n=>({build:async({transferAsset:e,feeAsset:t,source:s})=>{let a=s,i=new et(n.hub),r=di(e,a),o=ia(e,a),[c,m,g,f,y]=await Promise.all([i.getBridgeDeliveryFeeV1(),i.calculateDeliveryFee(r,Gs),i.calculateDestinationFee(r,t),i.calculateDeliveryFee(o,a.parachainId),i.calculateDestinationFee(o,t)]);return{amount:c+m+ge(g,25n)+f+ge(y,25n),breakdown:{bridgeDeliveryFee:c,bridgeHubDeliveryFee:m,assetHubDestinationFee:g,returnToSenderDeliveryFee:f,returnToSenderDestinationFee:y}}}})}}function vu(){return{calculateDestFee:n=>({build:async({feeAsset:e,source:t,destination:s})=>{let a=t,i=s,r=n?.reserve;if(yo(e,a,i,r),r){let y=new ht(i),b=new ht(r),w=li(e,i),x=Ao(e,r,i),[_,v]=await Promise.all([y.calculateDestinationFee(w,e),b.calculateDestinationFee(x,e)]),O=v+_,C=ge(O,20n),W=C-O;return{amount:C,breakdown:{reserveFee:v,destinationFee:_,margin:W}}}let o=new ht(i),c=bo(e,i),m=await o.calculateDestinationFee(c,e),g=ge(m,20n),f=g-m;return{amount:g,breakdown:{totalFee:m,margin:f}}}})}}function ku(){return{quoteExecutorCost:()=>({build:async({address:n,destinationAsset:e,transferAsset:t,source:s,destination:a})=>{let i=s,r=ut.Ntt.fromChain(i,t),o=ut.Wormhole.fromChain(i),c=ut.Wormhole.fromChain(a),m=await zt(a,e).getRedeemBudget(n),[g,f]=await Promise.all([i.evmClient.getProvider().readContract({abi:ut.Abi.NttManager,address:r.manager,args:[c.getWormholeId(),ps],functionName:"quoteDeliveryPrice"}),rs.quote(o.getWormholeId(),c.getWormholeId(),m)]);return{amount:g[1]+f.estimatedCost,breakdown:{deliveryPrice:g[1],executorCost:f.estimatedCost}}}})}}function Mu(){return{quoteFee:()=>({build:async({feeAsset:n,source:e})=>{let t=e,s=ut.Basejump.fromChain(t),a=t.getAssetId(n);return{amount:await t.evmClient.getProvider().readContract({abi:ut.Abi.Basejump,address:s.getAddress(),args:[a],functionName:"quoteFee"})}}})}}function X(){return{Basejump:Mu,XcmPaymentApi:vu,Snowbridge:Su,Wormhole:ku}}var Iu="0";function Tu(){return{build:async({address:n,chain:e})=>{let s=await new Ge(e).api().query.MultiTransactionPayment.AccountCurrencyMap.getValue(n),a=s?s.toString():Iu,i=e.findAssetById(a);return i?i.asset:Un}}}var Cu=()=>({accountCurrencyMap:Tu});function Ss(){return{multiTransactionPayment:Cu}}var tt=require("@galacticcouncil/xc-core"),Fo=require("@mysten/sui/transactions"),oa=require("@mysten/sui/utils"),Xo=require("@wormhole-foundation/sdk-base"),Pu=()=>({build:async n=>{let{address:e,amount:t,asset:s,source:a,destination:i}=n,r=a.chain,o=i.chain,c=tt.Ntt.fromChain(r,s),m=tt.Wormhole.fromChain(r),g=tt.Wormhole.fromChain(o),f=r.client,y=e;o instanceof tt.EvmParachain&&(y=await o.getDerivatedAddress(e));let b=Xo.encoding.hex.decode(g.normalizeAddress(y)),w=m.getCoreBridge(),x=c.manager,_=c.transceiver.wormhole,v=c.token,[O,C,W,U]=await Promise.all([tt.suiPkg.getWormholePackageId(f,w),tt.suiPkg.getCurrentPackageId(f,x),tt.suiPkg.getCurrentPackageId(f,_),tt.suiPkg.getCoinMetadataId(f,v)]),M=new Fo.Transaction,[ee]=M.splitCoins(M.gas,[M.pure.u64(t)]),[Ce]=M.moveCall({target:`${C}::upgrades::new_version_gated`,arguments:[]}),[lt,Ht]=M.moveCall({target:`${C}::ntt::prepare_transfer`,typeArguments:[v],arguments:[M.object(x),ee,M.object(U),M.pure.u16(g.getWormholeId()),M.pure.vector("u8",Array.from(b)),M.pure.option("vector<u8>",null),M.pure.bool(!1)]}),[Zt]=M.moveCall({target:`${C}::state::get_next_sequence`,typeArguments:[v],arguments:[M.object(x)]});M.moveCall({target:`${C}::ntt::transfer_tx_sender`,typeArguments:[v],arguments:[M.object(x),Ce,M.object(U),lt,M.object(oa.SUI_CLOCK_OBJECT_ID)]});let[oe]=M.moveCall({target:`${C}::state::create_transceiver_message`,typeArguments:[`${W}::wormhole_transceiver::TransceiverAuth`,v],arguments:[M.object(x),Zt,M.object(oa.SUI_CLOCK_OBJECT_ID)]}),[l]=M.moveCall({target:`${W}::wormhole_transceiver::release_outbound`,typeArguments:[`${C}::auth::ManagerAuth`],arguments:[M.object(_),oe]}),[d]=M.splitCoins(M.gas,[M.pure.u64(0n)]);M.moveCall({target:`${O}::publish_message::publish_message`,arguments:[M.object(w),d,l,M.object(oa.SUI_CLOCK_OBJECT_ID)]});let[u]=M.moveCall({target:"0x2::coin::from_balance",typeArguments:[v],arguments:[Ht]});return M.mergeCoins(M.gas,[u]),[new tt.MoveConfig({transaction:M,func:"transfer",module:"NttManager"})]}}),No=()=>({transfer:Pu});function Vo(){return{Ntt:No}}function bi(){return{Wormhole:Vo}}var At=require("@galacticcouncil/xc-core"),vc=require("@solana/spl-token"),ya=require("@solana/web3.js"),kc=require("@wormhole-foundation/sdk-base"),Mc=require("@wormhole-foundation/sdk-definitions"),Ic=require("@wormhole-foundation/sdk-solana"),Ey=require("@wormhole-foundation/sdk-definitions-ntt");async function Lu(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 Ru(n,e,t){let s=await Lu(n,e),a="message"in e?ya.TransactionMessage.decompile(e.message,{addressLookupTableAccounts:s}).instructions:e.instructions;return new At.ProgramConfig({instructions:a,signers:t,lookupTables:s,func:"transfer",module:"NttManager"})}var _u=()=>({build:async n=>{let{address:e,amount:t,asset:s,sender:a,source:i,destination:r}=n,o=i.chain,c=r.chain,m=At.Ntt.fromChain(o,s),g=At.Wormhole.fromChain(o),f=At.Wormhole.fromChain(c),y=e;c instanceof At.EvmParachain&&(y=await c.getDerivatedAddress(e));let{SolanaNtt:b}=await Promise.resolve().then(()=>(Sc(),xc)),w=new b("Mainnet","Solana",o.connection,{coreBridge:g.getCoreBridge(),ntt:{manager:m.manager,token:m.token,transceiver:{wormhole:m.transceiver.wormhole}}}),x=o.getBalanceType(s)===At.SolanaBalanceType.Native,_=ya.Keypair.generate(),v=[];for await(let W of w.transfer(new Ic.SolanaAddress(a),t,{chain:(0,kc.toChain)(f.getWormholeId()),address:new Mc.UniversalAddress(f.normalizeAddress(y))},{queue:!1,automatic:!1,wrapNative:x},_)){let{transaction:U,signers:M}=W.transaction;v.push(await Ru(o.connection,U,M??[]))}let O=x?BigInt(await(0,vc.getMinimumBalanceForRentExemptAccount)(o.connection)):0n,C=v[v.length-1];return[...v.slice(0,-1),new At.ProgramConfig({instructions:C.instructions,signers:C.signers,lookupTables:C.lookupTables,rentReserve:O,func:"transfer",module:"NttManager"})]}}),Tc=()=>({transfer:_u});function Cc(){return{Ntt:Tc}}function Bi(){return{Wormhole:Cc}}var Ri={};wn(Ri,{Tag:()=>pn});var pn=(o=>(o.Basejump="Basejump",o.Ntt="Ntt",o.NttExecutor="NttExecutor",o.Wormhole="Wormhole",o.Relayer="Relayer",o.Snowbridge="Snowbridge",o.SnowbridgeV1="SnowbridgeV1",o))(pn||{});function Pc(n,e){return new ba.AssetRoute({source:{asset:n,fee:{asset:R}},destination:{chain:k,asset:e,fee:{amount:0,asset:n}},contract:ye().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function Ec(n,e){return new ba.AssetRoute({source:{asset:n,fee:{asset:R}},destination:{chain:k,asset:e,fee:{amount:X().Wormhole().quoteExecutorCost(),asset:R}},contract:ye().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}function Bc(n,e){return new ba.AssetRoute({source:{asset:n,fee:{asset:R},destinationFee:n},destination:{chain:k,asset:e,fee:{amount:X().Basejump().quoteFee(),asset:n}},contract:ye().Basejump().bridgeViaWormhole(),tags:["Basejump"]})}var Du=[Bc(ft,vt)],Fu=[Pc(ft,vt)],Xu=[Ec(ft,vt)],Rc=new Lc.ChainRoutes({chain:Sn,routes:[...Fu,...Xu,...Du]});var Ds=require("@galacticcouncil/xc-core");var us=require("@galacticcouncil/xc-core");function hn(n,e){return new us.AssetRoute({source:{asset:n,fee:{asset:R}},destination:{chain:k,asset:e,fee:{amount:0,asset:n}},contract:ye().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function Vn(n,e){return new us.AssetRoute({source:{asset:n,fee:{asset:R}},destination:{chain:k,asset:e,fee:{amount:X().Wormhole().quoteExecutorCost(),asset:R}},contract:ye().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}function _c(n,e){return new us.AssetRoute({source:{asset:n,fee:{asset:R}},destination:{chain:k,asset:e,fee:{amount:0,asset:n}},contract:ye().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}function Me(n,e){return new us.AssetRoute({source:{asset:n,fee:{asset:R}},destination:{chain:k,asset:e,fee:{amount:X().Snowbridge().calculateInboundFee({hub:N}),asset:R}},contract:ye().Snowbridge().v2SendMessage(),tags:["Snowbridge"]})}function Ie(n,e){return new us.AssetRoute({source:{asset:n,fee:{asset:R}},destination:{chain:k,asset:e,fee:{amount:X().Snowbridge().calculateInboundFeeV1({hub:N}),asset:R}},contract:ye().Snowbridge().sendToken(),tags:["Snowbridge","SnowbridgeV1"]})}var Nu=[hn(St,Lt),hn(rt,Rt),hn(L,Dt),hn(T,_t),hn(ot,Xt),hn(Ft,Ze),hn(R,Ze)],Vu=[Vn(St,Lt),Vn(rt,Rt),Vn(L,Dt),Vn(T,_t),Vn(ot,Xt),Vn(Ft,Ze),_c(R,Ze)],Ou=[new Ds.AssetRoute({source:{asset:R,fee:{asset:R}},destination:{chain:k,asset:R,fee:{amount:X().Snowbridge().calculateInboundFee({hub:N}),asset:R}},contract:ye().Snowbridge().v2SendMessage(),tags:["Snowbridge"]}),Me(Ee,Ee),Me(Be,Be),Me(Le,Le),Me(Re,Re),Me(Xe,Xe),Me(We,We),Me(He,He),Me(De,De),Me(_e,_e),Me(Fe,Fe),Me(Ne,Ne),Me(Ue,Ue),Me(Ke,Ke),Me(L,Kt),Me(T,Ut)],Wu=[new Ds.AssetRoute({source:{asset:R,fee:{asset:R}},destination:{chain:k,asset:R,fee:{amount:X().Snowbridge().calculateInboundFeeV1({hub:N}),asset:R}},contract:ye().Snowbridge().sendToken(),tags:["Snowbridge","SnowbridgeV1"]}),Ie(Ee,Ee),Ie(Be,Be),Ie(Le,Le),Ie(Re,Re),Ie(Xe,Xe),Ie(We,We),Ie(He,He),Ie(De,De),Ie(_e,_e),Ie(Fe,Fe),Ie(Ne,Ne),Ie(Ue,Ue),Ie(Ke,Ke),Ie(L,Kt),Ie(T,Ut)],Dc=new Ds.ChainRoutes({chain:E,routes:[...Nu,...Vu,...Ou,...Wu]});var Fc=[Rc,Dc];var yn=require("@galacticcouncil/xc-core");var Aa=require("@galacticcouncil/xc-core");var On=0,Hu=n=>{let{source:e}=n;return!!e.feeSwap},Uu=n=>{let{source:e}=n,{enabled:t}=e.destinationFeeSwap||{};return!!t},Xc=A().assetConversion().swapTokensForExactTokens({slippage:30});function Ku(n,e,t){return new Aa.AssetRoute({source:{asset:n,fee:{asset:P,extra:On}},destination:{chain:e,asset:n,fee:{amount:t,asset:T}},extrinsic:$t(Uu,Xc).prior(A().polkadotXcm().limitedReserveTransferAssets())})}function wa(n,e,t){return new Aa.AssetRoute({source:{asset:n,fee:{asset:n,swap:!n.isEqual(P)}},destination:{chain:e,asset:n,fee:{amount:t,asset:n}},extrinsic:$t(Hu,Xc).prior(A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"}))})}function Fs(n,e,t){return new Aa.AssetRoute({source:{asset:n,fee:{asset:P,extra:On}},destination:{chain:e,asset:n,fee:{amount:t,asset:n}},extrinsic:A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})})}function xa(n){return Ku(n,k,.02)}var Gu=[new yn.AssetRoute({source:{asset:P,fee:{asset:P,extra:On}},destination:{chain:k,asset:P,fee:{amount:.001,asset:P}},extrinsic:A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),new yn.AssetRoute({source:{asset:F,fee:{asset:P,extra:On}},destination:{chain:k,asset:F,fee:{amount:1e-4,asset:F}},extrinsic:A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),Fs(T,k,.02),Fs(L,k,.02),xa(Gt)],qu=[new yn.AssetRoute({source:{asset:F,fee:{asset:P,extra:On}},destination:{chain:Tt,asset:F,fee:{amount:.001,asset:F}},extrinsic:A().polkadotXcm().transferAssets()})],zu=[Fs(T,se,.03),Fs(L,se,.03)],ju=[new yn.AssetRoute({source:{asset:ne,fee:{asset:P,extra:On}},destination:{chain:nn,asset:ne,fee:{amount:2.5,asset:ne}},extrinsic:A().polkadotXcm().limitedTeleportAssets()})],Nc=new yn.ChainRoutes({chain:tn,routes:[wa(T,k,.02),wa(L,k,.02),wa(P,k,.001)]}),Vc=new yn.ChainRoutes({chain:N,routes:[...Gu,...qu,...zu,...ju]});var Bt=require("@galacticcouncil/xc-core");var $u=[new Bt.AssetRoute({source:{asset:j},destination:{chain:k,asset:j,fee:{amount:.044306118,asset:j}},extrinsic:A().polkadotXcm().reserveTransferAssets()}),new Bt.AssetRoute({source:{asset:K,fee:{asset:j}},destination:{chain:k,asset:K,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:se}),asset:K}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new Bt.AssetRoute({source:{asset:ae,fee:{asset:j}},destination:{chain:k,asset:ae,fee:{amount:2e-6,asset:ae}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new Bt.AssetRoute({source:{asset:at,fee:{asset:j}},destination:{chain:k,asset:at,fee:{amount:.01,asset:at}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new Bt.AssetRoute({source:{asset:fe,fee:{asset:j}},destination:{chain:k,asset:fe,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:se}),asset:fe}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new Bt.AssetRoute({source:{asset:le,fee:{asset:j}},destination:{chain:k,asset:le,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:se}),asset:le}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new Bt.AssetRoute({source:{asset:T,fee:{asset:j}},destination:{chain:k,asset:T,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:N}),asset:T}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new Bt.AssetRoute({source:{asset:L,fee:{asset:j}},destination:{chain:k,asset:L,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:N}),asset:L}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()})],Oc=new Bt.ChainRoutes({chain:ke,routes:[...$u]});var dt=require("@galacticcouncil/xc-core");var Qu=[new dt.AssetRoute({source:{asset:K},destination:{chain:k,asset:K,fee:{amount:X().XcmPaymentApi().calculateDestFee(),asset:K}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new dt.AssetRoute({source:{asset:fe,fee:{asset:K}},destination:{chain:k,asset:fe,fee:{amount:X().XcmPaymentApi().calculateDestFee(),asset:fe}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new dt.AssetRoute({source:{asset:le,fee:{asset:K}},destination:{chain:k,asset:le,fee:{amount:X().XcmPaymentApi().calculateDestFee(),asset:le}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new dt.AssetRoute({source:{asset:P,fee:{asset:K}},destination:{chain:k,asset:P,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:N}),asset:P}},extrinsic:A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"RemoteReserve"})}),new dt.AssetRoute({source:{asset:j,fee:{asset:K}},destination:{chain:k,asset:j,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:ke}),asset:j}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new dt.AssetRoute({source:{asset:ae,fee:{asset:K}},destination:{chain:k,asset:ae,fee:{amount:625e-8,asset:ae}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new dt.AssetRoute({source:{asset:T,fee:{asset:K}},destination:{chain:k,asset:T,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:N}),asset:T}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new dt.AssetRoute({source:{asset:L,fee:{asset:K}},destination:{chain:k,asset:L,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:N}),asset:L}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()})],Yu=[new dt.AssetRoute({source:{asset:T,fee:{asset:K}},destination:{chain:N,asset:T,fee:{amount:X().XcmPaymentApi().calculateDestFee(),asset:T}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new dt.AssetRoute({source:{asset:L,fee:{asset:K}},destination:{chain:N,asset:L,fee:{amount:X().XcmPaymentApi().calculateDestFee(),asset:L}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()})],Wc=new dt.ChainRoutes({chain:se,routes:[...Qu,...Yu]});var Wt=require("@galacticcouncil/xc-core");var we=()=>({asset:Ss().multiTransactionPayment().accountCurrencyMap()});var Qt=require("@galacticcouncil/xc-core");var Ju=.02,Sa=n=>{let{source:e}=n,{enabled:t}=e.destinationFeeSwap||{};return!!t},va=A().router().buy({slippage:30});function ze(n,e,t){return new Qt.AssetRoute({source:{asset:n,fee:we()},destination:{chain:e,asset:n,fee:{amount:X().XcmPaymentApi().calculateDestFee(t?{reserve:t}:void 0),asset:n}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()})}function bn(n,e){return new Qt.AssetRoute({source:{asset:n,fee:we()},destination:{chain:e,asset:n,fee:{amount:X().XcmPaymentApi().calculateDestFee(),asset:n}},extrinsic:A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})})}function ka(n){return new Qt.AssetRoute({source:{asset:n,fee:we()},destination:{chain:N,asset:n,fee:{amount:Ju,asset:T}},extrinsic:$t(Sa,va).prior(A().polkadotXcm().limitedReserveTransferAssets())})}function _i(n,e,t){return new Qt.AssetRoute({source:{asset:n,fee:we()},destination:{chain:Tt,asset:n,fee:{amount:e,asset:n}},extrinsic:A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve",executionFee:t})})}function wt(n,e,t){let s=ye().Wormhole().Ntt().transfer();return new Qt.AssetRoute({source:{asset:n,fee:we()},destination:{chain:t,asset:e,fee:{amount:0,asset:n}},contract:s,extrinsic:A().evm().call(s),tags:["Wormhole","Ntt"]})}function xt(n,e,t){let s=ye().Wormhole().Ntt().transferViaExecutor();return new Qt.AssetRoute({source:{asset:n,fee:we()},destination:{chain:t,asset:e,fee:{amount:X().Wormhole().quoteExecutorCost(),asset:Ze}},contract:s,extrinsic:$t(Sa,va).prior(A().evm().call(s)),tags:["Wormhole","Ntt","NttExecutor"]})}function xe(n,e,t){return new Qt.AssetRoute({source:{asset:n,fee:we()},destination:{chain:t,asset:e,fee:{amount:X().Snowbridge().calculateOutboundFee({hub:N}),asset:P}},extrinsic:$t(Sa,va).prior(A().polkadotXcm().execute().viaSnowbridge()),tags:["Snowbridge"]})}function Se(n,e,t){return new Qt.AssetRoute({source:{asset:n,fee:we()},destination:{chain:t,asset:e,fee:{amount:X().Snowbridge().calculateOutboundFeeV1({hub:N}),asset:P}},extrinsic:$t(Sa,va).prior(A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})),tags:["Snowbridge","SnowbridgeV1"]})}var Zu=[bn(P,N),bn(F,N),bn(T,N),bn(L,N),ka(Gt)],ed=[_i(F,.05,.005),_i(P,.2,.02)],td=[ze(j,ke),ze(K,ke,se),new Wt.AssetRoute({source:{asset:ae,fee:we()},destination:{chain:ke,asset:ae,fee:{amount:2e-6,asset:ae}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new Wt.AssetRoute({source:{asset:at,fee:we()},destination:{chain:ke,asset:at,fee:{amount:.01,asset:at}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),ze(fe,ke,se),ze(le,ke,se),ze(T,ke,N),ze(L,ke,N)],nd=[ze(K,se),ze(fe,se),ze(le,se),ze(j,se,ke),new Wt.AssetRoute({source:{asset:ae,fee:we()},destination:{chain:se,asset:ae,fee:{amount:5e-6,asset:ae}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),ze(T,se,N),ze(L,se,N),new Wt.AssetRoute({source:{asset:P,fee:we()},destination:{chain:se,asset:P,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:N}),asset:P}},extrinsic:A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"RemoteReserve"})})],sd=[new Wt.AssetRoute({source:{asset:ne,fee:we()},destination:{chain:nn,asset:ne,fee:{amount:2.5,asset:ne}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()})],ad=[ze(Mt,Yn)],id=[new Wt.AssetRoute({source:{asset:Ye,fee:we()},destination:{chain:Jn,asset:Ye,fee:{amount:.02,asset:Ye}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()})],rd=[new Wt.AssetRoute({source:{asset:it,fee:we()},destination:{chain:jn,asset:it,fee:{amount:1.1,asset:it}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()})],od=[ze(kt,zn)],cd=[wt(Lt,St,E),wt(Rt,rt,E),wt(Dt,L,E),wt(_t,T,E),wt(Xt,ot,E),wt(Ze,R,E)],md=[wt(vt,ft,Sn)],ud=[wt(Ve,Ve,It),wt(Qe,Qe,It),wt(Je,Je,It)],dd=[wt(Oe,Oe,Cn)],ld=[xt(Lt,St,E),xt(Rt,rt,E),xt(Dt,L,E),xt(_t,T,E),xt(Xt,ot,E),xt(Ze,R,E),xt(vt,ft,Sn),xt(Ve,Kn,It),xt(Qe,Qe,It),xt(Je,Je,It),xt(Oe,Oe,Cn)],fd=[xe(R,R,E),xe(Ee,Ee,E),xe(Be,Be,E),xe(Le,Le,E),xe(Re,Re,E),xe(Xe,Xe,E),xe(We,We,E),xe(He,He,E),xe(Ue,Ue,E),xe(De,De,E),xe(_e,_e,E),xe(Fe,Fe,E),xe(Ne,Ne,E),xe(Ke,Ke,E),xe(Kt,L,E),xe(Ut,T,E)],gd=[Se(R,R,E),Se(Ee,Ee,E),Se(Be,Be,E),Se(Le,Le,E),Se(Re,Re,E),Se(Xe,Xe,E),Se(We,We,E),Se(He,He,E),Se(Ue,Ue,E),Se(De,De,E),Se(_e,_e,E),Se(Fe,Fe,E),Se(Ne,Ne,E),Se(Ke,Ke,E),Se(Kt,L,E),Se(Ut,T,E)],pd=[bn(P,tn),bn(T,tn),bn(L,tn)],Hc=new Wt.ChainRoutes({chain:k,routes:[...Zu,...td,...nd,...pd,...md,...cd,...fd,...ud,...dd,...ld,...gd,...id,...ed,...sd,...od,...rd,...ad]});var Xs=require("@galacticcouncil/xc-core");var hd=[new Xs.AssetRoute({source:{asset:ne},destination:{chain:k,asset:ne,fee:{amount:.01,asset:ne}},extrinsic:A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})})],yd=[new Xs.AssetRoute({source:{asset:ne},destination:{chain:N,asset:ne,fee:{amount:.1,asset:ne}},extrinsic:A().polkadotXcm().limitedTeleportAssets()})],Uc=new Xs.ChainRoutes({chain:nn,routes:[...hd,...yd]});var Ma=require("@galacticcouncil/xc-core");var bd=[new Ma.AssetRoute({source:{asset:Mt},destination:{chain:k,asset:Mt,fee:{amount:X().XcmPaymentApi().calculateDestFee(),asset:Mt}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()})],Kc=new Ma.ChainRoutes({chain:Yn,routes:[...bd]});var Ia=require("@galacticcouncil/xc-core");var Ad=[new Ia.AssetRoute({source:{asset:it},destination:{chain:k,asset:it,fee:{amount:.2,asset:it}},extrinsic:A().polkadotXcm().reserveTransferAssets()})],Gc=new Ia.ChainRoutes({chain:jn,routes:[...Ad]});var Ta=require("@galacticcouncil/xc-core");var wd=[new Ta.AssetRoute({source:{asset:Ye,fee:{asset:Ye,extra:.030555}},destination:{chain:k,asset:Ye,fee:{amount:.03,asset:Ye}},extrinsic:A().polkadotXcm().reserveTransferAssets()})],qc=new Ta.ChainRoutes({chain:Jn,routes:[...wd]});var Ca=require("@galacticcouncil/xc-core");var xd=[new Ca.AssetRoute({source:{asset:kt},destination:{chain:k,asset:kt,fee:{amount:.205,asset:kt}},extrinsic:A().polkadotXcm().reserveTransferAssets()})],zc=new Ca.ChainRoutes({chain:zn,routes:[...xd]});var jc=[Vc,Nc,Oc,Wc,Hc,Uc,zc,Kc,Gc,qc];var Pa=require("@galacticcouncil/xc-core");function Di(n){return new Pa.AssetRoute({source:{asset:n,fee:{asset:Ve}},destination:{chain:k,asset:n,fee:{amount:0,asset:n}},program:Bi().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}var Sd=[Di(Ve),Di(Qe),Di(Je)],$c=new Pa.ChainRoutes({chain:It,routes:[...Sd]});var Qc=[$c];var Ea=require("@galacticcouncil/xc-core");function vd(n){return new Ea.AssetRoute({source:{asset:n,fee:{asset:Oe}},destination:{chain:k,asset:n,fee:{amount:0,asset:n}},move:bi().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}var kd=[vd(Oe)],Yc=new Ea.ChainRoutes({chain:Cn,routes:[...kd]});var Jc=[Yc];var Wn=require("@galacticcouncil/xc-core");var Md=require("@galacticcouncil/xc-core");var Ns=.0015;var Id=new Wn.AssetRoute({source:{asset:F,fee:{asset:F,extra:Ns}},destination:{chain:N,asset:F,fee:{amount:.002,asset:F}},extrinsic:A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),Td=new Wn.AssetRoute({source:{asset:F,fee:{asset:F,extra:Ns}},destination:{chain:ts,asset:F,fee:{amount:.0012,asset:F}},extrinsic:A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),Cd=[new Wn.AssetRoute({source:{asset:F,fee:{asset:F,extra:Ns}},destination:{chain:k,asset:F,fee:{amount:.04,asset:F}},extrinsic:A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve",executionFee:.005})}),new Wn.AssetRoute({source:{asset:P,fee:{asset:F,extra:Ns}},destination:{chain:k,asset:P,fee:{amount:.15,asset:P}},extrinsic:A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve",executionFee:.01})})],Zc=new Wn.ChainRoutes({chain:Tt,routes:[Td,Id,...Cd]});var Vs=require("@galacticcouncil/xc-core");var Fi=()=>({asset:Ss().multiTransactionPayment().accountCurrencyMap()});var Pd=[new Vs.AssetRoute({source:{asset:T,fee:Fi()},destination:{chain:Tt,asset:T,fee:{amount:X().XcmPaymentApi().calculateDestFee(),asset:T}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()})],Ed=[new Vs.AssetRoute({source:{asset:F,fee:Fi()},destination:{chain:Tt,asset:F,fee:{amount:.0012,asset:F}},extrinsic:A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})})],em=new Vs.ChainRoutes({chain:ts,routes:[...Pd,...Ed]});var tm=[Zc,em];var Bd=[...Fc,...jc,...Qc,...Jc,...tm],nm=new Map(Bd.map(n=>[n.chain.key,n]));var Xi=require("@galacticcouncil/xc-core");var An=require("@galacticcouncil/xc-core"),Ba=class extends An.TransferValidation{async validate(e){let{source:t}=e,{chain:s,fee:a,feeBalance:i}=t;if(i.amount<a.amount)throw new An.TransferValidationError("Insufficient_Fee_Balance",{amount:a.toDecimal(),asset:a.symbol,chain:s.name,error:"fee.insufficientBalance"})}},La=class extends An.TransferValidation{async skipFor(e){let{asset:t,source:s}=e,{enabled:a}=s.destinationFeeSwap||{};return t.isEqual(s.destinationFee)||!!a}async validate(e){if(await this.skipFor(e))return;let{source:s}=e,{chain:a,destinationFee:i,destinationFeeBalance:r}=s,o=await this.getMin(a,i),c=i.copyWith({amount:i.amount+o});if(r.amount<c.amount)throw new An.TransferValidationError("Insufficient_Fee_Balance",{amount:c.toDecimal(),asset:c.symbol,chain:a.name,error:"destFee.insufficientBalance"})}async getMin(e,t){if(e instanceof An.Parachain)return(await e.getMin(t)).amount;let s=e.getAssetMin(t);return BigInt(s*10**t.decimals)}};var Yt=require("@galacticcouncil/xc-core"),am=require("@galacticcouncil/common");function sm(n,e){throw new Yt.TransferValidationError("Ntt_Limit_Unreachable",{asset:n.originSymbol,chain:e.name,error:"ntt.limitUnreachable"})}var Ra=class extends Yt.TransferValidation{skipFor(e){let{asset:t,destination:s,source:a}=e;return!Yt.Ntt.isKnown(a.chain,t)||!Yt.Ntt.isKnown(s.chain,s.balance)}async validate(e){if(this.skipFor(e))return;let{amount:t,asset:s,destination:a,source:i}=e,[r,o]=await Promise.all([zt(i.chain,s).getOutboundLimit().catch(()=>sm(s,i.chain)),zt(a.chain,a.balance).getInboundLimit(i.chain).catch(()=>sm(a.balance,a.chain))]);if(r.windowMs>0&&t>r.capacity)throw new Yt.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"});let c=am.big.convertDecimals(t,i.balance.decimals,a.balance.decimals);if(o.windowMs>0&&c>o.capacity)throw new Yt.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"})}};var ds=require("@galacticcouncil/xc-core");var _a=class extends ds.TransferValidation{async skipFor(e){let{asset:t,destination:s}=e,a=s.chain;return await new et(a).checkIfSufficient(t)}async validate(e){if(await this.skipFor(e))return;let{address:s,destination:a}=e,i=a.chain;if(await new et(i).getSystemAccountBalance(s)===0n)throw new ds.TransferValidationError("Insufficient_Ed",{amount:"0.1",asset:"DOT",chain:a.chain.name,error:"account.insufficientDeposit"})}},Da=class extends ds.TransferValidation{async validate(e){let{asset:t,sender:s,source:a}=e,i=a.chain;if(await new et(i).checkIfFrozen(s,t))throw new ds.TransferValidationError("Asset_Frozen",{asset:t.originSymbol,chain:a.chain.name,error:"asset.frozen"})}};var Jt=require("@galacticcouncil/xc-core");var Ld=12,Rd=1,Fa=class extends Jt.TransferValidation{async skipFor(e){let{destination:t}=e,s=t.chain,a=new Ge(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 Ge(i),o=await r.getFeeAsset(s),c=i.findAssetById(o),m=c.min||Rd,g=c.decimals||Ld,f=m*Math.pow(10,g),y=await r.getAssetBalance(s,o);if(BigInt(f*1.1)>y)throw new Jt.TransferValidationError("Insufficient_Ed",{amount:f,asset:c.asset.originSymbol,chain:i.name,error:"account.insufficientDeposit"})}},Xa=class extends Jt.TransferValidation{async validate(e){let{amount:t,asset:s,destination:a}=e,i=a.chain,o=await new Ge(i).getAssetDepositLimit(s);if(o.locked)throw new Jt.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 Jt.TransferValidationError("Deposit_Limit_Exceeded",{asset:s.originSymbol,chain:i.name,headroom:o.headroom,limit:o.limit,error:"circuitBreaker.depositLimitExceeded"})}},Na=class extends Jt.TransferValidation{async validate(e){let{source:t}=e,s=t.chain,i=await new Ge(s).getGlobalWithdrawLimit();if(i.lockdown)throw new Jt.TransferValidationError("Withdraw_Lockdown_Active",{chain:s.name,lockdownUntilMs:i.lockdownUntilMs,error:"circuitBreaker.withdrawLockdown"})}};var Te={isAny:()=>!0,isHydration:n=>n instanceof Xi.Parachain&&n.parachainId===2034,isHub:n=>n instanceof Xi.Parachain&&n.parachainId===1e3,isEvm:n=>n.isEvmChain()},im=[new Ba(Te.isAny,Te.isAny),new La(Te.isAny,Te.isAny),new _a(Te.isAny,Te.isHub),new Da(Te.isHub,Te.isAny),new Fa(Te.isAny,Te.isHydration),new Xa(Te.isAny,Te.isHydration),new Na(Te.isHydration,Te.isAny),new Ra(Te.isAny,Te.isAny)];var Wi={};wn(Wi,{AssethubDex:()=>Oi,HydrationDex:()=>Ni});var ls=require("@galacticcouncil/sdk-next"),om=require("@galacticcouncil/common"),cm=require("polkadot-api");var rm=(n,e=new Map)=>t=>{let s;return e.has(t)?e.get(t):(e.set(t,s=n(t)),s)};var{PoolType:Va}=ls.pool,{TradeRouteBuilder:_d,TradeRouter:Dd}=ls.sor,{TxBuilderFactory:Fd}=ls.tx,Ni=class{chain;client;poolCtx;txBuilder;getCtx=rm(async e=>{console.log("init swap router",e,"\u2705");let t=new Dd(this.poolCtx);return t.withFilter({useOnly:[Va.Aave,Va.Omni,Va.Stable,Va.XYK]}),t});constructor(e,t){this.chain=e,this.poolCtx=t,this.client=new Ge(this.chain),this.txBuilder=new Fd(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 cm.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:_d.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,om.RUNTIME_DECIMALS);return i/BigInt(r)}};var Vi=require("@galacticcouncil/common"),Oi=class{chain;client;constructor(e){this.chain=e,this.client=new et(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,Vi.encodeLocation)(a),(0,Vi.encodeLocation)(i),s.amount,!0);if(!r)throw new Error("Failed to get swap quote");return{amount:r}}};var lm=require("@galacticcouncil/xc-core");var mm=require("@galacticcouncil/xc-core");function Oa(n){let{id:e,origin:t,symbol:s}=n,a=s.toLowerCase();return new mm.Asset({key:[a,t,e].join("_"),originSymbol:s})}function um(n){let{decimals:e,id:t}=n;return{asset:Oa(n),decimals:e,id:t,xcmLocation:{parents:0,interior:{type:"X2",value:[{type:"PalletInstance",value:50},{type:"GeneralIndex",value:t}]}}}}function dm(n){let{decimals:e,id:t,internalId:s,origin:a}=n;return{asset:Oa(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 Wa=class extends lm.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=Oa(i),o=um(i),c=dm(i);console.log("\u{1F480} Registering "+r.key),s.updateAsset(o),t.updateAsset(c),this.updateAsset(r),this.updateChainRoute(s,xa(r)),this.updateChainRoute(t,ka(r))})}};0&&(module.exports={HydrationConfigService,assetsMap,builders,chainsMap,clients,dex,routesMap,tags,validations});
1
+ "use strict";var xm=Object.create;var Ks=Object.defineProperty;var Sm=Object.getOwnPropertyDescriptor;var km=Object.getOwnPropertyNames;var vm=Object.getPrototypeOf,Mm=Object.prototype.hasOwnProperty;var $=(n,e)=>()=>(n&&(e=n(n=0)),e);var wn=(n,e)=>{for(var t in e)Ks(n,t,{get:e[t],enumerable:!0})},qi=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of km(e))!Mm.call(n,a)&&a!==t&&Ks(n,a,{get:()=>e[a],enumerable:!(s=Sm(e,a))||s.enumerable});return n};var Hn=(n,e,t)=>(t=n!=null?xm(vm(n)):{},qi(e||!n||!n.__esModule?Ks(t,"default",{value:n,enumerable:!0}):t,n)),Im=n=>qi(Ks({},"__esModule",{value:!0}),n);var ua,jo=$(()=>{ua={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 $o,Qo=$(()=>{$o={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 Ms,Yo=$(()=>{jo();Qo();(function(n){n.idl={ntt:ua,transceiver:ua,transceiverLegacy:ua,governance:$o}})(Ms||(Ms={}))});var da,Jo=$(()=>{da={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 Zo,ec=$(()=>{Zo={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 Is,tc=$(()=>{Jo();ec();(function(n){n.idl={ntt:da,transceiver:da,transceiverLegacy:da,governance:Zo}})(Is||(Is={}))});var nc,sc=$(()=>{nc={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 ac,ic=$(()=>{ac={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 rc,oc=$(()=>{rc={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 cc,mc=$(()=>{cc={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 Ts,uc=$(()=>{sc();ic();oc();mc();(function(n){n.idl={ntt:nc,transceiver:ac,transceiverLegacy:rc,governance:cc}})(Ts||(Ts={}))});var ki=$(()=>{Yo();tc();uc()});function lc(n){for(let[e,t]of la)if(dc.Ntt.abiVersionMatches(n,e))return t;throw new Error(`Unknown IDL version: ${n}`)}function Cs(n,e,t){let{idl:{ntt:s}}=lc(t);return new vi.Program(s,e,{connection:n})}function fa(n,e,t,s=!1){let{idl:{transceiver:a,transceiverLegacy:i}}=lc(t),r=s?i:a;return new vi.Program(r,e,{connection:n})}var vi,dc,la,ga=$(()=>{vi=require("@coral-xyz/anchor");ki();dc=require("@wormhole-foundation/sdk-definitions-ntt"),la=[["3.0.0",Ts],["2.0.0",Is],["1.0.0",Ms]]});function Es(n){return dn.PublicKey.findProgramAddressSync([new dn.PublicKey(n).toBytes()],us)[0]}function ln(n){let e=n.split(".");if(e.length<3)throw new Error("Invalid version string");let t=e[2],s=t.split(/[^0-9]/)[0],a=t.slice(s.length);return[Number(e[0]),Number(e[1]),Number(s),a]}function Z(n,e){let t=s=>typeof s=="string"?Ps.encoding.bytes.encode(s):s;return dn.PublicKey.findProgramAddressSync(Array.isArray(n)?n.map(t):[t(n)],new dn.PublicKey(e))[0]}var dn,Ps,Mi,us,fc,dy,fn,Ii,ly,fy,pa=$(()=>{dn=require("@solana/web3.js"),Ps=require("@wormhole-foundation/sdk-base"),Mi=Hn(require("bn.js"),1),us=new dn.PublicKey("BPFLoaderUpgradeab1e11111111111111111111111");fc=[{name:"length",binary:"uint",endianness:"little",size:4},{name:"version",binary:"bytes"}],dy={MAX:new Mi.default((2n**64n-1n).toString()),to:(n,e)=>{let t=new Mi.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};fn=n=>Ps.encoding.bignum.toBytes((0,Ps.toChainId)(n),2),Ii=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)},ly=new dn.PublicKey(Buffer.from("owner".padEnd(32,"\0"))),fy=new dn.PublicKey(Buffer.from("payer".padEnd(32,"\0")))});async function ha(n,e,t,s,a,i,r,o,c){let m=Y.getExtraAccountMetaAddress(a,t),g=await n.getAccountInfo(m,c);if(g==null)return e;let f=Y.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 y=Y.createExecuteInstruction(t,s,a,i,r,m,BigInt(o));for(let b of f)y.keys.push(Nu(await Y.resolveExtraAccountMeta(n,b,y.keys,y.data,y.programId),y.keys));e.keys.push(...y.keys.slice(5)),e.keys.push({pubkey:t,isSigner:!1,isWritable:!1}),e.keys.push({pubkey:m,isSigner:!1,isWritable:!1})}function Nu(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 gn,Y,re,Ae,gc,ya,Ti,Bs,pc,z,hc=$(()=>{gn=require("@coral-xyz/anchor"),Y=Hn(require("@solana/spl-token"),1),re=require("@solana/web3.js"),Ae=require("@wormhole-foundation/sdk-base"),gc=require("@wormhole-foundation/sdk-definitions"),ya=Hn(require("bn.js"),1),Ti=require("@wormhole-foundation/sdk-definitions-ntt"),Bs=require("@solana/spl-token"),pc=require("@wormhole-foundation/sdk-solana-core");ga();pa();(function(n){function e(l,d,u){return{amount:new ya.default(l.toString()),recipientChain:{id:(0,Ae.toChainId)(d.chain)},recipientAddress:Array.from(d.address.toUniversalAddress().toUint8Array()),shouldQueue:u}}n.transferArgs=e,n.pdas=l=>({configAccount:()=>Z("config",l),outboxRateLimitAccount:()=>Z("outbox_rate_limit",l),inboxRateLimitAccount:$e=>Z(["inbox_rate_limit",fn($e)],l),inboxItemAccount:($e,st)=>Z(["inbox_item",Ti.Ntt.messageDigest($e,st)],l),upgradeLock:()=>Z("upgrade_lock",l),sessionAuthority:($e,st)=>Z(["session_authority",$e.toBytes(),(0,gc.keccak256)(Ae.encoding.bytes.concat(Ae.encoding.bytes.zpad(new Uint8Array(st.amount.toArray()),8),fn(st.recipientChain.id),new Uint8Array(st.recipientAddress),new Uint8Array([st.shouldQueue?1:0])))],l),tokenAuthority:()=>Z("token_authority",l),pendingTokenAuthority:()=>Z("pending_token_authority",l),peerAccount:$e=>Z(["peer",fn($e)],l),registeredTransceiver:$e=>Z(["registered_transceiver",$e.toBytes()],l),lutAccount:()=>Z("lut",l),lutAuthority:()=>Z("lut_authority",l)}),n.transceiverPdas=l=>{let d=()=>Z("emitter",l);return{emitterAccount:d,outboxItemSigner:()=>Z(["outbox_item_signer"],l),transceiverPeerAccount:H=>Z(["transceiver_peer",fn(H)],l),transceiverMessageAccount:(H,ce)=>Z(["transceiver_message",fn(H),ce],l),unverifiedMessageAccount:(H,ce)=>Z(["vaa_body",H.toBytes(),new Uint8Array(ce.toArray("be"))],l),wormholeMessageAccount:H=>Z(["message",H.toBytes()],l),wormholeMessageWithShimAccount:H=>Z(d().toBytes(),H)}};async function t(l,d,u){if(!u){let nt=l.rpcEndpoint===Ae.rpc.rpcAddress("Devnet","Solana")?"6sbzC1eH4FTujJXWj51eQe25cYvr4xfXbJ1vAj7j2k5J":l.rpcEndpoint.startsWith("http://localhost")?"98evdAiWr7ey9MAQzoQQMwFQkTsSR6KkWQuFqKrgwNwb":"Hk3SdYTJFpawrvRz4qRztuEt2SqoCG7BGj2yJfDJSFbJ";u=new re.PublicKey(nt)}let p=Cs(l,d.toString(),"1.0.0"),D=await p.methods.version().accountsStrict({}).instruction(),{blockhash:J}=await p.provider.connection.getLatestBlockhash("finalized"),te=new re.TransactionMessage({payerKey:u,recentBlockhash:J,instructions:[D]}).compileToV0Message(),ke=new re.VersionedTransaction(te),H=await p.provider.connection.simulateTransaction(ke,{sigVerify:!1});if(!H.value.returnData||H.value.err)throw new Error("Could not fetch IDL version: "+JSON.stringify((0,gn.translateError)(H.value.err,(0,gn.parseIdlErrors)(p.idl))));let ce=Ae.encoding.b64.decode(H.value.returnData?.data[0]),je=(0,Ae.deserializeLayout)(fc,ce),Pe=Ae.encoding.bytes.decode(je.version);for(let[nt]of la)if(Ti.Ntt.abiVersionMatches(Pe,nt))return nt;throw new Error(`Unknown IDL version: ${Pe}`)}n.getVersion=t;async function s(l,d,u){let[p,,,]=ln(l.idl.version),D=d.mode==="burning"?{burning:{}}:{locking:{}},J=(0,Ae.toChainId)(d.chain);u=u??n.pdas(l.programId);let te=new ya.default(d.outboundLimit.toString());return l.methods.initialize({chainId:J,limit:te,mode:D}).accounts({payer:d.payer,deployer:d.owner,programData:Es(l.programId),config:u.configAccount(),mint:d.mint,rateLimit:u.outboxRateLimitAccount(),tokenProgram:d.tokenProgram,tokenAuthority:u.tokenAuthority(),...p>=3&&{multisigTokenAuthority:d.multisigTokenAuthority??null},custody:await n.custodyAccountAddress(u,d.mint,d.tokenProgram),bpfLoaderUpgradeableProgram:us,associatedTokenProgram:Y.ASSOCIATED_TOKEN_PROGRAM_ID,systemProgram:re.SystemProgram.programId}).instruction()}n.createInitializeInstruction=s;async function a(l,d,u,p,D){let[J,,,]=ln(l.idl.version);if(J<2)return;D=D??n.pdas(l.programId);let te=await l.provider.connection.getSlot()-1,[ke,H]=gn.web3.AddressLookupTableProgram.createLookupTable({authority:D.lutAuthority(),payer:p.payer,recentSlot:te}),ce=pc.utils.getWormholeDerivedAccounts(u,p.wormholeId.toString()),je={config:D.configAccount(),custody:d.custody,tokenProgram:d.tokenProgram,mint:d.mint,tokenAuthority:D.tokenAuthority(),outboxRateLimit:D.outboxRateLimitAccount(),wormhole:{bridge:ce.wormholeBridge,feeCollector:ce.wormholeFeeCollector,sequence:ce.wormholeSequence,program:p.wormholeId,systemProgram:re.SystemProgram.programId,clock:gn.web3.SYSVAR_CLOCK_PUBKEY,rent:gn.web3.SYSVAR_RENT_PUBKEY}},Pe=st=>{let Hs=new Array;for(let ps in st){let Us=st[ps];Us instanceof re.PublicKey?Hs.push(Us):typeof Us=="object"&&Hs.push(...Pe(Us))}return Hs},nt=Pe(je).map(st=>st.toBase58()),$e=await Zt(l,D);if($e!==null){let st=$e.state.addresses?.map(ps=>ps.toBase58())??[];if(nt.filter(ps=>!st.includes(ps)).length===0)return null}return l.methods.initializeLut(new ya.default(te)).accountsStrict({payer:p.payer,owner:p.owner,authority:D.lutAuthority(),lutAddress:H,lut:D.lutAccount(),lutProgram:re.AddressLookupTableProgram.programId,systemProgram:re.SystemProgram.programId,entries:je}).instruction()}n.initializeOrUpdateLUT=a;async function i(l,d,u,p){p=p??n.pdas(l.programId);let D=await oe(p,d),J=(0,Ae.toChain)(u.transferArgs.recipientChain.id),te=await l.methods.transferBurn(u.transferArgs).accountsStrict({common:{payer:u.payer,config:{config:p.configAccount()},mint:d.mint,from:u.from,tokenProgram:d.tokenProgram,outboxItem:u.outboxItem,outboxRateLimit:p.outboxRateLimitAccount(),systemProgram:re.SystemProgram.programId,custody:D},peer:p.peerAccount(J),inboxRateLimit:p.inboxRateLimitAccount(J),sessionAuthority:p.sessionAuthority(u.fromAuthority,u.transferArgs),tokenAuthority:p.tokenAuthority()}).instruction(),ke=await Y.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),H=Y.getTransferHook(ke);if(H){let ce=u.from,je=d.mint,Pe=await oe(p,d),nt=p.sessionAuthority(u.fromAuthority,u.transferArgs);await ha(l.provider.connection,te,H.programId,ce,je,Pe,nt,0)}return te}n.createTransferBurnInstruction=i;async function r(l,d,u,p){if(d.paused)throw new Error("Contract is paused");p=p??n.pdas(l.programId);let D=(0,Ae.toChain)(u.transferArgs.recipientChain.id),J=await oe(p,d),te=await l.methods.transferLock(u.transferArgs).accountsStrict({common:{payer:u.payer,config:{config:p.configAccount()},mint:d.mint,from:u.from,tokenProgram:d.tokenProgram,outboxItem:u.outboxItem,outboxRateLimit:p.outboxRateLimitAccount(),custody:J,systemProgram:re.SystemProgram.programId},peer:p.peerAccount(D),inboxRateLimit:p.inboxRateLimitAccount(D),sessionAuthority:p.sessionAuthority(u.fromAuthority,u.transferArgs),custody:J}).instruction(),ke=await Y.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),H=Y.getTransferHook(ke);if(H){let ce=u.from,je=await oe(p,d),Pe=p.sessionAuthority(u.fromAuthority,u.transferArgs);await ha(l.provider.connection,te,H.programId,ce,d.mint,je,Pe,0)}return te}n.createTransferLockInstruction=r;async function o(l,d,u,p){let[D,,,]=ln(l.idl.version);p=p??n.pdas(l.programId);let J=await Y.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),te=null;J.mintAuthority?.equals(p.tokenAuthority())||(te=J.mintAuthority);let ke=u.recipient??(await Ht(l,u.chain,u.nttMessage)).recipientAddress,H=await l.methods.releaseInboundMint({revertOnDelay:u.revertWhenNotReady,revertWhenNotReady:u.revertWhenNotReady}).accounts({common:{payer:u.payer,config:{config:p.configAccount()},inboxItem:p.inboxItemAccount(u.chain,u.nttMessage),recipient:(0,Bs.getAssociatedTokenAddressSync)(d.mint,ke,!0,d.tokenProgram),mint:d.mint,tokenAuthority:p.tokenAuthority(),tokenProgram:d.tokenProgram,custody:await oe(p,d)},...D>=3&&{multisigTokenAuthority:te}}).instruction(),ce=Y.getTransferHook(J);if(ce){let je=await oe(p,d),Pe=d.mint,nt=(0,Bs.getAssociatedTokenAddressSync)(Pe,ke,!0,d.tokenProgram),$e=p.tokenAuthority();await ha(l.provider.connection,H,ce.programId,je,Pe,nt,$e,0)}return H}n.createReleaseInboundMintInstruction=o;async function c(l,d,u,p){let D=u.recipient??(await n.getInboxItem(l,u.chain,u.nttMessage)).recipientAddress;p=p??n.pdas(l.programId);let J=await oe(p,d),te=await l.methods.releaseInboundUnlock({revertOnDelay:u.revertWhenNotReady,revertWhenNotReady:u.revertWhenNotReady}).accountsStrict({common:{payer:u.payer,config:{config:p.configAccount()},inboxItem:p.inboxItemAccount(u.chain,u.nttMessage),recipient:(0,Bs.getAssociatedTokenAddressSync)(d.mint,D,!0,d.tokenProgram),mint:d.mint,tokenAuthority:p.tokenAuthority(),tokenProgram:d.tokenProgram,custody:J},custody:J}).instruction(),ke=await Y.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),H=Y.getTransferHook(ke);if(H){let ce=await oe(p,d),je=d.mint,Pe=(0,Bs.getAssociatedTokenAddressSync)(je,D,!0,d.tokenProgram),nt=p.tokenAuthority();await ha(l.provider.connection,te,H.programId,ce,je,Pe,nt,0)}return te}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:Es(l.programId),bpfLoaderUpgradeableProgram:us}).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:Es(l.programId),bpfLoaderUpgradeableProgram:us}).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:Es(l.programId),bpfLoaderUpgradeableProgram:us}).instruction()}n.createClaimOwnershipInstruction=f;async function y(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.acceptTokenAuthority().accountsStrict({common:{config:p.configAccount(),mint:d.mint,tokenProgram:d.tokenProgram,tokenAuthority:p.tokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},currentAuthority:u.currentAuthority}).instruction()}n.createAcceptTokenAuthorityInstruction=y;async function b(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.acceptTokenAuthorityFromMultisig().accountsStrict({common:{config:p.configAccount(),mint:d.mint,tokenProgram:d.tokenProgram,tokenAuthority:p.tokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},currentMultisigAuthority:u.currentMultisigAuthority}).remainingAccounts(u.additionalSigners.map(D=>({pubkey:D,isSigner:!0,isWritable:!1}))).instruction()}n.createAcceptTokenAuthorityFromMultisigInstruction=b;async function w(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.setTokenAuthorityOneStepUnchecked().accountsStrict({common:{config:p.configAccount(),tokenAuthority:p.tokenAuthority(),mint:d.mint,owner:u.owner,newAuthority:u.newAuthority,multisigTokenAuthority:u.multisigTokenAuthority??null},tokenProgram:d.tokenProgram}).instruction()}n.createSetTokenAuthorityOneStepUncheckedInstruction=w;async function x(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.setTokenAuthority().accountsStrict({common:{config:p.configAccount(),tokenAuthority:p.tokenAuthority(),mint:d.mint,owner:u.owner,newAuthority:u.newAuthority,multisigTokenAuthority:u.multisigTokenAuthority??null},rentPayer:u.rentPayer,pendingTokenAuthority:p.pendingTokenAuthority(),systemProgram:re.SystemProgram.programId}).instruction()}n.createSetTokenAuthorityInstruction=x;async function _(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.revertTokenAuthority().accountsStrict({common:{config:p.configAccount(),mint:d.mint,tokenAuthority:p.tokenAuthority(),tokenProgram:d.tokenProgram,systemProgram:re.SystemProgram.programId,rentPayer:u.rentPayer,pendingTokenAuthority:p.pendingTokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},owner:u.owner}).instruction()}n.createRevertTokenAuthorityInstruction=_;async function k(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.claimTokenAuthority().accountsStrict({common:{config:p.configAccount(),mint:d.mint,tokenAuthority:p.tokenAuthority(),tokenProgram:d.tokenProgram,systemProgram:re.SystemProgram.programId,rentPayer:u.rentPayer,pendingTokenAuthority:p.pendingTokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},newAuthority:u.newAuthority}).instruction()}n.createClaimTokenAuthorityInstruction=k;async function O(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.claimTokenAuthorityToMultisig().accountsStrict({common:{config:p.configAccount(),mint:d.mint,tokenAuthority:p.tokenAuthority(),tokenProgram:d.tokenProgram,systemProgram:re.SystemProgram.programId,rentPayer:u.rentPayer,pendingTokenAuthority:p.pendingTokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},newMultisigAuthority:u.newMultisigAuthority}).remainingAccounts(u.additionalSigners.map(D=>({pubkey:D,isSigner:!0,isWritable:!1}))).instruction()}n.createClaimTokenAuthorityToMultisigInstruction=O;async function C(l,d,u){return u=u??n.pdas(l.programId),l.methods.setPeer({chainId:{id:(0,Ae.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=C;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 I(l,d,u){return u=u??n.pdas(l.programId),l.methods.setOutboundLimit({limit:d.limit}).accounts({owner:d.owner,config:u.configAccount(),rateLimit:u.outboxRateLimitAccount()}).instruction()}n.createSetOutboundLimitInstruction=I;async function ee(l,d,u){return u=u??n.pdas(l.programId),l.methods.setInboundLimit({chainId:{id:(0,Ae.toChainId)(d.chain)},limit:d.limit}).accounts({owner:d.owner,config:u.configAccount(),rateLimit:u.inboxRateLimitAccount(d.chain)}).instruction()}n.createSetInboundLimitInstruction=ee;async function Ce(l,d,u,p,D,J){D=D??n.pdas(l.programId),J=J??n.transceiverPdas(u);let te=p.vaa,ke=te.payload.nttManagerPayload,H=te.emitterChain;return l.methods.redeem({}).accounts({payer:p.payer,config:D.configAccount(),peer:D.peerAccount(H),transceiverMessage:J.transceiverMessageAccount(H,ke.id),transceiver:D.registeredTransceiver(u),mint:d.mint,inboxItem:D.inboxItemAccount(H,ke),inboxRateLimit:D.inboxRateLimitAccount(H),outboxRateLimit:D.outboxRateLimitAccount()}).instruction()}n.createRedeemInstruction=Ce;async function lt(l,d){return l.account.config.fetch(d.configAccount())}n.getConfig=lt;async function Ht(l,d,u){return l.account.inboxItem.fetch(n.pdas(l.programId).inboxItemAccount(d,u))}n.getInboxItem=Ht;async function Zt(l,d){let[u,,,]=ln(l.idl.version);if(u<2)return null;d=d??n.pdas(l.programId);let p=await l.account.lut.fetchNullable(d.lutAccount());if(!p)return null;let D=await l.provider.connection.getAddressLookupTable(p.address);if(D.value===null)throw new Error("Could not fetch LUT");return D.value}n.getAddressLookupTable=Zt;async function oe(l,d,u=Y.TOKEN_PROGRAM_ID){return d instanceof re.PublicKey?Y.getAssociatedTokenAddress(d,l.tokenAuthority(),!0,u):Y.getAssociatedTokenAddress(d.mint,l.tokenAuthority(),!0,d.tokenProgram)}n.custodyAccountAddress=oe})(z||(z={}))});var Ci=$(()=>{hc();ga();ki()});var yc,bc=$(()=>{yc={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 Ac,wc=$(()=>{Ac={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 Pi,qe,B,Ei,Nn,Bi,G,Fn,Xn,Ls,Rs,Li=$(()=>{Pi=require("@coral-xyz/anchor"),qe=Hn(require("@solana/spl-token"),1),B=require("@solana/web3.js"),Ei=require("@wormhole-foundation/sdk-base"),Nn=require("@wormhole-foundation/sdk-definitions"),Bi=require("@wormhole-foundation/sdk-definitions-ntt"),G=require("@wormhole-foundation/sdk-solana"),Fn=require("@wormhole-foundation/sdk-solana-core"),Xn=Hn(require("bn.js"),1);ga();Ci();pa();bc();wc();Ls=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??Bi.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 Pi.Program(yc,i,{connection:this.program.provider.connection});let r=a.verifyVaaShimOverride??Bi.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 Pi.Program(Ac,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 B.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]=B.PublicKey.findProgramAddressSync([Buffer.from("GuardianSet"),o],this.manager.core.coreBridge.programId);if(a){let g=new Xn.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:Ii((0,Nn.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:Fn.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 Xn.default(e.hash.subarray(-8)),r=Ii((0,Nn.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 B.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 B.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 Xn.default(t.hash.subarray(-8)),a=await this.program.methods.closeUnverifiedWormholeMessageAccount(s).accounts({payer:e,message:this.pdas.unverifiedMessageAccount(e,s)}).instruction(),i=new B.Transaction;i.feePayer=e,i.add(a),yield this.manager.createUnsignedTx({transaction:i},"Ntt.CloseUnverifiedWormholeMessageAccount")}async getTransceiverType(e){let[t,,,]=ln(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 B.TransactionMessage({payerKey:s,recentBlockhash:i.blockhash,instructions:[a]}).compileToV0Message(),o=new B.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,Nn.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,Ei.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:B.Keypair.generate(),r=await this.createBroadcastWormholePeerIx(e.chain,s,i?.publicKey),o=new B.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,Nn.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=Fn.utils.getWormholeDerivedAccounts(this.program.programId,this.manager.core.address);return s=this.postMessageShim?this.pdas.wormholeMessageWithShimAccount(this.postMessageShim.programId):s,this.program.methods.broadcastWormholeId().accounts({payer:e,config:this.manager.pdas.configAccount(),mint:t.mint,wormholeMessage:s,emitter:a.wormholeEmitter,wormhole:{bridge:a.wormholeBridge,feeCollector:a.wormholeFeeCollector,sequence:a.wormholeSequence,program:this.manager.core.address,...this.postMessageShim&&{postMessageShim:this.postMessageShim.programId,wormholePostMessageShimEa:Z(["__event_authority"],this.postMessageShim.programId)}}}).instruction()}async createBroadcastWormholePeerIx(e,t,s){if(!this.postMessageShim&&!s)throw new Error("wormholeMessage must be passed in if Wormhole Post Message Shim is not configured");let a=Fn.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,Ei.toChainId)(e)}).accounts({payer:t,config:this.manager.pdas.configAccount(),peer:this.pdas.transceiverPeerAccount(e),wormholeMessage:s,emitter:a.wormholeEmitter,wormhole:{bridge:a.wormholeBridge,feeCollector:a.wormholeFeeCollector,sequence:a.wormholeSequence,program:this.manager.core.address,...this.postMessageShim&&{postMessageShim:this.postMessageShim.programId,wormholePostMessageShimEa:Z(["__event_authority"],this.postMessageShim.programId)}}}).instruction()}async createReleaseWormholeOutboundIx(e,t,s){let[a,,,]=ln(this.version),i=Fn.utils.getWormholeDerivedAccounts(this.program.programId,this.manager.core.address),r=this.postMessageShim?this.pdas.wormholeMessageWithShimAccount(this.postMessageShim.programId):this.pdas.wormholeMessageAccount(t);return this.program.methods.releaseWormholeOutbound({revertOnDelay:s}).accounts({payer:e,config:{config:this.manager.pdas.configAccount()},outboxItem:t,wormholeMessage:r,emitter:i.wormholeEmitter,transceiver:this.manager.pdas.registeredTransceiver(this.program.programId),wormhole:{bridge:i.wormholeBridge,feeCollector:i.wormholeFeeCollector,sequence:i.wormholeSequence,program:this.manager.core.address,...this.postMessageShim&&{postMessageShim:this.postMessageShim.programId,wormholePostMessageShimEa:Z(["__event_authority"],this.postMessageShim.programId)}},...a>=3&&{manager:this.manager.program.programId,outboxItemSigner:this.pdas.outboxItemSigner()}}).instruction()}},Rs=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=Cs(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 B.PublicKey(a.ntt.manager),m=new B.PublicKey(a.ntt.transceiver[o]);if(z.transceiverPdas(c).emitterAccount().equals(m)||c.equals(m)){let g=new Ls(this,fa(s,a.ntt.manager,i,!a.ntt.svmShims),i,a.ntt.svmShims);this.transceivers.push(g.program)}else this.transceivers.push(fa(s,a.ntt.transceiver[o],i,!a.ntt.svmShims))}),this.managerAddress=a.ntt.manager,this.tokenAddress=a.ntt.token,this.core=new Fn.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 Ls(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 B.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 B.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 B.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 B.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,Nn.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 B.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 B.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 B.PublicKey(this.core.address)});if(!i)return;let r=new B.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:B.Keypair.generate(),c=await r.createBroadcastWormholeIdIx(t,a,o?.publicKey),m=new B.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:B.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 Xn.default(s.toString()),tokenDecimals:t}),o=new B.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??B.Keypair.generate();let o=new G.SolanaAddress(e).unwrap(),c=o,m=await this.getTokenAccount(c);if(a.wrapNative){if(this.tokenAddress!==qe.NATIVE_MINT.toBase58())throw new Error("Configured token must be native mint for wrapping");let C=qe.getAssociatedTokenAddressSync(qe.NATIVE_MINT,o),U=[...await this.connection.getAccountInfo(C)?[]:[qe.createAssociatedTokenAccountInstruction(o,C,o,qe.NATIVE_MINT)],B.SystemProgram.transfer({fromPubkey:o,toPubkey:C,lamports:t}),qe.createSyncNativeInstruction(C)],{blockhash:I}=await this.connection.getLatestBlockhash(),ee=new B.TransactionMessage({payerKey:o,instructions:U,recentBlockhash:I}).compileToV0Message(),Ce=new B.VersionedTransaction(ee);yield this.createUnsignedTx({transaction:Ce},"Ntt.WrapNative")}let g=z.transferArgs(t,s,a.queue),f={transferArgs:g,payer:o,from:m,fromAuthority:c,outboxItem:i.publicKey},y=qe.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 C=0;C<this.transceivers.length;++C)if(C===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 x=new B.Transaction;x.feePayer=o,x.add(y,...await Promise.all(b));let _=[];try{_.push(await this.getAddressLookupTable())}catch{}let k=new B.TransactionMessage({payerKey:o,instructions:x.instructions,recentBlockhash:(await this.connection.getLatestBlockhash()).blockhash}).compileToV0Message(_),O=new B.VersionedTransaction(k);yield this.createUnsignedTx({transaction:O,signers:[i]},"Ntt.Transfer")}async getTokenAccount(e){let t=await this.getConfig();return await qe.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 B.Transaction().add(qe.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 C=B.Keypair.generate(),W=await o.verifyVaaShim.methods.postSignatures(r.guardianSet,r.signatures.length,r.signatures.map(ee=>[ee.guardianIndex,...ee.signature.encode()])).accounts({payer:c,guardianSignatures:C.publicKey}).instruction(),U=new B.Transaction;U.feePayer=c,U.add(W),yield this.createUnsignedTx({transaction:U,signers:[C]},"VerifyVAAShim.PostSignature"),m.push(o.createReceiveIx(r,c,C.publicKey,!1)),m.push(o.verifyVaaShim.methods.closeSignatures().accounts({guardianSignatures:C.publicKey,refundRecipient:c}).instruction())}else yield*this.core.postVaa(t,r),m.push(o.createReceiveIx(r,c));let g=z.createRedeemInstruction(this.program,s,o.program.programId,{payer:c,vaa:r}),f=r.payload.nttManagerPayload,y=r.emitterChain,b={payer:c,config:s,nttMessage:f,recipient:new B.PublicKey(f.payload.recipientAddress.toUint8Array()),chain:y,revertWhenNotReady:!1},w=s.mode.locking!=null?z.createReleaseInboundUnlockInstruction(this.program,s,{...b}):z.createReleaseInboundMintInstruction(this.program,s,{...b}),x=new B.Transaction;x.feePayer=c,x.add(...await Promise.all([...m,g,w]));let _=[];try{_.push(await this.getAddressLookupTable())}catch{}let k=new B.TransactionMessage({payerKey:c,instructions:x.instructions,recentBlockhash:(await this.connection.getLatestBlockhash()).blockhash}).compileToV0Message(_),O=new B.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 Xn.default(e.toString())}),i=new B.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 Xn.default(t.toString())}),r=new B.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 B.Transaction;r.feePayer=i;let o={payer:i,config:a,nttMessage:t,recipient:new B.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 xc,Sc=$(()=>{xc={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 kc,vc=$(()=>{kc={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 Ri,Ot,q,Mc,_s,ba,Ds,_i=$(()=>{Ri=require("@coral-xyz/anchor"),Ot=require("@solana/spl-token"),q=require("@solana/web3.js"),Mc=require("@wormhole-foundation/sdk-base"),_s=require("@wormhole-foundation/sdk-solana"),ba=Hn(require("bn.js"),1);Sc();vc();pa();Ds=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 _s.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 _s.SolanaAddress(e).unwrap(),c={queue:!1,automatic:!1,wrapNative:r},m=q.Keypair.generate(),g=i.transfer(e,a.remainingAmount,t,c,m);for await(let f of g)if(f.description==="Ntt.Transfer"){let y=[];try{y.push(await i.getAddressLookupTable())}catch(k){console.debug(k)}let b=q.TransactionMessage.decompile(f.transaction.transaction.message,{addressLookupTableAccounts:y});if(a.transferTokenFee>0n){let k=new q.PublicKey(a.referrer.address.toString()),{mint:O,tokenProgram:C}=await i.getConfig(),W=(0,Ot.getAssociatedTokenAddressSync)(O,k,!0,C),U=(0,Ot.getAssociatedTokenAddressSync)(O,o,!0,C);await this.connection.getAccountInfo(W)||b.instructions.push((0,Ot.createAssociatedTokenAccountIdempotentInstruction)(o,W,k,O,C));let ee=await(0,Ot.getMint)(this.connection,O,void 0,C);b.instructions.push((0,Ot.createTransferCheckedInstruction)(U,O,W,o,a.transferTokenFee,ee.decimals,void 0,C))}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 Ri.Program(kc,this.nttWithExecutorProgramId,{connection:this.connection}),x=new q.PublicKey(this.contracts.ntt.manager),_=q.PublicKey.findProgramAddressSync([Buffer.from("peer"),fn(t.chain)],x)[0];if(b.instructions.push(await w.methods.relayNttMesage({execAmount:new ba.default(a.estimatedCost.toString()),recipientChain:(0,Mc.toChainId)(t.chain),signedQuoteBytes:Buffer.from(a.signedQuote),relayInstructions:Buffer.from(a.relayInstructions)}).accounts({payer:o,payee:new q.PublicKey(a.payeeAddress),nttProgramId:x,nttPeer:_,nttMessage:m.publicKey,executorProgram:this.executorProgramId}).instruction()),y.length===0){console.debug("no manager lookup table found, checking helper program");let k=new Ri.Program(xc,this.nttLutProgramId,{connection:this.connection}),O=q.PublicKey.findProgramAddressSync([Buffer.from("lut"),x.toBuffer()],k.programId)[0],C=await k.account.lut.fetchNullable(O);if(!C){console.debug("no helper program lookup table found, initializing...");let[U]=await q.PublicKey.findProgramAddressSync([Buffer.from("config")],x),[I]=await q.PublicKey.findProgramAddressSync([Buffer.from("lut_authority")],k.programId),ee=await this.connection.getSlot("finalized")-10,[Ce]=await q.PublicKey.findProgramAddressSync([I.toBuffer(),new ba.default(ee).toArrayLike(Buffer,"le",8)],q.AddressLookupTableProgram.programId),[lt]=await q.PublicKey.findProgramAddressSync([Buffer.from("lut"),x.toBuffer()],k.programId),Ht=await k.methods.initializeLut(new ba.default(ee)).accounts({nttProgramId:x,nttConfig:U,authority:I,lutAddress:Ce,lut:lt,lutProgram:q.AddressLookupTableProgram.programId,systemProgram:q.SystemProgram.programId,payer:o}).instruction(),Zt=new q.TransactionMessage({payerKey:o,recentBlockhash:(await this.connection.getLatestBlockhash("finalized")).blockhash,instructions:[Ht]}).compileToV0Message();yield i.createUnsignedTx({transaction:new q.VersionedTransaction(Zt)},"NttSvmLut.InitializeLut"),console.debug(`initialized lookup table: ${f}`);let oe=0;for(;!C&&oe<10;)await new Promise(l=>setTimeout(l,2e3)),C=await k.account.lut.fetchNullable(O),oe++}let W=await this.connection.getAddressLookupTable(C.address);if(!W.value)throw new Error("unable to fetch lookup table");y.push(W.value)}f.transaction.transaction.message=b.compileToV0Message(y),yield f}else yield f}static associatedTokenAccountMinRent=void 0;async estimateMsgValueAndGasLimit(e){let t=0n;if(t+=2n*5000n+7n*5000n+1400000n,t+=2n*5000n+7n*5000n,t+=5000n+3200000n,t+=5000n+5000000n,t+=5000n,e){let s=new q.PublicKey(e.address.toString()),a=new _s.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,Ot.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 Ic=$(()=>{"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 Vu(){(0,Tc.register)(),(0,ds.protocolIsRegistered)(Fs._platform,"Ntt")||(0,ds.registerProtocol)(Fs._platform,"Ntt",Rs),(0,ds.protocolIsRegistered)(Fs._platform,"NttWithExecutor")||(0,ds.registerProtocol)(Fs._platform,"NttWithExecutor",Ds)}var ds,Fs,Tc,Cc=$(()=>{ds=require("@wormhole-foundation/sdk-definitions"),Fs=require("@wormhole-foundation/sdk-solana");Li();_i();Tc=require("@wormhole-foundation/sdk-definitions-ntt");Ic();Li();_i()});var Pc={};wn(Pc,{IdlVersions:()=>la,NTT:()=>z,SolanaNtt:()=>Rs,SolanaNttWithExecutor:()=>Ds,SolanaNttWormholeTransceiver:()=>Ls,_1_0_0:()=>Ms,_2_0_0:()=>Is,_3_0_0:()=>Ts,getNttProgram:()=>Cs,getTransceiverProgram:()=>fa,register:()=>Vu});var Ec=$(()=>{Cc();Ci()});var Gd={};wn(Gd,{HydrationConfigService:()=>Ua,assetsMap:()=>zi,builders:()=>Fi,chainsMap:()=>dr,clients:()=>oi,dex:()=>Gi,routesMap:()=>um,tags:()=>Xi,validations:()=>fm});module.exports=Im(Gd);var M=require("@galacticcouncil/xc-core"),Ee=new M.Asset({key:"aave",originSymbol:"AAVE"}),Ka=new M.Asset({key:"ajun",originSymbol:"AJUN"}),Be=new M.Asset({key:"apyusd",originSymbol:"apyUSD"}),j=new M.Asset({key:"astr",originSymbol:"ASTR"}),K=new M.Asset({key:"bnc",originSymbol:"BNC"}),Ga=new M.Asset({key:"bsx",originSymbol:"BSX"}),Le=new M.Asset({key:"cfg_new",originSymbol:"CFG"}),qa=new M.Asset({key:"cru",originSymbol:"CRU"}),St=new M.Asset({key:"dai",originSymbol:"DAI"}),Lt=new M.Asset({...St,key:"dai_wh"}),P=new M.Asset({key:"dot",originSymbol:"DOT"}),R=new M.Asset({key:"eth",originSymbol:"ETH"}),Re=new M.Asset({key:"ena",originSymbol:"ENA"}),ft=new M.Asset({key:"eurc",originSymbol:"EURC"}),kt=new M.Asset({...ft,key:"eurc_wh"}),en=new M.Asset({key:"glmr",originSymbol:"GLMR"}),Un=new M.Asset({key:"hdx",originSymbol:"HDX"}),ae=new M.Asset({key:"ibtc",originSymbol:"IBTC"}),at=new M.Asset({key:"intr",originSymbol:"INTR"}),Qe=new M.Asset({key:"jitoSol",originSymbol:"jitoSOL"}),F=new M.Asset({key:"ksm",originSymbol:"KSM"}),_e=new M.Asset({key:"ldo",originSymbol:"LDO"}),De=new M.Asset({key:"lbtc",originSymbol:"LBTC"}),Ye=new M.Asset({key:"ewt",originSymbol:"EWT"}),Fe=new M.Asset({key:"link",originSymbol:"LINK"}),ne=new M.Asset({key:"myth",originSymbol:"MYTH"}),za=new M.Asset({key:"near",originSymbol:"NEAR"}),vt=new M.Asset({key:"neuro",originSymbol:"NEURO"}),it=new M.Asset({key:"pen",originSymbol:"PEN"}),Xe=new M.Asset({key:"paxg",originSymbol:"PAXG"}),Je=new M.Asset({key:"prime",originSymbol:"PRIME"}),Ne=new M.Asset({key:"sky",originSymbol:"SKY"}),Ve=new M.Asset({key:"sol",originSymbol:"SOL"}),Oe=new M.Asset({key:"sui",originSymbol:"SUI"}),We=new M.Asset({key:"susde",originSymbol:"sUSDe"}),rt=new M.Asset({key:"susds",originSymbol:"sUSDS"}),Rt=new M.Asset({...rt,key:"susds_wh"}),He=new M.Asset({key:"tbtc",originSymbol:"tBTC"}),Ue=new M.Asset({key:"trac",originSymbol:"TRAC"}),Mt=new M.Asset({key:"unq",originSymbol:"UNQ"}),T=new M.Asset({key:"usdt",originSymbol:"USDT"}),_t=new M.Asset({...T,key:"usdt_wh"}),Ut=new M.Asset({...T,key:"usdt_eth"}),L=new M.Asset({key:"usdc",originSymbol:"USDC"}),Dt=new M.Asset({...L,key:"usdc_wh"}),Kt=new M.Asset({...L,key:"usdc_eth"}),le=new M.Asset({key:"vastr",originSymbol:"vASTR"}),fe=new M.Asset({key:"vdot",originSymbol:"vDOT"}),Ft=new M.Asset({key:"weth",originSymbol:"WETH"}),Ze=new M.Asset({...Ft,key:"weth_wh"}),ot=new M.Asset({key:"wbtc",originSymbol:"WBTC"}),Xt=new M.Asset({...ot,key:"wbtc_wh"}),Kn=new M.Asset({key:"wsol",originSymbol:"wSOL"}),Ke=new M.Asset({key:"wsteth",originSymbol:"wstETH"}),Gt=new M.Asset({key:"wud",originSymbol:"WUD"}),ja=new M.Asset({key:"zec",originSymbol:"ZEC"}),Tm=[Ee,Ka,Be,j,Ga,Le,qa,K,St,Lt,P,Re,ft,kt,R,en,Un,ae,at,F,_e,De,Ye,Qe,Fe,ne,za,vt,Xe,it,Je,Ne,Ve,Oe,We,rt,Rt,Ue,He,Mt,L,Dt,Kt,T,_t,Ut,le,fe,ot,Xt,Ft,Ze,Kn,Ke,Gt,ja],zi=new Map(Tm.map(n=>[n.key,n]));var xn=require("@galacticcouncil/xc-core");var ji=require("viem/chains"),Sn=new xn.EvmChain({id:8453,key:"base",name:"Base",assetsData:[{asset:R,decimals:18,id:"0x4200000000000000000000000000000000000006"},{asset:ft,decimals:6,id:"0x60a3e35cc302bfa44cb288bc5a4f316fdb1adb42"},{asset:L,decimals:6,id:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}],balance:xn.EvmBalanceType.Erc20,balanceOverrides:{[R.key]:xn.EvmBalanceType.Native},ecosystem:xn.ChainEcosystem.Ethereum,evmChain:ji.base,explorer:"https://basescan.org/",rpcs:["https://stylish-quick-firefly.base-mainnet.quiknode.pro/"],basejump:{address:"0xf5b9334e44f800382cb47fc19669401d694e529b"},wormhole:{id:30,coreBridge:"0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6",executor:"0x9E1936E91A4a5AE5A5F75fFc472D6cb8e93597ea",nttExecutor:"0x27db1967D469D89318B7119Ced5609f327095de4",ntt:{[ft.key]:{token:"0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42",manager:"0xD1dc3517732c98502b5c1ba2389AcA9E9016d89a",transceiver:{wormhole:"0xa84b362290b0CFdB55e877dfc633284091e0B3F7"}}}}});var kn=require("@galacticcouncil/xc-core");var $i=require("viem/chains"),E=new kn.EvmChain({id:1,key:"ethereum",name:"Ethereum",assetsData:[{asset:R,decimals:18,id:"0x0000000000000000000000000000000000000000"},{asset:Ee,decimals:18,id:"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"},{asset:Be,decimals:18,id:"0x38eeb52f0771140d10c4e9a9a72349a329fe8a6a"},{asset:Le,decimals:18,id:"0xcccccccccc33d538dbc2ee4feab0a7a1ff4e8a94"},{asset:Ft,decimals:18,id:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"},{asset:St,decimals:18,id:"0x6B175474E89094C44Da98b954EedeAC495271d0F"},{asset:Re,decimals:18,id:"0x57e114b691db790c35207b2e685d4a43181e6061"},{asset:We,decimals:18,id:"0x9d39a5de30e57443bff2a8307a4256c8797a3497"},{asset:rt,decimals:18,id:"0xa3931d71877c0e7a3148cb7eb4463524fec27fbd"},{asset:He,decimals:18,id:"0x18084fba666a33d37592fa2633fd49a74dd93a88"},{asset:ot,decimals:8,id:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"},{asset:De,decimals:8,id:"0x8236a87084f8b84306f72007f36f2618a5634494"},{asset:L,decimals:6,id:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"},{asset:T,decimals:6,id:"0xdAC17F958D2ee523a2206206994597C13D831ec7"},{asset:_e,decimals:18,id:"0x5a98fcbea516cf06857215779fd812ca3bef1b32"},{asset:Fe,decimals:18,id:"0x514910771af9ca656af840dff83e8264ecf986ca"},{asset:Xe,decimals:18,id:"0x45804880de22913dafe09f4980848ece6ecbaf78"},{asset:Ne,decimals:18,id:"0x56072c95faa701256059aa122697b133aded9279"},{asset:Ue,decimals:18,id:"0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F"},{asset:Ke,decimals:18,id:"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"}],balance:kn.EvmBalanceType.Erc20,balanceOverrides:{[R.key]:kn.EvmBalanceType.Native},ecosystem:kn.ChainEcosystem.Ethereum,evmChain:$i.mainnet,explorer:"https://etherscan.io/",rpcs:["https://ethereum-rpc.publicnode.com","https://cosmopolitan-dimensional-diagram.quiknode.pro"],snowbridge:{id:1,gateway:"0x27ca963c279c93801941e1eb8799c23f407d68e7"},wormhole:{id:2,coreBridge:"0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B",executor:"0x84EEe8dBa37C36947397E1E11251cA9A06Fc6F8a",nttExecutor:"0xC079bFA54F348199bA51B2717595fE24e96f1542",ntt:{[St.key]:{token:"0x6B175474E89094C44Da98b954EedeAC495271d0F",manager:"0x804F123f75cCa0A9c0Cba341F82f4A4DA86a5259",transceiver:{wormhole:"0x99673a01C5779Ebf59399B4B228c1825c0113571"}},[rt.key]:{token:"0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD",manager:"0x5085A4863f89eC9553F70187EE73B5aAe0fd14b5",transceiver:{wormhole:"0x7C236d237BEbBE1b7902131B31b7b3270005a810"}},[L.key]:{token:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",manager:"0x447b2c7485A3d6813F8197E605b10BcCD8dd8398",transceiver:{wormhole:"0xA108BD5dBc6CE665aEbB6895351e0609c76F8EFc"}},[T.key]:{token:"0xdAC17F958D2ee523a2206206994597C13D831ec7",manager:"0x9fbd9F16cE7Fa17097E91cc36DC1B7b47aDCa9De",transceiver:{wormhole:"0x45c566f6595CF93e639E77cc1bbE57A8D27901c2"}},[ot.key]:{token:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",manager:"0x081b76AC3cFb65DCe93961d66cea44A74EC8Ef28",transceiver:{wormhole:"0x3FE8fBB8505c8dB2264f6Ebc5559c7C2b2647218"}},[Ft.key]:{token:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",manager:"0x283B14B5Dd352e32154Df014EA96834F395E04b6",transceiver:{wormhole:"0xbA0Cd32131b8206AF4feB79A1A3aaF0AEfe18b48"}},[R.key]:{token:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",manager:"0x283B14B5Dd352e32154Df014EA96834F395E04b6",transceiver:{wormhole:"0xbA0Cd32131b8206AF4feB79A1A3aaF0AEfe18b48"}}}}});var Qi=[Sn,E];var gt=require("@galacticcouncil/xc-core");var Yi={assetsData:[{asset:P,decimals:10,id:0,xcmLocation:{parents:1,interior:"Here"}},{asset:T,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:Gt,decimals:10,id:31337,xcmLocation:{parents:0,interior:{X2:[{PalletInstance:50},{GeneralIndex:31337}]}}},{asset:ne,decimals:18,min:3e-8,xcmLocation:{parents:1,interior:{X1:[{Parachain:3369}]}}},{asset:F,decimals:12,min:1e-4,xcmLocation:{parents:2,interior:{X1:[{GlobalConsensus:"Kusama"}]}}}],balance:gt.SubstrateBalanceType.Assets,balanceOverrides:{[P.key]:gt.SubstrateBalanceType.System,[F.key]:gt.SubstrateBalanceType.ForeignAssets,[ne.key]:gt.SubstrateBalanceType.ForeignAssets},min:gt.SubstrateMinType.Assets,ecosystem:gt.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"]},N=new gt.Parachain({...Yi,key:"assethub",name:"AssetHub Polkadot"}),tn=new gt.Parachain({...Yi,key:"assethub_cex",name:"AssetHub (CEX)",usesSignerFee:!0,isTestChain:!0,balanceOverrides:{}});var vn=require("@galacticcouncil/xc-core");var ve=new vn.Parachain({assetsData:[{asset:j,xcmLocation:{parents:0,interior:"Here"}},{asset:P,id:"340282366920938463463374607431768211455",decimals:10,min:1e-4,xcmLocation:{parents:1,interior:"Here"}},{asset:T,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:en,id:"18446744073709551619",decimals:18,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:ae,id:"18446744073709551620",decimals:8,min:1e-6,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:at,id:"18446744073709551621",decimals:10,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0002000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:fe,id:"18446744073709551624",decimals:10,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:le,id:"18446744073709551632",decimals:18,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}}],balance:vn.SubstrateBalanceType.Assets,balanceOverrides:{[j.key]:vn.SubstrateBalanceType.System},ecosystem:vn.ChainEcosystem.Polkadot,explorer:"https://astar.subscan.io",genesisHash:"0x9eb76c5184c4ab8679d2d5d819fdf90b9c001403e9e17da2e14b6d8aec4029c6",key:"astar",name:"Astar",parachainId:2006,ss58Format:5,ws:"wss://rpc.astar.network"});var Mn=require("@galacticcouncil/xc-core");var Cm=["wss://eu.bifrost-polkadot-rpc.liebi.com/ws","wss://hk.p.bifrost-rpc.liebi.com/ws","wss://bifrost-polkadot.dotters.network"],se=new Mn.Parachain({assetsData:[{asset:K,id:{Native:K.originSymbol},xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:fe,id:{VToken2:0},decimals:10,min:1e-4,xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:le,id:{VToken2:3},decimals:18,min:.01,xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:P,id:{Token2:0},decimals:10,min:1e-4,xcmLocation:{parents:1,interior:"Here"}},{asset:T,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:en,id:{Token2:1},decimals:18,min:1e-5,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:ae,id:{Token2:6},decimals:8,min:1e-6,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}}],balance:Mn.SubstrateBalanceType.Tokens,balanceOverrides:{[K.key]:Mn.SubstrateBalanceType.System},ecosystem:Mn.ChainEcosystem.Polkadot,explorer:"https://bifrost.subscan.io",genesisHash:"0x262e1b2ad728475fd6fe88e62d34c200abe6fd693931ddad144059b1eb884e5b",key:"bifrost",name:"Bifrost",parachainId:2030,ss58Format:6,ws:Cm});var In=require("@galacticcouncil/xc-core"),tr=require("viem");var Zi=require("@galacticcouncil/common"),er=require("polkadot-api"),{isEvmAccount:Pm,H160:Ji}=Zi.h160,Gs=class{async toH160(e,t){if(Pm(e))return Ji.fromAccount(e);let s=Ji.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,er.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 Em=new Gs,$a=["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"],Qa=["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"],Bm=(0,tr.defineChain)({id:222222,name:"Hydration",network:"hydration",nativeCurrency:{decimals:18,name:"WETH",symbol:"WETH"},rpcUrls:{public:{http:$a,webSocket:Qa},default:{http:$a,webSocket:Qa}},blockExplorers:{default:{name:"Hydration Explorer",url:"https://hydration.subscan.io"}},testnet:!1}),v=new In.EvmParachain({assetsData:[{asset:Un,id:0,xcmLocation:{parents:0,interior:{X1:[{GeneralIndex:0}]}}},{asset:Ee,decimals:18,id:1000624,min:6e-5,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"}}]}}},{asset:Ka,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:Le,decimals:18,id:41,min:.1,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xcccccccccc33d538dbc2ee4feab0a7a1ff4e8a94"}}]}}},{asset:qa,decimals:12,id:27,min:.0079,xcmLocation:{parents:1,interior:{X1:{Parachain:2008}}}},{asset:P,decimals:10,id:5,min:.0018,xcmLocation:{parents:1,interior:"Here"}},{asset:Lt,decimals:18,id:18,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f"}}]}}},{asset:R,decimals:18,id:34,min:55e-7,xcmLocation:{parents:2,interior:{X1:{GlobalConsensus:{Ethereum:{chain_id:1}}}}}},{asset:Be,decimals:18,id:46,min:.0147058823529412,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x38eeb52f0771140d10c4e9a9a72349a329fe8a6a"}}]}}},{asset:Re,decimals:18,id:38,min:.037,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x57e114b691db790c35207b2e685d4a43181e6061"}}]}}},{asset:en,decimals:18,id:16,min:.035,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:ae,decimals:8,id:11,min:36e-8,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:at,decimals:10,id:17,min:.62,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0002000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:Qe,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:Je,decimals:6,id:43,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:1},{GeneralKey:{length:32,data:"0x26759f460ee5f743ed66d27c8f2a5623bf39d53ed575955320661e6e13e0e3da"}}]}}},{asset:Ye,decimals:18,id:252525,min:.022,xcmLocation:{parents:1,interior:{X1:{Parachain:3345}}}},{asset:_e,decimals:18,id:1000796,min:.013,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x5a98fcbea516cf06857215779fd812ca3bef1b32"}}]}}},{asset:F,decimals:12,id:1000771,min:35e-5,xcmLocation:{parents:2,interior:{X1:{GlobalConsensus:"Kusama"}}}},{asset:De,decimals:8,id:1000851,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x8236a87084f8b84306f72007f36f2618a5634494"}}]}}},{asset:Fe,decimals:18,id:1000794,min:.001,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x514910771af9ca656af840dff83e8264ecf986ca"}}]}}},{asset:Xe,decimals:18,id:39,min:5e-6,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x45804880de22913dafe09f4980848ece6ecbaf78"}}]}}},{asset:ne,decimals:18,id:30,min:.022,xcmLocation:{parents:1,interior:{X1:{Parachain:3369}}}},{asset:vt,decimals:12,id:36,min:.001,xcmLocation:{parents:1,interior:{X2:[{Parachain:2043},{PalletInstance:10}]}}},{asset:it,decimals:12,id:1000081,min:.16,xcmLocation:{parents:1,interior:{X2:[{Parachain:2094},{PalletInstance:10}]}}},{asset:Ne,decimals:18,id:1000795,min:.52,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x56072c95faa701256059aa122697b133aded9279"}}]}}},{asset:Ve,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:Oe,decimals:9,id:1000753,min:.003,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:21},{GeneralKey:{length:32,data:"0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3"}}]}}},{asset:We,decimals:18,id:1000625,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x9d39a5de30e57443bff2a8307a4256c8797a3497"}}]}}},{asset:rt,decimals:18,id:1000626,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xa3931d71877c0e7a3148cb7eb4463524fec27fbd"}}]}}},{asset:Rt,decimals:18,id:1000745,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000a3931d71877c0e7a3148cb7eb4463524fec27fbd"}}]}}},{asset:He,decimals:18,id:1000765,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x18084fba666a33d37592fa2633fd49a74dd93a88"}}]}}},{asset:Ue,decimals:18,id:35,min:.028,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F"}}]}}},{asset:Mt,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:Dt,decimals:6,id:21,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"}}]}}},{asset:kt,decimals:6,id:44,min:.014,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:30},{GeneralKey:{length:32,data:"0x00000000000000000000000060a3e35cc302bfa44cb288bc5a4f316fdb1adb42"}}]}}},{asset:Kt,decimals:6,id:1000766,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"}}]}}},{asset:T,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:Ut,decimals:6,id:1000767,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xdac17f958d2ee523a2206206994597c13d831ec7"}}]}}},{asset:le,decimals:18,id:33,min:.14,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:fe,decimals:10,id:15,min:.0019,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:ot,decimals:8,id:1000190,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"}}]}}},{asset:Xt,decimals:8,id:19,min:34e-8,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599"}}]}}},{asset:Ft,decimals:18,id:1000189,min:61e-7,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"}}]}}},{asset:Ze,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:Ke,decimals:18,id:1000809,min:635e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"}}]}}},{asset:Gt,decimals:10,id:1000085,min:2e4,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:31337}]}}}],balance:In.SubstrateBalanceType.Tokens,balanceOverrides:{[Un.key]:In.SubstrateBalanceType.System},ecosystem:In.ChainEcosystem.Polkadot,evmChain:Bm,evmResolver:Em,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:{[Lt.key]:{token:"0x0000000000000000000000000000000100000012",manager:"0xcFd576F88C90844AEBF45378Fd09931281D8b14d",transceiver:{wormhole:"0xe8660CA48f6f4D98BC48DB7Dd07C1a8E555801eA"}},[kt.key]:{token:"0x000000000000000000000000000000010000002C",manager:"0x8dd1286A29dF5a2785FB638d6fB1598144Cfbc4C",transceiver:{wormhole:"0x2e84fac378D67Dc2e11026fB4919E80263a87375"}},[Qe.key]:{token:"0x0000000000000000000000000000000100000028",manager:"0xcE73C15B9ED02413066DE5B904A36F8e8f9B5331",transceiver:{wormhole:"0xF38D9C3bA6999Dc331b32B416083Fd7e02D17B04"}},[Je.key]:{token:"0x000000000000000000000000000000010000002B",manager:"0xFCaF4aA069C565d25539028970703F01e47D3E0B",transceiver:{wormhole:"0x4e7b1E55D2354d4Dc6ABD876096Dc201de0541D1"}},[Ve.key]:{token:"0x00000000000000000000000000000001000F4530",manager:"0x9e200C0f28D92D296b201D96C8269d3CAFFfA9FF",transceiver:{wormhole:"0x2F04AcF249091425d51e67EeA3C3161ccE283202"}},[Oe.key]:{token:"0x00000000000000000000000000000001000F4531",manager:"0x978443f00cAB6b09445140321EC73a221ebFF5F8",transceiver:{wormhole:"0xA224D6f4e0E276b34D91bfE6c3A5fE6838322AF7"}},[Rt.key]:{token:"0x00000000000000000000000000000001000F4529",manager:"0x1973E7044d9A7C7bB2d6ea1693A296a9e4B7E448",transceiver:{wormhole:"0x68Ecadd7934D4FcFEABAfB209C95D379B96400cb"}},[Dt.key]:{token:"0x0000000000000000000000000000000100000015",manager:"0xEcEab64542A875C4472671D9Ed1E690cdD4e28fC",transceiver:{wormhole:"0x0d7488B39AA64468a709eC3b3d354DeFE539eD97"}},[_t.key]:{token:"0x0000000000000000000000000000000100000017",manager:"0x5E6C488103b47F804824AE15861638af4C436795",transceiver:{wormhole:"0xd2a16B736F32Df7C0DE72838837656FE0f85Ac0F"}},[Xt.key]:{token:"0x0000000000000000000000000000000100000013",manager:"0x6BFca089916c045b0Ca4A09B655aF9F926189993",transceiver:{wormhole:"0x9a8a1ab288f6749Ce5626DEE1B5d59441BdC187F"}},[Ze.key]:{token:"0x0000000000000000000000000000000100000014",manager:"0xB5cEf790D52A57fa619eD96eDd64c5328F3DCFb7",transceiver:{wormhole:"0x8acce9CA511d5D7213F8C3f813B8916087cd00ae"}}}},ws:Qa,rpcs:$a});var Gn=require("@galacticcouncil/xc-core");var nn=new Gn.Parachain({assetsData:[{asset:ne,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:Gn.SubstrateBalanceType.System,ecosystem:Gn.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 qn=require("@galacticcouncil/xc-core");var zn=new qn.Parachain({assetsData:[{asset:vt,xcmLocation:{parents:0,interior:{X1:{PalletInstance:10}}}}],balance:qn.SubstrateBalanceType.System,ecosystem:qn.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 sn=require("@galacticcouncil/xc-core");var jn=new sn.Parachain({assetsData:[{asset:it,id:"Native",xcmLocation:{parents:0,interior:{X1:{PalletInstance:10}}}}],balance:sn.SubstrateBalanceType.System,ecosystem:sn.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:sn.XcmVersion.v3});var $n=require("@galacticcouncil/xc-core");var Lm={assetsData:[{asset:P,xcmLocation:{parents:0,interior:"Here"}}],balance:$n.SubstrateBalanceType.System,ecosystem:$n.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"},nr=new $n.Parachain({...Lm,key:"polkadot"});var Qn=require("@galacticcouncil/xc-core");var Yn=new Qn.Parachain({assetsData:[{asset:Mt,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:Qn.SubstrateBalanceType.System,ecosystem:Qn.ChainEcosystem.Polkadot,explorer:"https://unique.subscan.io",genesisHash:"0x84322d9cddbf35088f1e54e9a85c967a41a56a4f43445768125e61af166c7d31",key:"unique",name:"Unique network",parachainId:2037,ss58Format:7391,ws:"wss://ws.unique.network"});var an=require("@galacticcouncil/xc-core");var Jn=new an.Parachain({assetsData:[{asset:Ye,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:an.SubstrateBalanceType.System,ecosystem:an.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:an.XcmVersion.v3});var sr=[N,tn,ve,se,v,zn,nn,jn,nr,Yn,Jn];var Tn=require("@galacticcouncil/xc-core");var It=new Tn.SolanaChain({id:101,key:"solana",name:"Solana",assetsData:[{asset:Ve,decimals:9},{asset:Kn,id:"So11111111111111111111111111111111111111112",decimals:9},{asset:Qe,id:"J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",decimals:9},{asset:Je,id:"3b8X44fLF9ooXaUm3hhSgjpmVs6rZZ3pPoGnGahc3Uu7",decimals:6}],balance:Tn.SolanaBalanceType.Token,balanceOverrides:{[Ve.key]:Tn.SolanaBalanceType.Native},ecosystem:Tn.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:{[Ve.key]:{token:"So11111111111111111111111111111111111111112",manager:"DiGxk55uAQNVzzg2FucPgdrQ4azb5SDvWQvzpzJD3o7J",transceiver:{wormhole:"5J12e7mMcbbN3VkCrUPfZp2bDHMH3t1rKvxGcwuN53wx"},emitter:"2WUYeRrK2JctBEvNVXY4mRG2ewMzhidi7L4Y5dCwqY9D"},[Kn.key]:{token:"So11111111111111111111111111111111111111112",manager:"DiGxk55uAQNVzzg2FucPgdrQ4azb5SDvWQvzpzJD3o7J",transceiver:{wormhole:"5J12e7mMcbbN3VkCrUPfZp2bDHMH3t1rKvxGcwuN53wx"},emitter:"2WUYeRrK2JctBEvNVXY4mRG2ewMzhidi7L4Y5dCwqY9D"},[Qe.key]:{token:"J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",manager:"9HFvXujdkXubvmf93gyzkH1g3VPowDrmp85sWsfdcBTh",transceiver:{wormhole:"HgxvrPomT84AxgxknddAcC1iW9ysqHxmeoiKNZmQcovs"},emitter:"9Ss1eMHE8iDv9kCxERH5nabp9tx75AVoUWWEKaGgMrh9"},[Je.key]:{token:"3b8X44fLF9ooXaUm3hhSgjpmVs6rZZ3pPoGnGahc3Uu7",manager:"4T5m5NtRVewiCVzP2mnfeUoMYRqncfkrS21X2dhVCNRT",transceiver:{wormhole:"GiTY93vtrK4jZZchrxdV9r28JByRs7Ary2rsTPyPabJc"},emitter:"HuvSXe6hQaSMgo5dc8GYzavcS3aB4Bix9XYgVdfsq2sY"}},platformAddressFormat:"base58"}});var ar=[It];var Zn=require("@galacticcouncil/xc-core");var Cn=new Zn.SuiChain({id:"0x35834a8a",key:"sui",name:"Sui",assetsData:[{asset:Oe,decimals:9}],balance:Zn.SuiBalanceType.Native,ecosystem:Zn.ChainEcosystem.Sui,explorer:"https://suiscan.xyz/",rpc:"https://rpc-mainnet.suiscan.xyz",wormhole:{id:21,coreBridge:"0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c",ntt:{[Oe.key]:{token:"0x2::sui::SUI",manager:"0xa0bc45e0384140dc125f273eda89cad1434f5dee430726cf6364bdcceba1e9a3",transceiver:{wormhole:"0x6afb4a6a9c4e5b6eeed568381ce95a79590f0c17ab8d0c59295826f2775bf832"},emitter:"0x25437da9f99dfab32c1a275663f51cd5c99eb867ab4d1f630e3799c5e68215da"}}}});var ir=[Cn];var Nt=require("@galacticcouncil/xc-core");var Tt=new Nt.Parachain({assetsData:[{asset:F,decimals:12,id:0,xcmLocation:{parents:1,interior:"Here"}},{asset:P,decimals:10,min:.001,xcmLocation:{parents:2,interior:{X1:[{GlobalConsensus:"Polkadot"}]}}},{asset:T,decimals:6,id:1984,xcmLocation:{parents:1,interior:{X2:[{PalletInstance:50},{GeneralIndex:1984}]}}}],balance:Nt.SubstrateBalanceType.Assets,balanceOverrides:{[F.key]:Nt.SubstrateBalanceType.System,[P.key]:Nt.SubstrateBalanceType.ForeignAssets},min:Nt.SubstrateMinType.Assets,ecosystem:Nt.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 es=require("@galacticcouncil/xc-core");var ts=new es.Parachain({assetsData:[{asset:Ga,id:0,xcmLocation:{parents:0,interior:"Here"}},{asset:F,decimals:12,id:1,xcmLocation:{parents:1,interior:"Here"}},{asset:T,decimals:6,id:14,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}}],balance:es.SubstrateBalanceType.Tokens,ecosystem:es.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 rr=[Tt,ts];var ns=require("@galacticcouncil/xc-core");var or=new ns.NearChain({key:"near",name:"NEAR",assetsData:[{asset:za,decimals:24}],balance:ns.NearBalanceType.Native,ecosystem:ns.ChainEcosystem.Near,explorer:"https://nearblocks.io/",rpc:"https://free.rpc.fastnear.com"});var cr=[or];var ss=require("@galacticcouncil/xc-core");var mr=new ss.ZecChain({key:"zec",name:"Zcash",assetsData:[{asset:ja,decimals:8}],balance:ss.ZecBalanceType.Transparent,ecosystem:ss.ChainEcosystem.Zcash,explorer:"https://mainnet.zcashexplorer.app/"});var ur=[mr];var Rm=[...Qi,...sr,...ar,...ir,...rr,...cr,...ur],dr=new Map(Rm.map(n=>[n.key,n]));var Oc=require("@galacticcouncil/xc-core");var wa=require("@galacticcouncil/xc-core");var Fi={};wn(Fi,{ContractBuilder:()=>ye,ExtrinsicBuilder:()=>A,ExtrinsicDecorator:()=>$t,FeeAmountBuilder:()=>X,FeeAssetBuilder:()=>vs,MoveBuilder:()=>Si,ProgramBuilder:()=>Di,XcmTransferType:()=>mt,XcmVersion:()=>jt});var Pn=require("@galacticcouncil/xc-core"),lr=require("viem"),_m=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,lr.encodeFunctionData)({abi:Pn.Abi[o.module],functionName:o.func,args:o.args}));return[new Pn.ContractConfig({abi:Pn.Abi.Batch,address:Pn.Precompile.Batch,args:[a,i,r,[]],func:"batchAll",module:"Batch"})]}}),fr=()=>({batchAll:_m});var as=require("@galacticcouncil/xc-core");function ge(n,e){if(e<0||e>100)throw Error(`padPercent ${e} not in range of 0 to 100.`);return n+n*e/100n}function En(n){return typeof n=="object"?Object.values(n)[0]:n}function gr(){return{approve:n=>({build:async e=>{let{amount:t,asset:s,source:a}=e,i=a.chain,r=as.Wormhole.fromChain(i),o=i.getAssetId(s);return[new as.ContractConfig({abi:as.Abi.Erc20,address:En(o).toString(),args:[n(r),t],func:"approve",module:"Erc20"})]}})}}var is=require("@galacticcouncil/xc-core");var pr=require("@galacticcouncil/common"),hr=require("polkadot-api"),yr=require("@polkadot-api/utils"),{H160:Dm,isEvmAddress:Fm}=pr.h160;function Xm(n){let e=Fm(n)?Dm.toAccount(n):n;return(0,yr.toHex)((0,hr.AccountId)().enc(e))}var Nm=()=>({build:async n=>{let{address:e,amount:t,asset:s,source:a}=n,i=a.chain,r=is.Basejump.fromChain(i),o=i.getAssetId(s);return[new is.ContractConfig({abi:is.Abi.Basejump,address:r.getAddress(),args:[En(o),t,Xm(e)],func:"bridgeViaWormhole",module:"Basejump"})]}}),br=()=>({bridgeViaWormhole:Nm});var Ct=require("@galacticcouncil/xc-core"),wr=require("@galacticcouncil/common"),{Ss58Addr:Ar}=Ct.addr;function Vm(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 Ya(n,e){let t=n.getAssetId(e);return typeof t=="string"?Vm(t):t}function xr(){return{transferAssetsToPara32:()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=Ya(a.chain,t);return[new Ct.ContractConfig({abi:Ct.Abi.PolkadotXcm,address:Ct.Precompile.PolkadotXcm,args:[s.chain.parachainId,Ar.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=Ya(a.chain,t),r=Ya(a.chain,a.destinationFeeBalance),o=wr.big.toBigInt(s.fee.amount,s.fee.decimals);return[new Ct.ContractConfig({abi:Ct.Abi.PolkadotXcm,address:Ct.Precompile.PolkadotXcm,args:[s.chain.parachainId,Ar.getPubKey(n),[{asset:i,amount:e},{asset:r,amount:o}],1],func:"transferAssetsToPara32",module:"PolkadotXcm"})]}})}}var Et=require("@galacticcouncil/xc-core"),on=require("@galacticcouncil/descriptors"),Rr=require("@polkadot-api/substrate-bindings"),js=require("@polkadot-api/utils"),_r=require("viem");var Sr=require("@galacticcouncil/xc-core"),qs=null;async function kr(){if(qs)return qs;let n=await Sr.codec.getHubCodecs();return qs={message:n.tx.PolkadotXcm.send.inner.message,location:n.tx.PolkadotXcm.send.inner.dest},qs}var Cr=require("@galacticcouncil/xc-core"),h=require("@galacticcouncil/descriptors"),Pr=require("@polkadot-api/substrate-bindings"),Er=require("@polkadot-api/utils");var vr=require("@galacticcouncil/descriptors"),pe=340282366920938463463374607431768211455n,Pt="0x0000000000000000000000000000000000000000000000000000000000000000",me={parents:1,interior:vr.XcmV3Junctions.Here()},Mr=0,rn=1e3,zs=1002,pt=1,Bn="5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY",Ir="0x0000000000000000000000000000000000000000000000000000000000000000",Tr="0x0000000000000000000000000000000000000000";var Ja="0x0000000000000000000000000000000000000000",rs=n=>({parents:2,interior:h.XcmV5Junctions.X1(h.XcmV5Junction.GlobalConsensus(h.XcmV5NetworkId.Ethereum({chain_id:BigInt(n)})))}),Za=(n,e)=>({parents:2,interior:h.XcmV5Junctions.X2([h.XcmV5Junction.GlobalConsensus(h.XcmV5NetworkId.Ethereum({chain_id:BigInt(n)})),h.XcmV5Junction.AccountKey20({key:e,network:void 0})])});function Br(n,e){let t=rs(n),s=Za(n,"0x"+"00".repeat(20)),a=1000000000000n,i=1000000000n,r=[h.XcmV5Instruction.ReserveAssetDeposited([{id:t,fun:h.XcmV3MultiassetFungibility.Fungible(a)},{id:s,fun:h.XcmV3MultiassetFungibility.Fungible(a)}]),h.XcmV5Instruction.ExchangeAsset({give:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.AllOf({id:t,fun:{type:"Fungible",value:void 0}})),want:[{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(i)}],maximal:!1}),h.XcmV5Instruction.PayFees({asset:{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(i)}})],o=ei({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 ei(n){let{ethChainId:e,destinationParaId:t,tokenAddress:s,beneficiaryHex:a,tokenAmount:i,hydrationDotFee:r,topic:o}=n,c=rs(e),m=s===Ja?c:Za(e,s),f=a.length===42&&a.startsWith("0x")?h.XcmV5Junction.AccountKey20({key:a,network:void 0}):h.XcmV5Junction.AccountId32({id:a,network:void 0}),y={parents:0,interior:h.XcmV5Junctions.X1(f)};return[h.XcmV5Instruction.SetAppendix([h.XcmV5Instruction.RefundSurplus(),h.XcmV5Instruction.DepositAsset({assets:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.All()),beneficiary:y})]),h.XcmV5Instruction.ExchangeAsset({give:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.AllOf({id:c,fun:{type:"Fungible",value:void 0}})),want:[{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(r)}],maximal:!1}),h.XcmV5Instruction.InitiateTransfer({destination:{parents:1,interior:h.XcmV5Junctions.X1(h.XcmV5Junction.Parachain(t))},remote_fees:{type:"ReserveDeposit",value:h.XcmV5AssetFilter.Definite([{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(r)}])},preserve_origin:!1,assets:[{type:"ReserveDeposit",value:h.XcmV5AssetFilter.Definite([{id:m,fun:h.XcmV3MultiassetFungibility.Fungible(i)}])}],remote_xcm:[h.XcmV5Instruction.DepositAsset({assets:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.AllCounted(3)),beneficiary:y}),h.XcmV5Instruction.SetTopic(o)]}),h.XcmV5Instruction.RefundSurplus(),h.XcmV5Instruction.DepositAsset({assets:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.All()),beneficiary:y}),h.XcmV5Instruction.SetTopic(o)]}function ti(n){let{tokenAddress:e,senderPubKey:t,beneficiaryHex:s,tokenAmount:a,sourceExecutionFee:i,dotRemoteFee:r,dotToEtherSwapAmount:o,etherFeeAmount:c,topic:m}=n,g=rs(pt),f=e===Ja?g:Za(pt,e),y={parents:0,interior:h.XcmV5Junctions.X1(h.XcmV5Junction.AccountId32({id:t,network:void 0}))},b={parents:0,interior:h.XcmV5Junctions.X1(h.XcmV5Junction.AccountKey20({key:s,network:void 0}))},w={parents:2,interior:h.XcmV5Junctions.X1(h.XcmV5Junction.GlobalConsensus(h.XcmV5NetworkId.Ethereum({chain_id:BigInt(pt)})))},x=[h.XcmV5Instruction.DepositAsset({assets:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.AllCounted(3)),beneficiary:b}),h.XcmV5Instruction.SetTopic(m)],_=[h.XcmV5Instruction.SetAppendix([h.XcmV5Instruction.SetHints({hints:[{type:"AssetClaimer",value:{location:y}}]}),h.XcmV5Instruction.RefundSurplus(),h.XcmV5Instruction.DepositAsset({assets:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.All()),beneficiary:y})])];_.push(h.XcmV5Instruction.ExchangeAsset({give:h.XcmV5AssetFilter.Definite([{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(o)}]),want:[{id:g,fun:h.XcmV3MultiassetFungibility.Fungible(c)}],maximal:!1}));let k=[{type:"ReserveWithdraw",value:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.AllOf({id:f,fun:{type:"Fungible",value:void 0}}))}],O=h.XcmV5AssetFilter.Definite([{id:g,fun:h.XcmV3MultiassetFungibility.Fungible(c)}]);_.push(h.XcmV5Instruction.InitiateTransfer({destination:w,remote_fees:{type:"ReserveWithdraw",value:O},preserve_origin:!0,assets:k,remote_xcm:x}),h.XcmV5Instruction.SetTopic(m));let C=i+r+o,W=[{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(C)},{id:f,fun:h.XcmV3MultiassetFungibility.Fungible(a)}],U=[{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(i)}],I={type:"ReserveWithdraw",value:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.AllOf({id:f,fun:{type:"Fungible",value:void 0}}))},ee=[{type:"ReserveWithdraw",value:h.XcmV5AssetFilter.Definite([{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(o)}])},I];return[h.XcmV5Instruction.WithdrawAsset(W),h.XcmV5Instruction.PayFees({asset:U[0]}),h.XcmV5Instruction.SetAppendix([h.XcmV5Instruction.SetHints({hints:[{type:"AssetClaimer",value:{location:y}}]}),h.XcmV5Instruction.RefundSurplus(),h.XcmV5Instruction.DepositAsset({assets:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.All()),beneficiary:y})]),h.XcmV5Instruction.InitiateTransfer({destination:{parents:1,interior:h.XcmV5Junctions.X1(h.XcmV5Junction.Parachain(rn))},remote_fees:{type:"ReserveWithdraw",value:h.XcmV5AssetFilter.Definite([{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(r)}])},preserve_origin:!0,assets:ee,remote_xcm:_}),h.XcmV5Instruction.SetTopic(m)]}function Lr(n){let{address:e,amount:t,asset:s,sender:a,source:i,destination:r,messageId:o}=n,c=i.chain,m=(0,Pr.getSs58AddressInfo)(a);if(!m.isValid)throw new Error(`Invalid SS58 address: ${a}`);let g=(0,Er.toHex)(m.publicKey),f=c.getAssetXcmLocation(s),y=f?Cr.multiloc.findNestedKey(f,"key"):void 0,b=y?y.key:Ja,w=r.feeBreakdown,x=w.sourceExecutionFee??0n,_=w.dotRemoteFee??0n,k=w.dotToEtherSwapAmount??0n,O=w.etherFeeAmount??0n,W=ti({tokenAddress:b,senderPubKey:g,beneficiaryHex:e,tokenAmount:t,sourceExecutionFee:x,dotRemoteFee:_,dotToEtherSwapAmount:k,etherFeeAmount:O,topic:o??"0x0000000000000000000000000000000000000000000000000000000000000000"});return h.XcmVersionedXcm.V5(W)}var{Ss58Addr:Dr}=Et.addr,Om="0x0000000000000000000000000000000000000000",Wm=()=>({build:async n=>{let{address:e,amount:t,asset:s,sender:a,source:i,destination:r}=n,o=i.chain,c=r.chain,m=Et.Snowbridge.fromChain(o),g=o.getAssetId(s),f=En(g),y=s.originSymbol==="ETH",b=r.feeBreakdown.executionFee,w=r.feeBreakdown.relayerFee,x=r.feeBreakdown.hydrationDotFee,_=r.fee.amount,k=Dr.getPubKey(e),O=new TextEncoder().encode(`${c.parachainId}${a}${f}${k}${t}${Date.now()}`),C=(0,js.toHex)((0,Rr.Blake2256)(O)),W=ei({ethChainId:pt,destinationParaId:c.parachainId,tokenAddress:y?Om:f,beneficiaryHex:k,tokenAmount:t,hydrationDotFee:x,topic:C}),U=await kr(),I=(0,js.toHex)(U.message.enc(on.XcmVersionedXcm.V5(W))),ee=[];y||ee.push((0,_r.encodeAbiParameters)([{type:"uint8"},{type:"address"},{type:"uint128"}],[0,f,t]));let Ce=U.location.enc(on.XcmVersionedLocation.V5({parents:0,interior:on.XcmV5Junctions.X1(on.XcmV5Junction.AccountId32({id:k,network:void 0}))})),lt=(0,js.toHex)(Ce.slice(1));return[new Et.ContractConfig({abi:Et.Abi.Snowbridge,address:m.getGateway(),args:[I,ee,lt,b,w],value:y?_+t:_,func:"v2_sendMessage",module:"Snowbridge"})]}}),Hm=()=>({build:async n=>{let{address:e,amount:t,asset:s,source:a,destination:i}=n,r=a.chain,o=i.chain,c=Et.Snowbridge.fromChain(r),m=r.getAssetId(s),g=En(m),f=s.originSymbol==="ETH",y=i.feeBreakdown.bridgeFeeInDot,b=i.fee.amount;return[new Et.ContractConfig({abi:Et.Abi.Snowbridge,address:c.getGateway(),args:[g,o.parachainId,[1,Dr.getPubKey(e)],y,t],value:f?b+t:b,func:"sendToken",module:"Snowbridge"})]}}),Fr=()=>({v2SendMessage:Wm,sendToken:Hm});var Q=require("@galacticcouncil/xc-core");var hs=require("@wormhole-foundation/sdk-base"),$s=require("@wormhole-foundation/sdk-definitions"),ys="0x00",ni=8,Xr="https://executor.labsapis.com",Um=[{name:"prefix",binary:"bytes",size:4},{name:"srcChain",binary:"uint",size:2},{name:"srcManager",binary:"bytes",size:32},{name:"messageId",binary:"uint",size:32}],Nr=(n,e,t)=>{let s=(0,hs.serializeLayout)(Um,{prefix:hs.encoding.bytes.encode($s.RequestPrefix.ERN1),srcChain:n,srcManager:new $s.UniversalAddress(e,"hex").toUint8Array(),messageId:t});return hs.encoding.hex.encode(s,!0)};var oi={};wn(oi,{ASSET_LOCKDOWN_PERIOD_BLOCKS:()=>Wr,AssethubClient:()=>et,BaseClient:()=>ht,ExecutorClient:()=>ta,HydrationClient:()=>Ge,NttEvmClient:()=>ws,NttSolanaClient:()=>xs,NttSuiClient:()=>Ss,UNMETERED:()=>qt,capacityAt:()=>As,executorClient:()=>cs,getAllAssetDepositLimits:()=>ii,getAssetDepositLimit:()=>ai,getGlobalWithdrawLimit:()=>ri,nttClient:()=>zt,nttDef:()=>cn});var si=require("@galacticcouncil/common"),bs=require("@galacticcouncil/descriptors"),ht=class{chain;descriptor;constructor(e,t){this.chain=e,this.descriptor=t??bs.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,si.encodeLocation)(a),r=await this.refApi.apis.XcmPaymentApi.query_weight_to_asset_fee(s.value,bs.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,si.encodeLocation)(a),r=await this.refApi.apis.XcmPaymentApi.query_weight_to_asset_fee(s.value,bs.XcmVersionedAssetId.V4(i));if(!r.success)throw Error(`Can't convert weight to fee in ${t.originSymbol}`);return BigInt(r.value)}};var ct=require("@galacticcouncil/descriptors"),Vr=require("@galacticcouncil/common"),Qs=require("@polkadot-api/substrate-bindings"),Or=require("@polkadot-api/utils");var et=class extends ht{constructor(e){super(e)}async checkIfSufficient(e){let t=this.chain.getAssetId(e),s=this.chain.getAssetXcmLocation(e),a=(0,Vr.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,Or.toHex)((0,Qs.Twox128)(s)),i=await this.client._request("state_getStorage",[a]);if(!i)return t;let r=Qs.u128.dec(i);return r===0n?t:r}async calculateDeliveryFee(e,t){let s=ct.XcmVersionedLocation.V5({parents:1,interior:ct.XcmV5Junctions.X1(ct.XcmV5Junction.Parachain(t))}),a=ct.XcmVersionedAssetId.V5({parents:1,interior:{type:"Here",value:void 0}}),i=await this.api().apis.XcmPaymentApi.query_delivery_fees(s,ct.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:ct.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:ct.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:ct.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 Ur=require("@galacticcouncil/descriptors");var Wr=14400;function Hr(n,e,t,s,a,i){let r=e?.xcm_rate_limit!=null?BigInt(e.xcm_rate_limit):null,o=e?.symbol?new TextDecoder().decode(e.symbol):`#${n}`,c=e?.decimals??12,m=!1,g,f,y;t&&(t.type==="Locked"?(g=t.value,m=a<t.value):(f=t.value[0],y=t.value[1]));let b=s?.type==="Local"?"Local":"External",w=!m&&f!==void 0&&f+Wr<=a,x=null;if(r!==null)if(m)x=0n;else if(w)x=r;else{let _=y??i,k=i>_?i-_:0n;x=r>k?r-k:0n}return{assetId:n,symbol:o,decimals:c,limit:r,locked:m,lockedUntilBlock:g,lastResetBlock:f,baselineIssuance:y,currentIssuance:i,headroom:x,category:b,periodExpired:w}}async function ai(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 Hr(e,s,a,i,r,o)}async function ii(n){let[e,t,s,a,i,r]=await Promise.all([n.query.AssetRegistry.Assets.getEntries({at:"best"}),n.query.CircuitBreaker.AssetLockdownState.getEntries({at:"best"}),n.query.CircuitBreaker.GlobalAssetOverrides.getEntries({at:"best"}),n.query.System.Number.getValue({at:"best"}),n.query.Balances.TotalIssuance.getValue({at:"best"}),n.query.Tokens.TotalIssuance.getEntries({at:"best"})]),o=new Map(t.map(f=>[f.keyArgs[0],f.value])),c=new Map(s.map(f=>[f.keyArgs[0],f.value])),m=new Map(r.map(f=>[f.keyArgs[0],f.value])),g=new Map;for(let f of e){let y=f.keyArgs[0],b=f.value;if(b?.xcm_rate_limit==null)continue;let w=y===0?i:m.get(y)??0n,x=Hr(y,b,o.get(y),c.get(y),a,w);g.set(y.toString(),x)}return g}async function ri(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,x=o*w/g;f=o>x?o-x:0n}}let y=r||f>=m?0n:m-f;return{configured:!0,limit:m,windowMs:g,used:f,lastUpdateMs:c,headroom:y,lockdown:r,lockdownUntilMs:i}}var Ge=class extends ht{constructor(e){super(e,Ur.hydration)}async checkIfSufficient(e){let t=this.chain.getAssetId(e),s=Number(t),a=await this.api().query.AssetRegistry.Assets.getValue(s);return a?a.is_sufficient||!1:!0}async getFeeAsset(e){let t=await this.api().query.MultiTransactionPayment.AccountCurrencyMap.getValue(e);return t?t.toString():"0"}async getAssetBalance(e,t){return t==="0"?this.getSystemAccountBalance(e):this.getTokensAccountsBalance(e,t)}async getSystemAccountBalance(e){let s=(await this.api().query.System.Account.getValue(e)).data,{free:a,frozen:i}=s;return BigInt(a)-BigInt(i)}async getTokensAccountsBalance(e,t){let s=Number(t),a=await this.api().query.Tokens.Accounts.getValue(e,s),{free:i,frozen:r}=a;return BigInt(i)-BigInt(r)}getAssetDepositLimit(e){let t=typeof e=="number"?e:Number(this.chain.getAssetId(e));return ai(this.api(),t)}getAllAssetDepositLimits(){return ii(this.api())}getGlobalWithdrawLimit(){return ri(this.api())}};var ea=require("@galacticcouncil/xc-core");var Ys=require("@galacticcouncil/xc-core"),qr=require("@galacticcouncil/common");var Kr=require("@galacticcouncil/xc-core"),qt={capacity:0n,limit:0n,windowMs:0,capacityAtLastTx:0n,lastTxMs:0};function cn(n,e){if(!e)throw new Error("No ntt asset given for "+n.name+".");return Kr.Ntt.fromChain(n,e)}function As(n,e,t,s,a){let i=s>t?s-t:0n,r=e+n*i/a;return r<n?r:n}var Km=500000n;function Gr(n,e){let t=n>>8n,s=Number(n&0xffn);return t*qr.big.pow10(e-s)}var ws=class{constructor(e,t){this.chain=e;this.asset=t}getOutboundLimit(){return this.getLimit()}getInboundLimit(e){return this.getLimit(Ys.Wormhole.fromChain(e).getWormholeId())}async getRedeemBudget(){return{gasLimit:Km,msgValue:0n}}async getLimit(e){let t=this.chain.evmClient.getProvider(),s=Ys.Abi.NttManager,a=cn(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?qt:{capacity:o,limit:Gr(c.limit,r),windowMs:Number(i)*1e3,capacityAtLastTx:Gr(c.currentCapacity,r),lastTxMs:Number(c.lastTxTimestamp)*1e3}}};var Js=require("@galacticcouncil/xc-core"),jr=require("@solana/spl-token"),os=require("@solana/web3.js");var Gm=250000n,qm=10000000n,zm=2039280n,zr=3600*24,jm=8,$m=9;function Qm(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(Js.Wormhole.fromChain(e).getWormholeId())}async getRedeemBudget(e){let{connection:t}=this.chain,s={gasLimit:Gm,msgValue:qm};if(!this.asset||!e)return{...s,msgValue:s.msgValue+zm};let a=new os.PublicKey(cn(this.chain,this.asset).token),{ata:i}=await Js.spl.getTokenAccount(t,a,new os.PublicKey(e));if(await t.getAccountInfo(i))return s;let o=await(0,jr.getMinimumBalanceForRentExemptAccount)(t);return{...s,msgValue:s.msgValue+BigInt(o)}}async getLimit(e){let{pda:t,offset:s}=this.rateLimitPda(e),a=await this.chain.connection.getAccountInfo(t);if(!a)return qt;let{limit:i,capacityAtLastTx:r,lastTxTimestamp:o}=Qm(a.data,s),c=BigInt(Math.floor(Date.now()/1e3));return{capacity:As(i,r,o,c,BigInt(zr)),limit:i,windowMs:zr*1e3,capacityAtLastTx:r,lastTxMs:Number(o)*1e3}}rateLimitPda(e){let t=new os.PublicKey(cn(this.chain,this.asset).manager),s=new TextEncoder;if(e===void 0){let[r]=os.PublicKey.findProgramAddressSync([s.encode("outbox_rate_limit")],t);return{pda:r,offset:jm}}let a=new Uint8Array(2);new DataView(a.buffer).setUint16(0,e,!1);let[i]=os.PublicKey.findProgramAddressSync([s.encode("inbox_rate_limit"),a],t);return{pda:i,offset:$m}}};var Zs=require("@galacticcouncil/xc-core");var Ym=10000000n,$r=3600*24*1e3;function Qr(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:As(e,t,s,a,BigInt($r)),limit:e,windowMs:$r,capacityAtLastTx:t,lastTxMs:Number(s)}}var Ss=class{constructor(e,t){this.chain=e;this.asset=t}getOutboundLimit(){return this.getLimit()}getInboundLimit(e){return this.getLimit(Zs.Wormhole.fromChain(e).getWormholeId())}async getRedeemBudget(){return{gasLimit:Ym,msgValue:0n}}async getLimit(e){let t=this.chain.client,s=cn(this.chain,this.asset).manager,a=await Zs.suiPkg.getObject(t,s);if(e===void 0){let m=a.fields.outbox?.fields?.rate_limit?.fields;return m?Qr(m):qt}let i=a.fields.peers?.fields?.id?.id;if(!i)return qt;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?Qr(c):qt}};function zt(n,e){return n instanceof ea.SolanaChain?new xs(n,e):n instanceof ea.SuiChain?new Ss(n,e):new ws(n,e)}var Ln=require("@wormhole-foundation/sdk-base"),na=require("@wormhole-foundation/sdk-definitions");var Jm=300*1e3,Zm=n=>{try{let{quote:e}=(0,Ln.deserializeLayout)(na.signedQuoteLayout,Ln.encoding.hex.decode(n));return e.expiryTime.getTime()}catch{return 0}},ta=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&&Zm(o.signedQuote)-Date.now()>Jm)return o;let c=Ln.encoding.hex.encode((0,Ln.serializeLayout)(na.relayInstructionsLayout,{requests:[{request:{type:"GasInstruction",gasLimit:a,msgValue:i}}]}),!0),m=await fetch(Xr+"/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 y={signedQuote:g,estimatedCost:BigInt(f),relayInstructions:c};return this.quotes.set(r,y),y}},cs=new ta;var ci=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(),ys],functionName:"quoteDeliveryPrice"}),y=r.getAssetDecimals(s)??0,b=t;if(y>ni){let w=10n**BigInt(y-ni);b=t-t%w}return{ctx:r,ntt:c,rcvWh:m,rcvAddress:g,transferAmount:b,deliveryPrice:f[1],wrapNative:r.getBalanceType(s)===Q.EvmBalanceType.Native}},eu=()=>({build:async n=>{let{ntt:e,rcvWh:t,rcvAddress:s,transferAmount:a,deliveryPrice:i,wrapNative:r}=await ci(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"})]}}),tu=()=>({build:async n=>{let{ctx:e,ntt:t,rcvWh:s,rcvAddress:a,transferAmount:i,deliveryPrice:r,wrapNative:o}=await ci(n),c=Q.Wormhole.fromChain(e),m=c.getNttExecutor(),g=e instanceof Q.EvmParachain?await e.getDerivatedAddress(n.sender):n.sender,f=await zt(n.destination.chain,n.destination.balance).getRedeemBudget(n.address),{signedQuote:y,estimatedCost:b,relayInstructions:w}=await cs.quote(c.getWormholeId(),s.getWormholeId(),f),x=s.normalizeAddress(a),_={value:b,refundAddress:g,signedQuote:y,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(),x,x,ys,_,k],token:t.token,wrapNative:o,value:r+b,func:"transfer",module:"NttManagerWithExecutor"})]}}),nu=()=>({build:async n=>{let{ctx:e,ntt:t,rcvWh:s,rcvAddress:a,transferAmount:i,deliveryPrice:r,wrapNative:o}=await ci(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,y=await zt(m,n.destination.balance).getRedeemBudget(n.address),[b,w]=await Promise.all([cs.quote(c.getWormholeId(),s.getWormholeId(),y),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,Nr(c.getWormholeId(),t.manager,BigInt(w)),b.relayInstructions],value:b.estimatedCost,func:"requestExecution",module:"Executor"})]}}),Yr=()=>({transfer:eu,transferWithExecutor:tu,transferViaExecutor:nu});function Jr(){return{Ntt:Yr}}function ye(){return{Batch:fr,Erc20:gr,Basejump:br,PolkadotXcm:xr,Snowbridge:Fr,Wormhole:Jr}}var mi=require("@galacticcouncil/common"),eo=require("@galacticcouncil/xc-core"),Zr="AssetConversion",su=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,mi.encodeLocation)(c.getAssetXcmLocation(r)),g=(0,mi.encodeLocation)(c.getAssetXcmLocation(o)),f=r.amount+r.amount*BigInt(n.slippage)/100n,y=o.amount;return new eo.ExtrinsicConfig({module:Zr,func:e,getTx:b=>b.getUnsafeApi().tx[Zr][e]({path:[m,g],amount_out:y,amount_in_max:f,send_to:t,keep_alive:!0})})}}},to=()=>({swapTokensForExactTokens:su});var sa=require("@galacticcouncil/descriptors"),no=require("@galacticcouncil/xc-core"),au="Assets",iu=()=>{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 no.ExtrinsicConfig({module:au,func:n,getTx:m=>m.getTypedApi(sa.hub).tx.Assets.transfer({id:Number(c),target:sa.MultiAddress.Id(s),amount:o})})}}},so=()=>({transfer:iu});var io=require("@galacticcouncil/xc-core"),ao="Balances",ru=(n=!1)=>{let e="transfer_all";return{build:async({address:t})=>new io.ExtrinsicConfig({module:ao,func:e,getTx:s=>s.getUnsafeApi().tx[ao][e]({dest:t,keep_alive:n})})}},ro=()=>({transferAll:ru});var ms=require("@galacticcouncil/xc-core"),mo=require("polkadot-api"),oo="EVM",aa=(1n<<64n)-1n,co=n=>[n&aa,n>>64n&aa,n>>128n&aa,n>>192n&aa],ou=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,ms.getEvmPrerequisites)(s,i,e.amount,a[0]),...a.map(f=>({to:f.address,data:f.encodeFunctionData(),value:f.value,gas:ms.Gas.transfer}))],g=m.length>1;return new ms.ExtrinsicConfig({module:g?"Utility":oo,func:g?"batch_all":"call",getTx:f=>{let y=f.getUnsafeApi(),b=m.map(w=>y.tx[oo].call({source:i,target:w.to,input:mo.Binary.fromHex(w.data),value:co(w.value??0n),gas_limit:w.gas,max_fee_per_gas:co(o),max_priority_fee_per_gas:void 0,nonce:void 0,access_list:[],authorization_list:[]}));return g?y.tx.Utility.batch_all({calls:b.map(w=>w.decodedCall)}):b[0]}})}}),uo=()=>({call:ou});var lo=require("@galacticcouncil/descriptors"),fo=require("@galacticcouncil/xc-core"),cu="Router",mu=n=>({build:async({source:t})=>{let{chain:s,destinationFeeSwap:a}=t;if(!a)throw new Error("Swap context not found.");let{aIn:i,aOut:r,route:o}=a,c=s,m=c.getMetadataAssetId(i),g=c.getMetadataAssetId(r),f=r.amount,y=i.amount+i.amount*BigInt(n.slippage)/100n;return new fo.ExtrinsicConfig({module:cu,func:"buy",getTx:b=>b.getTypedApi(lo.hydration).tx.Router.buy({asset_in:Number(m),asset_out:Number(g),amount_out:f,max_amount_in:y,route:o})})}}),go=()=>({buy:mu});var po=require("@galacticcouncil/xc-core"),ui="Utility",ho=n=>n?.type===ui&&n?.value?.type==="batch_all"?n.value.value.calls.flatMap(ho):[n],uu=n=>{let e="batch_all";return{build:async t=>{let s=await Promise.all(n.map(a=>a.build(t)));return new po.ExtrinsicConfig({module:ui,func:e,getTx:a=>{let i=s.flatMap(r=>ho(r.getTx(a).decodedCall));return a.getUnsafeApi().tx[ui][e]({calls:i})}})}}},yo=()=>({batchAll:uu});var Dn=require("@galacticcouncil/xc-core"),Do=require("@galacticcouncil/common");var Rn=require("@galacticcouncil/xc-core"),S=require("@galacticcouncil/descriptors");var he=require("@galacticcouncil/descriptors");var bo=require("@galacticcouncil/common"),di=require("@galacticcouncil/descriptors"),Ao=require("@polkadot-api/substrate-bindings"),wo=require("@polkadot-api/utils");function be(n){if(n.length===42&&n.startsWith("0x"))return di.XcmV3Junction.AccountKey20({key:n,network:void 0});let t=(0,Ao.getSs58AddressInfo)(n);if(!t.isValid)throw new Error(`Invalid SS58 address: ${n}`);return di.XcmV3Junction.AccountId32({id:(0,wo.toHex)(t.publicKey),network:void 0})}function ia(n,e,t){return bo.acc.getMultilocationDerivatedAccount(n.parachainId,e,t.parachainId===0?0:1,t.usesH160Acc)}var li=require("@galacticcouncil/xc-core");function xo(n,e){let t=li.multiloc.findNestedKey(n,"GeneralIndex"),s=li.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 ie(n,e){let t=n.getAssetXcmLocation(e);if(!t)throw new Error(e.originSymbol+" location config is missing.");return t}var ra={};wn(ra,{ETHER_TOKEN_ADDRESS:()=>fi,erc20Location:()=>lu,erc20LocationReanchored:()=>fu,ethereumLocation:()=>ko,parachainLocation:()=>du});var yt=require("@galacticcouncil/descriptors"),fi="0x0000000000000000000000000000000000000000",So=n=>yt.XcmV3Junction.GlobalConsensus(yt.XcmV3JunctionNetworkId.Ethereum({chain_id:BigInt(n)}));function ko(n){return{parents:2,interior:yt.XcmV3Junctions.X1(So(n))}}function du(n){return{parents:1,interior:yt.XcmV3Junctions.X1(yt.XcmV3Junction.Parachain(n))}}function lu(n,e){return e===fi?ko(n):{parents:2,interior:yt.XcmV3Junctions.X2([So(n),yt.XcmV3Junction.AccountKey20({key:e})])}}function fu(n){return n===fi?{parents:0,interior:{type:"Here"}}:{parents:0,interior:yt.XcmV3Junctions.X1(yt.XcmV3Junction.AccountKey20({key:n}))}}var gi=require("@galacticcouncil/common"),vo=require("@galacticcouncil/xc-core");function ue(n,e){return gu(e)>=4?(0,gi.encodeLocation)(n):pu(n)}function gu(n){let e=n.toString().replace("V","").replace("v","");return Number(e)}function pu(n){return{type:"Concrete",value:(0,gi.encodeLocation)(n)}}var hu=1e3;function yu(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 bu(n){if(n)return yu(n)?hu:vo.multiloc.findParachain(n)}function Mo(n,e,t,s){let a=e.getAssetXcmLocation(n),i=bu(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 jt=(i=>(i.v1="V1",i.v2="V2",i.v3="V3",i.v4="V4",i.v5="V5",i))(jt||{}),mt=(a=>(a.Teleport="Teleport",a.LocalReserve="LocalReserve",a.DestinationReserve="DestinationReserve",a.RemoteReserve="RemoteReserve",a))(mt||{});function oa(n,e){let t="V4",s=ue(ie(e,n),t),a=Pt;return[he.XcmV4Instruction.ReserveAssetDeposited([{id:me,fun:he.XcmV3MultiassetFungibility.Fungible(pe)},{id:s,fun:he.XcmV3MultiassetFungibility.Fungible(pe)}]),he.XcmV4Instruction.ClearOrigin(),he.XcmV4Instruction.BuyExecution({fees:{id:me,fun:he.XcmV3MultiassetFungibility.Fungible(pe)},weight_limit:he.XcmV3WeightLimit.Unlimited()}),he.XcmV4Instruction.DepositAsset({assets:he.XcmV4AssetAssetFilter.Wild(he.XcmV4AssetWildAsset.AllCounted(2)),beneficiary:{parents:0,interior:he.XcmV3Junctions.X1(be(Bn))}}),he.XcmV4Instruction.SetTopic(a)]}var Vt=require("@galacticcouncil/descriptors");function pi(n,e){let t="V4",s=ue(ie(e,n),t),a=ca("V4",be(Tr),be(Bn),s,Pt);return[Vt.XcmV4Instruction.WithdrawAsset([{id:me,fun:Vt.XcmV3MultiassetFungibility.Fungible(pe)},{id:s,fun:Vt.XcmV3MultiassetFungibility.Fungible(pe)}]),Vt.XcmV4Instruction.ClearOrigin(),Vt.XcmV4Instruction.BuyExecution({fees:{id:me,fun:Vt.XcmV3MultiassetFungibility.Fungible(pe)},weight_limit:Vt.XcmV3WeightLimit.Unlimited()}),...a.value]}var V=require("@galacticcouncil/descriptors");function Io(n,e){let t="V4",s=ue(ie(e,n),t),a=Pt;return[V.XcmV4Instruction.WithdrawAsset([{id:s,fun:V.XcmV3MultiassetFungibility.Fungible(pe)}]),V.XcmV4Instruction.ClearOrigin(),V.XcmV4Instruction.BuyExecution({fees:{id:s,fun:V.XcmV3MultiassetFungibility.Fungible(pe)},weight_limit:V.XcmV3WeightLimit.Unlimited()}),V.XcmV4Instruction.DepositAsset({assets:V.XcmV4AssetAssetFilter.Wild(V.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:V.XcmV3Junctions.X1(be(Bn))}}),V.XcmV4Instruction.SetTopic(a)]}function hi(n,e){let t="V4",s=ue(ie(e,n),t);return[V.XcmV4Instruction.BuyExecution({fees:{id:s,fun:V.XcmV3MultiassetFungibility.Fungible(pe)},weight_limit:V.XcmV3WeightLimit.Unlimited()}),V.XcmV4Instruction.DepositAsset({assets:V.XcmV4AssetAssetFilter.Wild(V.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:V.XcmV3Junctions.X1(be(Bn))}})]}function To(n,e,t){let s="V4",a=ue(ie(e,n),s),i=Pt,r=hi(n,t);return[V.XcmV4Instruction.WithdrawAsset([{id:a,fun:V.XcmV3MultiassetFungibility.Fungible(pe)}]),V.XcmV4Instruction.ClearOrigin(),V.XcmV4Instruction.BuyExecution({fees:{id:a,fun:V.XcmV3MultiassetFungibility.Fungible(pe)},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 de=require("@galacticcouncil/descriptors");function Co(n,e){let t="V5",s=ue(ie(e,n),t),a={parents:0,interior:de.XcmV5Junctions.X1(de.XcmV5Junction.AccountId32({id:Ir,network:void 0}))};return[de.XcmV5Instruction.ReserveAssetDeposited([{id:me,fun:de.XcmV3MultiassetFungibility.Fungible(pe)}]),de.XcmV5Instruction.PayFees({asset:{id:me,fun:de.XcmV3MultiassetFungibility.Fungible(pe)}}),de.XcmV5Instruction.ReserveAssetDeposited([{id:s,fun:de.XcmV3MultiassetFungibility.Fungible(pe)}]),de.XcmV5Instruction.ClearOrigin(),de.XcmV5Instruction.DepositAsset({assets:de.XcmV5AssetFilter.Wild(de.XcmV5WildAsset.AllCounted(3)),beneficiary:a}),de.XcmV5Instruction.SetTopic(Pt)]}var Po=[Rn.ChainEcosystem.Polkadot,Rn.ChainEcosystem.Kusama],Au={parents:1,interior:S.XcmV3Junctions.X1(S.XcmV3Junction.Parachain(1e3))},wu=n=>{let{parents:e,interior:t}=n;return e!==1?!1:t==="Here"||t?.type==="Here"},Eo=(n,e)=>!n.ecosystem||!e.ecosystem?!1:Po.includes(n.ecosystem)&&Po.includes(e.ecosystem)&&n.ecosystem!==e.ecosystem,Bo=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},mn=(n,e,t)=>{if(Eo(e,t))return{type:n,value:yi(t.ecosystem,t.parachainId)};if(t.parachainId===Mr)return{type:n,value:{parents:1,interior:S.XcmV3Junctions.Here()}};let s=t.key==="ethereum"?rn:t.parachainId;return{type:n,value:{parents:1,interior:S.XcmV3Junctions.X1(S.XcmV3Junction.Parachain(s))}}},xu=n=>n===Rn.ChainEcosystem.Kusama?S.XcmV3JunctionNetworkId.Kusama():S.XcmV3JunctionNetworkId.Polkadot(),yi=(n,e)=>({parents:2,interior:S.XcmV3Junctions.X2([S.XcmV3Junction.GlobalConsensus(xu(n)),S.XcmV3Junction.Parachain(e)])}),Lo=(n,e,t,s)=>{if(Eo(e,t)){if(e.parachainId!==rn){let a=Rn.multiloc.findGlobalConsensus(ie(e,s)),i=typeof a=="string"&&a===t.ecosystem;return{dest:{type:n,value:{parents:1,interior:S.XcmV3Junctions.X1(S.XcmV3Junction.Parachain(rn))}},mode:i?"bridge-withdraw":"bridge-deposit"}}if(t.parachainId!==rn)return{dest:{type:n,value:yi(t.ecosystem,rn)},mode:"onward"}}},_n=(n,e)=>({type:n,value:{parents:0,interior:S.XcmV3Junctions.X1(e)}}),bi=(n,e,t)=>e==="RemoteReserve"?{type:"RemoteReserve",value:{type:n,value:wu(t)?Au:t}}:{type:e},un=(n,e)=>({id:n,fun:S.XcmV3MultiassetFungibility.Fungible(e)}),Ro=(n,e,t)=>({type:n,value:[S.XcmV4Instruction.DepositAsset({assets:S.XcmV4AssetAssetFilter.Wild(S.XcmV4AssetWildAsset.AllCounted(t)),beneficiary:{parents:0,interior:S.XcmV3Junctions.X1(e)}})]}),ca=(n,e,t,s,a)=>{let i=a;return{type:n,value:[S.XcmV4Instruction.SetAppendix([S.XcmV4Instruction.DepositAsset({assets:S.XcmV4AssetAssetFilter.Wild(S.XcmV4AssetWildAsset.All()),beneficiary:{parents:0,interior:S.XcmV3Junctions.X1(t)}})]),S.XcmV4Instruction.InitiateReserveWithdraw({assets:S.XcmV4AssetAssetFilter.Wild(S.XcmV4AssetWildAsset.AllOf({id:s,fun:S.XcmV2MultiassetWildFungibility.Fungible()})),reserve:ra.ethereumLocation(pt),xcm:[S.XcmV4Instruction.BuyExecution({fees:{id:Su(s),fun:S.XcmV3MultiassetFungibility.Fungible(1n)},weight_limit:S.XcmV3WeightLimit.Unlimited()}),S.XcmV4Instruction.DepositAsset({assets:S.XcmV4AssetAssetFilter.Wild(S.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:S.XcmV3Junctions.X1(e)}}),S.XcmV4Instruction.SetTopic(i)]}),S.XcmV4Instruction.SetTopic(i)]}},_o=(n,e,t,s,a,i)=>{let r=s==="onward"?{parents:1,interior:S.XcmV3Junctions.X1(S.XcmV3Junction.Parachain(t.parachainId))}:yi(t.ecosystem,t.parachainId),o={parents:0,interior:S.XcmV3Junctions.X1(e)},c=S.XcmV4AssetAssetFilter.Wild(S.XcmV4AssetWildAsset.AllCounted(1)),m=[S.XcmV4Instruction.BuyExecution({fees:{id:a,fun:S.XcmV3MultiassetFungibility.Fungible(i)},weight_limit:S.XcmV3WeightLimit.Unlimited()}),S.XcmV4Instruction.DepositAsset({assets:c,beneficiary:o})],g=s==="bridge-withdraw"?S.XcmV4Instruction.InitiateReserveWithdraw({assets:c,reserve:r,xcm:m}):S.XcmV4Instruction.DepositReserveAsset({assets:c,dest:r,xcm:m});return{type:n,value:[S.XcmV4Instruction.SetAppendix([S.XcmV4Instruction.DepositAsset({assets:S.XcmV4AssetAssetFilter.Wild(S.XcmV4AssetWildAsset.All()),beneficiary:o})]),g]}},Su=n=>{let e=Rn.multiloc.findNestedKey(n,"key");return e?{parents:0,interior:S.XcmV3Junctions.X1(S.XcmV3Junction.AccountKey20({key:e.key}))}:{parents:0,interior:S.XcmV3Junctions.Here()}};var bt="PolkadotXcm",ku=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=be(n),r=a.chain,o=s.chain,c="V4",m=ie(r,t),g=ie(r,s.fee),f=ue(m,c),y=ue(g,c),b=un(f,e),w=un(y,s.fee.amount),x="limited_reserve_transfer_assets";return new Dn.ExtrinsicConfig({module:bt,func:x,getTx:_=>{let k=_.getUnsafeApi().tx[bt][x];return t.key===s.fee.key?k({dest:mn(c,r,o),beneficiary:_n(c,i),assets:{type:c,value:[b]},fee_asset_item:0,weight_limit:{type:"Unlimited"}}):xo(m,g)?k({dest:mn(c,r,o),beneficiary:_n(c,i),assets:{type:c,value:[w,b]},fee_asset_item:0,weight_limit:{type:"Unlimited"}}):k({dest:mn(c,r,o),beneficiary:_n(c,i),assets:{type:c,value:[b,w]},fee_asset_item:1,weight_limit:{type:"Unlimited"}})}})}}),vu=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=be(n),r=a.chain,o=s.chain,c="V4",m=ue(ie(r,t),c),g=un(m,e),f=mn(c,r,o),y=_n(c,i),b={type:c,value:[g]},w="limited_teleport_assets";return new Dn.ExtrinsicConfig({module:bt,func:w,getTx:x=>x.getUnsafeApi().tx[bt][w]({dest:f,beneficiary:y,assets:b,fee_asset_item:0,weight_limit:{type:"Unlimited"}})})}}),Mu=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=be(n),r=a.chain,o=s.chain,c=r.xcmVersion??"V4",m=ue(ie(r,t),c),g=un(m,e),f=mn(c,r,o),y=_n(c,i),b={type:c,value:[g]},w="reserve_transfer_assets";return new Dn.ExtrinsicConfig({module:bt,func:w,getTx:x=>x.getUnsafeApi().tx[bt][w]({dest:f,beneficiary:y,assets:b,fee_asset_item:0})})}}),Iu=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=be(n),r=a.chain,o=s.chain,c="V4",m=ue(ie(r,t),c),g=un(m,e),f=mn(c,r,o),y=_n(c,i),b={type:c,value:[g]},w="transfer_assets";return new Dn.ExtrinsicConfig({module:bt,func:w,getTx:x=>x.getUnsafeApi().tx[bt][w]({dest:f,beneficiary:y,assets:b,fee_asset_item:0,weight_limit:{type:"Unlimited"}})})}}),Tu=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,y=a.fee,b=be(r),w=g.usesCexForwarding?ia(m,r,g):e,x=be(w),{transferType:_}=n,k=ue(ie(m,t),c),O=ue(ie(m,y),c),C=un(k,s),W=un(O,f),U=t.isEqual(y),I=Lo(c,m,g,t),ee=I?.dest??mn(c,m,g),Ce={type:c,value:U?[C]:[W,C]},lt=bi(c,_,k),Ht={type:c,value:U?k:O},Zt=bi(c,_,O),oe;if(Bo(k)&&a.chain.isEvmChain())oe=ca(c,x,b,k,i);else if(I){let d=Do.big.toBigInt(n.executionFee??a.fee.amount,a.fee.decimals),u=ue(ie(g,t),c);oe=_o(c,x,g,I.mode,u,d)}else oe=Ro(c,x,Ce.value.length);let l="transfer_assets_using_type_and_then";return new Dn.ExtrinsicConfig({module:bt,func:l,getTx:d=>d.getUnsafeApi().tx[bt][l]({dest:ee,assets:Ce,assets_transfer_type:lt,remote_fees_id:Ht,fees_transfer_type:Zt,custom_xcm_on_dest:oe,weight_limit:{type:"Unlimited"}})})}});function Cu(n){let e=t=>({build:async s=>{let a=t(s),i="execute";return new Dn.ExtrinsicConfig({module:bt,func:i,getTx:r=>r.getUnsafeApi().tx[bt][i]({message:a,max_weight:{ref_time:20000000000n,proof_size:500000n}})})}});return n?e(n):{viaSnowbridge:()=>e(Lr)}}var Ai=()=>({limitedReserveTransferAssets:ku,limitedTeleportAssets:vu,reserveTransferAssets:Mu,transferAssets:Iu,transferAssetsUsingTypeAndThen:Tu,execute:Cu});var No=require("@galacticcouncil/xc-core"),Vo=require("@galacticcouncil/common");var ks=require("@galacticcouncil/descriptors"),Fo=(n,e,t)=>e.parachainId===0?{type:n,value:{parents:1,interior:ks.XcmV3Junctions.X1(t)}}:{type:n,value:{parents:1,interior:ks.XcmV3Junctions.X2([ks.XcmV3Junction.Parachain(e.parachainId),t])}};var Xo="XTokens",Pu=()=>({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?ia(r,a,o):n,g=be(m),f=r.getAssetId(t),y=(0,Vo.encodeAssetId)(f),b="transfer";return new No.ExtrinsicConfig({module:Xo,func:b,getTx:w=>w.getUnsafeApi().tx[Xo][b]({currency_id:y,amount:e,dest:Fo(c,o,g),dest_weight_limit:{type:"Unlimited"}})})}}),wi=()=>({transfer:Pu});function A(){return{assetConversion:to,assets:so,balances:ro,evm:uo,polkadotXcm:Ai,router:go,utility:yo,xTokens:wi}}function $t(n,e){return{prior:function(t){return{build:async s=>n(s)?A().utility().batchAll([e,t]).build(s):t.build(s)}},priorMulti:function(t){return{build:async s=>n(s)?A().utility().batchAll([e,...t]).build(s):A().utility().batchAll([...t]).build(s)}}}}var ut=require("@galacticcouncil/xc-core");var Oo=80000n,Wo=120000n,Ho=100000n,Uo=2000000n,xi=15000000000000n;function Eu(){return{calculateInboundFee:n=>({build:async({feeAsset:e,destination:t})=>{let s=t,a=new Ge(s),i=new et(n.hub),r=oa(e,s),o=Co(e,s),c=rs(pt),m=250000000n,g=Br(pt,s.parachainId),[f,y,b,w]=await Promise.all([a.calculateDestinationFeeV5(o,P),i.calculateDeliveryFee(r,s.parachainId),i.calculateDeliveryFee(r,zs),i.calculateDestinationFeeV5(g,P)]),x=ge(f,33n),_=ge(y,33n),k=ge(b,33n),C=ge(w,33n)+_,W=x,U=await i.quoteEtherForDot(c,C),I=ge(U,30n),ee=I<xi*2n?xi*2n:I,Ce=ge(await i.quoteEtherForDot(c,W),100n),lt=ge(await i.quoteDotToEther(c,m+k),30n);return{amount:ee+lt+Ce,breakdown:{executionFee:ee,relayerFee:lt,remoteEtherFee:Ce,hydrationDotFee:W}}}}),calculateOutboundFee:n=>({build:async({transferAsset:e,feeAsset:t,source:s,destination:a})=>{let i=s,r=a,o=new et(n.hub),c=rs(pt),m=pi(e,i),[g,f,y]=await Promise.all([o.getBridgeDeliveryFee(),o.calculateDeliveryFee(m,zs),o.calculateDestinationFee(m,t)]),b=await r.evmClient.getProvider().getGasPrice(),w=Uo+Wo+Oo+Ho,x=b*w,_=ge(x,10n),k=g+ge(f,33n)+ge(y,33n),O=ge(await o.quoteDotForExactEther(c,_),20n),C=new Ge(i),W=ti({tokenAddress:"0x0000000000000000000000000000000000000000",senderPubKey:"0x"+"00".repeat(32),beneficiaryHex:"0x"+"00".repeat(20),tokenAmount:1000000000000n,sourceExecutionFee:1000000000n,dotRemoteFee:1000000000n,dotToEtherSwapAmount:1000000000n,etherFeeAmount:1000000000n,topic:Pt}),U=ge(await C.calculateDestinationFeeV5(W,P),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=ut.Snowbridge.fromChain(a),o=new ht(i),c=new et(n.hub),m=oa(e,i),[g,f]=await Promise.all([o.calculateDestinationFee(m,P),c.calculateDeliveryFee(m,i.parachainId)]),y=f+ge(g,25n),b=a.getAssetId(e);return{amount:await a.evmClient.getProvider().readContract({abi:ut.Abi.Snowbridge,address:r.getGateway(),args:[b,i.parachainId,y],functionName:"quoteSendTokenFee"}),breakdown:{bridgeFeeInDot:y}}}}),calculateOutboundFeeV1:n=>({build:async({transferAsset:e,feeAsset:t,source:s})=>{let a=s,i=new et(n.hub),r=pi(e,a),o=oa(e,a),[c,m,g,f,y]=await Promise.all([i.getBridgeDeliveryFeeV1(),i.calculateDeliveryFee(r,zs),i.calculateDestinationFee(r,t),i.calculateDeliveryFee(o,a.parachainId),i.calculateDestinationFee(o,t)]);return{amount:c+m+ge(g,25n)+f+ge(y,25n),breakdown:{bridgeDeliveryFee:c,bridgeHubDeliveryFee:m,assetHubDestinationFee:g,returnToSenderDeliveryFee:f,returnToSenderDestinationFee:y}}}})}}function Bu(){return{calculateDestFee:n=>({build:async({feeAsset:e,source:t,destination:s})=>{let a=t,i=s,r=n?.reserve;if(Mo(e,a,i,r),r){let y=new ht(i),b=new ht(r),w=hi(e,i),x=To(e,r,i),[_,k]=await Promise.all([y.calculateDestinationFee(w,e),b.calculateDestinationFee(x,e)]),O=k+_,C=ge(O,20n),W=C-O;return{amount:C,breakdown:{reserveFee:k,destinationFee:_,margin:W}}}let o=new ht(i),c=Io(e,i),m=await o.calculateDestinationFee(c,e),g=ge(m,20n),f=g-m;return{amount:g,breakdown:{totalFee:m,margin:f}}}})}}function Lu(){return{quoteExecutorCost:()=>({build:async({address:n,destinationAsset:e,transferAsset:t,source:s,destination:a})=>{let i=s,r=ut.Ntt.fromChain(i,t),o=ut.Wormhole.fromChain(i),c=ut.Wormhole.fromChain(a),m=await zt(a,e).getRedeemBudget(n),[g,f]=await Promise.all([i.evmClient.getProvider().readContract({abi:ut.Abi.NttManager,address:r.manager,args:[c.getWormholeId(),ys],functionName:"quoteDeliveryPrice"}),cs.quote(o.getWormholeId(),c.getWormholeId(),m)]);return{amount:g[1]+f.estimatedCost,breakdown:{deliveryPrice:g[1],executorCost:f.estimatedCost}}}})}}function Ru(){return{quoteFee:()=>({build:async({feeAsset:n,source:e})=>{let t=e,s=ut.Basejump.fromChain(t),a=t.getAssetId(n);return{amount:await t.evmClient.getProvider().readContract({abi:ut.Abi.Basejump,address:s.getAddress(),args:[a],functionName:"quoteFee"})}}})}}function X(){return{Basejump:Ru,XcmPaymentApi:Bu,Snowbridge:Eu,Wormhole:Lu}}var _u="0";function Du(){return{build:async({address:n,chain:e})=>{let s=await new Ge(e).api().query.MultiTransactionPayment.AccountCurrencyMap.getValue(n),a=s?s.toString():_u,i=e.findAssetById(a);return i?i.asset:Un}}}var Fu=()=>({accountCurrencyMap:Du});function vs(){return{multiTransactionPayment:Fu}}var tt=require("@galacticcouncil/xc-core"),Ko=require("@mysten/sui/transactions"),ma=require("@mysten/sui/utils"),Go=require("@wormhole-foundation/sdk-base"),Xu=()=>({build:async n=>{let{address:e,amount:t,asset:s,source:a,destination:i}=n,r=a.chain,o=i.chain,c=tt.Ntt.fromChain(r,s),m=tt.Wormhole.fromChain(r),g=tt.Wormhole.fromChain(o),f=r.client,y=e;o instanceof tt.EvmParachain&&(y=await o.getDerivatedAddress(e));let b=Go.encoding.hex.decode(g.normalizeAddress(y)),w=m.getCoreBridge(),x=c.manager,_=c.transceiver.wormhole,k=c.token,[O,C,W,U]=await Promise.all([tt.suiPkg.getWormholePackageId(f,w),tt.suiPkg.getCurrentPackageId(f,x),tt.suiPkg.getCurrentPackageId(f,_),tt.suiPkg.getCoinMetadataId(f,k)]),I=new Ko.Transaction,[ee]=I.splitCoins(I.gas,[I.pure.u64(t)]),[Ce]=I.moveCall({target:`${C}::upgrades::new_version_gated`,arguments:[]}),[lt,Ht]=I.moveCall({target:`${C}::ntt::prepare_transfer`,typeArguments:[k],arguments:[I.object(x),ee,I.object(U),I.pure.u16(g.getWormholeId()),I.pure.vector("u8",Array.from(b)),I.pure.option("vector<u8>",null),I.pure.bool(!1)]}),[Zt]=I.moveCall({target:`${C}::state::get_next_sequence`,typeArguments:[k],arguments:[I.object(x)]});I.moveCall({target:`${C}::ntt::transfer_tx_sender`,typeArguments:[k],arguments:[I.object(x),Ce,I.object(U),lt,I.object(ma.SUI_CLOCK_OBJECT_ID)]});let[oe]=I.moveCall({target:`${C}::state::create_transceiver_message`,typeArguments:[`${W}::wormhole_transceiver::TransceiverAuth`,k],arguments:[I.object(x),Zt,I.object(ma.SUI_CLOCK_OBJECT_ID)]}),[l]=I.moveCall({target:`${W}::wormhole_transceiver::release_outbound`,typeArguments:[`${C}::auth::ManagerAuth`],arguments:[I.object(_),oe]}),[d]=I.splitCoins(I.gas,[I.pure.u64(0n)]);I.moveCall({target:`${O}::publish_message::publish_message`,arguments:[I.object(w),d,l,I.object(ma.SUI_CLOCK_OBJECT_ID)]});let[u]=I.moveCall({target:"0x2::coin::from_balance",typeArguments:[k],arguments:[Ht]});return I.mergeCoins(I.gas,[u]),[new tt.MoveConfig({transaction:I,func:"transfer",module:"NttManager"})]}}),qo=()=>({transfer:Xu});function zo(){return{Ntt:qo}}function Si(){return{Wormhole:zo}}var At=require("@galacticcouncil/xc-core"),Bc=require("@solana/spl-token"),Aa=require("@solana/web3.js"),Lc=require("@wormhole-foundation/sdk-base"),Rc=require("@wormhole-foundation/sdk-definitions"),_c=require("@wormhole-foundation/sdk-solana"),Qy=require("@wormhole-foundation/sdk-definitions-ntt");async function Ou(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 Wu(n,e,t){let s=await Ou(n,e),a="message"in e?Aa.TransactionMessage.decompile(e.message,{addressLookupTableAccounts:s}).instructions:e.instructions;return new At.ProgramConfig({instructions:a,signers:t,lookupTables:s,func:"transfer",module:"NttManager"})}var Hu=()=>({build:async n=>{let{address:e,amount:t,asset:s,sender:a,source:i,destination:r}=n,o=i.chain,c=r.chain,m=At.Ntt.fromChain(o,s),g=At.Wormhole.fromChain(o),f=At.Wormhole.fromChain(c),y=e;c instanceof At.EvmParachain&&(y=await c.getDerivatedAddress(e));let{SolanaNtt:b}=await Promise.resolve().then(()=>(Ec(),Pc)),w=new b("Mainnet","Solana",o.connection,{coreBridge:g.getCoreBridge(),ntt:{manager:m.manager,token:m.token,transceiver:{wormhole:m.transceiver.wormhole}}}),x=o.getBalanceType(s)===At.SolanaBalanceType.Native,_=Aa.Keypair.generate(),k=[];for await(let W of w.transfer(new _c.SolanaAddress(a),t,{chain:(0,Lc.toChain)(f.getWormholeId()),address:new Rc.UniversalAddress(f.normalizeAddress(y))},{queue:!1,automatic:!1,wrapNative:x},_)){let{transaction:U,signers:I}=W.transaction;k.push(await Wu(o.connection,U,I??[]))}let O=x?BigInt(await(0,Bc.getMinimumBalanceForRentExemptAccount)(o.connection)):0n,C=k[k.length-1];return[...k.slice(0,-1),new At.ProgramConfig({instructions:C.instructions,signers:C.signers,lookupTables:C.lookupTables,rentReserve:O,func:"transfer",module:"NttManager"})]}}),Dc=()=>({transfer:Hu});function Fc(){return{Ntt:Dc}}function Di(){return{Wormhole:Fc}}var Xi={};wn(Xi,{Tag:()=>pn});var pn=(o=>(o.Basejump="Basejump",o.Ntt="Ntt",o.NttExecutor="NttExecutor",o.Wormhole="Wormhole",o.Relayer="Relayer",o.Snowbridge="Snowbridge",o.SnowbridgeV1="SnowbridgeV1",o))(pn||{});function Xc(n,e){return new wa.AssetRoute({source:{asset:n,fee:{asset:R}},destination:{chain:v,asset:e,fee:{amount:0,asset:n}},contract:ye().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function Nc(n,e){return new wa.AssetRoute({source:{asset:n,fee:{asset:R}},destination:{chain:v,asset:e,fee:{amount:X().Wormhole().quoteExecutorCost(),asset:R}},contract:ye().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}function Vc(n,e){return new wa.AssetRoute({source:{asset:n,fee:{asset:R},destinationFee:n},destination:{chain:v,asset:e,fee:{amount:X().Basejump().quoteFee(),asset:n}},contract:ye().Basejump().bridgeViaWormhole(),tags:["Basejump"]})}var Uu=[Vc(ft,kt)],Ku=[Xc(ft,kt)],Gu=[Nc(ft,kt)],Wc=new Oc.ChainRoutes({chain:Sn,routes:[...Ku,...Gu,...Uu]});var Xs=require("@galacticcouncil/xc-core");var ls=require("@galacticcouncil/xc-core");function hn(n,e){return new ls.AssetRoute({source:{asset:n,fee:{asset:R}},destination:{chain:v,asset:e,fee:{amount:0,asset:n}},contract:ye().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function Vn(n,e){return new ls.AssetRoute({source:{asset:n,fee:{asset:R}},destination:{chain:v,asset:e,fee:{amount:X().Wormhole().quoteExecutorCost(),asset:R}},contract:ye().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}function Hc(n,e){return new ls.AssetRoute({source:{asset:n,fee:{asset:R}},destination:{chain:v,asset:e,fee:{amount:0,asset:n}},contract:ye().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}function Me(n,e){return new ls.AssetRoute({source:{asset:n,fee:{asset:R}},destination:{chain:v,asset:e,fee:{amount:X().Snowbridge().calculateInboundFee({hub:N}),asset:R}},contract:ye().Snowbridge().v2SendMessage(),tags:["Snowbridge"]})}function Ie(n,e){return new ls.AssetRoute({source:{asset:n,fee:{asset:R}},destination:{chain:v,asset:e,fee:{amount:X().Snowbridge().calculateInboundFeeV1({hub:N}),asset:R}},contract:ye().Snowbridge().sendToken(),tags:["Snowbridge","SnowbridgeV1"]})}var qu=[hn(St,Lt),hn(rt,Rt),hn(L,Dt),hn(T,_t),hn(ot,Xt),hn(Ft,Ze),hn(R,Ze)],zu=[Vn(St,Lt),Vn(rt,Rt),Vn(L,Dt),Vn(T,_t),Vn(ot,Xt),Vn(Ft,Ze),Hc(R,Ze)],ju=[new Xs.AssetRoute({source:{asset:R,fee:{asset:R}},destination:{chain:v,asset:R,fee:{amount:X().Snowbridge().calculateInboundFee({hub:N}),asset:R}},contract:ye().Snowbridge().v2SendMessage(),tags:["Snowbridge"]}),Me(Ee,Ee),Me(Be,Be),Me(Le,Le),Me(Re,Re),Me(Xe,Xe),Me(We,We),Me(He,He),Me(De,De),Me(_e,_e),Me(Fe,Fe),Me(Ne,Ne),Me(Ue,Ue),Me(Ke,Ke),Me(L,Kt),Me(T,Ut)],$u=[new Xs.AssetRoute({source:{asset:R,fee:{asset:R}},destination:{chain:v,asset:R,fee:{amount:X().Snowbridge().calculateInboundFeeV1({hub:N}),asset:R}},contract:ye().Snowbridge().sendToken(),tags:["Snowbridge","SnowbridgeV1"]}),Ie(Ee,Ee),Ie(Be,Be),Ie(Le,Le),Ie(Re,Re),Ie(Xe,Xe),Ie(We,We),Ie(He,He),Ie(De,De),Ie(_e,_e),Ie(Fe,Fe),Ie(Ne,Ne),Ie(Ue,Ue),Ie(Ke,Ke),Ie(L,Kt),Ie(T,Ut)],Uc=new Xs.ChainRoutes({chain:E,routes:[...qu,...zu,...ju,...$u]});var Kc=[Wc,Uc];var yn=require("@galacticcouncil/xc-core");var xa=require("@galacticcouncil/xc-core");var On=0,Qu=n=>{let{source:e}=n;return!!e.feeSwap},Yu=n=>{let{source:e}=n,{enabled:t}=e.destinationFeeSwap||{};return!!t},Gc=A().assetConversion().swapTokensForExactTokens({slippage:30});function Ju(n,e,t){return new xa.AssetRoute({source:{asset:n,fee:{asset:P,extra:On}},destination:{chain:e,asset:n,fee:{amount:t,asset:T}},extrinsic:$t(Yu,Gc).prior(A().polkadotXcm().limitedReserveTransferAssets())})}function Sa(n,e,t){return new xa.AssetRoute({source:{asset:n,fee:{asset:n,swap:!n.isEqual(P)}},destination:{chain:e,asset:n,fee:{amount:t,asset:n}},extrinsic:$t(Qu,Gc).prior(A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"}))})}function Ns(n,e,t){return new xa.AssetRoute({source:{asset:n,fee:{asset:P,extra:On}},destination:{chain:e,asset:n,fee:{amount:t,asset:n}},extrinsic:A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})})}function ka(n){return Ju(n,v,.02)}var Zu=[new yn.AssetRoute({source:{asset:P,fee:{asset:P,extra:On}},destination:{chain:v,asset:P,fee:{amount:.001,asset:P}},extrinsic:A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),new yn.AssetRoute({source:{asset:F,fee:{asset:P,extra:On}},destination:{chain:v,asset:F,fee:{amount:1e-4,asset:F}},extrinsic:A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),Ns(T,v,.02),Ns(L,v,.02),ka(Gt)],ed=[new yn.AssetRoute({source:{asset:F,fee:{asset:P,extra:On}},destination:{chain:Tt,asset:F,fee:{amount:.001,asset:F}},extrinsic:A().polkadotXcm().transferAssets()})],td=[Ns(T,se,.03),Ns(L,se,.03)],nd=[new yn.AssetRoute({source:{asset:ne,fee:{asset:P,extra:On}},destination:{chain:nn,asset:ne,fee:{amount:2.5,asset:ne}},extrinsic:A().polkadotXcm().limitedTeleportAssets()})],qc=new yn.ChainRoutes({chain:tn,routes:[Sa(T,v,.02),Sa(L,v,.02),Sa(P,v,.001)]}),zc=new yn.ChainRoutes({chain:N,routes:[...Zu,...ed,...td,...nd]});var Bt=require("@galacticcouncil/xc-core");var sd=[new Bt.AssetRoute({source:{asset:j},destination:{chain:v,asset:j,fee:{amount:.044306118,asset:j}},extrinsic:A().polkadotXcm().reserveTransferAssets()}),new Bt.AssetRoute({source:{asset:K,fee:{asset:j}},destination:{chain:v,asset:K,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:se}),asset:K}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new Bt.AssetRoute({source:{asset:ae,fee:{asset:j}},destination:{chain:v,asset:ae,fee:{amount:2e-6,asset:ae}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new Bt.AssetRoute({source:{asset:at,fee:{asset:j}},destination:{chain:v,asset:at,fee:{amount:.01,asset:at}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new Bt.AssetRoute({source:{asset:fe,fee:{asset:j}},destination:{chain:v,asset:fe,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:se}),asset:fe}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new Bt.AssetRoute({source:{asset:le,fee:{asset:j}},destination:{chain:v,asset:le,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:se}),asset:le}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new Bt.AssetRoute({source:{asset:T,fee:{asset:j}},destination:{chain:v,asset:T,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:N}),asset:T}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new Bt.AssetRoute({source:{asset:L,fee:{asset:j}},destination:{chain:v,asset:L,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:N}),asset:L}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()})],jc=new Bt.ChainRoutes({chain:ve,routes:[...sd]});var dt=require("@galacticcouncil/xc-core");var ad=[new dt.AssetRoute({source:{asset:K},destination:{chain:v,asset:K,fee:{amount:X().XcmPaymentApi().calculateDestFee(),asset:K}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new dt.AssetRoute({source:{asset:fe,fee:{asset:K}},destination:{chain:v,asset:fe,fee:{amount:X().XcmPaymentApi().calculateDestFee(),asset:fe}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new dt.AssetRoute({source:{asset:le,fee:{asset:K}},destination:{chain:v,asset:le,fee:{amount:X().XcmPaymentApi().calculateDestFee(),asset:le}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new dt.AssetRoute({source:{asset:P,fee:{asset:K}},destination:{chain:v,asset:P,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:N}),asset:P}},extrinsic:A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"RemoteReserve"})}),new dt.AssetRoute({source:{asset:j,fee:{asset:K}},destination:{chain:v,asset:j,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:ve}),asset:j}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new dt.AssetRoute({source:{asset:ae,fee:{asset:K}},destination:{chain:v,asset:ae,fee:{amount:625e-8,asset:ae}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new dt.AssetRoute({source:{asset:T,fee:{asset:K}},destination:{chain:v,asset:T,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:N}),asset:T}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new dt.AssetRoute({source:{asset:L,fee:{asset:K}},destination:{chain:v,asset:L,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:N}),asset:L}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()})],id=[new dt.AssetRoute({source:{asset:T,fee:{asset:K}},destination:{chain:N,asset:T,fee:{amount:X().XcmPaymentApi().calculateDestFee(),asset:T}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new dt.AssetRoute({source:{asset:L,fee:{asset:K}},destination:{chain:N,asset:L,fee:{amount:X().XcmPaymentApi().calculateDestFee(),asset:L}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()})],$c=new dt.ChainRoutes({chain:se,routes:[...ad,...id]});var Wt=require("@galacticcouncil/xc-core");var we=()=>({asset:vs().multiTransactionPayment().accountCurrencyMap()});var Qt=require("@galacticcouncil/xc-core");var rd=.02,va=n=>{let{source:e}=n,{enabled:t}=e.destinationFeeSwap||{};return!!t},Ma=A().router().buy({slippage:30});function ze(n,e,t){return new Qt.AssetRoute({source:{asset:n,fee:we()},destination:{chain:e,asset:n,fee:{amount:X().XcmPaymentApi().calculateDestFee(t?{reserve:t}:void 0),asset:n}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()})}function bn(n,e){return new Qt.AssetRoute({source:{asset:n,fee:we()},destination:{chain:e,asset:n,fee:{amount:X().XcmPaymentApi().calculateDestFee(),asset:n}},extrinsic:A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})})}function Ia(n){return new Qt.AssetRoute({source:{asset:n,fee:we()},destination:{chain:N,asset:n,fee:{amount:rd,asset:T}},extrinsic:$t(va,Ma).prior(A().polkadotXcm().limitedReserveTransferAssets())})}function Ni(n,e,t){return new Qt.AssetRoute({source:{asset:n,fee:we()},destination:{chain:Tt,asset:n,fee:{amount:e,asset:n}},extrinsic:A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve",executionFee:t})})}function wt(n,e,t){let s=ye().Wormhole().Ntt().transfer();return new Qt.AssetRoute({source:{asset:n,fee:we()},destination:{chain:t,asset:e,fee:{amount:0,asset:n}},contract:s,extrinsic:A().evm().call(s),tags:["Wormhole","Ntt"]})}function xt(n,e,t){let s=ye().Wormhole().Ntt().transferViaExecutor();return new Qt.AssetRoute({source:{asset:n,fee:we()},destination:{chain:t,asset:e,fee:{amount:X().Wormhole().quoteExecutorCost(),asset:Ze}},contract:s,extrinsic:$t(va,Ma).prior(A().evm().call(s)),tags:["Wormhole","Ntt","NttExecutor"]})}function xe(n,e,t){return new Qt.AssetRoute({source:{asset:n,fee:we()},destination:{chain:t,asset:e,fee:{amount:X().Snowbridge().calculateOutboundFee({hub:N}),asset:P}},extrinsic:$t(va,Ma).prior(A().polkadotXcm().execute().viaSnowbridge()),tags:["Snowbridge"]})}function Se(n,e,t){return new Qt.AssetRoute({source:{asset:n,fee:we()},destination:{chain:t,asset:e,fee:{amount:X().Snowbridge().calculateOutboundFeeV1({hub:N}),asset:P}},extrinsic:$t(va,Ma).prior(A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})),tags:["Snowbridge","SnowbridgeV1"]})}var od=[bn(P,N),bn(F,N),bn(T,N),bn(L,N),Ia(Gt)],cd=[Ni(F,.05,.005),Ni(P,.2,.02)],md=[ze(j,ve),ze(K,ve,se),new Wt.AssetRoute({source:{asset:ae,fee:we()},destination:{chain:ve,asset:ae,fee:{amount:2e-6,asset:ae}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),new Wt.AssetRoute({source:{asset:at,fee:we()},destination:{chain:ve,asset:at,fee:{amount:.01,asset:at}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),ze(fe,ve,se),ze(le,ve,se),ze(T,ve,N),ze(L,ve,N)],ud=[ze(K,se),ze(fe,se),ze(le,se),ze(j,se,ve),new Wt.AssetRoute({source:{asset:ae,fee:we()},destination:{chain:se,asset:ae,fee:{amount:5e-6,asset:ae}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()}),ze(T,se,N),ze(L,se,N),new Wt.AssetRoute({source:{asset:P,fee:we()},destination:{chain:se,asset:P,fee:{amount:X().XcmPaymentApi().calculateDestFee({reserve:N}),asset:P}},extrinsic:A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"RemoteReserve"})})],dd=[new Wt.AssetRoute({source:{asset:ne,fee:we()},destination:{chain:nn,asset:ne,fee:{amount:2.5,asset:ne}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()})],ld=[ze(Mt,Yn)],fd=[new Wt.AssetRoute({source:{asset:Ye,fee:we()},destination:{chain:Jn,asset:Ye,fee:{amount:.02,asset:Ye}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()})],gd=[new Wt.AssetRoute({source:{asset:it,fee:we()},destination:{chain:jn,asset:it,fee:{amount:1.1,asset:it}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()})],pd=[ze(vt,zn)],hd=[wt(Lt,St,E),wt(Rt,rt,E),wt(Dt,L,E),wt(_t,T,E),wt(Xt,ot,E),wt(Ze,R,E)],yd=[wt(kt,ft,Sn)],bd=[wt(Ve,Ve,It),wt(Qe,Qe,It),wt(Je,Je,It)],Ad=[wt(Oe,Oe,Cn)],wd=[xt(Lt,St,E),xt(Rt,rt,E),xt(Dt,L,E),xt(_t,T,E),xt(Xt,ot,E),xt(Ze,R,E),xt(kt,ft,Sn),xt(Ve,Kn,It),xt(Qe,Qe,It),xt(Je,Je,It),xt(Oe,Oe,Cn)],xd=[xe(R,R,E),xe(Ee,Ee,E),xe(Be,Be,E),xe(Le,Le,E),xe(Re,Re,E),xe(Xe,Xe,E),xe(We,We,E),xe(He,He,E),xe(Ue,Ue,E),xe(De,De,E),xe(_e,_e,E),xe(Fe,Fe,E),xe(Ne,Ne,E),xe(Ke,Ke,E),xe(Kt,L,E),xe(Ut,T,E)],Sd=[Se(R,R,E),Se(Ee,Ee,E),Se(Be,Be,E),Se(Le,Le,E),Se(Re,Re,E),Se(Xe,Xe,E),Se(We,We,E),Se(He,He,E),Se(Ue,Ue,E),Se(De,De,E),Se(_e,_e,E),Se(Fe,Fe,E),Se(Ne,Ne,E),Se(Ke,Ke,E),Se(Kt,L,E),Se(Ut,T,E)],kd=[bn(P,tn),bn(T,tn),bn(L,tn)],Qc=new Wt.ChainRoutes({chain:v,routes:[...od,...md,...ud,...kd,...yd,...hd,...xd,...bd,...Ad,...wd,...Sd,...fd,...cd,...dd,...pd,...gd,...ld]});var Vs=require("@galacticcouncil/xc-core");var vd=[new Vs.AssetRoute({source:{asset:ne},destination:{chain:v,asset:ne,fee:{amount:.01,asset:ne}},extrinsic:A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})})],Md=[new Vs.AssetRoute({source:{asset:ne},destination:{chain:N,asset:ne,fee:{amount:.1,asset:ne}},extrinsic:A().polkadotXcm().limitedTeleportAssets()})],Yc=new Vs.ChainRoutes({chain:nn,routes:[...vd,...Md]});var Ta=require("@galacticcouncil/xc-core");var Id=[new Ta.AssetRoute({source:{asset:Mt},destination:{chain:v,asset:Mt,fee:{amount:X().XcmPaymentApi().calculateDestFee(),asset:Mt}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()})],Jc=new Ta.ChainRoutes({chain:Yn,routes:[...Id]});var Ca=require("@galacticcouncil/xc-core");var Td=[new Ca.AssetRoute({source:{asset:it},destination:{chain:v,asset:it,fee:{amount:.2,asset:it}},extrinsic:A().polkadotXcm().reserveTransferAssets()})],Zc=new Ca.ChainRoutes({chain:jn,routes:[...Td]});var Pa=require("@galacticcouncil/xc-core");var Cd=[new Pa.AssetRoute({source:{asset:Ye,fee:{asset:Ye,extra:.030555}},destination:{chain:v,asset:Ye,fee:{amount:.03,asset:Ye}},extrinsic:A().polkadotXcm().reserveTransferAssets()})],em=new Pa.ChainRoutes({chain:Jn,routes:[...Cd]});var Ea=require("@galacticcouncil/xc-core");var Pd=[new Ea.AssetRoute({source:{asset:vt},destination:{chain:v,asset:vt,fee:{amount:.205,asset:vt}},extrinsic:A().polkadotXcm().reserveTransferAssets()})],tm=new Ea.ChainRoutes({chain:zn,routes:[...Pd]});var nm=[zc,qc,jc,$c,Qc,Yc,tm,Jc,Zc,em];var Ba=require("@galacticcouncil/xc-core");function Vi(n){return new Ba.AssetRoute({source:{asset:n,fee:{asset:Ve}},destination:{chain:v,asset:n,fee:{amount:0,asset:n}},program:Di().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}var Ed=[Vi(Ve),Vi(Qe),Vi(Je)],sm=new Ba.ChainRoutes({chain:It,routes:[...Ed]});var am=[sm];var La=require("@galacticcouncil/xc-core");function Bd(n){return new La.AssetRoute({source:{asset:n,fee:{asset:Oe}},destination:{chain:v,asset:n,fee:{amount:0,asset:n}},move:Si().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}var Ld=[Bd(Oe)],im=new La.ChainRoutes({chain:Cn,routes:[...Ld]});var rm=[im];var Wn=require("@galacticcouncil/xc-core");var Rd=require("@galacticcouncil/xc-core");var Os=.0015;var _d=new Wn.AssetRoute({source:{asset:F,fee:{asset:F,extra:Os}},destination:{chain:N,asset:F,fee:{amount:.002,asset:F}},extrinsic:A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),Dd=new Wn.AssetRoute({source:{asset:F,fee:{asset:F,extra:Os}},destination:{chain:ts,asset:F,fee:{amount:.0012,asset:F}},extrinsic:A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),Fd=[new Wn.AssetRoute({source:{asset:F,fee:{asset:F,extra:Os}},destination:{chain:v,asset:F,fee:{amount:.04,asset:F}},extrinsic:A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve",executionFee:.005})}),new Wn.AssetRoute({source:{asset:P,fee:{asset:F,extra:Os}},destination:{chain:v,asset:P,fee:{amount:.15,asset:P}},extrinsic:A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve",executionFee:.01})})],om=new Wn.ChainRoutes({chain:Tt,routes:[Dd,_d,...Fd]});var Ws=require("@galacticcouncil/xc-core");var Oi=()=>({asset:vs().multiTransactionPayment().accountCurrencyMap()});var Xd=[new Ws.AssetRoute({source:{asset:T,fee:Oi()},destination:{chain:Tt,asset:T,fee:{amount:X().XcmPaymentApi().calculateDestFee(),asset:T}},extrinsic:A().polkadotXcm().limitedReserveTransferAssets()})],Nd=[new Ws.AssetRoute({source:{asset:F,fee:Oi()},destination:{chain:Tt,asset:F,fee:{amount:.0012,asset:F}},extrinsic:A().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})})],cm=new Ws.ChainRoutes({chain:ts,routes:[...Xd,...Nd]});var mm=[om,cm];var Vd=[...Kc,...nm,...am,...rm,...mm],um=new Map(Vd.map(n=>[n.chain.key,n]));var Wi=require("@galacticcouncil/xc-core");var An=require("@galacticcouncil/xc-core"),Ra=class extends An.TransferValidation{async validate(e){let{source:t}=e,{chain:s,fee:a,feeBalance:i}=t;if(i.amount<a.amount)throw new An.TransferValidationError("Insufficient_Fee_Balance",{amount:a.toDecimal(),asset:a.symbol,chain:s.name,error:"fee.insufficientBalance"})}},_a=class extends An.TransferValidation{async skipFor(e){let{asset:t,source:s}=e,{enabled:a}=s.destinationFeeSwap||{};return t.isEqual(s.destinationFee)||!!a}async validate(e){if(await this.skipFor(e))return;let{source:s}=e,{chain:a,destinationFee:i,destinationFeeBalance:r}=s,o=await this.getMin(a,i),c=i.copyWith({amount:i.amount+o});if(r.amount<c.amount)throw new An.TransferValidationError("Insufficient_Fee_Balance",{amount:c.toDecimal(),asset:c.symbol,chain:a.name,error:"destFee.insufficientBalance"})}async getMin(e,t){if(e instanceof An.Parachain)return(await e.getMin(t)).amount;let s=e.getAssetMin(t);return BigInt(s*10**t.decimals)}};var Yt=require("@galacticcouncil/xc-core"),lm=require("@galacticcouncil/common");function dm(n,e){throw new Yt.TransferValidationError("Ntt_Limit_Unreachable",{asset:n.originSymbol,chain:e.name,error:"ntt.limitUnreachable"})}var Da=class extends Yt.TransferValidation{skipFor(e){let{asset:t,destination:s,source:a}=e;return!Yt.Ntt.isKnown(a.chain,t)||!Yt.Ntt.isKnown(s.chain,s.balance)}async validate(e){if(this.skipFor(e))return;let{amount:t,asset:s,destination:a,source:i}=e,[r,o]=await Promise.all([zt(i.chain,s).getOutboundLimit().catch(()=>dm(s,i.chain)),zt(a.chain,a.balance).getInboundLimit(i.chain).catch(()=>dm(a.balance,a.chain))]);if(r.windowMs>0&&t>r.capacity)throw new Yt.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"});let c=lm.big.convertDecimals(t,i.balance.decimals,a.balance.decimals);if(o.windowMs>0&&c>o.capacity)throw new Yt.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"})}};var fs=require("@galacticcouncil/xc-core");var Fa=class extends fs.TransferValidation{async skipFor(e){let{asset:t,destination:s}=e,a=s.chain;return await new et(a).checkIfSufficient(t)}async validate(e){if(await this.skipFor(e))return;let{address:s,destination:a}=e,i=a.chain;if(await new et(i).getSystemAccountBalance(s)===0n)throw new fs.TransferValidationError("Insufficient_Ed",{amount:"0.1",asset:"DOT",chain:a.chain.name,error:"account.insufficientDeposit"})}},Xa=class extends fs.TransferValidation{async validate(e){let{asset:t,sender:s,source:a}=e,i=a.chain;if(await new et(i).checkIfFrozen(s,t))throw new fs.TransferValidationError("Asset_Frozen",{asset:t.originSymbol,chain:a.chain.name,error:"asset.frozen"})}};var Jt=require("@galacticcouncil/xc-core");var Od=12,Wd=1,Na=class extends Jt.TransferValidation{async skipFor(e){let{destination:t}=e,s=t.chain,a=new Ge(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 Ge(i),o=await r.getFeeAsset(s),c=i.findAssetById(o),m=c.min||Wd,g=c.decimals||Od,f=m*Math.pow(10,g),y=await r.getAssetBalance(s,o);if(BigInt(f*1.1)>y)throw new Jt.TransferValidationError("Insufficient_Ed",{amount:f,asset:c.asset.originSymbol,chain:i.name,error:"account.insufficientDeposit"})}},Va=class extends Jt.TransferValidation{async validate(e){let{amount:t,asset:s,destination:a}=e,i=a.chain,o=await new Ge(i).getAssetDepositLimit(s);if(o.locked)throw new Jt.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 Jt.TransferValidationError("Deposit_Limit_Exceeded",{asset:s.originSymbol,chain:i.name,headroom:o.headroom,limit:o.limit,error:"circuitBreaker.depositLimitExceeded"})}},Oa=class extends Jt.TransferValidation{async validate(e){let{source:t}=e,s=t.chain,i=await new Ge(s).getGlobalWithdrawLimit();if(i.lockdown)throw new Jt.TransferValidationError("Withdraw_Lockdown_Active",{chain:s.name,lockdownUntilMs:i.lockdownUntilMs,error:"circuitBreaker.withdrawLockdown"})}};var Te={isAny:()=>!0,isHydration:n=>n instanceof Wi.Parachain&&n.parachainId===2034,isHub:n=>n instanceof Wi.Parachain&&n.parachainId===1e3,isEvm:n=>n.isEvmChain()},fm=[new Ra(Te.isAny,Te.isAny),new _a(Te.isAny,Te.isAny),new Fa(Te.isAny,Te.isHub),new Xa(Te.isHub,Te.isAny),new Na(Te.isAny,Te.isHydration),new Va(Te.isAny,Te.isHydration),new Oa(Te.isHydration,Te.isAny),new Da(Te.isAny,Te.isAny)];var Gi={};wn(Gi,{AssethubDex:()=>Ki,HydrationDex:()=>Hi});var gs=require("@galacticcouncil/sdk-next"),pm=require("@galacticcouncil/common"),hm=require("polkadot-api");var gm=(n,e=new Map)=>t=>{let s;return e.has(t)?e.get(t):(e.set(t,s=n(t)),s)};var{PoolType:Wa}=gs.pool,{TradeRouteBuilder:Hd,TradeRouter:Ud}=gs.sor,{TxBuilderFactory:Kd}=gs.tx,Hi=class{chain;client;poolCtx;txBuilder;getCtx=gm(async e=>{console.log("init swap router",e,"\u2705");let t=new Ud(this.poolCtx);return t.withFilter({useOnly:[Wa.Aave,Wa.Omni,Wa.Stable,Wa.XYK]}),t});constructor(e,t){this.chain=e,this.poolCtx=t,this.client=new Ge(this.chain),this.txBuilder=new Kd(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 hm.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:Hd.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,pm.RUNTIME_DECIMALS);return i/BigInt(r)}};var Ui=require("@galacticcouncil/common"),Ki=class{chain;client;constructor(e){this.chain=e,this.client=new et(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,Ui.encodeLocation)(a),(0,Ui.encodeLocation)(i),s.amount,!0);if(!r)throw new Error("Failed to get swap quote");return{amount:r}}};var wm=require("@galacticcouncil/xc-core");var ym=require("@galacticcouncil/xc-core");function Ha(n){let{id:e,origin:t,symbol:s}=n,a=s.toLowerCase();return new ym.Asset({key:[a,t,e].join("_"),originSymbol:s})}function bm(n){let{decimals:e,id:t}=n;return{asset:Ha(n),decimals:e,id:t,xcmLocation:{parents:0,interior:{type:"X2",value:[{type:"PalletInstance",value:50},{type:"GeneralIndex",value:t}]}}}}function Am(n){let{decimals:e,id:t,internalId:s,origin:a}=n;return{asset:Ha(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 Ua=class extends wm.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=Ha(i),o=bm(i),c=Am(i);console.log("\u{1F480} Registering "+r.key),s.updateAsset(o),t.updateAsset(c),this.updateAsset(r),this.updateChainRoute(s,ka(r)),this.updateChainRoute(t,Ia(r))})}};0&&(module.exports={HydrationConfigService,assetsMap,builders,chainsMap,clients,dex,routesMap,tags,validations});