@galacticcouncil/xc-cfg 2.2.0 → 2.3.0-pr349-45f8efb

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 Ec=Object.create;var Is=Object.defineProperty;var Bc=Object.getOwnPropertyDescriptor;var Rc=Object.getOwnPropertyNames;var Lc=Object.getPrototypeOf,_c=Object.prototype.hasOwnProperty;var Y=(n,e)=>()=>(n&&(e=n(n=0)),e);var pn=(n,e)=>{for(var t in e)Is(n,t,{get:e[t],enumerable:!0})},yi=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of Rc(e))!_c.call(n,a)&&a!==t&&Is(n,a,{get:()=>e[a],enumerable:!(s=Bc(e,a))||s.enumerable});return n};var Rn=(n,e,t)=>(t=n!=null?Ec(Lc(n)):{},yi(e||!n||!n.__esModule?Is(t,"default",{value:n,enumerable:!0}):t,n)),Dc=n=>yi(Is({},"__esModule",{value:!0}),n);var Vs,ro=Y(()=>{Vs={version:"1.0.0",name:"example_native_token_transfers",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"deployer",isMut:!1,isSigner:!0},{name:"programData",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"rateLimit",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["The custody account that holds tokens in locking mode.","NOTE: the account is unconditionally initialized, but not used in","burning mode.","function if the token account has already been created."]},{name:"tokenProgram",isMut:!1,isSigner:!1,docs:["associated token account for the given mint."]},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"version",accounts:[],args:[],returns:"string"},{name:"transferBurn",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"transferLock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"redeem",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!1,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"inboxItem",isMut:!0,isSigner:!1,docs:["NOTE: This account is content-addressed (PDA seeded by the message hash).","This is because in a multi-transceiver configuration, the different",'transceivers "vote" on messages (by delivering them). By making the inbox',"items content-addressed, we can ensure that disagreeing votes don't","interfere with each other.","On the first call to [`redeem()`], [`InboxItem`] will be allocated and initialized with","default values.",'On subsequent calls, we want to modify the `InboxItem` by "voting" on it. Therefore the',"program should not fail which would occur when using the `init` constraint.","The [`InboxItem::init`] field is used to guard against malicious or accidental modification","InboxItem fields that should remain constant."]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RedeemArgs"}}]},{name:"releaseInboundMint",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"releaseInboundUnlock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}]},{name:"custody",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"transferOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"newOwner",isMut:!1,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"claimOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"newOwner",isMut:!1,isSigner:!0},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setPaused",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"pause",type:"bool"}]},{name:"setPeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!0,isSigner:!1},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetPeerArgs"}}]},{name:"registerTransceiver",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"transceiver",isMut:!1,isSigner:!1},{name:"registeredTransceiver",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setOutboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetOutboundLimitArgs"}}]},{name:"setInboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetInboundLimitArgs"}}]},{name:"setWormholePeer",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"peer",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetTransceiverPeerArgs"}}]},{name:"receiveWormholeMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"peer",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"releaseWormholeOutbound",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseOutboundArgs"}}]},{name:"broadcastWormholeId",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[]},{name:"broadcastWormholePeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"BroadcastPeerArgs"}}]}],accounts:[{name:"config",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"owner",docs:["Owner of the program."],type:"publicKey"},{name:"pendingOwner",docs:["Pending next owner (before claiming ownership)."],type:{option:"publicKey"}},{name:"mint",docs:["Mint address of the token managed by this program."],type:"publicKey"},{name:"tokenProgram",docs:["Address of the token program (token or token22). This could always be queried","from the [`mint`] account's owner, but storing it here avoids an indirection","on the client side."],type:"publicKey"},{name:"mode",docs:["The mode that this program is running in. This is used to determine","whether the program is burning tokens or locking tokens."],type:{defined:"Mode"}},{name:"chainId",docs:["The chain id of the chain that this program is running on. We don't","hardcode this so that the program is deployable on any potential SVM","forks."],type:{defined:"ChainId"}},{name:"nextTransceiverId",docs:["The next transceiver id to use when registering an transceiver."],type:"u8"},{name:"threshold",docs:["The number of transceivers that must attest to a transfer before it is","accepted."],type:"u8"},{name:"enabledTransceivers",docs:["Bitmap of enabled transceivers.","The maximum number of transceivers is equal to [`Bitmap::BITS`]."],type:{defined:"Bitmap"}},{name:"paused",docs:["Pause the program. This is useful for upgrades and other maintenance."],type:"bool"},{name:"custody",docs:["The custody account that holds tokens in locking mode."],type:"publicKey"}]}},{name:"nttManagerPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}},{name:"tokenDecimals",type:"u8"}]}},{name:"inboxItem",type:{kind:"struct",fields:[{name:"init",type:"bool"},{name:"bump",type:"u8"},{name:"amount",type:"u64"},{name:"recipientAddress",type:"publicKey"},{name:"votes",type:{defined:"Bitmap"}},{name:"releaseStatus",type:{defined:"ReleaseStatus"}}]}},{name:"inboxRateLimit",docs:["Inbound rate limit per chain.","SECURITY: must check the PDA (since there are multiple PDAs, namely one for each chain.)"],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"outboxItem",type:{kind:"struct",fields:[{name:"amount",type:{defined:"TrimmedAmount"}},{name:"sender",type:"publicKey"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientNttManager",type:{array:["u8",32]}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"releaseTimestamp",type:"i64"},{name:"released",type:{defined:"Bitmap"}}]}},{name:"outboxRateLimit",type:{kind:"struct",fields:[{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"registeredTransceiver",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"id",type:"u8"},{name:"transceiverAddress",type:"publicKey"}]}},{name:"transceiverPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}},{name:"bridgeData",type:{kind:"struct",fields:[{name:"guardianSetIndex",docs:["The current guardian set index, used to decide which signature sets to accept."],type:"u32"},{name:"lastLamports",docs:["Lamports in the collection account"],type:"u64"},{name:"config",docs:["Bridge configuration, which is set once upon initialization."],type:{defined:"BridgeConfig"}}]}}],types:[{name:"Bitmap",type:{kind:"struct",fields:[{name:"map",type:"u128"}]}},{name:"SetInboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"},{name:"chainId",type:{defined:"ChainId"}}]}},{name:"SetOutboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"}]}},{name:"SetPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}},{name:"limit",type:"u64"},{name:"tokenDecimals",docs:["The token decimals on the peer chain."],type:"u8"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"},{name:"limit",type:"u64"},{name:"mode",type:{defined:"Mode"}}]}},{name:"RedeemArgs",type:{kind:"struct",fields:[]}},{name:"ReleaseInboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"TransferArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"shouldQueue",type:"bool"}]}},{name:"ReleaseStatus",docs:["The status of an InboxItem. This determines whether the tokens are minted/unlocked to the recipient. As","such, this must be used as a state machine that moves forward in a linear manner. A state",'should never "move backward" to a previous state (e.g. should never move from `Released` to',"`ReleaseAfter`)."],type:{kind:"enum",variants:[{name:"NotApproved"},{name:"ReleaseAfter",fields:["i64"]},{name:"Released"}]}},{name:"RateLimitState",type:{kind:"struct",fields:[{name:"limit",docs:["The maximum capacity of the rate limiter."],type:"u64"},{name:"capacityAtLastTx",docs:["The capacity of the rate limiter at `last_tx_timestamp`.","The actual current capacity is calculated in `capacity_at`, by","accounting for the time that has passed since `last_tx_timestamp` and","the refill rate."],type:"u64"},{name:"lastTxTimestamp",docs:["The timestamp of the last transaction that counted towards the current","capacity. Transactions that exceeded the capacity do not count, they are","just delayed."],type:"i64"}]}},{name:"SetTransceiverPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}}]}},{name:"BroadcastPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"ReleaseOutboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"ChainId",type:{kind:"struct",fields:[{name:"id",type:"u16"}]}},{name:"Mode",type:{kind:"enum",variants:[{name:"Locking"},{name:"Burning"}]}},{name:"TrimmedAmount",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]}},{name:"BridgeConfig",type:{kind:"struct",fields:[{name:"guardianSetExpirationTime",docs:["Period for how long a guardian set is valid after it has been replaced by a new one. This","guarantees that VAAs issued by that set can still be submitted for a certain period. In","this period we still trust the old guardian set."],type:"u32"},{name:"fee",docs:["Amount of lamports that needs to be paid to the protocol to post a message"],type:"u64"}]}}],errors:[{code:6e3,name:"CantReleaseYet",msg:"CantReleaseYet"},{code:6001,name:"InvalidPendingOwner",msg:"InvalidPendingOwner"},{code:6002,name:"InvalidChainId",msg:"InvalidChainId"},{code:6003,name:"InvalidRecipientAddress",msg:"InvalidRecipientAddress"},{code:6004,name:"InvalidTransceiverPeer",msg:"InvalidTransceiverPeer"},{code:6005,name:"InvalidNttManagerPeer",msg:"InvalidNttManagerPeer"},{code:6006,name:"InvalidRecipientNttManager",msg:"InvalidRecipientNttManager"},{code:6007,name:"TransferAlreadyRedeemed",msg:"TransferAlreadyRedeemed"},{code:6008,name:"TransferCannotBeRedeemed",msg:"TransferCannotBeRedeemed"},{code:6009,name:"TransferNotApproved",msg:"TransferNotApproved"},{code:6010,name:"MessageAlreadySent",msg:"MessageAlreadySent"},{code:6011,name:"InvalidMode",msg:"InvalidMode"},{code:6012,name:"InvalidMintAuthority",msg:"InvalidMintAuthority"},{code:6013,name:"TransferExceedsRateLimit",msg:"TransferExceedsRateLimit"},{code:6014,name:"Paused",msg:"Paused"},{code:6015,name:"DisabledTransceiver",msg:"DisabledTransceiver"},{code:6016,name:"InvalidDeployer",msg:"InvalidDeployer"},{code:6017,name:"BadAmountAfterTransfer",msg:"BadAmountAfterTransfer"},{code:6018,name:"BadAmountAfterBurn",msg:"BadAmountAfterBurn"},{code:6019,name:"ZeroThreshold",msg:"ZeroThreshold"},{code:6020,name:"OverflowExponent",msg:"OverflowExponent"},{code:6021,name:"OverflowScaledAmount",msg:"OverflowScaledAmount"},{code:6022,name:"BitmapIndexOutOfBounds",msg:"BitmapIndexOutOfBounds"}]}});var oo,co=Y(()=>{oo={version:"1.0.0",name:"wormhole_governance",instructions:[{name:"governance",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"governance",isMut:!0,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"replay",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"replayProtection",type:{kind:"struct",fields:[{name:"bump",type:"u8"}]}}],errors:[{code:6e3,name:"InvalidGovernanceChain",msg:"InvalidGovernanceChain"},{code:6001,name:"InvalidGovernanceEmitter",msg:"InvalidGovernanceEmitter"}]}});var os,mo=Y(()=>{ro();co();(function(n){n.idl={ntt:Vs,transceiver:Vs,transceiverLegacy:Vs,governance:oo}})(os||(os={}))});var Os,uo=Y(()=>{Os={version:"2.0.0",name:"example_native_token_transfers",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"deployer",isMut:!1,isSigner:!0},{name:"programData",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"rateLimit",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1,docs:["In any case, this function is used to set the Config and initialize the program so we","assume the caller of this function will have total control over the program.","",'TODO: Using `UncheckedAccount` here leads to "Access violation in stack frame ...".',"Could refactor code to use `Box<_>` to reduce stack size."]},{name:"custody",isMut:!0,isSigner:!1,docs:["The custody account that holds tokens in locking mode and temporarily","holds tokens in burning mode.","function if the token account has already been created."]},{name:"tokenProgram",isMut:!1,isSigner:!1,docs:["associated token account for the given mint."]},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"initializeLut",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"authority",isMut:!1,isSigner:!1},{name:"lutAddress",isMut:!0,isSigner:!1},{name:"lut",isMut:!0,isSigner:!1},{name:"lutProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"entries",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"custody",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"outboxRateLimit",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}]}],args:[{name:"recentSlot",type:"u64"}]},{name:"version",accounts:[],args:[],returns:"string"},{name:"transferBurn",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["Tokens are always transferred to the custody account first regardless of","the mode.","For an explanation, see the note in [`transfer_burn`]."]},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1,docs:["See [`crate::SESSION_AUTHORITY_SEED`] for an explanation of the flow."]},{name:"tokenAuthority",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"transferLock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["Tokens are always transferred to the custody account first regardless of","the mode.","For an explanation, see the note in [`transfer_burn`]."]},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1,docs:["See [`crate::SESSION_AUTHORITY_SEED`] for an explanation of the flow."]}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"redeem",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!1,isSigner:!1,docs:["`Account<T>` and `owner` constraints are mutually-exclusive"]},{name:"transceiver",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"inboxItem",isMut:!0,isSigner:!1,docs:["NOTE: This account is content-addressed (PDA seeded by the message hash).","This is because in a multi-transceiver configuration, the different",'transceivers "vote" on messages (by delivering them). By making the inbox',"items content-addressed, we can ensure that disagreeing votes don't","interfere with each other.","On the first call to [`redeem()`], [`InboxItem`] will be allocated and initialized with","default values.",'On subsequent calls, we want to modify the `InboxItem` by "voting" on it. Therefore the',"program should not fail which would occur when using the `init` constraint.","The [`InboxItem::init`] field is used to guard against malicious or accidental modification","InboxItem fields that should remain constant."]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RedeemArgs"}}]},{name:"releaseInboundMint",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1,docs:["CHECK The seeds constraint ensures that this is the correct address"]},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"releaseInboundUnlock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1,docs:["CHECK The seeds constraint ensures that this is the correct address"]},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"transferOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"newOwner",isMut:!1,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"claimOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"newOwner",isMut:!1,isSigner:!0},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setPaused",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"pause",type:"bool"}]},{name:"setPeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!0,isSigner:!1},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetPeerArgs"}}]},{name:"registerTransceiver",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"transceiver",isMut:!1,isSigner:!1,docs:["used here that wraps the Transceiver account type."]},{name:"registeredTransceiver",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setOutboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetOutboundLimitArgs"}}]},{name:"setInboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetInboundLimitArgs"}}]},{name:"setWormholePeer",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"peer",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetTransceiverPeerArgs"}}]},{name:"receiveWormholeMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"peer",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"releaseWormholeOutbound",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseOutboundArgs"}}]},{name:"broadcastWormholeId",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[]},{name:"broadcastWormholePeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"BroadcastPeerArgs"}}]}],accounts:[{name:"config",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"owner",docs:["Owner of the program."],type:"publicKey"},{name:"pendingOwner",docs:["Pending next owner (before claiming ownership)."],type:{option:"publicKey"}},{name:"mint",docs:["Mint address of the token managed by this program."],type:"publicKey"},{name:"tokenProgram",docs:["Address of the token program (token or token22). This could always be queried","from the [`mint`] account's owner, but storing it here avoids an indirection","on the client side."],type:"publicKey"},{name:"mode",docs:["The mode that this program is running in. This is used to determine","whether the program is burning tokens or locking tokens."],type:{defined:"Mode"}},{name:"chainId",docs:["The chain id of the chain that this program is running on. We don't","hardcode this so that the program is deployable on any potential SVM","forks."],type:{defined:"ChainId"}},{name:"nextTransceiverId",docs:["The next transceiver id to use when registering an transceiver."],type:"u8"},{name:"threshold",docs:["The number of transceivers that must attest to a transfer before it is","accepted."],type:"u8"},{name:"enabledTransceivers",docs:["Bitmap of enabled transceivers.","The maximum number of transceivers is equal to [`Bitmap::BITS`]."],type:{defined:"Bitmap"}},{name:"paused",docs:["Pause the program. This is useful for upgrades and other maintenance."],type:"bool"},{name:"custody",docs:["The custody account that holds tokens in locking mode."],type:"publicKey"}]}},{name:"LUT",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:"publicKey"}]}},{name:"nttManagerPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}},{name:"tokenDecimals",type:"u8"}]}},{name:"inboxItem",type:{kind:"struct",fields:[{name:"init",type:"bool"},{name:"bump",type:"u8"},{name:"amount",type:"u64"},{name:"recipientAddress",type:"publicKey"},{name:"votes",type:{defined:"Bitmap"}},{name:"releaseStatus",type:{defined:"ReleaseStatus"}}]}},{name:"inboxRateLimit",docs:["Inbound rate limit per chain.","SECURITY: must check the PDA (since there are multiple PDAs, namely one for each chain.)"],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"outboxItem",type:{kind:"struct",fields:[{name:"amount",type:{defined:"TrimmedAmount"}},{name:"sender",type:"publicKey"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientNttManager",type:{array:["u8",32]}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"releaseTimestamp",type:"i64"},{name:"released",type:{defined:"Bitmap"}}]}},{name:"outboxRateLimit",type:{kind:"struct",fields:[{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"registeredTransceiver",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"id",type:"u8"},{name:"transceiverAddress",type:"publicKey"}]}},{name:"transceiverPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}},{name:"bridgeData",type:{kind:"struct",fields:[{name:"guardianSetIndex",docs:["The current guardian set index, used to decide which signature sets to accept."],type:"u32"},{name:"lastLamports",docs:["Lamports in the collection account"],type:"u64"},{name:"config",docs:["Bridge configuration, which is set once upon initialization."],type:{defined:"BridgeConfig"}}]}}],types:[{name:"Bitmap",type:{kind:"struct",fields:[{name:"map",type:"u128"}]}},{name:"SetInboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"},{name:"chainId",type:{defined:"ChainId"}}]}},{name:"SetOutboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"}]}},{name:"SetPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}},{name:"limit",type:"u64"},{name:"tokenDecimals",docs:["The token decimals on the peer chain."],type:"u8"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"},{name:"limit",type:"u64"},{name:"mode",type:{defined:"Mode"}}]}},{name:"RedeemArgs",type:{kind:"struct",fields:[]}},{name:"ReleaseInboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"TransferArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"shouldQueue",type:"bool"}]}},{name:"ReleaseStatus",docs:["The status of an InboxItem. This determines whether the tokens are minted/unlocked to the recipient. As","such, this must be used as a state machine that moves forward in a linear manner. A state",'should never "move backward" to a previous state (e.g. should never move from `Released` to',"`ReleaseAfter`)."],type:{kind:"enum",variants:[{name:"NotApproved"},{name:"ReleaseAfter",fields:["i64"]},{name:"Released"}]}},{name:"RateLimitState",type:{kind:"struct",fields:[{name:"limit",docs:["The maximum capacity of the rate limiter."],type:"u64"},{name:"capacityAtLastTx",docs:["The capacity of the rate limiter at `last_tx_timestamp`.","The actual current capacity is calculated in `capacity_at`, by","accounting for the time that has passed since `last_tx_timestamp` and","the refill rate."],type:"u64"},{name:"lastTxTimestamp",docs:["The timestamp of the last transaction that counted towards the current","capacity. Transactions that exceeded the capacity do not count, they are","just delayed."],type:"i64"}]}},{name:"SetTransceiverPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}}]}},{name:"BroadcastPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"ReleaseOutboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"ChainId",type:{kind:"struct",fields:[{name:"id",type:"u16"}]}},{name:"Mode",type:{kind:"enum",variants:[{name:"Locking"},{name:"Burning"}]}},{name:"TrimmedAmount",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]}},{name:"BridgeConfig",type:{kind:"struct",fields:[{name:"guardianSetExpirationTime",docs:["Period for how long a guardian set is valid after it has been replaced by a new one. This","guarantees that VAAs issued by that set can still be submitted for a certain period. In","this period we still trust the old guardian set."],type:"u32"},{name:"fee",docs:["Amount of lamports that needs to be paid to the protocol to post a message"],type:"u64"}]}}],errors:[{code:6e3,name:"CantReleaseYet",msg:"CantReleaseYet"},{code:6001,name:"InvalidPendingOwner",msg:"InvalidPendingOwner"},{code:6002,name:"InvalidChainId",msg:"InvalidChainId"},{code:6003,name:"InvalidRecipientAddress",msg:"InvalidRecipientAddress"},{code:6004,name:"InvalidTransceiverPeer",msg:"InvalidTransceiverPeer"},{code:6005,name:"InvalidNttManagerPeer",msg:"InvalidNttManagerPeer"},{code:6006,name:"InvalidRecipientNttManager",msg:"InvalidRecipientNttManager"},{code:6007,name:"TransferAlreadyRedeemed",msg:"TransferAlreadyRedeemed"},{code:6008,name:"TransferCannotBeRedeemed",msg:"TransferCannotBeRedeemed"},{code:6009,name:"TransferNotApproved",msg:"TransferNotApproved"},{code:6010,name:"MessageAlreadySent",msg:"MessageAlreadySent"},{code:6011,name:"InvalidMode",msg:"InvalidMode"},{code:6012,name:"InvalidMintAuthority",msg:"InvalidMintAuthority"},{code:6013,name:"TransferExceedsRateLimit",msg:"TransferExceedsRateLimit"},{code:6014,name:"Paused",msg:"Paused"},{code:6015,name:"DisabledTransceiver",msg:"DisabledTransceiver"},{code:6016,name:"InvalidDeployer",msg:"InvalidDeployer"},{code:6017,name:"BadAmountAfterTransfer",msg:"BadAmountAfterTransfer"},{code:6018,name:"BadAmountAfterBurn",msg:"BadAmountAfterBurn"},{code:6019,name:"ZeroThreshold",msg:"ZeroThreshold"},{code:6020,name:"OverflowExponent",msg:"OverflowExponent"},{code:6021,name:"OverflowScaledAmount",msg:"OverflowScaledAmount"},{code:6022,name:"BitmapIndexOutOfBounds",msg:"BitmapIndexOutOfBounds"},{code:6023,name:"NoRegisteredTransceivers",msg:"NoRegisteredTransceivers"}]}});var lo,fo=Y(()=>{lo={version:"2.0.0",name:"wormhole_governance",instructions:[{name:"governance",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"governance",isMut:!0,isSigner:!1,docs:["governed program. This account is validated by Wormhole, not this program."]},{name:"vaa",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"replay",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"replayProtection",type:{kind:"struct",fields:[{name:"bump",type:"u8"}]}}],errors:[{code:6e3,name:"InvalidGovernanceChain",msg:"InvalidGovernanceChain"},{code:6001,name:"InvalidGovernanceEmitter",msg:"InvalidGovernanceEmitter"},{code:6002,name:"InvalidGovernanceProgram",msg:"InvalidGovernanceProgram"}]}});var cs,go=Y(()=>{uo();fo();(function(n){n.idl={ntt:Os,transceiver:Os,transceiverLegacy:Os,governance:lo}})(cs||(cs={}))});var po,ho=Y(()=>{po={version:"3.0.0",name:"example_native_token_transfers",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"deployer",isMut:!1,isSigner:!0},{name:"programData",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"rateLimit",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1,docs:["In any case, this function is used to set the Config and initialize the program so we","assume the caller of this function will have total control over the program.","",'TODO: Using `UncheckedAccount` here leads to "Access violation in stack frame ...".',"Could refactor code to use `Box<_>` to reduce stack size."]},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"custody",isMut:!0,isSigner:!1,docs:["The custody account that holds tokens in locking mode and temporarily","holds tokens in burning mode.","function if the token account has already been created."]},{name:"tokenProgram",isMut:!1,isSigner:!1,docs:["associated token account for the given mint."]},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"initializeLut",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"authority",isMut:!1,isSigner:!1},{name:"lutAddress",isMut:!0,isSigner:!1},{name:"lut",isMut:!0,isSigner:!1},{name:"lutProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"entries",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"custody",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"outboxRateLimit",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}]}],args:[{name:"recentSlot",type:"u64"}]},{name:"version",accounts:[],args:[],returns:"string"},{name:"transferBurn",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["Tokens are always transferred to the custody account first regardless of","the mode.","For an explanation, see the note in [`transfer_burn`]."]},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1,docs:["See [`crate::SESSION_AUTHORITY_SEED`] for an explanation of the flow."]},{name:"tokenAuthority",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"transferLock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["Tokens are always transferred to the custody account first regardless of","the mode.","For an explanation, see the note in [`transfer_burn`]."]},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1,docs:["See [`crate::SESSION_AUTHORITY_SEED`] for an explanation of the flow."]}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"redeem",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!1,isSigner:!1,docs:["`Account<T>` and `owner` constraints are mutually-exclusive"]},{name:"transceiver",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"inboxItem",isMut:!0,isSigner:!1,docs:["NOTE: This account is content-addressed (PDA seeded by the message hash).","This is because in a multi-transceiver configuration, the different",'transceivers "vote" on messages (by delivering them). By making the inbox',"items content-addressed, we can ensure that disagreeing votes don't","interfere with each other.","On the first call to [`redeem()`], [`InboxItem`] will be allocated and initialized with","default values.",'On subsequent calls, we want to modify the `InboxItem` by "voting" on it. Therefore the',"program should not fail which would occur when using the `init` constraint.","The [`InboxItem::init`] field is used to guard against malicious or accidental modification","InboxItem fields that should remain constant."]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RedeemArgs"}}]},{name:"releaseInboundMint",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}]},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"releaseInboundUnlock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"transferOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"newOwner",isMut:!1,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"transferOwnershipOneStepUnchecked",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"newOwner",isMut:!1,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"claimOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"newOwner",isMut:!1,isSigner:!0},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"acceptTokenAuthority",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}]},{name:"currentAuthority",isMut:!1,isSigner:!0}],args:[]},{name:"acceptTokenAuthorityFromMultisig",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}]},{name:"currentMultisigAuthority",isMut:!1,isSigner:!1}],args:[]},{name:"setTokenAuthorityOneStepUnchecked",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"newAuthority",isMut:!1,isSigner:!1}]},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setTokenAuthority",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"newAuthority",isMut:!1,isSigner:!1}]},{name:"rentPayer",isMut:!0,isSigner:!0},{name:"pendingTokenAuthority",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"revertTokenAuthority",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"rentPayer",isMut:!0,isSigner:!1},{name:"pendingTokenAuthority",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"owner",isMut:!1,isSigner:!0}],args:[]},{name:"claimTokenAuthority",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"rentPayer",isMut:!0,isSigner:!1},{name:"pendingTokenAuthority",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"newAuthority",isMut:!1,isSigner:!0}],args:[]},{name:"claimTokenAuthorityToMultisig",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"rentPayer",isMut:!0,isSigner:!1},{name:"pendingTokenAuthority",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"newMultisigAuthority",isMut:!1,isSigner:!1}],args:[]},{name:"setPaused",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"pause",type:"bool"}]},{name:"setPeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!0,isSigner:!1},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetPeerArgs"}}]},{name:"registerTransceiver",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"transceiver",isMut:!1,isSigner:!1,docs:["used here that wraps the Transceiver account type."]},{name:"registeredTransceiver",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"deregisterTransceiver",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"registeredTransceiver",isMut:!1,isSigner:!1}],args:[]},{name:"setOutboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetOutboundLimitArgs"}}]},{name:"setInboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetInboundLimitArgs"}}]},{name:"markOutboxItemAsReleased",accounts:[{name:"signer",isMut:!1,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1}],args:[],returns:"bool"},{name:"setThreshold",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"threshold",type:"u8"}]},{name:"setWormholePeer",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"peer",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetTransceiverPeerArgs"}}]},{name:"receiveWormholeMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"peer",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"releaseWormholeOutbound",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseOutboundArgs"}}]},{name:"broadcastWormholeId",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1,docs:["enforced by the [`CpiContext`] call in [`post_message`].","The seeds constraint ensures that this is the correct address"]},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[]},{name:"broadcastWormholePeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"BroadcastPeerArgs"}}]}],accounts:[{name:"config",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"owner",docs:["Owner of the program."],type:"publicKey"},{name:"pendingOwner",docs:["Pending next owner (before claiming ownership)."],type:{option:"publicKey"}},{name:"mint",docs:["Mint address of the token managed by this program."],type:"publicKey"},{name:"tokenProgram",docs:["Address of the token program (token or token22). This could always be queried","from the [`mint`] account's owner, but storing it here avoids an indirection","on the client side."],type:"publicKey"},{name:"mode",docs:["The mode that this program is running in. This is used to determine","whether the program is burning tokens or locking tokens."],type:{defined:"Mode"}},{name:"chainId",docs:["The chain id of the chain that this program is running on. We don't","hardcode this so that the program is deployable on any potential SVM","forks."],type:{defined:"ChainId"}},{name:"nextTransceiverId",docs:["The next transceiver id to use when registering an transceiver."],type:"u8"},{name:"threshold",docs:["The number of transceivers that must attest to a transfer before it is","accepted."],type:"u8"},{name:"enabledTransceivers",docs:["Bitmap of enabled transceivers.","The maximum number of transceivers is equal to [`Bitmap::BITS`]."],type:{defined:"Bitmap"}},{name:"paused",docs:["Pause the program. This is useful for upgrades and other maintenance."],type:"bool"},{name:"custody",docs:["The custody account that holds tokens in locking mode."],type:"publicKey"}]}},{name:"LUT",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:"publicKey"}]}},{name:"nttManagerPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}},{name:"tokenDecimals",type:"u8"}]}},{name:"pendingTokenAuthority",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"pendingAuthority",type:"publicKey"},{name:"rentPayer",type:"publicKey"}]}},{name:"inboxItem",type:{kind:"struct",fields:[{name:"init",type:"bool"},{name:"bump",type:"u8"},{name:"amount",type:"u64"},{name:"recipientAddress",type:"publicKey"},{name:"votes",type:{defined:"Bitmap"}},{name:"releaseStatus",type:{defined:"ReleaseStatus"}}]}},{name:"inboxRateLimit",docs:["Inbound rate limit per chain.","SECURITY: must check the PDA (since there are multiple PDAs, namely one for each chain.)"],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"outboxItem",type:{kind:"struct",fields:[{name:"amount",type:{defined:"TrimmedAmount"}},{name:"sender",type:"publicKey"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientNttManager",type:{array:["u8",32]}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"releaseTimestamp",type:"i64"},{name:"released",type:{defined:"Bitmap"}}]}},{name:"outboxRateLimit",type:{kind:"struct",fields:[{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"registeredTransceiver",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"id",type:"u8"},{name:"transceiverAddress",type:"publicKey"}]}},{name:"transceiverPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}},{name:"bridgeData",type:{kind:"struct",fields:[{name:"guardianSetIndex",docs:["The current guardian set index, used to decide which signature sets to accept."],type:"u32"},{name:"lastLamports",docs:["Lamports in the collection account"],type:"u64"},{name:"config",docs:["Bridge configuration, which is set once upon initialization."],type:{defined:"BridgeConfig"}}]}}],types:[{name:"Bitmap",type:{kind:"struct",fields:[{name:"map",type:"u128"}]}},{name:"SetInboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"},{name:"chainId",type:{defined:"ChainId"}}]}},{name:"SetOutboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"}]}},{name:"SetPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}},{name:"limit",type:"u64"},{name:"tokenDecimals",docs:["The token decimals on the peer chain."],type:"u8"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"},{name:"limit",type:"u64"},{name:"mode",type:{defined:"Mode"}}]}},{name:"RedeemArgs",type:{kind:"struct",fields:[]}},{name:"ReleaseInboundArgs",type:{kind:"struct",fields:[{name:"revertWhenNotReady",type:"bool"}]}},{name:"TransferArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"shouldQueue",type:"bool"}]}},{name:"ReleaseStatus",docs:["The status of an InboxItem. This determines whether the tokens are minted/unlocked to the recipient. As","such, this must be used as a state machine that moves forward in a linear manner. A state",'should never "move backward" to a previous state (e.g. should never move from `Released` to',"`ReleaseAfter`)."],type:{kind:"enum",variants:[{name:"NotApproved"},{name:"ReleaseAfter",fields:["i64"]},{name:"Released"}]}},{name:"RateLimitState",type:{kind:"struct",fields:[{name:"limit",docs:["The maximum capacity of the rate limiter."],type:"u64"},{name:"capacityAtLastTx",docs:["The capacity of the rate limiter at `last_tx_timestamp`.","The actual current capacity is calculated in `capacity_at`, by","accounting for the time that has passed since `last_tx_timestamp` and","the refill rate."],type:"u64"},{name:"lastTxTimestamp",docs:["The timestamp of the last transaction that counted towards the current","capacity. Transactions that exceeded the capacity do not count, they are","just delayed."],type:"i64"}]}},{name:"SetTransceiverPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}}]}},{name:"BroadcastPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"ReleaseOutboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"ChainId",type:{kind:"struct",fields:[{name:"id",type:"u16"}]}},{name:"Mode",type:{kind:"enum",variants:[{name:"Locking"},{name:"Burning"}]}},{name:"TrimmedAmount",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]}},{name:"BridgeConfig",type:{kind:"struct",fields:[{name:"guardianSetExpirationTime",docs:["Period for how long a guardian set is valid after it has been replaced by a new one. This","guarantees that VAAs issued by that set can still be submitted for a certain period. In","this period we still trust the old guardian set."],type:"u32"},{name:"fee",docs:["Amount of lamports that needs to be paid to the protocol to post a message"],type:"u64"}]}}],errors:[{code:6e3,name:"CantReleaseYet",msg:"CantReleaseYet"},{code:6001,name:"InvalidPendingOwner",msg:"InvalidPendingOwner"},{code:6002,name:"InvalidChainId",msg:"InvalidChainId"},{code:6003,name:"InvalidRecipientAddress",msg:"InvalidRecipientAddress"},{code:6004,name:"InvalidTransceiverPeer",msg:"InvalidTransceiverPeer"},{code:6005,name:"InvalidNttManagerPeer",msg:"InvalidNttManagerPeer"},{code:6006,name:"InvalidRecipientNttManager",msg:"InvalidRecipientNttManager"},{code:6007,name:"TransferAlreadyRedeemed",msg:"TransferAlreadyRedeemed"},{code:6008,name:"TransferCannotBeRedeemed",msg:"TransferCannotBeRedeemed"},{code:6009,name:"TransferNotApproved",msg:"TransferNotApproved"},{code:6010,name:"MessageAlreadySent",msg:"MessageAlreadySent"},{code:6011,name:"InvalidMode",msg:"InvalidMode"},{code:6012,name:"InvalidMintAuthority",msg:"InvalidMintAuthority"},{code:6013,name:"TransferExceedsRateLimit",msg:"TransferExceedsRateLimit"},{code:6014,name:"Paused",msg:"Paused"},{code:6015,name:"DisabledTransceiver",msg:"DisabledTransceiver"},{code:6016,name:"InvalidDeployer",msg:"InvalidDeployer"},{code:6017,name:"BadAmountAfterTransfer",msg:"BadAmountAfterTransfer"},{code:6018,name:"BadAmountAfterBurn",msg:"BadAmountAfterBurn"},{code:6019,name:"ZeroThreshold",msg:"ZeroThreshold"},{code:6020,name:"OverflowExponent",msg:"OverflowExponent"},{code:6021,name:"OverflowScaledAmount",msg:"OverflowScaledAmount"},{code:6022,name:"BitmapIndexOutOfBounds",msg:"BitmapIndexOutOfBounds"},{code:6023,name:"NoRegisteredTransceivers",msg:"NoRegisteredTransceivers"},{code:6024,name:"NotPaused",msg:"NotPaused"},{code:6025,name:"InvalidPendingTokenAuthority",msg:"InvalidPendingTokenAuthority"},{code:6026,name:"IncorrectRentPayer",msg:"IncorrectRentPayer"},{code:6027,name:"InvalidMultisig",msg:"InvalidMultisig"},{code:6028,name:"ThresholdTooHigh",msg:"ThresholdTooHigh"},{code:6029,name:"InvalidTransceiverProgram",msg:"InvalidTransceiverProgram"}]}});var yo,bo=Y(()=>{yo={version:"3.0.0",name:"ntt_transceiver",instructions:[{name:"transceiverType",accounts:[],args:[],returns:"string"},{name:"setWormholePeer",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"peer",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetTransceiverPeerArgs"}}]},{name:"receiveWormholeMessageInstructionData",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"peer",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!0,isSigner:!1},{name:"guardianSet",isMut:!1,isSigner:!1,docs:["Derivation is checked by the shim."]},{name:"guardianSignatures",isMut:!1,isSigner:!1,docs:["Ownership ownership and discriminator is checked by the shim."]},{name:"verifyVaaShim",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"guardianSetBump",type:"u8"},{name:"vaaBody",type:{defined:"VaaBodyData"}}]},{name:"postUnverifiedWormholeMessageAccount",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"message",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"PostUnverifiedMessageAccountArgs"}}]},{name:"closeUnverifiedWormholeMessageAccount",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"message",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"seed",type:"u64"}]},{name:"receiveWormholeMessageAccount",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"peer",isMut:!1,isSigner:!1},{name:"message",isMut:!0,isSigner:!1},{name:"transceiverMessage",isMut:!0,isSigner:!1},{name:"guardianSet",isMut:!1,isSigner:!1,docs:["Derivation is checked by the shim."]},{name:"guardianSignatures",isMut:!1,isSigner:!1,docs:["Ownership ownership and discriminator is checked by the shim."]},{name:"verifyVaaShim",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"guardianSetBump",type:"u8"},{name:"seed",type:"u64"}]},{name:"releaseWormholeOutbound",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"postMessageShim",isMut:!1,isSigner:!1},{name:"wormholePostMessageShimEa",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]},{name:"manager",isMut:!1,isSigner:!1},{name:"outboxItemSigner",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"ReleaseOutboundArgs"}}]},{name:"broadcastWormholeId",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1,docs:["enforced by the [`CpiContext`] call in [`post_message`].","The seeds constraint ensures that this is the correct address"]},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"postMessageShim",isMut:!1,isSigner:!1},{name:"wormholePostMessageShimEa",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[]},{name:"broadcastWormholePeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"postMessageShim",isMut:!1,isSigner:!1},{name:"wormholePostMessageShimEa",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"BroadcastPeerArgs"}}]}],accounts:[{name:"config",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"owner",docs:["Owner of the program."],type:"publicKey"},{name:"pendingOwner",docs:["Pending next owner (before claiming ownership)."],type:{option:"publicKey"}},{name:"mint",docs:["Mint address of the token managed by this program."],type:"publicKey"},{name:"tokenProgram",docs:["Address of the token program (token or token22). This could always be queried","from the [`mint`] account's owner, but storing it here avoids an indirection","on the client side."],type:"publicKey"},{name:"mode",docs:["The mode that this program is running in. This is used to determine","whether the program is burning tokens or locking tokens."],type:{defined:"Mode"}},{name:"chainId",docs:["The chain id of the chain that this program is running on. We don't","hardcode this so that the program is deployable on any potential SVM","forks."],type:{defined:"ChainId"}},{name:"nextTransceiverId",docs:["The next transceiver id to use when registering an transceiver."],type:"u8"},{name:"threshold",docs:["The number of transceivers that must attest to a transfer before it is","accepted."],type:"u8"},{name:"enabledTransceivers",docs:["Bitmap of enabled transceivers.","The maximum number of transceivers is equal to [`Bitmap::BITS`]."],type:{defined:"Bitmap"}},{name:"paused",docs:["Pause the program. This is useful for upgrades and other maintenance."],type:"bool"},{name:"custody",docs:["The custody account that holds tokens in locking mode."],type:"publicKey"}]}},{name:"outboxItem",type:{kind:"struct",fields:[{name:"amount",type:{defined:"TrimmedAmount"}},{name:"sender",type:"publicKey"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientNttManager",type:{array:["u8",32]}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"releaseTimestamp",type:"i64"},{name:"released",type:{defined:"Bitmap"}}]}},{name:"registeredTransceiver",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"id",type:"u8"},{name:"transceiverAddress",type:"publicKey"}]}},{name:"transceiverPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}},{name:"vaaBody",type:{kind:"struct",fields:[{name:"span",type:"bytes"}]}},{name:"bridgeData",type:{kind:"struct",fields:[{name:"guardianSetIndex",docs:["The current guardian set index, used to decide which signature sets to accept."],type:"u32"},{name:"lastLamports",docs:["Lamports in the collection account"],type:"u64"},{name:"config",docs:["Bridge configuration, which is set once upon initialization."],type:{defined:"BridgeConfig"}}]}}],types:[{name:"Bitmap",type:{kind:"struct",fields:[{name:"map",type:"u128"}]}},{name:"ChainId",type:{kind:"struct",fields:[{name:"id",type:"u16"}]}},{name:"Mode",type:{kind:"enum",variants:[{name:"Locking"},{name:"Burning"}]}},{name:"TrimmedAmount",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]}},{name:"VaaBodyData",type:{kind:"struct",fields:[{name:"span",type:"bytes"}]}},{name:"SetTransceiverPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}}]}},{name:"BroadcastPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"ReleaseOutboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"PostUnverifiedMessageAccountArgs",type:{kind:"struct",fields:[{name:"seed",type:"u64"},{name:"offset",type:"u32"},{name:"chunk",type:"bytes"},{name:"messageSize",type:"u32"}]}},{name:"BridgeConfig",type:{kind:"struct",fields:[{name:"guardianSetExpirationTime",docs:["Period for how long a guardian set is valid after it has been replaced by a new one. This","guarantees that VAAs issued by that set can still be submitted for a certain period. In","this period we still trust the old guardian set."],type:"u32"},{name:"fee",docs:["Amount of lamports that needs to be paid to the protocol to post a message"],type:"u64"}]}}]}});var Ao,wo=Y(()=>{Ao={version:"3.0.0",name:"ntt_transceiver",instructions:[{name:"transceiverType",accounts:[],args:[],returns:"string"},{name:"setWormholePeer",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"peer",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetTransceiverPeerArgs"}}]},{name:"receiveWormholeMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"peer",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"releaseWormholeOutbound",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]},{name:"manager",isMut:!1,isSigner:!1},{name:"outboxItemSigner",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"ReleaseOutboundArgs"}}]},{name:"broadcastWormholeId",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1,docs:["enforced by the [`CpiContext`] call in [`post_message`].","The seeds constraint ensures that this is the correct address"]},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[]},{name:"broadcastWormholePeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"BroadcastPeerArgs"}}]}],accounts:[{name:"config",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"owner",docs:["Owner of the program."],type:"publicKey"},{name:"pendingOwner",docs:["Pending next owner (before claiming ownership)."],type:{option:"publicKey"}},{name:"mint",docs:["Mint address of the token managed by this program."],type:"publicKey"},{name:"tokenProgram",docs:["Address of the token program (token or token22). This could always be queried","from the [`mint`] account's owner, but storing it here avoids an indirection","on the client side."],type:"publicKey"},{name:"mode",docs:["The mode that this program is running in. This is used to determine","whether the program is burning tokens or locking tokens."],type:{defined:"Mode"}},{name:"chainId",docs:["The chain id of the chain that this program is running on. We don't","hardcode this so that the program is deployable on any potential SVM","forks."],type:{defined:"ChainId"}},{name:"nextTransceiverId",docs:["The next transceiver id to use when registering an transceiver."],type:"u8"},{name:"threshold",docs:["The number of transceivers that must attest to a transfer before it is","accepted."],type:"u8"},{name:"enabledTransceivers",docs:["Bitmap of enabled transceivers.","The maximum number of transceivers is equal to [`Bitmap::BITS`]."],type:{defined:"Bitmap"}},{name:"paused",docs:["Pause the program. This is useful for upgrades and other maintenance."],type:"bool"},{name:"custody",docs:["The custody account that holds tokens in locking mode."],type:"publicKey"}]}},{name:"outboxItem",type:{kind:"struct",fields:[{name:"amount",type:{defined:"TrimmedAmount"}},{name:"sender",type:"publicKey"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientNttManager",type:{array:["u8",32]}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"releaseTimestamp",type:"i64"},{name:"released",type:{defined:"Bitmap"}}]}},{name:"registeredTransceiver",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"id",type:"u8"},{name:"transceiverAddress",type:"publicKey"}]}},{name:"transceiverPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}},{name:"bridgeData",type:{kind:"struct",fields:[{name:"guardianSetIndex",docs:["The current guardian set index, used to decide which signature sets to accept."],type:"u32"},{name:"lastLamports",docs:["Lamports in the collection account"],type:"u64"},{name:"config",docs:["Bridge configuration, which is set once upon initialization."],type:{defined:"BridgeConfig"}}]}}],types:[{name:"Bitmap",type:{kind:"struct",fields:[{name:"map",type:"u128"}]}},{name:"ChainId",type:{kind:"struct",fields:[{name:"id",type:"u16"}]}},{name:"Mode",type:{kind:"enum",variants:[{name:"Locking"},{name:"Burning"}]}},{name:"TrimmedAmount",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]}},{name:"SetTransceiverPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}}]}},{name:"BroadcastPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"ReleaseOutboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"BridgeConfig",type:{kind:"struct",fields:[{name:"guardianSetExpirationTime",docs:["Period for how long a guardian set is valid after it has been replaced by a new one. This","guarantees that VAAs issued by that set can still be submitted for a certain period. In","this period we still trust the old guardian set."],type:"u32"},{name:"fee",docs:["Amount of lamports that needs to be paid to the protocol to post a message"],type:"u64"}]}}]}});var xo,So=Y(()=>{xo={version:"3.0.0",name:"wormhole_governance",instructions:[{name:"governance",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"governance",isMut:!0,isSigner:!1,docs:["governed program. This account is validated by Wormhole, not this program."]},{name:"vaa",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"replay",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"replayProtection",type:{kind:"struct",fields:[{name:"bump",type:"u8"}]}}],errors:[{code:6e3,name:"InvalidGovernanceChain",msg:"InvalidGovernanceChain"},{code:6001,name:"InvalidGovernanceEmitter",msg:"InvalidGovernanceEmitter"},{code:6002,name:"InvalidGovernanceProgram",msg:"InvalidGovernanceProgram"}]}});var ms,ko=Y(()=>{ho();bo();wo();So();(function(n){n.idl={ntt:po,transceiver:yo,transceiverLegacy:Ao,governance:xo}})(ms||(ms={}))});var Ga=Y(()=>{mo();go();ko()});function Mo(n){for(let[e,t]of Hs)if(vo.Ntt.abiVersionMatches(n,e))return t;throw new Error(`Unknown IDL version: ${n}`)}function us(n,e,t){let{idl:{ntt:s}}=Mo(t);return new qa.Program(s,e,{connection:n})}function Ws(n,e,t,s=!1){let{idl:{transceiver:a,transceiverLegacy:i}}=Mo(t),r=s?i:a;return new qa.Program(r,e,{connection:n})}var qa,vo,Hs,Us=Y(()=>{qa=require("@coral-xyz/anchor");Ga();vo=require("@wormhole-foundation/sdk-definitions-ntt"),Hs=[["3.0.0",ms],["2.0.0",cs],["1.0.0",os]]});function ls(n){return an.PublicKey.findProgramAddressSync([new an.PublicKey(n).toBytes()],Qn)[0]}function rn(n){let e=n.split(".");if(e.length<3)throw new Error("Invalid version string");let t=e[2],s=t.split(/[^0-9]/)[0],a=t.slice(s.length);return[Number(e[0]),Number(e[1]),Number(s),a]}function Z(n,e){let t=s=>typeof s=="string"?ds.encoding.bytes.encode(s):s;return an.PublicKey.findProgramAddressSync(Array.isArray(n)?n.map(t):[t(n)],new an.PublicKey(e))[0]}var an,ds,za,Qn,Io,tp,on,ja,np,sp,Ns=Y(()=>{an=require("@solana/web3.js"),ds=require("@wormhole-foundation/sdk-base"),za=Rn(require("bn.js"),1),Qn=new an.PublicKey("BPFLoaderUpgradeab1e11111111111111111111111");Io=[{name:"length",binary:"uint",endianness:"little",size:4},{name:"version",binary:"bytes"}],tp={MAX:new za.default((2n**64n-1n).toString()),to:(n,e)=>{let t=new za.default(Math.round(n*e));if(t.isNeg())throw new Error("Value negative");if(t.bitLength()>64)throw new Error("Value too large");return t},from:(n,e)=>n.toNumber()/e};on=n=>ds.encoding.bignum.toBytes((0,ds.toChainId)(n),2),ja=n=>{let e=Buffer.isBuffer(n)?n:Buffer.from(n),t=6;if(e.length<6||!e[5])throw new Error("Invalid VAA");let s=e[5];return e.subarray(t+66*s)},np=new an.PublicKey(Buffer.from("owner".padEnd(32,"\0"))),sp=new an.PublicKey(Buffer.from("payer".padEnd(32,"\0")))});async function Ks(n,e,t,s,a,i,r,o,c){let m=J.getExtraAccountMetaAddress(a,t),g=await n.getAccountInfo(m,c);if(g==null)return e;let f=J.getExtraAccountMetas(g);if(![s,a,i,r].every(A=>e.keys.some(x=>x.pubkey.equals(A))))throw new Error("Missing required account in instruction");let y=J.createExecuteInstruction(t,s,a,i,r,m,BigInt(o));for(let A of f)y.keys.push(Dm(await J.resolveExtraAccountMeta(n,A,y.keys,y.data,y.programId),y.keys));e.keys.push(...y.keys.slice(5)),e.keys.push({pubkey:t,isSigner:!1,isWritable:!1}),e.keys.push({pubkey:m,isSigner:!1,isWritable:!1})}function Dm(n,e){let t=e.filter(s=>s.pubkey.equals(n.pubkey)).reduce((s,a)=>s?{isSigner:s.isSigner||a.isSigner,isWritable:s.isWritable||a.isWritable}:{isSigner:a.isSigner,isWritable:a.isWritable},void 0);if(t){let{isSigner:s,isWritable:a}=t;!s&&s!==n.isSigner&&(n.isSigner=!1),!a&&a!==n.isWritable&&(n.isWritable=!1)}return n}var cn,J,oe,he,To,Gs,$a,fs,Po,z,Co=Y(()=>{cn=require("@coral-xyz/anchor"),J=Rn(require("@solana/spl-token"),1),oe=require("@solana/web3.js"),he=require("@wormhole-foundation/sdk-base"),To=require("@wormhole-foundation/sdk-definitions"),Gs=Rn(require("bn.js"),1),$a=require("@wormhole-foundation/sdk-definitions-ntt"),fs=require("@solana/spl-token"),Po=require("@wormhole-foundation/sdk-solana-core");Us();Ns();(function(n){function e(l,d,u){return{amount:new Gs.default(l.toString()),recipientChain:{id:(0,he.toChainId)(d.chain)},recipientAddress:Array.from(d.address.toUniversalAddress().toUint8Array()),shouldQueue:u}}n.transferArgs=e,n.pdas=l=>({configAccount:()=>Z("config",l),outboxRateLimitAccount:()=>Z("outbox_rate_limit",l),inboxRateLimitAccount:qe=>Z(["inbox_rate_limit",on(qe)],l),inboxItemAccount:(qe,Ze)=>Z(["inbox_item",$a.Ntt.messageDigest(qe,Ze)],l),upgradeLock:()=>Z("upgrade_lock",l),sessionAuthority:(qe,Ze)=>Z(["session_authority",qe.toBytes(),(0,To.keccak256)(he.encoding.bytes.concat(he.encoding.bytes.zpad(new Uint8Array(Ze.amount.toArray()),8),on(Ze.recipientChain.id),new Uint8Array(Ze.recipientAddress),new Uint8Array([Ze.shouldQueue?1:0])))],l),tokenAuthority:()=>Z("token_authority",l),pendingTokenAuthority:()=>Z("pending_token_authority",l),peerAccount:qe=>Z(["peer",on(qe)],l),registeredTransceiver:qe=>Z(["registered_transceiver",qe.toBytes()],l),lutAccount:()=>Z("lut",l),lutAuthority:()=>Z("lut_authority",l)}),n.transceiverPdas=l=>{let d=()=>Z("emitter",l);return{emitterAccount:d,outboxItemSigner:()=>Z(["outbox_item_signer"],l),transceiverPeerAccount:W=>Z(["transceiver_peer",on(W)],l),transceiverMessageAccount:(W,ce)=>Z(["transceiver_message",on(W),ce],l),unverifiedMessageAccount:(W,ce)=>Z(["vaa_body",W.toBytes(),new Uint8Array(ce.toArray("be"))],l),wormholeMessageAccount:W=>Z(["message",W.toBytes()],l),wormholeMessageWithShimAccount:W=>Z(d().toBytes(),W)}};async function t(l,d,u){if(!u){let Qe=l.rpcEndpoint===he.rpc.rpcAddress("Devnet","Solana")?"6sbzC1eH4FTujJXWj51eQe25cYvr4xfXbJ1vAj7j2k5J":l.rpcEndpoint.startsWith("http://localhost")?"98evdAiWr7ey9MAQzoQQMwFQkTsSR6KkWQuFqKrgwNwb":"Hk3SdYTJFpawrvRz4qRztuEt2SqoCG7BGj2yJfDJSFbJ";u=new oe.PublicKey(Qe)}let p=us(l,d.toString(),"1.0.0"),_=await p.methods.version().accountsStrict({}).instruction(),{blockhash:Q}=await p.provider.connection.getLatestBlockhash("finalized"),ee=new oe.TransactionMessage({payerKey:u,recentBlockhash:Q,instructions:[_]}).compileToV0Message(),we=new oe.VersionedTransaction(ee),W=await p.provider.connection.simulateTransaction(we,{sigVerify:!1});if(!W.value.returnData||W.value.err)throw new Error("Could not fetch IDL version: "+JSON.stringify((0,cn.translateError)(W.value.err,(0,cn.parseIdlErrors)(p.idl))));let ce=he.encoding.b64.decode(W.value.returnData?.data[0]),Ge=(0,he.deserializeLayout)(Io,ce),Pe=he.encoding.bytes.decode(Ge.version);for(let[Qe]of Hs)if($a.Ntt.abiVersionMatches(Pe,Qe))return Qe;throw new Error(`Unknown IDL version: ${Pe}`)}n.getVersion=t;async function s(l,d,u){let[p,,,]=rn(l.idl.version),_=d.mode==="burning"?{burning:{}}:{locking:{}},Q=(0,he.toChainId)(d.chain);u=u??n.pdas(l.programId);let ee=new Gs.default(d.outboundLimit.toString());return l.methods.initialize({chainId:Q,limit:ee,mode:_}).accounts({payer:d.payer,deployer:d.owner,programData:ls(l.programId),config:u.configAccount(),mint:d.mint,rateLimit:u.outboxRateLimitAccount(),tokenProgram:d.tokenProgram,tokenAuthority:u.tokenAuthority(),...p>=3&&{multisigTokenAuthority:d.multisigTokenAuthority??null},custody:await n.custodyAccountAddress(u,d.mint,d.tokenProgram),bpfLoaderUpgradeableProgram:Qn,associatedTokenProgram:J.ASSOCIATED_TOKEN_PROGRAM_ID,systemProgram:oe.SystemProgram.programId}).instruction()}n.createInitializeInstruction=s;async function a(l,d,u,p,_){let[Q,,,]=rn(l.idl.version);if(Q<2)return;_=_??n.pdas(l.programId);let ee=await l.provider.connection.getSlot()-1,[we,W]=cn.web3.AddressLookupTableProgram.createLookupTable({authority:_.lutAuthority(),payer:p.payer,recentSlot:ee}),ce=Po.utils.getWormholeDerivedAccounts(u,p.wormholeId.toString()),Ge={config:_.configAccount(),custody:d.custody,tokenProgram:d.tokenProgram,mint:d.mint,tokenAuthority:_.tokenAuthority(),outboxRateLimit:_.outboxRateLimitAccount(),wormhole:{bridge:ce.wormholeBridge,feeCollector:ce.wormholeFeeCollector,sequence:ce.wormholeSequence,program:p.wormholeId,systemProgram:oe.SystemProgram.programId,clock:cn.web3.SYSVAR_CLOCK_PUBKEY,rent:cn.web3.SYSVAR_RENT_PUBKEY}},Pe=Ze=>{let vs=new Array;for(let ns in Ze){let Ms=Ze[ns];Ms instanceof oe.PublicKey?vs.push(Ms):typeof Ms=="object"&&vs.push(...Pe(Ms))}return vs},Qe=Pe(Ge).map(Ze=>Ze.toBase58()),qe=await Nt(l,_);if(qe!==null){let Ze=qe.state.addresses?.map(ns=>ns.toBase58())??[];if(Qe.filter(ns=>!Ze.includes(ns)).length===0)return null}return l.methods.initializeLut(new Gs.default(ee)).accountsStrict({payer:p.payer,owner:p.owner,authority:_.lutAuthority(),lutAddress:W,lut:_.lutAccount(),lutProgram:oe.AddressLookupTableProgram.programId,systemProgram:oe.SystemProgram.programId,entries:Ge}).instruction()}n.initializeOrUpdateLUT=a;async function i(l,d,u,p){p=p??n.pdas(l.programId);let _=await Ae(p,d),Q=(0,he.toChain)(u.transferArgs.recipientChain.id),ee=await l.methods.transferBurn(u.transferArgs).accountsStrict({common:{payer:u.payer,config:{config:p.configAccount()},mint:d.mint,from:u.from,tokenProgram:d.tokenProgram,outboxItem:u.outboxItem,outboxRateLimit:p.outboxRateLimitAccount(),systemProgram:oe.SystemProgram.programId,custody:_},peer:p.peerAccount(Q),inboxRateLimit:p.inboxRateLimitAccount(Q),sessionAuthority:p.sessionAuthority(u.fromAuthority,u.transferArgs),tokenAuthority:p.tokenAuthority()}).instruction(),we=await J.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),W=J.getTransferHook(we);if(W){let ce=u.from,Ge=d.mint,Pe=await Ae(p,d),Qe=p.sessionAuthority(u.fromAuthority,u.transferArgs);await Ks(l.provider.connection,ee,W.programId,ce,Ge,Pe,Qe,0)}return ee}n.createTransferBurnInstruction=i;async function r(l,d,u,p){if(d.paused)throw new Error("Contract is paused");p=p??n.pdas(l.programId);let _=(0,he.toChain)(u.transferArgs.recipientChain.id),Q=await Ae(p,d),ee=await l.methods.transferLock(u.transferArgs).accountsStrict({common:{payer:u.payer,config:{config:p.configAccount()},mint:d.mint,from:u.from,tokenProgram:d.tokenProgram,outboxItem:u.outboxItem,outboxRateLimit:p.outboxRateLimitAccount(),custody:Q,systemProgram:oe.SystemProgram.programId},peer:p.peerAccount(_),inboxRateLimit:p.inboxRateLimitAccount(_),sessionAuthority:p.sessionAuthority(u.fromAuthority,u.transferArgs),custody:Q}).instruction(),we=await J.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),W=J.getTransferHook(we);if(W){let ce=u.from,Ge=await Ae(p,d),Pe=p.sessionAuthority(u.fromAuthority,u.transferArgs);await Ks(l.provider.connection,ee,W.programId,ce,d.mint,Ge,Pe,0)}return ee}n.createTransferLockInstruction=r;async function o(l,d,u,p){let[_,,,]=rn(l.idl.version);p=p??n.pdas(l.programId);let Q=await J.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),ee=null;Q.mintAuthority?.equals(p.tokenAuthority())||(ee=Q.mintAuthority);let we=u.recipient??(await _t(l,u.chain,u.nttMessage)).recipientAddress,W=await l.methods.releaseInboundMint({revertOnDelay:u.revertWhenNotReady,revertWhenNotReady:u.revertWhenNotReady}).accounts({common:{payer:u.payer,config:{config:p.configAccount()},inboxItem:p.inboxItemAccount(u.chain,u.nttMessage),recipient:(0,fs.getAssociatedTokenAddressSync)(d.mint,we,!0,d.tokenProgram),mint:d.mint,tokenAuthority:p.tokenAuthority(),tokenProgram:d.tokenProgram,custody:await Ae(p,d)},..._>=3&&{multisigTokenAuthority:ee}}).instruction(),ce=J.getTransferHook(Q);if(ce){let Ge=await Ae(p,d),Pe=d.mint,Qe=(0,fs.getAssociatedTokenAddressSync)(Pe,we,!0,d.tokenProgram),qe=p.tokenAuthority();await Ks(l.provider.connection,W,ce.programId,Ge,Pe,Qe,qe,0)}return W}n.createReleaseInboundMintInstruction=o;async function c(l,d,u,p){let _=u.recipient??(await n.getInboxItem(l,u.chain,u.nttMessage)).recipientAddress;p=p??n.pdas(l.programId);let Q=await Ae(p,d),ee=await l.methods.releaseInboundUnlock({revertOnDelay:u.revertWhenNotReady,revertWhenNotReady:u.revertWhenNotReady}).accountsStrict({common:{payer:u.payer,config:{config:p.configAccount()},inboxItem:p.inboxItemAccount(u.chain,u.nttMessage),recipient:(0,fs.getAssociatedTokenAddressSync)(d.mint,_,!0,d.tokenProgram),mint:d.mint,tokenAuthority:p.tokenAuthority(),tokenProgram:d.tokenProgram,custody:Q},custody:Q}).instruction(),we=await J.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),W=J.getTransferHook(we);if(W){let ce=await Ae(p,d),Ge=d.mint,Pe=(0,fs.getAssociatedTokenAddressSync)(Ge,_,!0,d.tokenProgram),Qe=p.tokenAuthority();await Ks(l.provider.connection,ee,W.programId,ce,Ge,Pe,Qe,0)}return ee}n.createReleaseInboundUnlockInstruction=c;async function m(l,d,u){return u=u??n.pdas(l.programId),l.methods.transferOwnershipOneStepUnchecked().accountsStrict({config:u.configAccount(),owner:d.owner,newOwner:d.newOwner,upgradeLock:u.upgradeLock(),programData:ls(l.programId),bpfLoaderUpgradeableProgram:Qn}).instruction()}n.createTransferOwnershipOneStepUncheckedInstruction=m;async function g(l,d,u){return u=u??n.pdas(l.programId),l.methods.transferOwnership().accountsStrict({config:u.configAccount(),owner:d.owner,newOwner:d.newOwner,upgradeLock:u.upgradeLock(),programData:ls(l.programId),bpfLoaderUpgradeableProgram:Qn}).instruction()}n.createTransferOwnershipInstruction=g;async function f(l,d,u){return u=u??n.pdas(l.programId),l.methods.claimOwnership().accountsStrict({config:u.configAccount(),newOwner:d.newOwner,upgradeLock:u.upgradeLock(),programData:ls(l.programId),bpfLoaderUpgradeableProgram:Qn}).instruction()}n.createClaimOwnershipInstruction=f;async function y(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.acceptTokenAuthority().accountsStrict({common:{config:p.configAccount(),mint:d.mint,tokenProgram:d.tokenProgram,tokenAuthority:p.tokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},currentAuthority:u.currentAuthority}).instruction()}n.createAcceptTokenAuthorityInstruction=y;async function A(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.acceptTokenAuthorityFromMultisig().accountsStrict({common:{config:p.configAccount(),mint:d.mint,tokenProgram:d.tokenProgram,tokenAuthority:p.tokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},currentMultisigAuthority:u.currentMultisigAuthority}).remainingAccounts(u.additionalSigners.map(_=>({pubkey:_,isSigner:!0,isWritable:!1}))).instruction()}n.createAcceptTokenAuthorityFromMultisigInstruction=A;async function x(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.setTokenAuthorityOneStepUnchecked().accountsStrict({common:{config:p.configAccount(),tokenAuthority:p.tokenAuthority(),mint:d.mint,owner:u.owner,newAuthority:u.newAuthority,multisigTokenAuthority:u.multisigTokenAuthority??null},tokenProgram:d.tokenProgram}).instruction()}n.createSetTokenAuthorityOneStepUncheckedInstruction=x;async function S(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.setTokenAuthority().accountsStrict({common:{config:p.configAccount(),tokenAuthority:p.tokenAuthority(),mint:d.mint,owner:u.owner,newAuthority:u.newAuthority,multisigTokenAuthority:u.multisigTokenAuthority??null},rentPayer:u.rentPayer,pendingTokenAuthority:p.pendingTokenAuthority(),systemProgram:oe.SystemProgram.programId}).instruction()}n.createSetTokenAuthorityInstruction=S;async function B(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.revertTokenAuthority().accountsStrict({common:{config:p.configAccount(),mint:d.mint,tokenAuthority:p.tokenAuthority(),tokenProgram:d.tokenProgram,systemProgram:oe.SystemProgram.programId,rentPayer:u.rentPayer,pendingTokenAuthority:p.pendingTokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},owner:u.owner}).instruction()}n.createRevertTokenAuthorityInstruction=B;async function k(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.claimTokenAuthority().accountsStrict({common:{config:p.configAccount(),mint:d.mint,tokenAuthority:p.tokenAuthority(),tokenProgram:d.tokenProgram,systemProgram:oe.SystemProgram.programId,rentPayer:u.rentPayer,pendingTokenAuthority:p.pendingTokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},newAuthority:u.newAuthority}).instruction()}n.createClaimTokenAuthorityInstruction=k;async function F(l,d,u,p){return p=p??n.pdas(l.programId),l.methods.claimTokenAuthorityToMultisig().accountsStrict({common:{config:p.configAccount(),mint:d.mint,tokenAuthority:p.tokenAuthority(),tokenProgram:d.tokenProgram,systemProgram:oe.SystemProgram.programId,rentPayer:u.rentPayer,pendingTokenAuthority:p.pendingTokenAuthority(),multisigTokenAuthority:u.multisigTokenAuthority??null},newMultisigAuthority:u.newMultisigAuthority}).remainingAccounts(u.additionalSigners.map(_=>({pubkey:_,isSigner:!0,isWritable:!1}))).instruction()}n.createClaimTokenAuthorityToMultisigInstruction=F;async function M(l,d,u){return u=u??n.pdas(l.programId),l.methods.setPeer({chainId:{id:(0,he.toChainId)(d.chain)},address:Array.from(d.address),limit:d.limit,tokenDecimals:d.tokenDecimals}).accounts({payer:d.payer,owner:d.owner,config:u.configAccount(),peer:u.peerAccount(d.chain),inboxRateLimit:u.inboxRateLimitAccount(d.chain)}).instruction()}n.createSetPeerInstruction=M;async function H(l,d,u){return u=u??n.pdas(l.programId),l.methods.setPaused(d.paused).accountsStrict({owner:d.owner,config:u.configAccount()}).instruction()}n.createSetPausedInstruction=H;async function N(l,d,u){return u=u??n.pdas(l.programId),l.methods.setThreshold(d.threshold).accountsStrict({owner:d.owner,config:u.configAccount()}).instruction()}n.createSetThresholdInstruction=N;async function I(l,d,u){return u=u??n.pdas(l.programId),l.methods.setOutboundLimit({limit:d.limit}).accounts({owner:d.owner,config:u.configAccount(),rateLimit:u.outboxRateLimitAccount()}).instruction()}n.createSetOutboundLimitInstruction=I;async function $(l,d,u){return u=u??n.pdas(l.programId),l.methods.setInboundLimit({chainId:{id:(0,he.toChainId)(d.chain)},limit:d.limit}).accounts({owner:d.owner,config:u.configAccount(),rateLimit:u.inboxRateLimitAccount(d.chain)}).instruction()}n.createSetInboundLimitInstruction=$;async function Ke(l,d,u,p,_,Q){_=_??n.pdas(l.programId),Q=Q??n.transceiverPdas(u);let ee=p.vaa,we=ee.payload.nttManagerPayload,W=ee.emitterChain;return l.methods.redeem({}).accounts({payer:p.payer,config:_.configAccount(),peer:_.peerAccount(W),transceiverMessage:Q.transceiverMessageAccount(W,we.id),transceiver:_.registeredTransceiver(u),mint:d.mint,inboxItem:_.inboxItemAccount(W,we),inboxRateLimit:_.inboxRateLimitAccount(W),outboxRateLimit:_.outboxRateLimitAccount()}).instruction()}n.createRedeemInstruction=Ke;async function Je(l,d){return l.account.config.fetch(d.configAccount())}n.getConfig=Je;async function _t(l,d,u){return l.account.inboxItem.fetch(n.pdas(l.programId).inboxItemAccount(d,u))}n.getInboxItem=_t;async function Nt(l,d){let[u,,,]=rn(l.idl.version);if(u<2)return null;d=d??n.pdas(l.programId);let p=await l.account.lut.fetchNullable(d.lutAccount());if(!p)return null;let _=await l.provider.connection.getAddressLookupTable(p.address);if(_.value===null)throw new Error("Could not fetch LUT");return _.value}n.getAddressLookupTable=Nt;async function Ae(l,d,u=J.TOKEN_PROGRAM_ID){return d instanceof oe.PublicKey?J.getAssociatedTokenAddress(d,l.tokenAuthority(),!0,u):J.getAssociatedTokenAddress(d.mint,l.tokenAuthority(),!0,d.tokenProgram)}n.custodyAccountAddress=Ae})(z||(z={}))});var Ya=Y(()=>{Co();Us();Ga()});var Eo,Bo=Y(()=>{Eo={version:"0.0.0",name:"wormhole_post_message_shim",instructions:[{name:"postMessage",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"message",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!0},{name:"sequence",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"nonce",type:"u32"},{name:"consistencyLevel",type:{defined:"finality"}},{name:"payload",type:"bytes"}]}],events:[{name:"messageEvent",fields:[{name:"emitter",type:"publicKey",index:!1},{name:"sequence",type:"u64",index:!1},{name:"submissionTime",type:"u32",index:!1}]}],types:[{name:"finality",type:{kind:"enum",variants:[{name:"confirmed"},{name:"finalized"}]}}]}});var Ro,Lo=Y(()=>{Ro={version:"0.0.0",name:"wormholeVerifyVaaShim",instructions:[{name:"closeSignatures",accounts:[{name:"guardianSignatures",isMut:!0,isSigner:!1},{name:"refundRecipient",isMut:!0,isSigner:!0}],args:[]},{name:"postSignatures",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"guardianSignatures",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"guardianSetIndex",type:"u32"},{name:"totalSignatures",type:"u8"},{name:"guardianSignatures",type:{vec:{array:["u8",66]}}}]},{name:"verifyHash",accounts:[{name:"guardianSet",isMut:!1,isSigner:!1},{name:"guardianSignatures",isMut:!1,isSigner:!1}],args:[{name:"guardianSetBump",type:"u8"},{name:"digest",type:{array:["u8",32]}}]}],accounts:[{name:"guardianSignatures",type:{kind:"struct",fields:[{name:"refundRecipient",type:"publicKey"},{name:"guardianSetIndexBe",type:{array:["u8",4]}},{name:"guardianSignatures",type:{vec:{array:["u8",66]}}}]}}]}});var Ja,Ue,E,Qa,Cn,Za,G,Tn,Pn,gs,ps,ei=Y(()=>{Ja=require("@coral-xyz/anchor"),Ue=Rn(require("@solana/spl-token"),1),E=require("@solana/web3.js"),Qa=require("@wormhole-foundation/sdk-base"),Cn=require("@wormhole-foundation/sdk-definitions"),Za=require("@wormhole-foundation/sdk-definitions-ntt"),G=require("@wormhole-foundation/sdk-solana"),Tn=require("@wormhole-foundation/sdk-solana-core"),Pn=Rn(require("bn.js"),1);Us();Ya();Ns();Bo();Lo();gs=class{manager;program;version;svmShims;programId;pdas;postMessageShim;verifyVaaShim;constructor(e,t,s="3.0.0",a=void 0){if(this.manager=e,this.program=t,this.version=s,this.svmShims=a,this.programId=t.programId,this.pdas=z.transceiverPdas(t.programId),a){let i=a.postMessageShimOverride??Za.Ntt.DEFAULT_SVM_SHIM_ADDRESSES[this.manager.chain]?.postMessageShim;if(!i)throw new Error("No default or override Wormhole Post Message Shim address provided");this.postMessageShim=new Ja.Program(Eo,i,{connection:this.program.provider.connection});let r=a.verifyVaaShimOverride??Za.Ntt.DEFAULT_SVM_SHIM_ADDRESSES[this.manager.chain]?.verifyVaaShim;if(!r)throw new Error("No default or override Wormhole Verify VAA Shim address provided");this.verifyVaaShim=new Ja.Program(Ro,r,{connection:this.program.provider.connection})}}async getPauser(){return null}async*setPauser(e,t){throw new Error("Method not implemented.")}async*receive(e,t){if(e.payloadName!=="WormholeTransfer")throw new Error("Invalid attestation payload");let s=new G.SolanaAddress(t).unwrap(),a=await this.createReceiveIx(e,s),i=new E.Transaction;i.feePayer=s,i.add(a),yield this.manager.createUnsignedTx({transaction:i},"Ntt.Redeem")}async createReceiveIx(e,t,s,a=!1){let i=e.payload.nttManagerPayload,r=e.emitterChain;if(this.verifyVaaShim){if(!s)throw new Error("guardianSignatures must be passed in if Wormhole Verify VAA Shim is used");let o=Buffer.alloc(4);o.writeUInt32BE(e.guardianSet);let[c,m]=E.PublicKey.findProgramAddressSync([Buffer.from("GuardianSet"),o],this.manager.core.coreBridge.programId);if(a){let g=new Pn.default(e.hash.subarray(-8));return this.program.methods.receiveWormholeMessageAccount(m,g).accounts({payer:t,config:{config:this.manager.pdas.configAccount()},peer:this.pdas.transceiverPeerAccount(r),message:this.pdas.unverifiedMessageAccount(t,g),transceiverMessage:this.pdas.transceiverMessageAccount(r,i.id),guardianSet:c,guardianSignatures:s,verifyVaaShim:this.verifyVaaShim.programId}).instruction()}else return this.program.methods.receiveWormholeMessageInstructionData(m,{span:ja((0,Cn.serialize)(e))}).accounts({payer:t,config:{config:this.manager.pdas.configAccount()},peer:this.pdas.transceiverPeerAccount(r),transceiverMessage:this.pdas.transceiverMessageAccount(r,i.id),guardianSet:c,guardianSignatures:s,verifyVaaShim:this.verifyVaaShim.programId}).instruction()}else return this.program.methods.receiveWormholeMessage().accounts({payer:t,config:{config:this.manager.pdas.configAccount()},peer:this.pdas.transceiverPeerAccount(r),vaa:Tn.utils.derivePostedVaaKey(this.manager.core.address,Buffer.from(e.hash)),transceiverMessage:this.pdas.transceiverMessageAccount(r,i.id)}).instruction()}async*postUnverifiedMessageAccount(e,t,s=500,a=2){if(s<=0||a<=0)throw new Error("Chunks and batches should be positive integers");let i=new Pn.default(e.hash.subarray(-8)),r=ja((0,Cn.serialize)(e)),o=r.length,c=[],m=0;for(;m<o;){let g=r.subarray(m,m+s);if(c.push(this.program.methods.postUnverifiedWormholeMessageAccount({seed:i,offset:m,chunk:g,messageSize:o}).accounts({payer:t,message:this.pdas.unverifiedMessageAccount(t,i)}).instruction()),c.length===a){let f=new E.Transaction;f.feePayer=t,f.add(...await Promise.all(c)),yield this.manager.createUnsignedTx({transaction:f},"Ntt.PostUnverifiedWormholeMessageAccount"),c.length=0}m+=s}if(c.length>0){let g=new E.Transaction;g.feePayer=t,g.add(...await Promise.all(c)),yield this.manager.createUnsignedTx({transaction:g},"Ntt.PostUnverifiedWormholeMessageAccount")}}async*closeUnverifiedMessageAccount(e,t){let s=new Pn.default(t.hash.subarray(-8)),a=await this.program.methods.closeUnverifiedWormholeMessageAccount(s).accounts({payer:e,message:this.pdas.unverifiedMessageAccount(e,s)}).instruction(),i=new E.Transaction;i.feePayer=e,i.add(a),yield this.manager.createUnsignedTx({transaction:i},"Ntt.CloseUnverifiedWormholeMessageAccount")}async getTransceiverType(e){let[t,,,]=rn(this.version);if(t<3)return"wormhole";let s=new G.SolanaAddress(e).unwrap(),a=await this.program.methods.transceiverType().accountsStrict({}).instruction(),i=await this.program.provider.connection.getLatestBlockhash(),r=new E.TransactionMessage({payerKey:s,recentBlockhash:i.blockhash,instructions:[a]}).compileToV0Message(),o=new E.VersionedTransaction(r),c=await this.program.provider.connection.simulateTransaction(o,{sigVerify:!1});if(c.value.returnData?.data[0]){let m=Buffer.from(c.value.returnData?.data[0],"base64"),g=m.readUInt32LE(0);return m.subarray(4,g+4).toString()}else throw new Error("no transceiver type found")}async getAddress(){return{chain:this.manager.chain,address:(0,Cn.toUniversal)(this.manager.chain,this.pdas.emitterAccount().toBase58())}}async*setPeer(e,t){let s=new G.SolanaAddress(t).unwrap(),a=await this.program.methods.setWormholePeer({chainId:{id:(0,Qa.toChainId)(e.chain)},address:Array.from(e.address.toUniversalAddress().toUint8Array())}).accounts({payer:s,owner:s,config:this.manager.pdas.configAccount(),peer:this.pdas.transceiverPeerAccount(e.chain)}).instruction(),i=this.postMessageShim?void 0:E.Keypair.generate(),r=await this.createBroadcastWormholePeerIx(e.chain,s,i?.publicKey),o=new E.Transaction;o.feePayer=s,o.add(a,r),yield this.manager.createUnsignedTx({transaction:o,signers:i?[i]:[]},"Ntt.SetWormholeTransceiverPeer")}async getPeer(e){let t=await this.manager.program.account.transceiverPeer.fetchNullable(this.pdas.transceiverPeerAccount(e));return t?{chain:e,address:(0,Cn.toUniversal)(e,new Uint8Array(t.address))}:null}async createBroadcastWormholeIdIx(e,t,s){if(!this.postMessageShim&&!s)throw new Error("wormholeMessage must be passed in if Wormhole Post Message Shim is not configured");let a=Tn.utils.getWormholeDerivedAccounts(this.program.programId,this.manager.core.address);return s=this.postMessageShim?this.pdas.wormholeMessageWithShimAccount(this.postMessageShim.programId):s,this.program.methods.broadcastWormholeId().accounts({payer:e,config:this.manager.pdas.configAccount(),mint:t.mint,wormholeMessage:s,emitter:a.wormholeEmitter,wormhole:{bridge:a.wormholeBridge,feeCollector:a.wormholeFeeCollector,sequence:a.wormholeSequence,program:this.manager.core.address,...this.postMessageShim&&{postMessageShim:this.postMessageShim.programId,wormholePostMessageShimEa:Z(["__event_authority"],this.postMessageShim.programId)}}}).instruction()}async createBroadcastWormholePeerIx(e,t,s){if(!this.postMessageShim&&!s)throw new Error("wormholeMessage must be passed in if Wormhole Post Message Shim is not configured");let a=Tn.utils.getWormholeDerivedAccounts(this.program.programId,this.manager.core.address);return s=this.postMessageShim?this.pdas.wormholeMessageWithShimAccount(this.postMessageShim.programId):s,this.program.methods.broadcastWormholePeer({chainId:(0,Qa.toChainId)(e)}).accounts({payer:t,config:this.manager.pdas.configAccount(),peer:this.pdas.transceiverPeerAccount(e),wormholeMessage:s,emitter:a.wormholeEmitter,wormhole:{bridge:a.wormholeBridge,feeCollector:a.wormholeFeeCollector,sequence:a.wormholeSequence,program:this.manager.core.address,...this.postMessageShim&&{postMessageShim:this.postMessageShim.programId,wormholePostMessageShimEa:Z(["__event_authority"],this.postMessageShim.programId)}}}).instruction()}async createReleaseWormholeOutboundIx(e,t,s){let[a,,,]=rn(this.version),i=Tn.utils.getWormholeDerivedAccounts(this.program.programId,this.manager.core.address),r=this.postMessageShim?this.pdas.wormholeMessageWithShimAccount(this.postMessageShim.programId):this.pdas.wormholeMessageAccount(t);return this.program.methods.releaseWormholeOutbound({revertOnDelay:s}).accounts({payer:e,config:{config:this.manager.pdas.configAccount()},outboxItem:t,wormholeMessage:r,emitter:i.wormholeEmitter,transceiver:this.manager.pdas.registeredTransceiver(this.program.programId),wormhole:{bridge:i.wormholeBridge,feeCollector:i.wormholeFeeCollector,sequence:i.wormholeSequence,program:this.manager.core.address,...this.postMessageShim&&{postMessageShim:this.postMessageShim.programId,wormholePostMessageShimEa:Z(["__event_authority"],this.postMessageShim.programId)}},...a>=3&&{manager:this.manager.program.programId,outboxItemSigner:this.pdas.outboxItemSigner()}}).instruction()}},ps=class n{network;chain;connection;contracts;version;core;pdas;program;config;addressLookupTable;transceivers;managerAddress;tokenAddress;constructor(e,t,s,a,i="3.0.0"){if(this.network=e,this.chain=t,this.connection=s,this.contracts=a,this.version=i,!a.ntt)throw new Error("Ntt contracts not found");this.program=us(s,a.ntt.manager,i),this.transceivers=[],"wormhole"in a.ntt.transceiver&&a.ntt.transceiver.wormhole&&["wormhole",...Object.keys(a.ntt.transceiver).filter(o=>o!=="wormhole")].map(o=>{if(o!=="wormhole")throw new Error(`Unsupported transceiver type: ${o}`);let c=new E.PublicKey(a.ntt.manager),m=new E.PublicKey(a.ntt.transceiver[o]);if(z.transceiverPdas(c).emitterAccount().equals(m)||c.equals(m)){let g=new gs(this,Ws(s,a.ntt.manager,i,!a.ntt.svmShims),i,a.ntt.svmShims);this.transceivers.push(g.program)}else this.transceivers.push(Ws(s,a.ntt.transceiver[o],i,!a.ntt.svmShims))}),this.managerAddress=a.ntt.manager,this.tokenAddress=a.ntt.token,this.core=new Tn.SolanaWormholeCore(e,t,s,a),this.pdas=z.pdas(this.program.programId)}async getTransceiver(e){let t=this.transceivers[e]??null;return t&&e===0?new gs(this,t,this.version,this.contracts.ntt.svmShims):null}async getWormholeTransceiver(){return this.getTransceiver(0)}async getMode(){return(await this.getConfig()).mode.locking!=null?"locking":"burning"}async isPaused(){return(await this.getConfig()).paused}async*pause(e){let t=new G.SolanaAddress(e).unwrap(),s=await z.createSetPausedInstruction(this.program,{owner:t,paused:!0}),a=new E.Transaction;a.feePayer=t,a.add(s),yield this.createUnsignedTx({transaction:a},"Ntt.Pause")}async*unpause(e){let t=new G.SolanaAddress(e).unwrap(),s=await z.createSetPausedInstruction(this.program,{owner:t,paused:!1}),a=new E.Transaction;a.feePayer=t,a.add(s),yield this.createUnsignedTx({transaction:a},"Ntt.Unpause")}async getThreshold(){return(await this.getConfig()).threshold}async*setThreshold(e,t){let s=new G.SolanaAddress(t).unwrap(),a=await this.createSetThresholdInstruction(s,e),i=new E.Transaction;i.feePayer=s,i.add(a),yield this.createUnsignedTx({transaction:i},"Ntt.SetThreshold")}async createSetThresholdInstruction(e,t){return await this.program.methods.setThreshold(t).accountsStrict({owner:e,config:this.pdas.configAccount()}).instruction()}async getOwner(){let e=await this.getConfig();return new G.SolanaAddress(e.owner)}async getPauser(){return null}async*setOwner(e,t){let s=new G.SolanaAddress(t).unwrap(),a=await z.createTransferOwnershipInstruction(this.program,{owner:new G.SolanaAddress(await this.getOwner()).unwrap(),newOwner:new G.SolanaAddress(e).unwrap()}),i=new E.Transaction;i.feePayer=s,i.add(a),yield this.createUnsignedTx({transaction:i},"Ntt.SetOwner")}async*setPauser(e,t){throw new Error("Pauser role not supported on Solana.")}async quoteDeliveryPrice(e,t){throw new Error("Relaying via the legacy NTT relayer is no longer supported; use the executor route.")}static async fromRpc(e,t){let[s,a]=await G.SolanaPlatform.chainFromRpc(e),i=t[a];if(i.network!==s)throw new Error(`Network mismatch: ${i.network} != ${s}`);if(!("ntt"in i.contracts))throw new Error("Ntt contracts not found");let r=i.contracts.ntt,o=await n.getVersion(e,i.contracts);return new n(s,a,e,{...i.contracts,ntt:r},o)}async getConfig(){return this.config=this.config??await z.getConfig(this.program,this.pdas),this.config}async getTokenDecimals(){let e=await this.getConfig();return await G.SolanaPlatform.getDecimals(this.network,this.chain,this.connection,e.mint)}async getPeer(e){let t=await this.program.account.nttManagerPeer.fetchNullable(this.pdas.peerAccount(e));return t?{address:{chain:e,address:(0,Cn.toUniversal)(e,new Uint8Array(t.address))},tokenDecimals:t.tokenDecimals,inboundLimit:await this.getInboundLimit(e)}:null}async getCustodyAddress(){return(await this.getConfig()).custody.toBase58()}static async getVersion(e,t,s){try{return await z.getVersion(e,new E.PublicKey(t.ntt.manager),s?new G.SolanaAddress(s).unwrap():void 0)}catch{return"3.0.0"}}async*initialize(e,t){let s=await this.connection.getAccountInfo(t.mint);if(s===null)throw new Error("Couldn't determine token program. Mint account is null.");let a=new G.SolanaAddress(e).unwrap(),i=await z.createInitializeInstruction(this.program,{...t,payer:a,owner:a,chain:this.chain,tokenProgram:s.owner,multisigTokenAuthority:t.multisigTokenAuthority},this.pdas),r=new E.Transaction;r.feePayer=a,r.add(i),yield this.createUnsignedTx({transaction:r},"Ntt.Initialize"),yield*this.initializeOrUpdateLUT({payer:a,owner:a})}async*initializeOrUpdateLUT(e){let t=await this.getConfig(),s=await this.getWormholeTransceiver();if(!s)throw new Error("Wormhole transceiver not found");let a=s.programId,i=await z.initializeOrUpdateLUT(this.program,t,a,{payer:e.payer,owner:e.owner,wormholeId:new E.PublicKey(this.core.address)});if(!i)return;let r=new E.Transaction().add(i);r.feePayer=e.payer,yield this.createUnsignedTx({transaction:r},"Ntt.InitializeLUT")}async*registerWormholeTransceiver(e){let t=new G.SolanaAddress(e.payer).unwrap(),s=new G.SolanaAddress(e.owner).unwrap(),a=await this.getConfig();if(a.paused)throw new Error("Contract is paused");let i=await this.createRegisterTransceiverIx(0,t,s),r=await this.getWormholeTransceiver(),o=r.postMessageShim?void 0:E.Keypair.generate(),c=await r.createBroadcastWormholeIdIx(t,a,o?.publicKey),m=new E.Transaction;m.feePayer=t,m.add(i,c),yield this.createUnsignedTx({transaction:m,signers:o?[o]:[]},"Ntt.RegisterTransceiver")}async createRegisterTransceiverIx(e,t,s){let a=await this.getTransceiver(e);if(!a)throw new Error("Transceiver not found");let i=a.programId;return this.program.methods.registerTransceiver().accountsStrict({payer:t,owner:s,config:this.pdas.configAccount(),transceiver:i,registeredTransceiver:this.pdas.registeredTransceiver(i),systemProgram:E.SystemProgram.programId}).instruction()}async createDeregisterTransceiverIx(e,t){let s=await this.getTransceiver(e);if(!s)throw new Error("Transceiver not found");let a=s.programId;return this.program.methods.deregisterTransceiver().accountsStrict({owner:t,config:this.pdas.configAccount(),registeredTransceiver:this.pdas.registeredTransceiver(a)}).instruction()}async*setWormholeTransceiverPeer(e,t){yield*this.setTransceiverPeer(0,e,t)}async*setTransceiverPeer(e,t,s){let a=await this.getTransceiver(e);if(!a)throw new Error("Transceiver not found");yield*a.setPeer(t,s)}async*setPeer(e,t,s,a){let i=new G.SolanaAddress(a).unwrap(),r=await z.createSetPeerInstruction(this.program,{payer:i,owner:i,chain:e.chain,address:e.address.toUniversalAddress().toUint8Array(),limit:new Pn.default(s.toString()),tokenDecimals:t}),o=new E.Transaction;o.feePayer=i,o.add(r),yield this.createUnsignedTx({transaction:o},"Ntt.SetPeer")}async*transfer(e,t,s,a,i){let r=await this.getConfig();if(r.paused)throw new Error("Contract is paused");if(a.automatic)throw new Error("Automatic relayer transfers are no longer supported; use the executor route.");i=i??E.Keypair.generate();let o=new G.SolanaAddress(e).unwrap(),c=o,m=await this.getTokenAccount(c);if(a.wrapNative){if(this.tokenAddress!==Ue.NATIVE_MINT.toBase58())throw new Error("Configured token must be native mint for wrapping");let M=Ue.getAssociatedTokenAddressSync(Ue.NATIVE_MINT,o),N=[...await this.connection.getAccountInfo(M)?[]:[Ue.createAssociatedTokenAccountInstruction(o,M,o,Ue.NATIVE_MINT)],E.SystemProgram.transfer({fromPubkey:o,toPubkey:M,lamports:t}),Ue.createSyncNativeInstruction(M)],{blockhash:I}=await this.connection.getLatestBlockhash(),$=new E.TransactionMessage({payerKey:o,instructions:N,recentBlockhash:I}).compileToV0Message(),Ke=new E.VersionedTransaction($);yield this.createUnsignedTx({transaction:Ke},"Ntt.WrapNative")}let g=z.transferArgs(t,s,a.queue),f={transferArgs:g,payer:o,from:m,fromAuthority:c,outboxItem:i.publicKey},y=Ue.createApproveInstruction(m,this.pdas.sessionAuthority(c,g),c,t,[],r.tokenProgram),A=[],x=r.mode.locking!=null?z.createTransferLockInstruction(this.program,r,f,this.pdas):z.createTransferBurnInstruction(this.program,r,f,this.pdas);A.push(x);for(let M=0;M<this.transceivers.length;++M)if(M===0){let H=await this.getWormholeTransceiver();if(!H)throw new Error("Wormhole transceiver not found");let N=H.createReleaseWormholeOutboundIx(o,i.publicKey,!a.queue);A.push(N)}let S=new E.Transaction;S.feePayer=o,S.add(y,...await Promise.all(A));let B=[];try{B.push(await this.getAddressLookupTable())}catch{}let k=new E.TransactionMessage({payerKey:o,instructions:S.instructions,recentBlockhash:(await this.connection.getLatestBlockhash()).blockhash}).compileToV0Message(B),F=new E.VersionedTransaction(k);yield this.createUnsignedTx({transaction:F,signers:[i]},"Ntt.Transfer")}async getTokenAccount(e){let t=await this.getConfig();return await Ue.getAssociatedTokenAddress(t.mint,e,!0,t.tokenProgram)}async*createAta(e){let t=await this.getConfig(),s=new G.SolanaAddress(e).unwrap(),a=await this.getTokenAccount(s);if(await this.connection.getAccountInfo(a)===null){let r=new E.Transaction().add(Ue.createAssociatedTokenAccountInstruction(s,a,s,t.mint,t.tokenProgram));r.feePayer=s,yield this.createUnsignedTx({transaction:r},"Redeem.CreateATA")}}async*redeem(e,t){let s=await this.getConfig();if(s.paused)throw new Error("Contract is paused");if(e.length!==this.transceivers.length)throw new Error("Not enough attestations provided");for(let{attestation:a,ix:i}of e.map((r,o)=>({attestation:r,ix:o})))if(i===0){let r=a;if(r.payloadName!=="WormholeTransfer")throw new Error("Invalid attestation payload");let o=await this.getWormholeTransceiver();if(!o)throw new Error("Wormhole transceiver not found");yield*this.createAta(t);let c=new G.SolanaAddress(t).unwrap(),m=[];if(o.verifyVaaShim){let M=E.Keypair.generate(),H=await o.verifyVaaShim.methods.postSignatures(r.guardianSet,r.signatures.length,r.signatures.map($=>[$.guardianIndex,...$.signature.encode()])).accounts({payer:c,guardianSignatures:M.publicKey}).instruction(),N=new E.Transaction;N.feePayer=c,N.add(H),yield this.createUnsignedTx({transaction:N,signers:[M]},"VerifyVAAShim.PostSignature"),m.push(o.createReceiveIx(r,c,M.publicKey,!1)),m.push(o.verifyVaaShim.methods.closeSignatures().accounts({guardianSignatures:M.publicKey,refundRecipient:c}).instruction())}else yield*this.core.postVaa(t,r),m.push(o.createReceiveIx(r,c));let g=z.createRedeemInstruction(this.program,s,o.program.programId,{payer:c,vaa:r}),f=r.payload.nttManagerPayload,y=r.emitterChain,A={payer:c,config:s,nttMessage:f,recipient:new E.PublicKey(f.payload.recipientAddress.toUint8Array()),chain:y,revertWhenNotReady:!1},x=s.mode.locking!=null?z.createReleaseInboundUnlockInstruction(this.program,s,{...A}):z.createReleaseInboundMintInstruction(this.program,s,{...A}),S=new E.Transaction;S.feePayer=c,S.add(...await Promise.all([...m,g,x]));let B=[];try{B.push(await this.getAddressLookupTable())}catch{}let k=new E.TransactionMessage({payerKey:c,instructions:S.instructions,recentBlockhash:(await this.connection.getLatestBlockhash()).blockhash}).compileToV0Message(B),F=new E.VersionedTransaction(k);yield this.createUnsignedTx({transaction:F},"Ntt.Redeem")}}async getCurrentOutboundCapacity(){let e=await this.program.account.outboxRateLimit.fetch(this.pdas.outboxRateLimitAccount());return BigInt(e.rateLimit.capacityAtLastTx.toString())}async getOutboundLimit(){let e=await this.program.account.outboxRateLimit.fetch(this.pdas.outboxRateLimitAccount());return BigInt(e.rateLimit.limit.toString())}async*setOutboundLimit(e,t){let s=new G.SolanaAddress(t).unwrap(),a=await z.createSetOutboundLimitInstruction(this.program,{owner:s,limit:new Pn.default(e.toString())}),i=new E.Transaction;i.feePayer=s,i.add(a),yield this.createUnsignedTx({transaction:i},"Ntt.SetOutboundLimit")}async getCurrentInboundCapacity(e){let t=await this.program.account.inboxRateLimit.fetch(this.pdas.inboxRateLimitAccount(e));return BigInt(t.rateLimit.capacityAtLastTx.toString())}async getRateLimitDuration(){return BigInt(1440*60)}async getInboundLimit(e){let t=await this.program.account.inboxRateLimit.fetch(this.pdas.inboxRateLimitAccount(e));return BigInt(t.rateLimit.limit.toString())}async*setInboundLimit(e,t,s){let a=new G.SolanaAddress(s).unwrap(),i=await z.createSetInboundLimitInstruction(this.program,{owner:a,chain:e,limit:new Pn.default(t.toString())}),r=new E.Transaction;r.feePayer=a,r.add(i),yield this.createUnsignedTx({transaction:r},"Ntt.SetInboundLimit")}async getIsExecuted(e){if(e.payloadName!=="WormholeTransfer")return!1;let t=e.payload.nttManagerPayload,s;try{s=await this.program.account.inboxItem.fetch(this.pdas.inboxItemAccount(e.emitterChain,t))}catch(a){if(a.message?.includes("Account does not exist"))return!1;throw a}return!!s.releaseStatus.released}async getIsTransferInboundQueued(e){if(e.payloadName!=="WormholeTransfer")return!1;let t=e.payload.nttManagerPayload,s;try{s=await this.program.account.inboxItem.fetch(this.pdas.inboxItemAccount(e.emitterChain,t))}catch(a){if(a.message?.includes("Account does not exist"))return!1;throw a}return!!s.releaseStatus.releaseAfter}async getIsApproved(e){if(e.payloadName!=="WormholeTransfer")throw new Error(`Invalid payload: ${e.payloadName}`);let t=e.payload.nttManagerPayload;try{return(await this.program.account.inboxItem.fetch(this.pdas.inboxItemAccount(e.emitterChain,t))).init}catch(s){if(s.message?.includes("Account does not exist"))return!1;throw s}}async*completeInboundQueuedTransfer(e,t,s){let a=await this.getConfig();if(a.paused)throw new Error("Contract is paused");let i=new G.SolanaAddress(s).unwrap(),r=new E.Transaction;r.feePayer=i;let o={payer:i,config:a,nttMessage:t,recipient:new E.PublicKey(t.payload.recipientAddress.toUint8Array()),chain:e,revertWhenNotReady:!1};r.add(await(a.mode.locking!=null?z.createReleaseInboundUnlockInstruction(this.program,a,o):z.createReleaseInboundMintInstruction(this.program,a,o))),yield this.createUnsignedTx({transaction:r},"Ntt.CompleteInboundTransfer")}async getInboundQueuedTransfer(e,t){let s;try{s=await this.program.account.inboxItem.fetch(this.pdas.inboxItemAccount(e,t))}catch(a){if(a.message?.includes("Account does not exist"))return null;throw a}if(s.releaseStatus.releaseAfter){let{recipientAddress:a,amount:i,releaseStatus:r}=s,o=r.releaseAfter[0].toNumber();return{recipient:new G.SolanaAddress(a),amount:BigInt(i.toString()),rateLimitExpiryTimestamp:o}}return null}async verifyAddresses(){let e=await this.getWormholeTransceiver(),t={manager:this.managerAddress,token:this.tokenAddress,transceiver:{...e&&{wormhole:e.pdas.emitterAccount().toBase58()}}},s={manager:this.program.programId.toBase58(),token:(await this.getConfig()).mint.toBase58(),transceiver:{wormhole:z.transceiverPdas(this.program.programId).emitterAccount().toBase58()}},a=(i,r)=>{for(let o in i)typeof i[o]=="object"?(a(i[o],r[o]),Object.keys(i[o]).length===0&&delete i[o]):i[o]===r[o]&&delete i[o]};return a(s,t),Object.keys(s).length>0?s:null}async getAddressLookupTable(e=!0){if(!e||!this.addressLookupTable){let t=await z.getAddressLookupTable(this.program,this.pdas);t&&(this.addressLookupTable=t)}if(!this.addressLookupTable)throw new Error("Address lookup table not found. Did you forget to call initializeLUT?");return this.addressLookupTable}createUnsignedTx(e,t,s=!1){return new G.SolanaUnsignedTransaction(e,this.network,this.chain,t,s)}}});var _o,Do=Y(()=>{_o={version:"0.1.0",name:"example_ntt_svm_lut",instructions:[{name:"initializeLut",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"nttProgramId",isMut:!1,isSigner:!1},{name:"nttConfig",isMut:!1,isSigner:!1},{name:"authority",isMut:!1,isSigner:!1},{name:"lutAddress",isMut:!0,isSigner:!1},{name:"lut",isMut:!0,isSigner:!1},{name:"lutProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"recentSlot",type:"u64"}]}],accounts:[{name:"LUT",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:"publicKey"}]}}]}});var Fo,Xo=Y(()=>{Fo={version:"0.1.0",name:"example_ntt_with_executor",instructions:[{name:"relayNttMesage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"payee",isMut:!0,isSigner:!1},{name:"nttProgramId",isMut:!1,isSigner:!1},{name:"nttPeer",isMut:!1,isSigner:!1},{name:"nttMessage",isMut:!1,isSigner:!1},{name:"executorProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"relayNttMessageArgs"}}]}],types:[{name:"relayNttMessageArgs",type:{kind:"struct",fields:[{name:"recipientChain",type:"u16"},{name:"execAmount",type:"u64"},{name:"signedQuoteBytes",type:"bytes"},{name:"relayInstructions",type:"bytes"}]}}]}});var ti,Rt,q,Vo,hs,qs,ys,ni=Y(()=>{ti=require("@coral-xyz/anchor"),Rt=require("@solana/spl-token"),q=require("@solana/web3.js"),Vo=require("@wormhole-foundation/sdk-base"),hs=require("@wormhole-foundation/sdk-solana"),qs=Rn(require("bn.js"),1);Do();Xo();Ns();ys=class n{network;chain;connection;contracts;nttWithExecutorProgramId;nttLutProgramId;executorProgramId;constructor(e,t,s,a){this.network=e,this.chain=t,this.connection=s,this.contracts=a,this.nttWithExecutorProgramId=new q.PublicKey("nex1gkSWtRBheEJuQZMqHhbMG5A45qPU76KqnCZNVHR"),this.nttLutProgramId=new q.PublicKey("1uteB5DZdNfns9B12rgGf5msKh1d7FbbkvciWmhsZiC"),this.executorProgramId=new q.PublicKey("execXUrAsMnqMmTHj5m7N1YQgsDz3cwGLYCYyuDRciV")}static async fromRpc(e,t){let[s,a]=await hs.SolanaPlatform.chainFromRpc(e),i=t[a];if(i.network!==s)throw new Error(`Network mismatch: ${i.network} != ${s}`);return new n(s,a,e,i.contracts)}async*transfer(e,t,s,a,i,r=!1){let o=new hs.SolanaAddress(e).unwrap(),c={queue:!1,automatic:!1,wrapNative:r},m=q.Keypair.generate(),g=i.transfer(e,a.remainingAmount,t,c,m);for await(let f of g)if(f.description==="Ntt.Transfer"){let y=[];try{y.push(await i.getAddressLookupTable())}catch(k){console.debug(k)}let A=q.TransactionMessage.decompile(f.transaction.transaction.message,{addressLookupTableAccounts:y});if(a.transferTokenFee>0n){let k=new q.PublicKey(a.referrer.address.toString()),{mint:F,tokenProgram:M}=await i.getConfig(),H=(0,Rt.getAssociatedTokenAddressSync)(F,k,!0,M),N=(0,Rt.getAssociatedTokenAddressSync)(F,o,!0,M);await this.connection.getAccountInfo(H)||A.instructions.push((0,Rt.createAssociatedTokenAccountIdempotentInstruction)(o,H,k,F,M));let $=await(0,Rt.getMint)(this.connection,F,void 0,M);A.instructions.push((0,Rt.createTransferCheckedInstruction)(N,F,H,o,a.transferTokenFee,$.decimals,void 0,M))}if(a.nativeTokenFee>0n){let k=new q.PublicKey(a.referrer.address.toString());A.instructions.push(q.SystemProgram.transfer({fromPubkey:o,toPubkey:k,lamports:a.nativeTokenFee}))}let x=new ti.Program(Fo,this.nttWithExecutorProgramId,{connection:this.connection}),S=new q.PublicKey(this.contracts.ntt.manager),B=q.PublicKey.findProgramAddressSync([Buffer.from("peer"),on(t.chain)],S)[0];if(A.instructions.push(await x.methods.relayNttMesage({execAmount:new qs.default(a.estimatedCost.toString()),recipientChain:(0,Vo.toChainId)(t.chain),signedQuoteBytes:Buffer.from(a.signedQuote),relayInstructions:Buffer.from(a.relayInstructions)}).accounts({payer:o,payee:new q.PublicKey(a.payeeAddress),nttProgramId:S,nttPeer:B,nttMessage:m.publicKey,executorProgram:this.executorProgramId}).instruction()),y.length===0){console.debug("no manager lookup table found, checking helper program");let k=new ti.Program(_o,this.nttLutProgramId,{connection:this.connection}),F=q.PublicKey.findProgramAddressSync([Buffer.from("lut"),S.toBuffer()],k.programId)[0],M=await k.account.lut.fetchNullable(F);if(!M){console.debug("no helper program lookup table found, initializing...");let[N]=await q.PublicKey.findProgramAddressSync([Buffer.from("config")],S),[I]=await q.PublicKey.findProgramAddressSync([Buffer.from("lut_authority")],k.programId),$=await this.connection.getSlot("finalized")-10,[Ke]=await q.PublicKey.findProgramAddressSync([I.toBuffer(),new qs.default($).toArrayLike(Buffer,"le",8)],q.AddressLookupTableProgram.programId),[Je]=await q.PublicKey.findProgramAddressSync([Buffer.from("lut"),S.toBuffer()],k.programId),_t=await k.methods.initializeLut(new qs.default($)).accounts({nttProgramId:S,nttConfig:N,authority:I,lutAddress:Ke,lut:Je,lutProgram:q.AddressLookupTableProgram.programId,systemProgram:q.SystemProgram.programId,payer:o}).instruction(),Nt=new q.TransactionMessage({payerKey:o,recentBlockhash:(await this.connection.getLatestBlockhash("finalized")).blockhash,instructions:[_t]}).compileToV0Message();yield i.createUnsignedTx({transaction:new q.VersionedTransaction(Nt)},"NttSvmLut.InitializeLut"),console.debug(`initialized lookup table: ${f}`);let Ae=0;for(;!M&&Ae<10;)await new Promise(l=>setTimeout(l,2e3)),M=await k.account.lut.fetchNullable(F),Ae++}let H=await this.connection.getAddressLookupTable(M.address);if(!H.value)throw new Error("unable to fetch lookup table");y.push(H.value)}f.transaction.transaction.message=A.compileToV0Message(y),yield f}else yield f}static associatedTokenAccountMinRent=void 0;async estimateMsgValueAndGasLimit(e){let t=0n;if(t+=2n*5000n+7n*5000n+1400000n,t+=2n*5000n+7n*5000n,t+=5000n+3200000n,t+=5000n+5000000n,t+=5000n,e){let s=new q.PublicKey(e.address.toString()),a=new hs.SolanaAddress(this.contracts.ntt.token).unwrap(),i=await this.connection.getAccountInfo(a);if(i===null)throw new Error("Couldn't determine token program. Mint account is null.");let r=(0,Rt.getAssociatedTokenAddressSync)(a,s,!0,i.owner);await this.connection.getAccountInfo(r)===null&&(n.associatedTokenAccountMinRent||(n.associatedTokenAccountMinRent=BigInt(await this.connection.getMinimumBalanceForRentExemption(165))),t+=n.associatedTokenAccountMinRent)}return{msgValue:t,gasLimit:250000n}}}});var Oo=Y(()=>{"use strict";(()=>{let n=console.info;console.info=function(t,...s){t!=="secp256k1 unavailable, reverting to browser version"&&n.call(console,t,...s)};let e=console.warn;console.warn=function(t,...s){t!=="bigint: Failed to load bindings, pure JS will be used (try npm run rebuild?)"&&e.call(console,t,...s)}})()});function Fm(){(0,Ho.register)(),(0,Zn.protocolIsRegistered)(bs._platform,"Ntt")||(0,Zn.registerProtocol)(bs._platform,"Ntt",ps),(0,Zn.protocolIsRegistered)(bs._platform,"NttWithExecutor")||(0,Zn.registerProtocol)(bs._platform,"NttWithExecutor",ys)}var Zn,bs,Ho,Wo=Y(()=>{Zn=require("@wormhole-foundation/sdk-definitions"),bs=require("@wormhole-foundation/sdk-solana");ei();ni();Ho=require("@wormhole-foundation/sdk-definitions-ntt");Oo();ei();ni()});var Uo={};pn(Uo,{IdlVersions:()=>Hs,NTT:()=>z,SolanaNtt:()=>ps,SolanaNttWithExecutor:()=>ys,SolanaNttWormholeTransceiver:()=>gs,_1_0_0:()=>os,_2_0_0:()=>cs,_3_0_0:()=>ms,getNttProgram:()=>us,getTransceiverProgram:()=>Ws,register:()=>Fm});var No=Y(()=>{Wo();Ya()});var Hu={};pn(Hu,{HydrationConfigService:()=>pa,assetsMap:()=>bi,builders:()=>ai,chainsMap:()=>Ri,clients:()=>Na,dex:()=>hi,routesMap:()=>xc,tags:()=>ii,validations:()=>Sc});module.exports=Dc(Hu);var T=require("@galacticcouncil/xc-core"),Ce=new T.Asset({key:"aave",originSymbol:"AAVE"}),ha=new T.Asset({key:"ajun",originSymbol:"AJUN"}),Ee=new T.Asset({key:"apyusd",originSymbol:"apyUSD"}),j=new T.Asset({key:"astr",originSymbol:"ASTR"}),K=new T.Asset({key:"bnc",originSymbol:"BNC"}),ya=new T.Asset({key:"bsx",originSymbol:"BSX"}),Be=new T.Asset({key:"cfg_new",originSymbol:"CFG"}),ba=new T.Asset({key:"cru",originSymbol:"CRU"}),Dt=new T.Asset({key:"dai",originSymbol:"DAI"}),Kt=new T.Asset({...Dt,key:"dai_wh"}),C=new T.Asset({key:"dot",originSymbol:"DOT"}),U=new T.Asset({key:"eth",originSymbol:"ETH"}),Re=new T.Asset({key:"ena",originSymbol:"ENA"}),Tt=new T.Asset({key:"eurc",originSymbol:"EURC"}),Ft=new T.Asset({...Tt,key:"eurc_wh"}),ct=new T.Asset({key:"glmr",originSymbol:"GLMR"}),Ln=new T.Asset({key:"hdx",originSymbol:"HDX"}),ae=new T.Asset({key:"ibtc",originSymbol:"IBTC"}),et=new T.Asset({key:"intr",originSymbol:"INTR"}),mt=new T.Asset({key:"jitoSol",originSymbol:"jitoSOL"}),D=new T.Asset({key:"ksm",originSymbol:"KSM"}),Le=new T.Asset({key:"ldo",originSymbol:"LDO"}),_e=new T.Asset({key:"lbtc",originSymbol:"LBTC"}),ze=new T.Asset({key:"ewt",originSymbol:"EWT"}),De=new T.Asset({key:"link",originSymbol:"LINK"}),te=new T.Asset({key:"myth",originSymbol:"MYTH"}),ht=new T.Asset({key:"neuro",originSymbol:"NEURO"}),tt=new T.Asset({key:"pen",originSymbol:"PEN"}),Fe=new T.Asset({key:"paxg",originSymbol:"PAXG"}),ut=new T.Asset({key:"prime",originSymbol:"PRIME"}),Xe=new T.Asset({key:"sky",originSymbol:"SKY"}),je=new T.Asset({key:"sol",originSymbol:"SOL"}),nt=new T.Asset({key:"sui",originSymbol:"SUI"}),Ve=new T.Asset({key:"susde",originSymbol:"sUSDe"}),yt=new T.Asset({key:"susds",originSymbol:"sUSDS"}),Gt=new T.Asset({...yt,key:"susds_wh"}),Oe=new T.Asset({key:"tbtc",originSymbol:"tBTC"}),He=new T.Asset({key:"trac",originSymbol:"TRAC"}),bt=new T.Asset({key:"unq",originSymbol:"UNQ"}),P=new T.Asset({key:"usdt",originSymbol:"USDT"}),qt=new T.Asset({...P,key:"usdt_wh"}),Xt=new T.Asset({...P,key:"usdt_eth"}),R=new T.Asset({key:"usdc",originSymbol:"USDC"}),zt=new T.Asset({...R,key:"usdc_wh"}),Vt=new T.Asset({...R,key:"usdc_eth"}),de=new T.Asset({key:"vastr",originSymbol:"vASTR"}),le=new T.Asset({key:"vdot",originSymbol:"vDOT"}),Ot=new T.Asset({key:"weth",originSymbol:"WETH"}),Ht=new T.Asset({...Ot,key:"weth_wh"}),At=new T.Asset({key:"wbtc",originSymbol:"WBTC"}),jt=new T.Asset({...At,key:"wbtc_wh"}),We=new T.Asset({key:"wsteth",originSymbol:"wstETH"}),Wt=new T.Asset({key:"wud",originSymbol:"WUD"}),Fc=[Ce,ha,Ee,j,ya,Be,ba,K,Dt,Kt,C,Re,Tt,Ft,U,ct,Ln,ae,et,D,Le,_e,ze,mt,De,te,ht,Fe,tt,ut,Xe,je,nt,Ve,yt,Gt,He,Oe,bt,R,zt,Vt,P,qt,Xt,de,le,At,jt,Ot,Ht,We,Wt],bi=new Map(Fc.map(n=>[n.key,n]));var _n=require("@galacticcouncil/xc-core");var Ai=require("viem/chains"),Dn=new _n.EvmChain({id:8453,key:"base",name:"Base",assetsData:[{asset:U,decimals:18,id:"0x4200000000000000000000000000000000000006"},{asset:Tt,decimals:6,id:"0x60a3e35cc302bfa44cb288bc5a4f316fdb1adb42"},{asset:R,decimals:6,id:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}],balance:_n.EvmBalanceType.Erc20,ecosystem:_n.ChainEcosystem.Ethereum,evmChain:Ai.base,explorer:"https://basescan.org/",rpcs:["https://stylish-quick-firefly.base-mainnet.quiknode.pro/"],basejump:{address:"0xf5b9334e44f800382cb47fc19669401d694e529b"},wormhole:{id:30,coreBridge:"0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6",executor:"0x9E1936E91A4a5AE5A5F75fFc472D6cb8e93597ea",ntt:{[Tt.key]:{token:"0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42",manager:"0xD1dc3517732c98502b5c1ba2389AcA9E9016d89a",transceiver:{wormhole:"0xa84b362290b0CFdB55e877dfc633284091e0B3F7"}}}}});var hn=require("@galacticcouncil/xc-core");var wi=require("viem/chains"),L=new hn.EvmChain({id:1,key:"ethereum",name:"Ethereum",assetsData:[{asset:U,decimals:18,id:"0x0000000000000000000000000000000000000000"},{asset:Ce,decimals:18,id:"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"},{asset:Ee,decimals:18,id:"0x38eeb52f0771140d10c4e9a9a72349a329fe8a6a"},{asset:Be,decimals:18,id:"0xcccccccccc33d538dbc2ee4feab0a7a1ff4e8a94"},{asset:Ot,decimals:18,id:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"},{asset:Dt,decimals:18,id:"0x6B175474E89094C44Da98b954EedeAC495271d0F"},{asset:Re,decimals:18,id:"0x57e114b691db790c35207b2e685d4a43181e6061"},{asset:Ve,decimals:18,id:"0x9d39a5de30e57443bff2a8307a4256c8797a3497"},{asset:yt,decimals:18,id:"0xa3931d71877c0e7a3148cb7eb4463524fec27fbd"},{asset:Oe,decimals:18,id:"0x18084fba666a33d37592fa2633fd49a74dd93a88"},{asset:At,decimals:8,id:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"},{asset:_e,decimals:8,id:"0x8236a87084f8b84306f72007f36f2618a5634494"},{asset:R,decimals:6,id:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"},{asset:P,decimals:6,id:"0xdAC17F958D2ee523a2206206994597C13D831ec7"},{asset:Le,decimals:18,id:"0x5a98fcbea516cf06857215779fd812ca3bef1b32"},{asset:De,decimals:18,id:"0x514910771af9ca656af840dff83e8264ecf986ca"},{asset:Fe,decimals:18,id:"0x45804880de22913dafe09f4980848ece6ecbaf78"},{asset:Xe,decimals:18,id:"0x56072c95faa701256059aa122697b133aded9279"},{asset:He,decimals:18,id:"0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F"},{asset:We,decimals:18,id:"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"}],balance:hn.EvmBalanceType.Erc20,balanceOverrides:{[U.key]:hn.EvmBalanceType.Native},ecosystem:hn.ChainEcosystem.Ethereum,evmChain:wi.mainnet,explorer:"https://etherscan.io/",rpcs:["https://ethereum-rpc.publicnode.com","https://cosmopolitan-dimensional-diagram.quiknode.pro"],snowbridge:{id:1,gateway:"0x27ca963c279c93801941e1eb8799c23f407d68e7"},wormhole:{id:2,coreBridge:"0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B",executor:"0x84EEe8dBa37C36947397E1E11251cA9A06Fc6F8a",ntt:{[Dt.key]:{token:"0x6B175474E89094C44Da98b954EedeAC495271d0F",manager:"0x804F123f75cCa0A9c0Cba341F82f4A4DA86a5259",transceiver:{wormhole:"0x99673a01C5779Ebf59399B4B228c1825c0113571"}},[yt.key]:{token:"0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD",manager:"0x5085A4863f89eC9553F70187EE73B5aAe0fd14b5",transceiver:{wormhole:"0x7C236d237BEbBE1b7902131B31b7b3270005a810"}},[R.key]:{token:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",manager:"0x447b2c7485A3d6813F8197E605b10BcCD8dd8398",transceiver:{wormhole:"0xA108BD5dBc6CE665aEbB6895351e0609c76F8EFc"}},[P.key]:{token:"0xdAC17F958D2ee523a2206206994597C13D831ec7",manager:"0x9fbd9F16cE7Fa17097E91cc36DC1B7b47aDCa9De",transceiver:{wormhole:"0x45c566f6595CF93e639E77cc1bbE57A8D27901c2"}},[At.key]:{token:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",manager:"0x081b76AC3cFb65DCe93961d66cea44A74EC8Ef28",transceiver:{wormhole:"0x3FE8fBB8505c8dB2264f6Ebc5559c7C2b2647218"}},[Ot.key]:{token:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",manager:"0x283B14B5Dd352e32154Df014EA96834F395E04b6",transceiver:{wormhole:"0xbA0Cd32131b8206AF4feB79A1A3aaF0AEfe18b48"}},[U.key]:{token:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",manager:"0x283B14B5Dd352e32154Df014EA96834F395E04b6",transceiver:{wormhole:"0xbA0Cd32131b8206AF4feB79A1A3aaF0AEfe18b48"}}}}});var xi=[Dn,L];var dt=require("@galacticcouncil/xc-core");var Si={assetsData:[{asset:C,decimals:10,id:0,xcmLocation:{parents:1,interior:"Here"}},{asset:P,decimals:6,id:1984,min:.7,xcmLocation:{parents:0,interior:{X2:[{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:R,decimals:6,id:1337,min:.7,xcmLocation:{parents:0,interior:{X2:[{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:Wt,decimals:10,id:31337,xcmLocation:{parents:0,interior:{X2:[{PalletInstance:50},{GeneralIndex:31337}]}}},{asset:te,decimals:18,min:3e-8,xcmLocation:{parents:1,interior:{X1:[{Parachain:3369}]}}},{asset:D,decimals:12,min:1e-4,xcmLocation:{parents:2,interior:{X1:[{GlobalConsensus:"Kusama"}]}}}],balance:dt.SubstrateBalanceType.Assets,balanceOverrides:{[C.key]:dt.SubstrateBalanceType.System,[D.key]:dt.SubstrateBalanceType.ForeignAssets,[te.key]:dt.SubstrateBalanceType.ForeignAssets},min:dt.SubstrateMinType.Assets,ecosystem:dt.ChainEcosystem.Polkadot,explorer:"https://assethub-polkadot.subscan.io",genesisHash:"0x68d56f15f85d3136970ec16946040bc1752654e906147f7e43e9d539d7c3de2f",name:"AssetHub",parachainId:1e3,ss58Format:0,treasury:"14xmwinmCEz6oRrFdczHKqHgWNMiCysE2KrA4jXXAAM1Eogk",usesDeliveryFee:!0,ws:["wss://asset-hub-polkadot-rpc.n.dwellir.com","wss://polkadot-asset-hub-rpc.polkadot.io"]},X=new dt.Parachain({...Si,key:"assethub",name:"AssetHub Polkadot"}),$t=new dt.Parachain({...Si,key:"assethub_cex",name:"AssetHub (CEX)",usesSignerFee:!0,isTestChain:!0,balanceOverrides:{}});var yn=require("@galacticcouncil/xc-core");var xe=new yn.Parachain({assetsData:[{asset:j,xcmLocation:{parents:0,interior:"Here"}},{asset:C,id:"340282366920938463463374607431768211455",decimals:10,min:1e-4,xcmLocation:{parents:1,interior:"Here"}},{asset:P,id:"4294969280",decimals:6,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:R,id:"4294969281",decimals:6,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:K,id:"18446744073709551623",decimals:12,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:ct,id:"18446744073709551619",decimals:18,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:ae,id:"18446744073709551620",decimals:8,min:1e-6,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:et,id:"18446744073709551621",decimals:10,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0002000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:le,id:"18446744073709551624",decimals:10,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:de,id:"18446744073709551632",decimals:18,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}}],balance:yn.SubstrateBalanceType.Assets,balanceOverrides:{[j.key]:yn.SubstrateBalanceType.System},ecosystem:yn.ChainEcosystem.Polkadot,explorer:"https://astar.subscan.io",genesisHash:"0x9eb76c5184c4ab8679d2d5d819fdf90b9c001403e9e17da2e14b6d8aec4029c6",key:"astar",name:"Astar",parachainId:2006,ss58Format:5,ws:"wss://rpc.astar.network"});var bn=require("@galacticcouncil/xc-core");var Xc=["wss://bifrost-polkadot.ibp.network","wss://eu.bifrost-polkadot-rpc.liebi.com/ws","wss://bifrost-polkadot.dotters.network"],ne=new bn.Parachain({assetsData:[{asset:K,id:{Native:K.originSymbol},xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:le,id:{VToken2:0},decimals:10,min:1e-4,xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:de,id:{VToken2:3},decimals:18,min:.01,xcmLocation:{parents:0,interior:{X1:[{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:C,id:{Token2:0},decimals:10,min:1e-4,xcmLocation:{parents:1,interior:"Here"}},{asset:P,id:{Token2:2},decimals:6,min:.001,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:R,id:{Token2:5},decimals:6,min:.001,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:j,id:{Token2:3},decimals:18,min:.01,xcmLocation:{parents:1,interior:{X1:{Parachain:2006}}}},{asset:ct,id:{Token2:1},decimals:18,min:1e-5,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:ae,id:{Token2:6},decimals:8,min:1e-6,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}}],balance:bn.SubstrateBalanceType.Tokens,balanceOverrides:{[K.key]:bn.SubstrateBalanceType.System},ecosystem:bn.ChainEcosystem.Polkadot,explorer:"https://bifrost.subscan.io",genesisHash:"0x262e1b2ad728475fd6fe88e62d34c200abe6fd693931ddad144059b1eb884e5b",key:"bifrost",name:"Bifrost",parachainId:2030,ss58Format:6,ws:Xc});var An=require("@galacticcouncil/xc-core"),Ii=require("viem");var vi=require("@galacticcouncil/common"),Mi=require("polkadot-api"),{isEvmAccount:Vc,H160:ki}=vi.h160,Ts=class{async toH160(e,t){if(Vc(e))return ki.fromAccount(e);let s=ki.fromSS58(e);if(t&&await this.isBound(t,s,e))return s;throw new Error(`Account ${e} is not an EVM (ETH\\0 prefixed) account nor bound to its EVM address`)}async isBound(e,t,s){let i=await e.getUnsafeApi().query.EVMAccounts.AccountExtension.getValue(t);if(!i)return!1;let r=(0,Mi.AccountId)().enc(s),o=this.asBytes(i);return Buffer.from(o).equals(Buffer.from(r.subarray(20)))}asBytes(e){return e instanceof Uint8Array?e:typeof e=="string"?Buffer.from(e.replace("0x",""),"hex"):e.asBytes()}};var Oc=new Ts,Aa=["https://hydration-rpc.n.dwellir.com","https://rpc.kril.hydration.cloud","https://hydration.rotko.net","https://rpc.sin.hydration.cloud","https://rpc.coke.hydration.cloud"],wa=["wss://hydration-rpc.n.dwellir.com","wss://rpc.kril.hydration.cloud","wss://hydration.rotko.net","wss://rpc.sin.hydration.cloud","wss://rpc.coke.hydration.cloud"],Hc=(0,Ii.defineChain)({id:222222,name:"Hydration",network:"hydration",nativeCurrency:{decimals:18,name:"WETH",symbol:"WETH"},rpcUrls:{public:{http:Aa,webSocket:wa},default:{http:Aa,webSocket:wa}},blockExplorers:{default:{name:"Hydration Explorer",url:"https://hydration.subscan.io"}},testnet:!1}),v=new An.EvmParachain({assetsData:[{asset:Ln,id:0,xcmLocation:{parents:0,interior:{X1:[{GeneralIndex:0}]}}},{asset:Ce,decimals:18,id:1000624,min:6e-5,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"}}]}}},{asset:ha,decimals:12,id:32,min:.11,xcmLocation:{parents:1,interior:{X2:[{Parachain:2051},{GeneralKey:{length:4,data:"0x414a554e00000000000000000000000000000000000000000000000000000000"}}]}}},{asset:j,decimals:18,id:9,min:.15,xcmLocation:{parents:1,interior:{X1:{Parachain:2006}}}},{asset:K,decimals:12,id:14,min:.069,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:Be,decimals:18,id:41,min:.1,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xcccccccccc33d538dbc2ee4feab0a7a1ff4e8a94"}}]}}},{asset:ba,decimals:12,id:27,min:.0079,xcmLocation:{parents:1,interior:{X1:{Parachain:2008}}}},{asset:C,decimals:10,id:5,min:.0018,xcmLocation:{parents:1,interior:"Here"}},{asset:Kt,decimals:18,id:18,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f"}}]}}},{asset:U,decimals:18,id:34,min:55e-7,xcmLocation:{parents:2,interior:{X1:{GlobalConsensus:{Ethereum:{chain_id:1}}}}}},{asset:Ee,decimals:18,id:46,min:.0147058823529412,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x38eeb52f0771140d10c4e9a9a72349a329fe8a6a"}}]}}},{asset:Re,decimals:18,id:38,min:.037,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x57e114b691db790c35207b2e685d4a43181e6061"}}]}}},{asset:ct,decimals:18,id:16,min:.035,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:ae,decimals:8,id:11,min:36e-8,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:et,decimals:10,id:17,min:.62,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0002000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:mt,decimals:9,id:40,min:27e-7,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:1},{GeneralKey:{length:32,data:"0xfcd141e9832caf10ad917495ca0f271b5b293cd47027ea737007ed40eb39a0bd"}}]}}},{asset:ut,decimals:6,id:43,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:1},{GeneralKey:{length:32,data:"0x26759f460ee5f743ed66d27c8f2a5623bf39d53ed575955320661e6e13e0e3da"}}]}}},{asset:ze,decimals:18,id:252525,min:.022,xcmLocation:{parents:1,interior:{X1:{Parachain:3345}}}},{asset:Le,decimals:18,id:1000796,min:.013,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x5a98fcbea516cf06857215779fd812ca3bef1b32"}}]}}},{asset:D,decimals:12,id:1000771,min:35e-5,xcmLocation:{parents:2,interior:{X1:{GlobalConsensus:"Kusama"}}}},{asset:_e,decimals:8,id:1000851,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x8236a87084f8b84306f72007f36f2618a5634494"}}]}}},{asset:De,decimals:18,id:1000794,min:.001,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x514910771af9ca656af840dff83e8264ecf986ca"}}]}}},{asset:Fe,decimals:18,id:39,min:5e-6,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x45804880de22913dafe09f4980848ece6ecbaf78"}}]}}},{asset:te,decimals:18,id:30,min:.022,xcmLocation:{parents:1,interior:{X1:{Parachain:3369}}}},{asset:ht,decimals:12,id:36,min:.001,xcmLocation:{parents:1,interior:{X2:[{Parachain:2043},{PalletInstance:10}]}}},{asset:tt,decimals:12,id:1000081,min:.16,xcmLocation:{parents:1,interior:{X2:[{Parachain:2094},{PalletInstance:10}]}}},{asset:Xe,decimals:18,id:1000795,min:.52,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x56072c95faa701256059aa122697b133aded9279"}}]}}},{asset:je,decimals:9,id:1000752,min:47e-6,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:1},{GeneralKey:{length:32,data:"0x069b8857feab8184fb687f634618c035dac439dc1aeb3b5598a0f00000000001"}}]}}},{asset:nt,decimals:9,id:1000753,min:.003,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:21},{GeneralKey:{length:32,data:"0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3"}}]}}},{asset:Ve,decimals:18,id:1000625,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x9d39a5de30e57443bff2a8307a4256c8797a3497"}}]}}},{asset:yt,decimals:18,id:1000626,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xa3931d71877c0e7a3148cb7eb4463524fec27fbd"}}]}}},{asset:Gt,decimals:18,id:1000745,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000a3931d71877c0e7a3148cb7eb4463524fec27fbd"}}]}}},{asset:Oe,decimals:18,id:1000765,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x18084fba666a33d37592fa2633fd49a74dd93a88"}}]}}},{asset:He,decimals:18,id:35,min:.028,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F"}}]}}},{asset:bt,decimals:18,id:25,min:1.23,xcmLocation:{parents:1,interior:{X1:{Parachain:2037}}}},{asset:R,decimals:6,id:22,min:.01,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:zt,decimals:6,id:21,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"}}]}}},{asset:Ft,decimals:6,id:44,min:.014,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:30},{GeneralKey:{length:32,data:"0x00000000000000000000000060a3e35cc302bfa44cb288bc5a4f316fdb1adb42"}}]}}},{asset:Vt,decimals:6,id:1000766,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"}}]}}},{asset:P,decimals:6,id:10,min:.01,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:qt,decimals:6,id:23,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7"}}]}}},{asset:Xt,decimals:6,id:1000767,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xdac17f958d2ee523a2206206994597c13d831ec7"}}]}}},{asset:de,decimals:18,id:33,min:.14,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0903000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:le,decimals:10,id:15,min:.0019,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0900000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:At,decimals:8,id:1000190,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"}}]}}},{asset:jt,decimals:8,id:19,min:34e-8,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599"}}]}}},{asset:Ot,decimals:18,id:1000189,min:61e-7,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"}}]}}},{asset:Ht,decimals:18,id:20,min:54e-7,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"}}]}}},{asset:We,decimals:18,id:1000809,min:635e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"}}]}}},{asset:Wt,decimals:10,id:1000085,min:2e4,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:31337}]}}}],balance:An.SubstrateBalanceType.Tokens,balanceOverrides:{[Ln.key]:An.SubstrateBalanceType.System},ecosystem:An.ChainEcosystem.Polkadot,evmChain:Hc,evmResolver:Oc,explorer:"https://hydration.subscan.io",genesisHash:"0xafdc188f45c71dacbaa0b62e16a91f726c7b8699a9748cdf715459de6b7f366d",key:"hydration",name:"Hydration",parachainId:2034,ss58Format:63,wormhole:{id:73,coreBridge:"0x3792a6d63c31941B2805181771795D9176fA82A1",executor:"0xd633d8d1ceee8c8252196d44857c0f41b8dcb0d9",ntt:{[Kt.key]:{token:"0x0000000000000000000000000000000100000012",manager:"0xcFd576F88C90844AEBF45378Fd09931281D8b14d",transceiver:{wormhole:"0xe8660CA48f6f4D98BC48DB7Dd07C1a8E555801eA"}},[Ft.key]:{token:"0x000000000000000000000000000000010000002C",manager:"0x8dd1286A29dF5a2785FB638d6fB1598144Cfbc4C",transceiver:{wormhole:"0x2e84fac378D67Dc2e11026fB4919E80263a87375"}},[mt.key]:{token:"0x0000000000000000000000000000000100000028",manager:"0xcE73C15B9ED02413066DE5B904A36F8e8f9B5331",transceiver:{wormhole:"0xF38D9C3bA6999Dc331b32B416083Fd7e02D17B04"}},[ut.key]:{token:"0x000000000000000000000000000000010000002B",manager:"0xFCaF4aA069C565d25539028970703F01e47D3E0B",transceiver:{wormhole:"0x4e7b1E55D2354d4Dc6ABD876096Dc201de0541D1"}},[je.key]:{token:"0x00000000000000000000000000000001000F4530",manager:"0x9e200C0f28D92D296b201D96C8269d3CAFFfA9FF",transceiver:{wormhole:"0x2F04AcF249091425d51e67EeA3C3161ccE283202"}},[nt.key]:{token:"0x00000000000000000000000000000001000F4531",manager:"0x978443f00cAB6b09445140321EC73a221ebFF5F8",transceiver:{wormhole:"0xA224D6f4e0E276b34D91bfE6c3A5fE6838322AF7"}},[Gt.key]:{token:"0x00000000000000000000000000000001000F4529",manager:"0x1973E7044d9A7C7bB2d6ea1693A296a9e4B7E448",transceiver:{wormhole:"0x68Ecadd7934D4FcFEABAfB209C95D379B96400cb"}},[zt.key]:{token:"0x0000000000000000000000000000000100000015",manager:"0xEcEab64542A875C4472671D9Ed1E690cdD4e28fC",transceiver:{wormhole:"0x0d7488B39AA64468a709eC3b3d354DeFE539eD97"}},[qt.key]:{token:"0x0000000000000000000000000000000100000017",manager:"0x5E6C488103b47F804824AE15861638af4C436795",transceiver:{wormhole:"0xd2a16B736F32Df7C0DE72838837656FE0f85Ac0F"}},[jt.key]:{token:"0x0000000000000000000000000000000100000013",manager:"0x6BFca089916c045b0Ca4A09B655aF9F926189993",transceiver:{wormhole:"0x9a8a1ab288f6749Ce5626DEE1B5d59441BdC187F"}},[Ht.key]:{token:"0x0000000000000000000000000000000100000014",manager:"0xB5cEf790D52A57fa619eD96eDd64c5328F3DCFb7",transceiver:{wormhole:"0x8acce9CA511d5D7213F8C3f813B8916087cd00ae"}}}},ws:wa,rpcs:Aa});var Fn=require("@galacticcouncil/xc-core");var Yt=new Fn.Parachain({assetsData:[{asset:te,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:Fn.SubstrateBalanceType.System,ecosystem:Fn.ChainEcosystem.Polkadot,explorer:"https://mythos.subscan.io",genesisHash:"0xf6ee56e9c5277df5b4ce6ae9983ee88f3cbed27d31beeb98f9f84f997a1ab0b9",key:"mythos",name:"Mythos",parachainId:3369,ss58Format:29972,usesH160Acc:!0,ws:"wss://mythos-rpc.dmarket.com"});var Xn=require("@galacticcouncil/xc-core");var Vn=new Xn.Parachain({assetsData:[{asset:ht,xcmLocation:{parents:0,interior:{X1:{PalletInstance:10}}}}],balance:Xn.SubstrateBalanceType.System,ecosystem:Xn.ChainEcosystem.Polkadot,explorer:"https://neuroweb.subscan.io",genesisHash:"0xe7e0962324a3b86c83404dbea483f25fb5dab4c224791c81b756cfc948006174",key:"neuroweb",name:"Neuroweb",parachainId:2043,ss58Format:101,ws:"wss://parachain-rpc.origin-trail.network"});var Jt=require("@galacticcouncil/xc-core");var On=new Jt.Parachain({assetsData:[{asset:tt,id:"Native",xcmLocation:{parents:0,interior:{X1:{PalletInstance:10}}}}],balance:Jt.SubstrateBalanceType.System,ecosystem:Jt.ChainEcosystem.Polkadot,explorer:"https://pendulum.subscan.io",genesisHash:"0x5d3c298622d5634ed019bf61ea4b71655030015bde9beb0d6a24743714462c86",key:"pendulum",name:"Pendulum",parachainId:2094,ss58Format:56,ws:"wss://rpc-pendulum.prd.pendulumchain.tech",xcmVersion:Jt.XcmVersion.v3});var Hn=require("@galacticcouncil/xc-core");var Wc={assetsData:[{asset:C,xcmLocation:{parents:0,interior:"Here"}}],balance:Hn.SubstrateBalanceType.System,ecosystem:Hn.ChainEcosystem.Polkadot,explorer:"https://polkadot.subscan.io",genesisHash:"0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3",name:"Polkadot",parachainId:0,ss58Format:0,treasury:"13UVJyLnbVp9RBZYFwFGyDvVd1y27Tt8tkntv6Q7JVPhFsTB",usesDeliveryFee:!0,ws:"wss://polkadot-rpc.n.dwellir.com"},Ti=new Hn.Parachain({...Wc,key:"polkadot"});var Wn=require("@galacticcouncil/xc-core");var Un=new Wn.Parachain({assetsData:[{asset:bt,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:Wn.SubstrateBalanceType.System,ecosystem:Wn.ChainEcosystem.Polkadot,explorer:"https://unique.subscan.io",genesisHash:"0x84322d9cddbf35088f1e54e9a85c967a41a56a4f43445768125e61af166c7d31",key:"unique",name:"Unique network",parachainId:2037,ss58Format:7391,ws:"wss://ws.unique.network"});var Qt=require("@galacticcouncil/xc-core");var Nn=new Qt.Parachain({assetsData:[{asset:ze,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:Qt.SubstrateBalanceType.System,ecosystem:Qt.ChainEcosystem.Polkadot,explorer:"https://energywebx.subscan.io",genesisHash:"0x5a51e04b88a4784d205091aa7bada002f3e5da3045e5b05655ee4db2589c33b5",key:"energywebx",name:"Energy Web X",parachainId:3345,ss58Format:42,ws:"wss://wnp-rpc.mainnet.energywebx.com",xcmVersion:Qt.XcmVersion.v3});var Pi=[X,$t,xe,ne,v,Vn,Yt,On,Ti,Un,Nn];var wn=require("@galacticcouncil/xc-core");var Zt=new wn.SolanaChain({id:101,key:"solana",name:"Solana",assetsData:[{asset:je,decimals:9},{asset:mt,id:"J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",decimals:9},{asset:ut,id:"3b8X44fLF9ooXaUm3hhSgjpmVs6rZZ3pPoGnGahc3Uu7",decimals:6}],balance:wn.SolanaBalanceType.Token,balanceOverrides:{[je.key]:wn.SolanaBalanceType.Native},ecosystem:wn.ChainEcosystem.Solana,explorer:"https://explorer.solana.com/",rpcUrls:{http:["https://wispy-palpable-market.solana-mainnet.quiknode.pro"],webSocket:["wss://wispy-palpable-market.solana-mainnet.quiknode.pro"]},wormhole:{id:1,coreBridge:"worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth",ntt:{[je.key]:{token:"So11111111111111111111111111111111111111112",manager:"DiGxk55uAQNVzzg2FucPgdrQ4azb5SDvWQvzpzJD3o7J",transceiver:{wormhole:"5J12e7mMcbbN3VkCrUPfZp2bDHMH3t1rKvxGcwuN53wx"},emitter:"2WUYeRrK2JctBEvNVXY4mRG2ewMzhidi7L4Y5dCwqY9D"},[mt.key]:{token:"J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",manager:"9HFvXujdkXubvmf93gyzkH1g3VPowDrmp85sWsfdcBTh",transceiver:{wormhole:"HgxvrPomT84AxgxknddAcC1iW9ysqHxmeoiKNZmQcovs"},emitter:"9Ss1eMHE8iDv9kCxERH5nabp9tx75AVoUWWEKaGgMrh9"},[ut.key]:{token:"3b8X44fLF9ooXaUm3hhSgjpmVs6rZZ3pPoGnGahc3Uu7",manager:"4T5m5NtRVewiCVzP2mnfeUoMYRqncfkrS21X2dhVCNRT",transceiver:{wormhole:"GiTY93vtrK4jZZchrxdV9r28JByRs7Ary2rsTPyPabJc"},emitter:"HuvSXe6hQaSMgo5dc8GYzavcS3aB4Bix9XYgVdfsq2sY"}},platformAddressFormat:"base58"}});var Ci=[Zt];var Kn=require("@galacticcouncil/xc-core");var Gn=new Kn.SuiChain({id:"0x35834a8a",key:"sui",name:"Sui",assetsData:[{asset:nt,decimals:9}],balance:Kn.SuiBalanceType.Native,ecosystem:Kn.ChainEcosystem.Sui,explorer:"https://suiscan.xyz/",rpc:"https://rpc-mainnet.suiscan.xyz",wormhole:{id:21,coreBridge:"0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c",ntt:{[nt.key]:{token:"0x2::sui::SUI",manager:"0xa0bc45e0384140dc125f273eda89cad1434f5dee430726cf6364bdcceba1e9a3",transceiver:{wormhole:"0x6afb4a6a9c4e5b6eeed568381ce95a79590f0c17ab8d0c59295826f2775bf832"},emitter:"0x25437da9f99dfab32c1a275663f51cd5c99eb867ab4d1f630e3799c5e68215da"}}}});var Ei=[Gn];var Pt=require("@galacticcouncil/xc-core");var wt=new Pt.Parachain({assetsData:[{asset:D,decimals:12,id:0,xcmLocation:{parents:1,interior:"Here"}},{asset:C,decimals:10,min:.001,xcmLocation:{parents:2,interior:{X1:[{GlobalConsensus:"Polkadot"}]}}},{asset:P,decimals:6,id:1984,xcmLocation:{parents:1,interior:{X2:[{PalletInstance:50},{GeneralIndex:1984}]}}}],balance:Pt.SubstrateBalanceType.Assets,balanceOverrides:{[D.key]:Pt.SubstrateBalanceType.System,[C.key]:Pt.SubstrateBalanceType.ForeignAssets},min:Pt.SubstrateMinType.Assets,ecosystem:Pt.ChainEcosystem.Kusama,explorer:"https://assethub-kusama.subscan.io",genesisHash:"0x48239ef607d7928874027a43a67689209727dfb3d3dc5e5b03a39bdc2eda771a",key:"assethub_kusama",name:"AssetHub Kusama",parachainId:1e3,ss58Format:2,treasury:"HWZmQq6zMMk7TxixHfseFT2ewicT6UofPa68VCn3gkXrdJF",usesDeliveryFee:!0,ws:"wss://asset-hub-kusama-rpc.n.dwellir.com"});var qn=require("@galacticcouncil/xc-core");var zn=new qn.Parachain({assetsData:[{asset:ya,id:0,xcmLocation:{parents:0,interior:"Here"}},{asset:D,decimals:12,id:1,xcmLocation:{parents:1,interior:"Here"}},{asset:P,decimals:6,id:14,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}}],balance:qn.SubstrateBalanceType.Tokens,ecosystem:qn.ChainEcosystem.Kusama,explorer:"https://basilisk.subscan.io",genesisHash:"0xa85cfb9b9fd4d622a5b28289a02347af987d8f73fa3108450e2b4a11c1ce5755",key:"basilisk",name:"Basilisk",parachainId:2090,ss58Format:10041,ws:"wss://basilisk-rpc.n.dwellir.com"});var Bi=[wt,zn];var Uc=[...xi,...Pi,...Ci,...Ei,...Bi],Ri=new Map(Uc.map(n=>[n.key,n]));var Qo=require("@galacticcouncil/xc-core");var ri=require("@galacticcouncil/xc-core");var ai={};pn(ai,{ContractBuilder:()=>at,ExtrinsicBuilder:()=>w,ExtrinsicDecorator:()=>sn,FeeAmountBuilder:()=>O,FeeAssetBuilder:()=>rs,MoveBuilder:()=>Ka,ProgramBuilder:()=>si,XcmTransferType:()=>it,XcmVersion:()=>Ct});var xn=require("@galacticcouncil/xc-core"),Li=require("viem"),Nc=n=>({build:async e=>{let t=await Promise.all(n.map(r=>r.build(e))),s=t.map(r=>r.address),a=[0,0],i=t.map(r=>(0,Li.encodeFunctionData)({abi:xn.Abi[r.module],functionName:r.func,args:r.args}));return new xn.ContractConfig({abi:xn.Abi.Batch,address:xn.Precompile.Batch,args:[s,a,i,[]],func:"batchAll",module:"Batch"})}}),_i=()=>({batchAll:Nc});var jn=require("@galacticcouncil/xc-core");function fe(n,e){if(e<0||e>100)throw Error(`padPercent ${e} not in range of 0 to 100.`);return n+n*e/100n}function Sn(n){return typeof n=="object"?Object.values(n)[0]:n}function Di(){return{approve:n=>({build:async e=>{let{amount:t,asset:s,source:a,transact:i}=e,r=i?i.chain:a.chain,o=jn.Wormhole.fromChain(r),c=r.getAssetId(s);return new jn.ContractConfig({abi:jn.Abi.Erc20,address:Sn(c).toString(),args:[n(o),t],func:"approve",module:"Erc20"})}})}}var $n=require("@galacticcouncil/xc-core");var Fi=require("@galacticcouncil/common"),Xi=require("polkadot-api"),Vi=require("@polkadot-api/utils"),{H160:Kc,isEvmAddress:Gc}=Fi.h160;function qc(n){let e=Gc(n)?Kc.toAccount(n):n;return(0,Vi.toHex)((0,Xi.AccountId)().enc(e))}var zc=()=>({build:async n=>{let{address:e,amount:t,asset:s,source:a}=n,i=a.chain,r=$n.Basejump.fromChain(i),o=i.getAssetId(s);return new $n.ContractConfig({abi:$n.Abi.Basejump,address:r.getAddress(),args:[Sn(o),t,qc(e)],func:"bridgeViaWormhole",module:"Basejump"})}}),Oi=()=>({bridgeViaWormhole:zc});var xt=require("@galacticcouncil/xc-core"),Wi=require("@galacticcouncil/common"),{Ss58Addr:Hi}=xt.addr;function jc(n){if(n.startsWith("0x"))return n;if(!/^\d{38,39}$/.test(n))throw new Error(`Asset id: ${n} must be a string and have 38-39 digits`);return`0xffffffff${BigInt(n).toString(16).padStart(32,"0")}`}function xa(n,e){let t=n.getAssetId(e);return typeof t=="string"?jc(t):t}function Ui(){return{transferAssetsToPara32:()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=xa(a.chain,t);return new xt.ContractConfig({abi:xt.Abi.PolkadotXcm,address:xt.Precompile.PolkadotXcm,args:[s.chain.parachainId,Hi.getPubKey(n),[{asset:i,amount:e}],0],func:"transferAssetsToPara32",module:"PolkadotXcm"})}}),transferAssetsToPara32WithFee:()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=xa(a.chain,t),r=xa(a.chain,a.destinationFeeBalance),o=Wi.big.toBigInt(s.fee.amount,s.fee.decimals);return new xt.ContractConfig({abi:xt.Abi.PolkadotXcm,address:xt.Precompile.PolkadotXcm,args:[s.chain.parachainId,Hi.getPubKey(n),[{asset:i,amount:e},{asset:r,amount:o}],1],func:"transferAssetsToPara32",module:"PolkadotXcm"})}})}}var kt=require("@galacticcouncil/xc-core"),tn=require("@galacticcouncil/descriptors"),er=require("@polkadot-api/substrate-bindings"),Es=require("@polkadot-api/utils"),tr=require("viem");var Ni=require("@galacticcouncil/xc-core"),Ps=null;async function Ki(){if(Ps)return Ps;let n=await Ni.codec.getHubCodecs();return Ps={message:n.tx.PolkadotXcm.send.inner.message,location:n.tx.PolkadotXcm.send.inner.dest},Ps}var $i=require("@galacticcouncil/xc-core"),h=require("@galacticcouncil/descriptors"),Yi=require("@polkadot-api/substrate-bindings"),Ji=require("@polkadot-api/utils");var Gi=require("@galacticcouncil/descriptors"),ge=340282366920938463463374607431768211455n,St="0x0000000000000000000000000000000000000000000000000000000000000000",me={parents:1,interior:Gi.XcmV3Junctions.Here()},qi=0,en=1e3,Cs=1002,lt=1,kn="5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY",zi="0x0000000000000000000000000000000000000000000000000000000000000000",ji="0x0000000000000000000000000000000000000000";var Sa="0x0000000000000000000000000000000000000000",Yn=n=>({parents:2,interior:h.XcmV5Junctions.X1(h.XcmV5Junction.GlobalConsensus(h.XcmV5NetworkId.Ethereum({chain_id:BigInt(n)})))}),ka=(n,e)=>({parents:2,interior:h.XcmV5Junctions.X2([h.XcmV5Junction.GlobalConsensus(h.XcmV5NetworkId.Ethereum({chain_id:BigInt(n)})),h.XcmV5Junction.AccountKey20({key:e,network:void 0})])});function Qi(n,e){let t=Yn(n),s=ka(n,"0x"+"00".repeat(20)),a=1000000000000n,i=1000000000n,r=[h.XcmV5Instruction.ReserveAssetDeposited([{id:t,fun:h.XcmV3MultiassetFungibility.Fungible(a)},{id:s,fun:h.XcmV3MultiassetFungibility.Fungible(a)}]),h.XcmV5Instruction.ExchangeAsset({give:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.AllOf({id:t,fun:{type:"Fungible",value:void 0}})),want:[{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(i)}],maximal:!1}),h.XcmV5Instruction.PayFees({asset:{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(i)}})],o=va({ethChainId:n,destinationParaId:e,tokenAddress:"0x"+"00".repeat(20),beneficiaryHex:"0x"+"00".repeat(32),tokenAmount:a,hydrationDotFee:i,topic:"0x"+"00".repeat(32)});return[...r,...o]}function va(n){let{ethChainId:e,destinationParaId:t,tokenAddress:s,beneficiaryHex:a,tokenAmount:i,hydrationDotFee:r,topic:o}=n,c=Yn(e),m=s===Sa?c:ka(e,s),f=a.length===42&&a.startsWith("0x")?h.XcmV5Junction.AccountKey20({key:a,network:void 0}):h.XcmV5Junction.AccountId32({id:a,network:void 0}),y={parents:0,interior:h.XcmV5Junctions.X1(f)};return[h.XcmV5Instruction.SetAppendix([h.XcmV5Instruction.RefundSurplus(),h.XcmV5Instruction.DepositAsset({assets:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.All()),beneficiary:y})]),h.XcmV5Instruction.ExchangeAsset({give:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.AllOf({id:c,fun:{type:"Fungible",value:void 0}})),want:[{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(r)}],maximal:!1}),h.XcmV5Instruction.InitiateTransfer({destination:{parents:1,interior:h.XcmV5Junctions.X1(h.XcmV5Junction.Parachain(t))},remote_fees:{type:"ReserveDeposit",value:h.XcmV5AssetFilter.Definite([{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(r)}])},preserve_origin:!1,assets:[{type:"ReserveDeposit",value:h.XcmV5AssetFilter.Definite([{id:m,fun:h.XcmV3MultiassetFungibility.Fungible(i)}])}],remote_xcm:[h.XcmV5Instruction.DepositAsset({assets:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.AllCounted(3)),beneficiary:y}),h.XcmV5Instruction.SetTopic(o)]}),h.XcmV5Instruction.RefundSurplus(),h.XcmV5Instruction.DepositAsset({assets:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.All()),beneficiary:y}),h.XcmV5Instruction.SetTopic(o)]}function Ma(n){let{tokenAddress:e,senderPubKey:t,beneficiaryHex:s,tokenAmount:a,sourceExecutionFee:i,dotRemoteFee:r,dotToEtherSwapAmount:o,etherFeeAmount:c,topic:m}=n,g=Yn(lt),f=e===Sa?g:ka(lt,e),y={parents:0,interior:h.XcmV5Junctions.X1(h.XcmV5Junction.AccountId32({id:t,network:void 0}))},A={parents:0,interior:h.XcmV5Junctions.X1(h.XcmV5Junction.AccountKey20({key:s,network:void 0}))},x={parents:2,interior:h.XcmV5Junctions.X1(h.XcmV5Junction.GlobalConsensus(h.XcmV5NetworkId.Ethereum({chain_id:BigInt(lt)})))},S=[h.XcmV5Instruction.DepositAsset({assets:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.AllCounted(3)),beneficiary:A}),h.XcmV5Instruction.SetTopic(m)],B=[h.XcmV5Instruction.SetAppendix([h.XcmV5Instruction.SetHints({hints:[{type:"AssetClaimer",value:{location:y}}]}),h.XcmV5Instruction.RefundSurplus(),h.XcmV5Instruction.DepositAsset({assets:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.All()),beneficiary:y})])];B.push(h.XcmV5Instruction.ExchangeAsset({give:h.XcmV5AssetFilter.Definite([{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(o)}]),want:[{id:g,fun:h.XcmV3MultiassetFungibility.Fungible(c)}],maximal:!1}));let k=[{type:"ReserveWithdraw",value:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.AllOf({id:f,fun:{type:"Fungible",value:void 0}}))}],F=h.XcmV5AssetFilter.Definite([{id:g,fun:h.XcmV3MultiassetFungibility.Fungible(c)}]);B.push(h.XcmV5Instruction.InitiateTransfer({destination:x,remote_fees:{type:"ReserveWithdraw",value:F},preserve_origin:!0,assets:k,remote_xcm:S}),h.XcmV5Instruction.SetTopic(m));let M=i+r+o,H=[{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(M)},{id:f,fun:h.XcmV3MultiassetFungibility.Fungible(a)}],N=[{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(i)}],I={type:"ReserveWithdraw",value:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.AllOf({id:f,fun:{type:"Fungible",value:void 0}}))},$=[{type:"ReserveWithdraw",value:h.XcmV5AssetFilter.Definite([{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(o)}])},I];return[h.XcmV5Instruction.WithdrawAsset(H),h.XcmV5Instruction.PayFees({asset:N[0]}),h.XcmV5Instruction.SetAppendix([h.XcmV5Instruction.SetHints({hints:[{type:"AssetClaimer",value:{location:y}}]}),h.XcmV5Instruction.RefundSurplus(),h.XcmV5Instruction.DepositAsset({assets:h.XcmV5AssetFilter.Wild(h.XcmV5WildAsset.All()),beneficiary:y})]),h.XcmV5Instruction.InitiateTransfer({destination:{parents:1,interior:h.XcmV5Junctions.X1(h.XcmV5Junction.Parachain(en))},remote_fees:{type:"ReserveWithdraw",value:h.XcmV5AssetFilter.Definite([{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(r)}])},preserve_origin:!0,assets:$,remote_xcm:B}),h.XcmV5Instruction.SetTopic(m)]}function Zi(n){let{address:e,amount:t,asset:s,sender:a,source:i,destination:r,messageId:o}=n,c=i.chain,m=(0,Yi.getSs58AddressInfo)(a);if(!m.isValid)throw new Error(`Invalid SS58 address: ${a}`);let g=(0,Ji.toHex)(m.publicKey),f=c.getAssetXcmLocation(s),y=f?$i.multiloc.findNestedKey(f,"key"):void 0,A=y?y.key:Sa,x=r.feeBreakdown,S=x.sourceExecutionFee??0n,B=x.dotRemoteFee??0n,k=x.dotToEtherSwapAmount??0n,F=x.etherFeeAmount??0n,H=Ma({tokenAddress:A,senderPubKey:g,beneficiaryHex:e,tokenAmount:t,sourceExecutionFee:S,dotRemoteFee:B,dotToEtherSwapAmount:k,etherFeeAmount:F,topic:o??"0x0000000000000000000000000000000000000000000000000000000000000000"});return h.XcmVersionedXcm.V5(H)}var{Ss58Addr:nr}=kt.addr,$c="0x0000000000000000000000000000000000000000",Yc=()=>({build:async n=>{let{address:e,amount:t,asset:s,sender:a,source:i,destination:r}=n,o=i.chain,c=r.chain,m=kt.Snowbridge.fromChain(o),g=o.getAssetId(s),f=Sn(g),y=s.originSymbol==="ETH",A=r.feeBreakdown.executionFee,x=r.feeBreakdown.relayerFee,S=r.feeBreakdown.hydrationDotFee,B=r.fee.amount,k=nr.getPubKey(e),F=new TextEncoder().encode(`${c.parachainId}${a}${f}${k}${t}${Date.now()}`),M=(0,Es.toHex)((0,er.Blake2256)(F)),H=va({ethChainId:lt,destinationParaId:c.parachainId,tokenAddress:y?$c:f,beneficiaryHex:k,tokenAmount:t,hydrationDotFee:S,topic:M}),N=await Ki(),I=(0,Es.toHex)(N.message.enc(tn.XcmVersionedXcm.V5(H))),$=[];y||$.push((0,tr.encodeAbiParameters)([{type:"uint8"},{type:"address"},{type:"uint128"}],[0,f,t]));let Ke=N.location.enc(tn.XcmVersionedLocation.V5({parents:0,interior:tn.XcmV5Junctions.X1(tn.XcmV5Junction.AccountId32({id:k,network:void 0}))})),Je=(0,Es.toHex)(Ke.slice(1));return new kt.ContractConfig({abi:kt.Abi.Snowbridge,address:m.getGateway(),args:[I,$,Je,A,x],value:y?B+t:B,func:"v2_sendMessage",module:"Snowbridge"})}}),Jc=()=>({build:async n=>{let{address:e,amount:t,asset:s,source:a,destination:i}=n,r=a.chain,o=i.chain,c=kt.Snowbridge.fromChain(r),m=r.getAssetId(s),g=Sn(m),f=s.originSymbol==="ETH",y=i.feeBreakdown.bridgeFeeInDot,A=i.fee.amount;return new kt.ContractConfig({abi:kt.Abi.Snowbridge,address:c.getGateway(),args:[g,o.parachainId,[1,nr.getPubKey(e)],y,t],value:f?A+t:A,func:"sendToken",module:"Snowbridge"})}}),sr=()=>({v2SendMessage:Yc,sendToken:Jc});var st=require("@galacticcouncil/xc-core"),Qc="0x00",ar=8,Zc=()=>({build:async n=>{let{address:e,amount:t,asset:s,source:a,destination:i}=n,r=a.chain,o=i.chain,c=st.Ntt.fromChain(r,s),m=st.Wormhole.fromChain(o),g=e;o instanceof st.EvmParachain&&(g=await o.getDerivatedAddress(e));let f=r,y=await f.evmClient.getProvider().readContract({abi:st.Abi.NttManager,address:c.manager,args:[m.getWormholeId(),Qc],functionName:"quoteDeliveryPrice"}),A=f.getAssetDecimals(s)??0,x=t;if(A>ar){let S=10n**BigInt(A-ar);x=t-t%S}return new st.ContractConfig({abi:st.Abi.NttManager,address:c.manager,args:[x,m.getWormholeId(),m.normalizeAddress(g)],token:c.token,wrapNative:f.getBalanceType(s)===st.EvmBalanceType.Native,value:y[1],func:"transfer",module:"NttManager"})}}),ir=()=>({transfer:Zc});function rr(){return{Ntt:ir}}function at(){return{Batch:_i,Erc20:Di,Basejump:Oi,PolkadotXcm:Ui,Snowbridge:sr,Wormhole:rr}}var Ia=require("@galacticcouncil/common"),cr=require("@galacticcouncil/xc-core"),or="AssetConversion",em=n=>{let e="swap_tokens_for_exact_tokens";return{build:async({address:t,source:s})=>{let{chain:a}=s,i=s.destinationFeeSwap||s.feeSwap;if(!i)throw new Error("Swap context not found.");let{aIn:r,aOut:o}=i,c=a,m=(0,Ia.encodeLocation)(c.getAssetXcmLocation(r)),g=(0,Ia.encodeLocation)(c.getAssetXcmLocation(o)),f=r.amount+r.amount*BigInt(n.slippage)/100n,y=o.amount;return new cr.ExtrinsicConfig({module:or,func:e,getTx:A=>A.getUnsafeApi().tx[or][e]({path:[m,g],amount_out:y,amount_in_max:f,send_to:t,keep_alive:!0})})}}},mr=()=>({swapTokensForExactTokens:em});var Bs=require("@galacticcouncil/descriptors"),ur=require("@galacticcouncil/xc-core"),tm="Assets",nm=()=>{let n="transfer";return{build:async({asset:e,amount:t,address:s,destination:a})=>{let i=a.chain,{fee:r}=a,o=t>r.amount?t-r.amount:t,c=i.getMetadataAssetId(e);return new ur.ExtrinsicConfig({module:tm,func:n,getTx:m=>m.getTypedApi(Bs.hub).tx.Assets.transfer({id:Number(c),target:Bs.MultiAddress.Id(s),amount:o})})}}},dr=()=>({transfer:nm});var fr=require("@galacticcouncil/xc-core"),lr="Balances",sm=(n=!1)=>{let e="transfer_all";return{build:async({address:t})=>new fr.ExtrinsicConfig({module:lr,func:e,getTx:s=>s.getUnsafeApi().tx[lr][e]({dest:t,keep_alive:n})})}},gr=()=>({transferAll:sm});var pr=require("@galacticcouncil/descriptors"),hr=require("@galacticcouncil/xc-core"),am="Router",im=n=>({build:async({source:t})=>{let{chain:s,destinationFeeSwap:a}=t;if(!a)throw new Error("Swap context not found.");let{aIn:i,aOut:r,route:o}=a,c=s,m=c.getMetadataAssetId(i),g=c.getMetadataAssetId(r),f=r.amount,y=i.amount+i.amount*BigInt(n.slippage)/100n;return new hr.ExtrinsicConfig({module:am,func:"buy",getTx:A=>A.getTypedApi(pr.hydration).tx.Router.buy({asset_in:Number(m),asset_out:Number(g),amount_out:f,max_amount_in:y,route:o})})}}),yr=()=>({buy:im});var Ar=require("@galacticcouncil/xc-core"),br="Utility",rm=n=>{let e="batch_all";return{build:async t=>{let s=await Promise.all(n.map(a=>a.build(t)));return new Ar.ExtrinsicConfig({module:br,func:e,getTx:a=>{let i=s.map(r=>r.getTx(a).decodedCall);return a.getUnsafeApi().tx[br][e]({calls:i})}})}}},wr=()=>({batchAll:rm});var Rs=require("@galacticcouncil/xc-core"),Sr=require("polkadot-api"),kr=require("viem");var Ct=(i=>(i.v1="V1",i.v2="V2",i.v3="V3",i.v4="V4",i.v5="V5",i))(Ct||{}),it=(a=>(a.Teleport="Teleport",a.LocalReserve="LocalReserve",a.DestinationReserve="DestinationReserve",a.RemoteReserve="RemoteReserve",a))(it||{});var xr="EthereumXcm",om=n=>{let e="transact";return{build:async t=>{let s=await n.build(t),a="V1",i=(0,kr.encodeFunctionData)({abi:Rs.Abi[s.module],functionName:s.func,args:s.args});return new Rs.ExtrinsicConfig({module:xr,func:e,getTx:r=>r.getUnsafeApi().tx[xr][e]({xcm_transaction:{type:a,value:{gas_limit:[5000000n,0n,0n,0n],fee_payment:{type:"Auto",value:void 0},action:{type:"Call",value:s.address},value:[0n,0n,0n,0n],input:Sr.Binary.fromHex(i),access_list:void 0}}})})}}},Ta=()=>({transact:om});var Ut=require("@galacticcouncil/xc-core"),ss=require("@galacticcouncil/common");var vn=require("@galacticcouncil/xc-core"),b=require("@galacticcouncil/descriptors");var pe=require("@galacticcouncil/descriptors");var vr=require("@galacticcouncil/common"),Pa=require("@galacticcouncil/descriptors"),Mr=require("@polkadot-api/substrate-bindings"),Ir=require("@polkadot-api/utils");function re(n){if(n.length===42&&n.startsWith("0x"))return Pa.XcmV3Junction.AccountKey20({key:n,network:void 0});let t=(0,Mr.getSs58AddressInfo)(n);if(!t.isValid)throw new Error(`Invalid SS58 address: ${n}`);return Pa.XcmV3Junction.AccountId32({id:(0,Ir.toHex)(t.publicKey),network:void 0})}function Jn(n,e,t){return vr.acc.getMultilocationDerivatedAccount(n.parachainId,e,t.parachainId===0?0:1,t.usesH160Acc)}var Ca=require("@galacticcouncil/xc-core");function Tr(n,e){let t=Ca.multiloc.findNestedKey(n,"GeneralIndex"),s=Ca.multiloc.findNestedKey(e,"GeneralIndex"),a=t&&t.GeneralIndex,i=s&&s.GeneralIndex;return Number.isNaN(a)||Number.isNaN(i)?!1:Number(a)>Number(i)}function se(n,e){let t=n.getAssetXcmLocation(e);if(!t)throw new Error(e.originSymbol+" location config is missing.");return t}var Ls={};pn(Ls,{ETHER_TOKEN_ADDRESS:()=>Ea,erc20Location:()=>mm,erc20LocationReanchored:()=>um,ethereumLocation:()=>Cr,parachainLocation:()=>cm});var ft=require("@galacticcouncil/descriptors"),Ea="0x0000000000000000000000000000000000000000",Pr=n=>ft.XcmV3Junction.GlobalConsensus(ft.XcmV3JunctionNetworkId.Ethereum({chain_id:BigInt(n)}));function Cr(n){return{parents:2,interior:ft.XcmV3Junctions.X1(Pr(n))}}function cm(n){return{parents:1,interior:ft.XcmV3Junctions.X1(ft.XcmV3Junction.Parachain(n))}}function mm(n,e){return e===Ea?Cr(n):{parents:2,interior:ft.XcmV3Junctions.X2([Pr(n),ft.XcmV3Junction.AccountKey20({key:e})])}}function um(n){return n===Ea?{parents:0,interior:{type:"Here"}}:{parents:0,interior:ft.XcmV3Junctions.X1(ft.XcmV3Junction.AccountKey20({key:n}))}}var Ba=require("@galacticcouncil/common"),Er=require("@galacticcouncil/xc-core");function ie(n,e){return dm(e)>=4?(0,Ba.encodeLocation)(n):lm(n)}function dm(n){let e=n.toString().replace("V","").replace("v","");return Number(e)}function lm(n){return{type:"Concrete",value:(0,Ba.encodeLocation)(n)}}var fm=1e3;function gm(n){let{parents:e,interior:t}=n;return e===1&&t==="Here"?!0:e===2&&t&&t!=="Here"?Object.values(t).flat().some(a=>a&&typeof a=="object"&&"GlobalConsensus"in a):!1}function pm(n){if(n)return gm(n)?fm:Er.multiloc.findParachain(n)}function Br(n,e,t,s){let a=e.getAssetXcmLocation(n),i=pm(a),r=s?.parachainId??t.parachainId;if(i&&r!==i)throw new Error(s?`Wrong reserve for "${n.originSymbol}": expected chain ${i}, got ${s.name} (${s.parachainId})`:`Reserve chain ${i} required for "${n.originSymbol}"`)}function _s(n,e){let t="V4",s=ie(se(e,n),t),a=St;return[pe.XcmV4Instruction.ReserveAssetDeposited([{id:me,fun:pe.XcmV3MultiassetFungibility.Fungible(ge)},{id:s,fun:pe.XcmV3MultiassetFungibility.Fungible(ge)}]),pe.XcmV4Instruction.ClearOrigin(),pe.XcmV4Instruction.BuyExecution({fees:{id:me,fun:pe.XcmV3MultiassetFungibility.Fungible(ge)},weight_limit:pe.XcmV3WeightLimit.Unlimited()}),pe.XcmV4Instruction.DepositAsset({assets:pe.XcmV4AssetAssetFilter.Wild(pe.XcmV4AssetWildAsset.AllCounted(2)),beneficiary:{parents:0,interior:pe.XcmV3Junctions.X1(re(kn))}}),pe.XcmV4Instruction.SetTopic(a)]}var Et=require("@galacticcouncil/descriptors");function Ra(n,e){let t="V4",s=ie(se(e,n),t),a=Ds("V4",re(ji),re(kn),s,St);return[Et.XcmV4Instruction.WithdrawAsset([{id:me,fun:Et.XcmV3MultiassetFungibility.Fungible(ge)},{id:s,fun:Et.XcmV3MultiassetFungibility.Fungible(ge)}]),Et.XcmV4Instruction.ClearOrigin(),Et.XcmV4Instruction.BuyExecution({fees:{id:me,fun:Et.XcmV3MultiassetFungibility.Fungible(ge)},weight_limit:Et.XcmV3WeightLimit.Unlimited()}),...a.value]}var V=require("@galacticcouncil/descriptors");function Rr(n,e){let t="V4",s=ie(se(e,n),t),a=St;return[V.XcmV4Instruction.WithdrawAsset([{id:s,fun:V.XcmV3MultiassetFungibility.Fungible(ge)}]),V.XcmV4Instruction.ClearOrigin(),V.XcmV4Instruction.BuyExecution({fees:{id:s,fun:V.XcmV3MultiassetFungibility.Fungible(ge)},weight_limit:V.XcmV3WeightLimit.Unlimited()}),V.XcmV4Instruction.DepositAsset({assets:V.XcmV4AssetAssetFilter.Wild(V.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:V.XcmV3Junctions.X1(re(kn))}}),V.XcmV4Instruction.SetTopic(a)]}function La(n,e){let t="V4",s=ie(se(e,n),t);return[V.XcmV4Instruction.BuyExecution({fees:{id:s,fun:V.XcmV3MultiassetFungibility.Fungible(ge)},weight_limit:V.XcmV3WeightLimit.Unlimited()}),V.XcmV4Instruction.DepositAsset({assets:V.XcmV4AssetAssetFilter.Wild(V.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:V.XcmV3Junctions.X1(re(kn))}})]}function Lr(n,e,t){let s="V4",a=ie(se(e,n),s),i=St,r=La(n,t);return[V.XcmV4Instruction.WithdrawAsset([{id:a,fun:V.XcmV3MultiassetFungibility.Fungible(ge)}]),V.XcmV4Instruction.ClearOrigin(),V.XcmV4Instruction.BuyExecution({fees:{id:a,fun:V.XcmV3MultiassetFungibility.Fungible(ge)},weight_limit:V.XcmV3WeightLimit.Unlimited()}),V.XcmV4Instruction.DepositReserveAsset({assets:V.XcmV4AssetAssetFilter.Wild(V.XcmV4AssetWildAsset.AllCounted(1)),dest:{parents:1,interior:V.XcmV3Junctions.X1(V.XcmV3Junction.Parachain(t.parachainId))},xcm:r}),V.XcmV4Instruction.SetTopic(i)]}var ue=require("@galacticcouncil/descriptors");function _r(n,e){let t="V5",s=ie(se(e,n),t),a={parents:0,interior:ue.XcmV5Junctions.X1(ue.XcmV5Junction.AccountId32({id:zi,network:void 0}))};return[ue.XcmV5Instruction.ReserveAssetDeposited([{id:me,fun:ue.XcmV3MultiassetFungibility.Fungible(ge)}]),ue.XcmV5Instruction.PayFees({asset:{id:me,fun:ue.XcmV3MultiassetFungibility.Fungible(ge)}}),ue.XcmV5Instruction.ReserveAssetDeposited([{id:s,fun:ue.XcmV3MultiassetFungibility.Fungible(ge)}]),ue.XcmV5Instruction.ClearOrigin(),ue.XcmV5Instruction.DepositAsset({assets:ue.XcmV5AssetFilter.Wild(ue.XcmV5WildAsset.AllCounted(3)),beneficiary:a}),ue.XcmV5Instruction.SetTopic(St)]}var Dr=[vn.ChainEcosystem.Polkadot,vn.ChainEcosystem.Kusama],hm={parents:1,interior:b.XcmV3Junctions.X1(b.XcmV3Junction.Parachain(1e3))},ym=n=>{let{parents:e,interior:t}=n;return e!==1?!1:t==="Here"||t?.type==="Here"},Fr=(n,e)=>!n.ecosystem||!e.ecosystem?!1:Dr.includes(n.ecosystem)&&Dr.includes(e.ecosystem)&&n.ecosystem!==e.ecosystem,Xr=n=>{let{interior:e}=n;if(e.type==="X1"&&e.value.type==="GlobalConsensus")return e.value.value.type==="Ethereum";if(e.type==="X2"&&Array.isArray(e.value)){let t=e.value[0];return t.type==="GlobalConsensus"&&t.value.type==="Ethereum"}return!1},Bt=(n,e,t)=>{if(Fr(e,t))return{type:n,value:_a(t.ecosystem,t.parachainId)};if(t.parachainId===qi)return{type:n,value:{parents:1,interior:b.XcmV3Junctions.Here()}};let s=t.key==="ethereum"?en:t.parachainId;return{type:n,value:{parents:1,interior:b.XcmV3Junctions.X1(b.XcmV3Junction.Parachain(s))}}},bm=n=>n===vn.ChainEcosystem.Kusama?b.XcmV3JunctionNetworkId.Kusama():b.XcmV3JunctionNetworkId.Polkadot(),_a=(n,e)=>({parents:2,interior:b.XcmV3Junctions.X2([b.XcmV3Junction.GlobalConsensus(bm(n)),b.XcmV3Junction.Parachain(e)])}),Vr=(n,e,t,s)=>{if(Fr(e,t)){if(e.parachainId!==en){let a=vn.multiloc.findGlobalConsensus(se(e,s)),i=typeof a=="string"&&a===t.ecosystem;return{dest:{type:n,value:{parents:1,interior:b.XcmV3Junctions.X1(b.XcmV3Junction.Parachain(en))}},mode:i?"bridge-withdraw":"bridge-deposit"}}if(t.parachainId!==en)return{dest:{type:n,value:_a(t.ecosystem,en)},mode:"onward"}}},Mn=(n,e)=>({type:n,value:{parents:0,interior:b.XcmV3Junctions.X1(e)}}),Da=(n,e,t)=>e==="RemoteReserve"?{type:"RemoteReserve",value:{type:n,value:ym(t)?hm:t}}:{type:e},nn=(n,e)=>({id:n,fun:b.XcmV3MultiassetFungibility.Fungible(e)}),Or=(n,e,t)=>({type:n,value:[b.XcmV4Instruction.DepositAsset({assets:b.XcmV4AssetAssetFilter.Wild(b.XcmV4AssetWildAsset.AllCounted(t)),beneficiary:{parents:0,interior:b.XcmV3Junctions.X1(e)}})]}),Ds=(n,e,t,s,a)=>{let i=a;return{type:n,value:[b.XcmV4Instruction.SetAppendix([b.XcmV4Instruction.DepositAsset({assets:b.XcmV4AssetAssetFilter.Wild(b.XcmV4AssetWildAsset.All()),beneficiary:{parents:0,interior:b.XcmV3Junctions.X1(t)}})]),b.XcmV4Instruction.InitiateReserveWithdraw({assets:b.XcmV4AssetAssetFilter.Wild(b.XcmV4AssetWildAsset.AllOf({id:s,fun:b.XcmV2MultiassetWildFungibility.Fungible()})),reserve:Ls.ethereumLocation(lt),xcm:[b.XcmV4Instruction.BuyExecution({fees:{id:Am(s),fun:b.XcmV3MultiassetFungibility.Fungible(1n)},weight_limit:b.XcmV3WeightLimit.Unlimited()}),b.XcmV4Instruction.DepositAsset({assets:b.XcmV4AssetAssetFilter.Wild(b.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:b.XcmV3Junctions.X1(e)}}),b.XcmV4Instruction.SetTopic(i)]}),b.XcmV4Instruction.SetTopic(i)]}},Hr=(n,e,t,s,a,i)=>{let r=s==="onward"?{parents:1,interior:b.XcmV3Junctions.X1(b.XcmV3Junction.Parachain(t.parachainId))}:_a(t.ecosystem,t.parachainId),o={parents:0,interior:b.XcmV3Junctions.X1(e)},c=b.XcmV4AssetAssetFilter.Wild(b.XcmV4AssetWildAsset.AllCounted(1)),m=[b.XcmV4Instruction.BuyExecution({fees:{id:a,fun:b.XcmV3MultiassetFungibility.Fungible(i)},weight_limit:b.XcmV3WeightLimit.Unlimited()}),b.XcmV4Instruction.DepositAsset({assets:c,beneficiary:o})],g=s==="bridge-withdraw"?b.XcmV4Instruction.InitiateReserveWithdraw({assets:c,reserve:r,xcm:m}):b.XcmV4Instruction.DepositReserveAsset({assets:c,dest:r,xcm:m});return{type:n,value:[b.XcmV4Instruction.SetAppendix([b.XcmV4Instruction.DepositAsset({assets:b.XcmV4AssetAssetFilter.Wild(b.XcmV4AssetWildAsset.All()),beneficiary:o})]),g]}},Am=n=>{let e=vn.multiloc.findNestedKey(n,"key");return e?{parents:0,interior:b.XcmV3Junctions.X1(b.XcmV3Junction.AccountKey20({key:e.key}))}:{parents:0,interior:b.XcmV3Junctions.Here()}},Wr=(n,e,t,s,a,i)=>({type:n,value:[b.XcmV4Instruction.WithdrawAsset([{id:t,fun:b.XcmV3MultiassetFungibility.Fungible(s)}]),b.XcmV4Instruction.BuyExecution({fees:{id:t,fun:b.XcmV3MultiassetFungibility.Fungible(s)},weight_limit:b.XcmV3WeightLimit.Unlimited()}),b.XcmV4Instruction.Transact({origin_kind:b.XcmV2OriginKind.SovereignAccount(),require_weight_at_most:{ref_time:i.refTime,proof_size:i.proofSize},call:a}),b.XcmV4Instruction.RefundSurplus(),b.XcmV4Instruction.DepositAsset({assets:b.XcmV4AssetAssetFilter.Wild(b.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:b.XcmV3Junctions.X1(e)}})]}),Ur=(n,e,t,s,a,i)=>({type:n,value:[b.XcmV4Instruction.WithdrawAsset([{id:t,fun:b.XcmV3MultiassetFungibility.Fungible(a)}]),b.XcmV4Instruction.BuyExecution({fees:{id:t,fun:b.XcmV3MultiassetFungibility.Fungible(a)},weight_limit:b.XcmV3WeightLimit.Unlimited()}),b.XcmV4Instruction.TransferAsset({assets:[{id:t,fun:b.XcmV3MultiassetFungibility.Fungible(s)}],beneficiary:{parents:0,interior:b.XcmV3Junctions.X1(i)}}),b.XcmV4Instruction.RefundSurplus(),b.XcmV4Instruction.DepositAsset({assets:b.XcmV4AssetAssetFilter.Wild(b.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:b.XcmV3Junctions.X1(e)}})]});var Se="PolkadotXcm",wm=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=re(n),r=a.chain,o=s.chain,c="V4",m=se(r,t),g=se(r,s.fee),f=ie(m,c),y=ie(g,c),A=nn(f,e),x=nn(y,s.fee.amount),S="limited_reserve_transfer_assets";return new Ut.ExtrinsicConfig({module:Se,func:S,getTx:B=>{let k=B.getUnsafeApi().tx[Se][S];return t.key===s.fee.key?k({dest:Bt(c,r,o),beneficiary:Mn(c,i),assets:{type:c,value:[A]},fee_asset_item:0,weight_limit:{type:"Unlimited"}}):Tr(m,g)?k({dest:Bt(c,r,o),beneficiary:Mn(c,i),assets:{type:c,value:[x,A]},fee_asset_item:0,weight_limit:{type:"Unlimited"}}):k({dest:Bt(c,r,o),beneficiary:Mn(c,i),assets:{type:c,value:[A,x]},fee_asset_item:1,weight_limit:{type:"Unlimited"}})}})}}),xm=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=re(n),r=a.chain,o=s.chain,c="V4",m=ie(se(r,t),c),g=nn(m,e),f=Bt(c,r,o),y=Mn(c,i),A={type:c,value:[g]},x="limited_teleport_assets";return new Ut.ExtrinsicConfig({module:Se,func:x,getTx:S=>S.getUnsafeApi().tx[Se][x]({dest:f,beneficiary:y,assets:A,fee_asset_item:0,weight_limit:{type:"Unlimited"}})})}}),Sm=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=re(n),r=a.chain,o=s.chain,c=r.xcmVersion??"V4",m=ie(se(r,t),c),g=nn(m,e),f=Bt(c,r,o),y=Mn(c,i),A={type:c,value:[g]},x="reserve_transfer_assets";return new Ut.ExtrinsicConfig({module:Se,func:x,getTx:S=>S.getUnsafeApi().tx[Se][x]({dest:f,beneficiary:y,assets:A,fee_asset_item:0})})}}),km=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=re(n),r=a.chain,o=s.chain,c="V4",m=ie(se(r,t),c),g=nn(m,e),f=Bt(c,r,o),y=Mn(c,i),A={type:c,value:[g]},x="transfer_assets";return new Ut.ExtrinsicConfig({module:Se,func:x,getTx:S=>S.getUnsafeApi().tx[Se][x]({dest:f,beneficiary:y,assets:A,fee_asset_item:0,weight_limit:{type:"Unlimited"}})})}}),vm=n=>({build:async({address:e,asset:t,amount:s,destination:a,messageId:i,sender:r,source:o,transact:c})=>{let m="V4",g=o.chain,f=a.chain,y=a.fee.amount,A=a.fee;c&&(f=c.chain,y=ss.big.toBigInt(c.fee.amount,c.fee.decimals),A=c.fee);let x=re(r),S=c||f.usesCexForwarding?Jn(g,r,f):e,B=re(S),{transferType:k}=n,F=ie(se(g,t),m),M=ie(se(g,A),m),H=nn(F,s),N=nn(M,y),I=t.isEqual(A),$=Vr(m,g,f,t),Ke=$?.dest??Bt(m,g,f),Je={type:m,value:I?[H]:[N,H]},_t=Da(m,k,F),Nt={type:m,value:I?F:M},Ae=Da(m,k,M),l;if(Xr(F)&&a.chain.isEvmChain())l=Ds(m,B,x,F,i);else if($){let u=ss.big.toBigInt(n.executionFee??a.fee.amount,a.fee.decimals),p=ie(se(f,t),m);l=Hr(m,B,f,$.mode,p,u)}else l=Or(m,B,Je.value.length);let d="transfer_assets_using_type_and_then";return new Ut.ExtrinsicConfig({module:Se,func:d,getTx:u=>u.getUnsafeApi().tx[Se][d]({dest:Ke,assets:Je,assets_transfer_type:_t,remote_fees_id:Nt,fees_transfer_type:Ae,custom_xcm_on_dest:l,weight_limit:{type:"Unlimited"}})})}}),Mm=()=>{let n="send";return{transact:e=>({build:async t=>{let{sender:s,source:a,transact:i}=t,r="V4";if(!i)throw new Error("Transact ctx configuration is missing.");let o=a.chain,c=i.chain,m=Jn(o,s,c),g=re(m),{fee:f}=i,y=ie(se(c,f),r),A=ss.big.toBigInt(e.fee,f.decimals);return new Ut.ExtrinsicConfig({module:Se,func:n,getTx:x=>x.getUnsafeApi().tx[Se][n]({dest:Bt(r,o,c),message:Wr(r,g,y,A,i.call,i.weight)})})}}),transferAsset:e=>({build:async t=>{let{amount:s,address:a,asset:i,sender:r,source:o,destination:c}=t,m="V4",g=o.chain,f=c.chain,y=Jn(g,r,f),A=re(y),x=re(a),S=ie(se(f,i),m),{fee:B}=c,k=ss.big.toBigInt(e.fee,B.decimals),F=s>B.amount?s-(B.amount+k):s;return new Ut.ExtrinsicConfig({module:Se,func:n,getTx:M=>M.getUnsafeApi().tx[Se][n]({dest:Bt(m,g,f),message:Ur(m,A,S,F,k,x)})})}})}};function Im(n){let e=t=>({build:async s=>{let a=t(s),i="execute";return new Ut.ExtrinsicConfig({module:Se,func:i,getTx:r=>r.getUnsafeApi().tx[Se][i]({message:a,max_weight:{ref_time:20000000000n,proof_size:500000n}})})}});return n?e(n):{viaSnowbridge:()=>e(Zi)}}var Fa=()=>({limitedReserveTransferAssets:wm,limitedTeleportAssets:xm,reserveTransferAssets:Sm,transferAssets:km,transferAssetsUsingTypeAndThen:vm,execute:Im,send:Mm});var Gr=require("@galacticcouncil/xc-core"),qr=require("@galacticcouncil/common");var as=require("@galacticcouncil/descriptors"),Nr=(n,e,t)=>e.parachainId===0?{type:n,value:{parents:1,interior:as.XcmV3Junctions.X1(t)}}:{type:n,value:{parents:1,interior:as.XcmV3Junctions.X2([as.XcmV3Junction.Parachain(e.parachainId),t])}};var Kr="XTokens",Tm=()=>({build:async({address:n,amount:e,asset:t,destination:s,sender:a,source:i})=>{let r=i.chain,o=s.chain,c="V3",m=o.usesCexForwarding?Jn(r,a,o):n,g=re(m),f=r.getAssetId(t),y=(0,qr.encodeAssetId)(f),A="transfer";return new Gr.ExtrinsicConfig({module:Kr,func:A,getTx:x=>x.getUnsafeApi().tx[Kr][A]({currency_id:y,amount:e,dest:Nr(c,o,g),dest_weight_limit:{type:"Unlimited"}})})}}),Xa=()=>({transfer:Tm});function w(){return{assetConversion:mr,assets:dr,balances:gr,ethereumXcm:Ta,polkadotXcm:Fa,router:yr,utility:wr,xTokens:Xa}}function sn(n,e){return{prior:function(t){return{build:async s=>n(s)?w().utility().batchAll([e,t]).build(s):t.build(s)}},priorMulti:function(t){return{build:async s=>n(s)?w().utility().batchAll([e,...t]).build(s):w().utility().batchAll([...t]).build(s)}}}}var In=require("@galacticcouncil/xc-core");var zr=80000n,jr=120000n,$r=100000n,Yr=2000000n,Va=15000000000000n;var Na={};pn(Na,{ASSET_LOCKDOWN_PERIOD_BLOCKS:()=>Zr,AssethubClient:()=>$e,BaseClient:()=>gt,HydrationClient:()=>ke,getAllAssetDepositLimits:()=>Wa,getAssetDepositLimit:()=>Ha,getGlobalWithdrawLimit:()=>Ua});var Oa=require("@galacticcouncil/common"),is=require("@galacticcouncil/descriptors"),gt=class{chain;descriptor;constructor(e,t){this.chain=e,this.descriptor=t??is.hub}get client(){return this.chain.client}api(){return this.client.getTypedApi(this.descriptor)}get refApi(){return this.api()}async getSystemAccountBalance(e){let s=(await this.refApi.query.System.Account.getValue(e)).data,{free:a,frozen:i}=s;return BigInt(a)-BigInt(i)}async calculateDestinationFee(e,t){let s=await this.refApi.apis.XcmPaymentApi.query_xcm_weight({type:"V4",value:e});if(!s.success)throw Error("Can't query XCM weight.");let a=this.chain.getAssetXcmLocation(t);if(!a)throw Error(`Can't get XCM location for asset ${t.originSymbol}`);let i=(0,Oa.encodeLocation)(a),r=await this.refApi.apis.XcmPaymentApi.query_weight_to_asset_fee(s.value,is.XcmVersionedAssetId.V4(i));if(!r.success)throw Error(`Can't convert weight to fee in ${t.originSymbol}`);return BigInt(r.value)}async calculateDestinationFeeV5(e,t){let s=await this.refApi.apis.XcmPaymentApi.query_xcm_weight({type:"V5",value:e});if(!s.success)throw Error("Can't query XCM weight (V5).");let a=this.chain.getAssetXcmLocation(t);if(!a)throw Error(`Can't get XCM location for asset ${t.originSymbol}`);let i=(0,Oa.encodeLocation)(a),r=await this.refApi.apis.XcmPaymentApi.query_weight_to_asset_fee(s.value,is.XcmVersionedAssetId.V4(i));if(!r.success)throw Error(`Can't convert weight to fee in ${t.originSymbol}`);return BigInt(r.value)}};var rt=require("@galacticcouncil/descriptors"),Jr=require("@galacticcouncil/common"),Fs=require("@polkadot-api/substrate-bindings"),Qr=require("@polkadot-api/utils");var $e=class extends gt{constructor(e){super(e)}async checkIfSufficient(e){let t=this.chain.getAssetId(e),s=this.chain.getAssetXcmLocation(e),a=(0,Jr.encodeLocation)(s);if(t===0)return!0;let i=t===e.originSymbol?await this.api().query.ForeignAssets.Asset.getValue(a):await this.api().query.Assets.Asset.getValue(Number(t));return i&&i.is_sufficient||!1}async checkIfFrozen(e,t){let s=this.chain.getAssetId(t);if(s===t.originSymbol)return!1;let a=await this.api().query.Assets.Account.getValue(Number(s),e);return a&&a.status.type==="Frozen"||!1}async getBridgeDeliveryFee(e={defaultFee:150000000000n}){return this.readBridgeBaseFee(":BridgeHubEthereumBaseFeeV2:",e.defaultFee)}async getBridgeDeliveryFeeV1(e={defaultFee:2750872500000n}){return this.readBridgeBaseFee(":BridgeHubEthereumBaseFee:",e.defaultFee)}async readBridgeBaseFee(e,t){let s=new TextEncoder().encode(e),a=(0,Qr.toHex)((0,Fs.Twox128)(s)),i=await this.client._request("state_getStorage",[a]);if(!i)return t;let r=Fs.u128.dec(i);return r===0n?t:r}async calculateDeliveryFee(e,t){let s=rt.XcmVersionedLocation.V5({parents:1,interior:rt.XcmV5Junctions.X1(rt.XcmV5Junction.Parachain(t))}),a=rt.XcmVersionedAssetId.V5({parents:1,interior:{type:"Here",value:void 0}}),i=await this.api().apis.XcmPaymentApi.query_delivery_fees(s,rt.XcmVersionedXcm.V4(e),a);if(!i.success)throw Error("Can't query XCM delivery fee.");let r=i.value.value.find(c=>{let m=c.id;return m&&m.parents&&m.parents===1&&m.interior.type==="Here"});if(!r)throw Error("Can't find XCM delivery fee in DOT.");let o=r.fun.value;if(typeof o=="bigint")return o;throw Error("Can't parse delivery fee.")}async quoteDotToEther(e,t){let s={parents:1,interior:rt.XcmV5Junctions.Here()},a=await this.api().apis.AssetConversionApi.quote_price_exact_tokens_for_tokens(s,e,t,!0);if(a===void 0)throw Error("Can't quote DOT to Ether conversion.");return a}async quoteEtherForDot(e,t){let s={parents:1,interior:rt.XcmV5Junctions.Here()},a=await this.api().apis.AssetConversionApi.quote_price_tokens_for_exact_tokens(e,s,t,!0);if(a===void 0)throw Error("Can't quote Ether for DOT conversion.");return a}async quoteDotForExactEther(e,t){let s={parents:1,interior:rt.XcmV5Junctions.Here()},a=await this.api().apis.AssetConversionApi.quote_price_tokens_for_exact_tokens(s,e,t,!0);if(a===void 0)throw Error("Can't quote DOT for Ether conversion.");return a}};var to=require("@galacticcouncil/descriptors");var Zr=14400;function eo(n,e,t,s,a,i){let r=e?.xcm_rate_limit!=null?BigInt(e.xcm_rate_limit):null,o=e?.symbol?new TextDecoder().decode(e.symbol):`#${n}`,c=e?.decimals??12,m=!1,g,f,y;t&&(t.type==="Locked"?(g=t.value,m=a<t.value):(f=t.value[0],y=t.value[1]));let A=s?.type==="Local"?"Local":"External",x=!m&&f!==void 0&&f+Zr<=a,S=null;if(r!==null)if(m)S=0n;else if(x)S=r;else{let B=y??i,k=i>B?i-B:0n;S=r>k?r-k:0n}return{assetId:n,symbol:o,decimals:c,limit:r,locked:m,lockedUntilBlock:g,lastResetBlock:f,baselineIssuance:y,currentIssuance:i,headroom:S,category:A,periodExpired:x}}async function Ha(n,e){let t=e===0?n.query.Balances.TotalIssuance.getValue({at:"best"}):n.query.Tokens.TotalIssuance.getValue(e,{at:"best"}),[s,a,i,r,o]=await Promise.all([n.query.AssetRegistry.Assets.getValue(e,{at:"best"}),n.query.CircuitBreaker.AssetLockdownState.getValue(e,{at:"best"}),n.query.CircuitBreaker.GlobalAssetOverrides.getValue(e,{at:"best"}),n.query.System.Number.getValue({at:"best"}),t]);return eo(e,s,a,i,r,o)}async function Wa(n){let[e,t,s,a,i,r]=await Promise.all([n.query.AssetRegistry.Assets.getEntries({at:"best"}),n.query.CircuitBreaker.AssetLockdownState.getEntries({at:"best"}),n.query.CircuitBreaker.GlobalAssetOverrides.getEntries({at:"best"}),n.query.System.Number.getValue({at:"best"}),n.query.Balances.TotalIssuance.getValue({at:"best"}),n.query.Tokens.TotalIssuance.getEntries({at:"best"})]),o=new Map(t.map(f=>[f.keyArgs[0],f.value])),c=new Map(s.map(f=>[f.keyArgs[0],f.value])),m=new Map(r.map(f=>[f.keyArgs[0],f.value])),g=new Map;for(let f of e){let y=f.keyArgs[0],A=f.value;if(A?.xcm_rate_limit==null)continue;let x=y===0?i:m.get(y)??0n,S=eo(y,A,o.get(y),c.get(y),a,x);g.set(y.toString(),S)}return g}async function Ua(n){let[e,t,s,a]=await Promise.all([n.query.CircuitBreaker.GlobalWithdrawLimitConfig.getValue({at:"best"}),n.query.CircuitBreaker.WithdrawLimitAccumulator.getValue({at:"best"}),n.query.CircuitBreaker.WithdrawLockdownUntil.getValue({at:"best"}),n.query.Timestamp.Now.getValue({at:"best"})]),i=s??void 0,r=i!==void 0&&a<i,[o,c]=t;if(!e)return{configured:!1,limit:0n,windowMs:0n,used:0n,lastUpdateMs:c,headroom:0n,lockdown:r,lockdownUntilMs:i};let{limit:m,window:g}=e,f=o;if(!r&&g>0n){let A=a>c?a-c:0n;if(A>0n){let x=A>g?g:A,S=o*x/g;f=o>S?o-S:0n}}let y=r||f>=m?0n:m-f;return{configured:!0,limit:m,windowMs:g,used:f,lastUpdateMs:c,headroom:y,lockdown:r,lockdownUntilMs:i}}var ke=class extends gt{constructor(e){super(e,to.hydration)}async checkIfSufficient(e){let t=this.chain.getAssetId(e),s=Number(t),a=await this.api().query.AssetRegistry.Assets.getValue(s);return a?a.is_sufficient||!1:!0}async getFeeAsset(e){let t=await this.api().query.MultiTransactionPayment.AccountCurrencyMap.getValue(e);return t?t.toString():"0"}async getAssetBalance(e,t){return t==="0"?this.getSystemAccountBalance(e):this.getTokensAccountsBalance(e,t)}async getSystemAccountBalance(e){let s=(await this.api().query.System.Account.getValue(e)).data,{free:a,frozen:i}=s;return BigInt(a)-BigInt(i)}async getTokensAccountsBalance(e,t){let s=Number(t),a=await this.api().query.Tokens.Accounts.getValue(e,s),{free:i,frozen:r}=a;return BigInt(i)-BigInt(r)}getAssetDepositLimit(e){let t=typeof e=="number"?e:Number(this.chain.getAssetId(e));return Ha(this.api(),t)}getAllAssetDepositLimits(){return Wa(this.api())}getGlobalWithdrawLimit(){return Ua(this.api())}};function Pm(){return{calculateInboundFee:n=>({build:async({feeAsset:e,destination:t})=>{let s=t,a=new ke(s),i=new $e(n.hub),r=_s(e,s),o=_r(e,s),c=Yn(lt),m=250000000n,g=Qi(lt,s.parachainId),[f,y,A,x]=await Promise.all([a.calculateDestinationFeeV5(o,C),i.calculateDeliveryFee(r,s.parachainId),i.calculateDeliveryFee(r,Cs),i.calculateDestinationFeeV5(g,C)]),S=fe(f,33n),B=fe(y,33n),k=fe(A,33n),M=fe(x,33n)+B,H=S,N=await i.quoteEtherForDot(c,M),I=fe(N,30n),$=I<Va*2n?Va*2n:I,Ke=fe(await i.quoteEtherForDot(c,H),100n),Je=fe(await i.quoteDotToEther(c,m+k),30n);return{amount:$+Je+Ke,breakdown:{executionFee:$,relayerFee:Je,remoteEtherFee:Ke,hydrationDotFee:H}}}}),calculateOutboundFee:n=>({build:async({transferAsset:e,feeAsset:t,source:s,destination:a})=>{let i=s,r=a,o=new $e(n.hub),c=Yn(lt),m=Ra(e,i),[g,f,y]=await Promise.all([o.getBridgeDeliveryFee(),o.calculateDeliveryFee(m,Cs),o.calculateDestinationFee(m,t)]),A=await r.evmClient.getProvider().getGasPrice(),x=Yr+jr+zr+$r,S=A*x,B=fe(S,10n),k=g+fe(f,33n)+fe(y,33n),F=fe(await o.quoteDotForExactEther(c,B),20n),M=new ke(i),H=Ma({tokenAddress:"0x0000000000000000000000000000000000000000",senderPubKey:"0x"+"00".repeat(32),beneficiaryHex:"0x"+"00".repeat(20),tokenAmount:1000000000000n,sourceExecutionFee:1000000000n,dotRemoteFee:1000000000n,dotToEtherSwapAmount:1000000000n,etherFeeAmount:1000000000n,topic:St}),N=fe(await M.calculateDestinationFeeV5(H,C),33n);return{amount:k+F+N,breakdown:{dotRemoteFee:k,dotToEtherSwapAmount:F,etherFeeAmount:B,sourceExecutionFee:N}}}}),calculateInboundFeeV1:n=>({build:async({feeAsset:e,destination:t,source:s})=>{let a=s,i=t,r=In.Snowbridge.fromChain(a),o=new gt(i),c=new $e(n.hub),m=_s(e,i),[g,f]=await Promise.all([o.calculateDestinationFee(m,C),c.calculateDeliveryFee(m,i.parachainId)]),y=f+fe(g,25n),A=a.getAssetId(e);return{amount:await a.evmClient.getProvider().readContract({abi:In.Abi.Snowbridge,address:r.getGateway(),args:[A,i.parachainId,y],functionName:"quoteSendTokenFee"}),breakdown:{bridgeFeeInDot:y}}}}),calculateOutboundFeeV1:n=>({build:async({transferAsset:e,feeAsset:t,source:s})=>{let a=s,i=new $e(n.hub),r=Ra(e,a),o=_s(e,a),[c,m,g,f,y]=await Promise.all([i.getBridgeDeliveryFeeV1(),i.calculateDeliveryFee(r,Cs),i.calculateDestinationFee(r,t),i.calculateDeliveryFee(o,a.parachainId),i.calculateDestinationFee(o,t)]);return{amount:c+m+fe(g,25n)+f+fe(y,25n),breakdown:{bridgeDeliveryFee:c,bridgeHubDeliveryFee:m,assetHubDestinationFee:g,returnToSenderDeliveryFee:f,returnToSenderDestinationFee:y}}}})}}function Cm(){return{calculateDestFee:n=>({build:async({feeAsset:e,source:t,destination:s})=>{let a=t,i=s,r=n?.reserve;if(Br(e,a,i,r),r){let y=new gt(i),A=new gt(r),x=La(e,i),S=Lr(e,r,i),[B,k]=await Promise.all([y.calculateDestinationFee(x,e),A.calculateDestinationFee(S,e)]),F=k+B,M=fe(F,20n),H=M-F;return{amount:M,breakdown:{reserveFee:k,destinationFee:B,margin:H}}}let o=new gt(i),c=Rr(e,i),m=await o.calculateDestinationFee(c,e),g=fe(m,20n),f=g-m;return{amount:g,breakdown:{totalFee:m,margin:f}}}})}}function Em(){return{quoteFee:()=>({build:async({feeAsset:n,source:e})=>{let t=e,s=In.Basejump.fromChain(t),a=t.getAssetId(n);return{amount:await t.evmClient.getProvider().readContract({abi:In.Abi.Basejump,address:s.getAddress(),args:[a],functionName:"quoteFee"})}}})}}function O(){return{Basejump:Em,XcmPaymentApi:Cm,Snowbridge:Pm}}var Bm="0";function Rm(){return{build:async({address:n,chain:e})=>{let s=await new ke(e).api().query.MultiTransactionPayment.AccountCurrencyMap.getValue(n),a=s?s.toString():Bm,i=e.findAssetById(a);return i?i.asset:Ln}}}var Lm=()=>({accountCurrencyMap:Rm});function rs(){return{multiTransactionPayment:Lm}}var Ye=require("@galacticcouncil/xc-core"),no=require("@mysten/sui/transactions"),Xs=require("@mysten/sui/utils"),so=require("@wormhole-foundation/sdk-base"),_m=()=>({build:async n=>{let{address:e,amount:t,asset:s,source:a,destination:i}=n,r=a.chain,o=i.chain,c=Ye.Ntt.fromChain(r,s),m=Ye.Wormhole.fromChain(r),g=Ye.Wormhole.fromChain(o),f=r.client,y=e;o instanceof Ye.EvmParachain&&(y=await o.getDerivatedAddress(e));let A=so.encoding.hex.decode(g.normalizeAddress(y)),x=m.getCoreBridge(),S=c.manager,B=c.transceiver.wormhole,k=c.token,[F,M,H,N]=await Promise.all([Ye.suiPkg.getWormholePackageId(f,x),Ye.suiPkg.getCurrentPackageId(f,S),Ye.suiPkg.getCurrentPackageId(f,B),Ye.suiPkg.getCoinMetadataId(f,k)]),I=new no.Transaction,[$]=I.splitCoins(I.gas,[I.pure.u64(t)]),[Ke]=I.moveCall({target:`${M}::upgrades::new_version_gated`,arguments:[]}),[Je,_t]=I.moveCall({target:`${M}::ntt::prepare_transfer`,typeArguments:[k],arguments:[I.object(S),$,I.object(N),I.pure.u16(g.getWormholeId()),I.pure.vector("u8",Array.from(A)),I.pure.option("vector<u8>",null),I.pure.bool(!1)]}),[Nt]=I.moveCall({target:`${M}::state::get_next_sequence`,typeArguments:[k],arguments:[I.object(S)]});I.moveCall({target:`${M}::ntt::transfer_tx_sender`,typeArguments:[k],arguments:[I.object(S),Ke,I.object(N),Je,I.object(Xs.SUI_CLOCK_OBJECT_ID)]});let[Ae]=I.moveCall({target:`${M}::state::create_transceiver_message`,typeArguments:[`${H}::wormhole_transceiver::TransceiverAuth`,k],arguments:[I.object(S),Nt,I.object(Xs.SUI_CLOCK_OBJECT_ID)]}),[l]=I.moveCall({target:`${H}::wormhole_transceiver::release_outbound`,typeArguments:[`${M}::auth::ManagerAuth`],arguments:[I.object(B),Ae]}),[d]=I.splitCoins(I.gas,[I.pure.u64(0n)]);I.moveCall({target:`${F}::publish_message::publish_message`,arguments:[I.object(x),d,l,I.object(Xs.SUI_CLOCK_OBJECT_ID)]});let[u]=I.moveCall({target:"0x2::coin::from_balance",typeArguments:[k],arguments:[_t]});return I.mergeCoins(I.gas,[u]),new Ye.MoveConfig({transaction:I,func:"transfer",module:"NttManager"})}}),ao=()=>({transfer:_m});function io(){return{Ntt:ao}}function Ka(){return{Wormhole:io}}var vt=require("@galacticcouncil/xc-core"),Ko=require("@solana/spl-token"),zs=require("@solana/web3.js"),Go=require("@wormhole-foundation/sdk-base"),qo=require("@wormhole-foundation/sdk-definitions"),zo=require("@wormhole-foundation/sdk-solana"),Wp=require("@wormhole-foundation/sdk-definitions-ntt");async function Xm(n,e){return!("message"in e)||e.message.version==="legacy"?[]:(await Promise.all(e.message.addressTableLookups.map(s=>n.getAddressLookupTable(s.accountKey)))).map(s=>s.value).filter(s=>s!==null)}async function Vm(n,e,t){let s=await Xm(n,e);return{instructions:"message"in e?zs.TransactionMessage.decompile(e.message,{addressLookupTableAccounts:s}).instructions:e.instructions,signers:t,lookupTables:s}}var Om=()=>({build:async n=>{let{address:e,amount:t,asset:s,sender:a,source:i,destination:r}=n,o=i.chain,c=r.chain,m=vt.Ntt.fromChain(o,s),g=vt.Wormhole.fromChain(o),f=vt.Wormhole.fromChain(c),y=e;c instanceof vt.EvmParachain&&(y=await c.getDerivatedAddress(e));let{SolanaNtt:A}=await Promise.resolve().then(()=>(No(),Uo)),x=new A("Mainnet","Solana",o.connection,{coreBridge:g.getCoreBridge(),ntt:{manager:m.manager,token:m.token,transceiver:{wormhole:m.transceiver.wormhole}}}),S=o.getBalanceType(s)===vt.SolanaBalanceType.Native,B=zs.Keypair.generate(),k=[];for await(let H of x.transfer(new zo.SolanaAddress(a),t,{chain:(0,Go.toChain)(f.getWormholeId()),address:new qo.UniversalAddress(f.normalizeAddress(y))},{queue:!1,automatic:!1,wrapNative:S},B)){let{transaction:N,signers:I}=H.transaction;k.push(await Vm(o.connection,N,I??[]))}let F=S?BigInt(await(0,Ko.getMinimumBalanceForRentExemptAccount)(o.connection)):0n,M=k[k.length-1];return new vt.ProgramConfig({instructions:M.instructions,signers:M.signers,lookupTables:M.lookupTables,prerequisites:k.slice(0,-1),rentReserve:F,func:"transfer",module:"NttManager"})}}),jo=()=>({transfer:Om});function $o(){return{Ntt:jo}}function si(){return{Wormhole:$o}}var ii={};pn(ii,{Tag:()=>mn});var mn=(r=>(r.Basejump="Basejump",r.Ntt="Ntt",r.Wormhole="Wormhole",r.Relayer="Relayer",r.Snowbridge="Snowbridge",r.SnowbridgeV1="SnowbridgeV1",r))(mn||{});function Yo(n,e){return new ri.AssetRoute({source:{asset:n,fee:{asset:U}},destination:{chain:v,asset:e,fee:{amount:0,asset:n}},contract:at().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function Jo(n,e){return new ri.AssetRoute({source:{asset:n,fee:{asset:U},destinationFee:n},destination:{chain:v,asset:e,fee:{amount:O().Basejump().quoteFee(),asset:n}},contract:at().Basejump().bridgeViaWormhole(),tags:["Basejump"]})}var Hm=[Jo(Tt,Ft)],Wm=[Yo(Tt,Ft)],Zo=new Qo.ChainRoutes({chain:Dn,routes:[...Wm,...Hm]});var As=require("@galacticcouncil/xc-core");var js=require("@galacticcouncil/xc-core");function un(n,e){return new js.AssetRoute({source:{asset:n,fee:{asset:U}},destination:{chain:v,asset:e,fee:{amount:0,asset:n}},contract:at().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function ve(n,e){return new js.AssetRoute({source:{asset:n,fee:{asset:U}},destination:{chain:v,asset:e,fee:{amount:O().Snowbridge().calculateInboundFee({hub:X}),asset:U}},contract:at().Snowbridge().v2SendMessage(),tags:["Snowbridge"]})}function Me(n,e){return new js.AssetRoute({source:{asset:n,fee:{asset:U}},destination:{chain:v,asset:e,fee:{amount:O().Snowbridge().calculateInboundFeeV1({hub:X}),asset:U}},contract:at().Snowbridge().sendToken(),tags:["Snowbridge","SnowbridgeV1"]})}var Um=[un(Dt,Kt),un(yt,Gt),un(R,zt),un(P,qt),un(At,jt),un(Ot,Ht),un(U,Ht)],Nm=[new As.AssetRoute({source:{asset:U,fee:{asset:U}},destination:{chain:v,asset:U,fee:{amount:O().Snowbridge().calculateInboundFee({hub:X}),asset:U}},contract:at().Snowbridge().v2SendMessage(),tags:["Snowbridge"]}),ve(Ce,Ce),ve(Ee,Ee),ve(Be,Be),ve(Re,Re),ve(Fe,Fe),ve(Ve,Ve),ve(Oe,Oe),ve(_e,_e),ve(Le,Le),ve(De,De),ve(Xe,Xe),ve(He,He),ve(We,We),ve(R,Vt),ve(P,Xt)],Km=[new As.AssetRoute({source:{asset:U,fee:{asset:U}},destination:{chain:v,asset:U,fee:{amount:O().Snowbridge().calculateInboundFeeV1({hub:X}),asset:U}},contract:at().Snowbridge().sendToken(),tags:["Snowbridge","SnowbridgeV1"]}),Me(Ce,Ce),Me(Ee,Ee),Me(Be,Be),Me(Re,Re),Me(Fe,Fe),Me(Ve,Ve),Me(Oe,Oe),Me(_e,_e),Me(Le,Le),Me(De,De),Me(Xe,Xe),Me(He,He),Me(We,We),Me(R,Vt),Me(P,Xt)],ec=new As.ChainRoutes({chain:L,routes:[...Um,...Nm,...Km]});var tc=[Zo,ec];var dn=require("@galacticcouncil/xc-core");var $s=require("@galacticcouncil/xc-core");var En=0,Gm=n=>{let{source:e}=n;return!!e.feeSwap},qm=n=>{let{source:e}=n,{enabled:t}=e.destinationFeeSwap||{};return!!t},nc=w().assetConversion().swapTokensForExactTokens({slippage:30});function zm(n,e,t){return new $s.AssetRoute({source:{asset:n,fee:{asset:C,extra:En}},destination:{chain:e,asset:n,fee:{amount:t,asset:P}},extrinsic:sn(qm,nc).prior(w().polkadotXcm().limitedReserveTransferAssets())})}function Ys(n,e,t){return new $s.AssetRoute({source:{asset:n,fee:{asset:n,swap:!n.isEqual(C)}},destination:{chain:e,asset:n,fee:{amount:t,asset:n}},extrinsic:sn(Gm,nc).prior(w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"}))})}function ws(n,e,t){return new $s.AssetRoute({source:{asset:n,fee:{asset:C,extra:En}},destination:{chain:e,asset:n,fee:{amount:t,asset:n}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})})}function Js(n){return zm(n,v,.02)}var jm=[new dn.AssetRoute({source:{asset:C,fee:{asset:C,extra:En}},destination:{chain:v,asset:C,fee:{amount:.001,asset:C}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),new dn.AssetRoute({source:{asset:D,fee:{asset:C,extra:En}},destination:{chain:v,asset:D,fee:{amount:1e-4,asset:D}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),ws(P,v,.02),ws(R,v,.02),Js(Wt)],$m=[new dn.AssetRoute({source:{asset:D,fee:{asset:C,extra:En}},destination:{chain:wt,asset:D,fee:{amount:.001,asset:D}},extrinsic:w().polkadotXcm().transferAssets()})],Ym=[ws(P,ne,.03),ws(R,ne,.03)],Jm=[new dn.AssetRoute({source:{asset:te,fee:{asset:C,extra:En}},destination:{chain:Yt,asset:te,fee:{amount:2.5,asset:te}},extrinsic:w().polkadotXcm().limitedTeleportAssets()})],sc=new dn.ChainRoutes({chain:$t,routes:[Ys(P,v,.02),Ys(R,v,.02),Ys(C,v,.001)]}),ac=new dn.ChainRoutes({chain:X,routes:[...jm,...$m,...Ym,...Jm]});var Mt=require("@galacticcouncil/xc-core");var Qm=[new Mt.AssetRoute({source:{asset:j},destination:{chain:v,asset:j,fee:{amount:.044306118,asset:j}},extrinsic:w().polkadotXcm().reserveTransferAssets()}),new Mt.AssetRoute({source:{asset:K,fee:{asset:j}},destination:{chain:v,asset:K,fee:{amount:O().XcmPaymentApi().calculateDestFee({reserve:ne}),asset:K}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new Mt.AssetRoute({source:{asset:ae,fee:{asset:j}},destination:{chain:v,asset:ae,fee:{amount:2e-6,asset:ae}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new Mt.AssetRoute({source:{asset:et,fee:{asset:j}},destination:{chain:v,asset:et,fee:{amount:.01,asset:et}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new Mt.AssetRoute({source:{asset:le,fee:{asset:j}},destination:{chain:v,asset:le,fee:{amount:O().XcmPaymentApi().calculateDestFee({reserve:ne}),asset:le}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new Mt.AssetRoute({source:{asset:de,fee:{asset:j}},destination:{chain:v,asset:de,fee:{amount:O().XcmPaymentApi().calculateDestFee({reserve:ne}),asset:de}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new Mt.AssetRoute({source:{asset:P,fee:{asset:j}},destination:{chain:v,asset:P,fee:{amount:O().XcmPaymentApi().calculateDestFee({reserve:X}),asset:P}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new Mt.AssetRoute({source:{asset:R,fee:{asset:j}},destination:{chain:v,asset:R,fee:{amount:O().XcmPaymentApi().calculateDestFee({reserve:X}),asset:R}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],ic=new Mt.ChainRoutes({chain:xe,routes:[...Qm]});var ot=require("@galacticcouncil/xc-core");var Zm=[new ot.AssetRoute({source:{asset:K},destination:{chain:v,asset:K,fee:{amount:O().XcmPaymentApi().calculateDestFee(),asset:K}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ot.AssetRoute({source:{asset:le,fee:{asset:K}},destination:{chain:v,asset:le,fee:{amount:O().XcmPaymentApi().calculateDestFee(),asset:le}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ot.AssetRoute({source:{asset:de,fee:{asset:K}},destination:{chain:v,asset:de,fee:{amount:O().XcmPaymentApi().calculateDestFee(),asset:de}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ot.AssetRoute({source:{asset:C,fee:{asset:K}},destination:{chain:v,asset:C,fee:{amount:O().XcmPaymentApi().calculateDestFee({reserve:X}),asset:C}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"RemoteReserve"})}),new ot.AssetRoute({source:{asset:j,fee:{asset:K}},destination:{chain:v,asset:j,fee:{amount:O().XcmPaymentApi().calculateDestFee({reserve:xe}),asset:j}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ot.AssetRoute({source:{asset:ae,fee:{asset:K}},destination:{chain:v,asset:ae,fee:{amount:625e-8,asset:ae}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ot.AssetRoute({source:{asset:P,fee:{asset:K}},destination:{chain:v,asset:P,fee:{amount:O().XcmPaymentApi().calculateDestFee({reserve:X}),asset:P}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ot.AssetRoute({source:{asset:R,fee:{asset:K}},destination:{chain:v,asset:R,fee:{amount:O().XcmPaymentApi().calculateDestFee({reserve:X}),asset:R}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],eu=[new ot.AssetRoute({source:{asset:P,fee:{asset:K}},destination:{chain:X,asset:P,fee:{amount:O().XcmPaymentApi().calculateDestFee(),asset:P}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ot.AssetRoute({source:{asset:R,fee:{asset:K}},destination:{chain:X,asset:R,fee:{amount:O().XcmPaymentApi().calculateDestFee(),asset:R}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],rc=new ot.ChainRoutes({chain:ne,routes:[...Zm,...eu]});var Lt=require("@galacticcouncil/xc-core");var Ie=()=>({asset:rs().multiTransactionPayment().accountCurrencyMap()});var ln=require("@galacticcouncil/xc-core");var tu=.02,oi=n=>{let{source:e}=n,{enabled:t}=e.destinationFeeSwap||{};return!!t},ci=w().router().buy({slippage:30});function Ne(n,e,t){return new ln.AssetRoute({source:{asset:n,fee:Ie()},destination:{chain:e,asset:n,fee:{amount:O().XcmPaymentApi().calculateDestFee(t?{reserve:t}:void 0),asset:n}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})}function fn(n,e){return new ln.AssetRoute({source:{asset:n,fee:Ie()},destination:{chain:e,asset:n,fee:{amount:O().XcmPaymentApi().calculateDestFee(),asset:n}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})})}function Qs(n){return new ln.AssetRoute({source:{asset:n,fee:Ie()},destination:{chain:X,asset:n,fee:{amount:tu,asset:P}},extrinsic:sn(oi,ci).prior(w().polkadotXcm().limitedReserveTransferAssets())})}function mi(n,e,t){return new ln.AssetRoute({source:{asset:n,fee:Ie()},destination:{chain:wt,asset:n,fee:{amount:e,asset:n}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve",executionFee:t})})}function pt(n,e,t){return new ln.AssetRoute({source:{asset:n,fee:Ie()},destination:{chain:t,asset:e,fee:{amount:0,asset:n}},contract:at().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function ye(n,e,t){return new ln.AssetRoute({source:{asset:n,fee:Ie()},destination:{chain:t,asset:e,fee:{amount:O().Snowbridge().calculateOutboundFee({hub:X}),asset:C}},extrinsic:sn(oi,ci).prior(w().polkadotXcm().execute().viaSnowbridge()),tags:["Snowbridge"]})}function be(n,e,t){return new ln.AssetRoute({source:{asset:n,fee:Ie()},destination:{chain:t,asset:e,fee:{amount:O().Snowbridge().calculateOutboundFeeV1({hub:X}),asset:C}},extrinsic:sn(oi,ci).prior(w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})),tags:["Snowbridge","SnowbridgeV1"]})}var nu=[fn(C,X),fn(D,X),fn(P,X),fn(R,X),Qs(Wt)],su=[mi(D,.05,.005),mi(C,.2,.02)],au=[Ne(j,xe),Ne(K,xe,ne),new Lt.AssetRoute({source:{asset:ae,fee:Ie()},destination:{chain:xe,asset:ae,fee:{amount:2e-6,asset:ae}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new Lt.AssetRoute({source:{asset:et,fee:Ie()},destination:{chain:xe,asset:et,fee:{amount:.01,asset:et}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),Ne(le,xe,ne),Ne(de,xe,ne),Ne(P,xe,X),Ne(R,xe,X)],iu=[Ne(K,ne),Ne(le,ne),Ne(de,ne),Ne(j,ne,xe),new Lt.AssetRoute({source:{asset:ae,fee:Ie()},destination:{chain:ne,asset:ae,fee:{amount:5e-6,asset:ae}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),Ne(P,ne,X),Ne(R,ne,X),new Lt.AssetRoute({source:{asset:C,fee:Ie()},destination:{chain:ne,asset:C,fee:{amount:O().XcmPaymentApi().calculateDestFee({reserve:X}),asset:C}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"RemoteReserve"})})],ru=[new Lt.AssetRoute({source:{asset:te,fee:Ie()},destination:{chain:Yt,asset:te,fee:{amount:2.5,asset:te}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],ou=[Ne(bt,Un)],cu=[new Lt.AssetRoute({source:{asset:ze,fee:Ie()},destination:{chain:Nn,asset:ze,fee:{amount:.02,asset:ze}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],mu=[new Lt.AssetRoute({source:{asset:tt,fee:Ie()},destination:{chain:On,asset:tt,fee:{amount:1.1,asset:tt}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],uu=[Ne(ht,Vn)],du=[pt(Kt,Dt,L),pt(Gt,yt,L),pt(zt,R,L),pt(qt,P,L),pt(jt,At,L),pt(Ht,U,L)],lu=[pt(Ft,Tt,Dn)],fu=[pt(je,je,Zt),pt(mt,mt,Zt),pt(ut,ut,Zt)],gu=[pt(nt,nt,Gn)],pu=[ye(U,U,L),ye(Ce,Ce,L),ye(Ee,Ee,L),ye(Be,Be,L),ye(Re,Re,L),ye(Fe,Fe,L),ye(Ve,Ve,L),ye(Oe,Oe,L),ye(He,He,L),ye(_e,_e,L),ye(Le,Le,L),ye(De,De,L),ye(Xe,Xe,L),ye(We,We,L),ye(Vt,R,L),ye(Xt,P,L)],hu=[be(U,U,L),be(Ce,Ce,L),be(Ee,Ee,L),be(Be,Be,L),be(Re,Re,L),be(Fe,Fe,L),be(Ve,Ve,L),be(Oe,Oe,L),be(He,He,L),be(_e,_e,L),be(Le,Le,L),be(De,De,L),be(Xe,Xe,L),be(We,We,L),be(Vt,R,L),be(Xt,P,L)],yu=[fn(C,$t),fn(P,$t),fn(R,$t)],oc=new Lt.ChainRoutes({chain:v,routes:[...nu,...au,...iu,...yu,...lu,...du,...pu,...fu,...gu,...hu,...cu,...su,...ru,...uu,...mu,...ou]});var xs=require("@galacticcouncil/xc-core");var bu=[new xs.AssetRoute({source:{asset:te},destination:{chain:v,asset:te,fee:{amount:.01,asset:te}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})})],Au=[new xs.AssetRoute({source:{asset:te},destination:{chain:X,asset:te,fee:{amount:.1,asset:te}},extrinsic:w().polkadotXcm().limitedTeleportAssets()})],cc=new xs.ChainRoutes({chain:Yt,routes:[...bu,...Au]});var Zs=require("@galacticcouncil/xc-core");var wu=[new Zs.AssetRoute({source:{asset:bt},destination:{chain:v,asset:bt,fee:{amount:O().XcmPaymentApi().calculateDestFee(),asset:bt}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],mc=new Zs.ChainRoutes({chain:Un,routes:[...wu]});var ea=require("@galacticcouncil/xc-core");var xu=[new ea.AssetRoute({source:{asset:tt},destination:{chain:v,asset:tt,fee:{amount:.2,asset:tt}},extrinsic:w().polkadotXcm().reserveTransferAssets()})],uc=new ea.ChainRoutes({chain:On,routes:[...xu]});var ta=require("@galacticcouncil/xc-core");var Su=[new ta.AssetRoute({source:{asset:ze,fee:{asset:ze,extra:.030555}},destination:{chain:v,asset:ze,fee:{amount:.03,asset:ze}},extrinsic:w().polkadotXcm().reserveTransferAssets()})],dc=new ta.ChainRoutes({chain:Nn,routes:[...Su]});var na=require("@galacticcouncil/xc-core");var ku=[new na.AssetRoute({source:{asset:ht},destination:{chain:v,asset:ht,fee:{amount:.205,asset:ht}},extrinsic:w().polkadotXcm().reserveTransferAssets()})],lc=new na.ChainRoutes({chain:Vn,routes:[...ku]});var fc=[ac,sc,ic,rc,oc,cc,lc,mc,uc,dc];var sa=require("@galacticcouncil/xc-core");function ui(n){return new sa.AssetRoute({source:{asset:n,fee:{asset:je}},destination:{chain:v,asset:n,fee:{amount:0,asset:n}},program:si().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}var vu=[ui(je),ui(mt),ui(ut)],gc=new sa.ChainRoutes({chain:Zt,routes:[...vu]});var pc=[gc];var aa=require("@galacticcouncil/xc-core");function Mu(n){return new aa.AssetRoute({source:{asset:n,fee:{asset:nt}},destination:{chain:v,asset:n,fee:{amount:0,asset:n}},move:Ka().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}var Iu=[Mu(nt)],hc=new aa.ChainRoutes({chain:Gn,routes:[...Iu]});var yc=[hc];var Bn=require("@galacticcouncil/xc-core");var Tu=require("@galacticcouncil/xc-core");var Ss=.0015;var Pu=new Bn.AssetRoute({source:{asset:D,fee:{asset:D,extra:Ss}},destination:{chain:X,asset:D,fee:{amount:.002,asset:D}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),Cu=new Bn.AssetRoute({source:{asset:D,fee:{asset:D,extra:Ss}},destination:{chain:zn,asset:D,fee:{amount:.0012,asset:D}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),Eu=[new Bn.AssetRoute({source:{asset:D,fee:{asset:D,extra:Ss}},destination:{chain:v,asset:D,fee:{amount:.04,asset:D}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve",executionFee:.005})}),new Bn.AssetRoute({source:{asset:C,fee:{asset:D,extra:Ss}},destination:{chain:v,asset:C,fee:{amount:.15,asset:C}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve",executionFee:.01})})],bc=new Bn.ChainRoutes({chain:wt,routes:[Cu,Pu,...Eu]});var ks=require("@galacticcouncil/xc-core");var di=()=>({asset:rs().multiTransactionPayment().accountCurrencyMap()});var Bu=[new ks.AssetRoute({source:{asset:P,fee:di()},destination:{chain:wt,asset:P,fee:{amount:O().XcmPaymentApi().calculateDestFee(),asset:P}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],Ru=[new ks.AssetRoute({source:{asset:D,fee:di()},destination:{chain:wt,asset:D,fee:{amount:.0012,asset:D}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})})],Ac=new ks.ChainRoutes({chain:zn,routes:[...Bu,...Ru]});var wc=[bc,Ac];var Lu=[...tc,...fc,...pc,...yc,...wc],xc=new Map(Lu.map(n=>[n.chain.key,n]));var li=require("@galacticcouncil/xc-core");var gn=require("@galacticcouncil/xc-core"),ia=class extends gn.TransferValidation{async validate(e){let{source:t}=e,{chain:s,fee:a,feeBalance:i}=t;if(i.amount<a.amount)throw new gn.TransferValidationError("Insufficient_Fee_Balance",{amount:a.toDecimal(),asset:a.symbol,chain:s.name,error:"fee.insufficientBalance"})}},ra=class extends gn.TransferValidation{async skipFor(e){let{asset:t,source:s}=e,{enabled:a}=s.destinationFeeSwap||{};return t.isEqual(s.destinationFee)||!!a}async validate(e){if(await this.skipFor(e))return;let{source:s}=e,{chain:a,destinationFee:i,destinationFeeBalance:r}=s,o=await this.getMin(a,i),c=i.copyWith({amount:i.amount+o});if(r.amount<c.amount)throw new gn.TransferValidationError("Insufficient_Fee_Balance",{amount:c.toDecimal(),asset:c.symbol,chain:a.name,error:"destFee.insufficientBalance"})}async getMin(e,t){if(e instanceof gn.Parachain)return(await e.getMin(t)).amount;let s=e.getAssetMin(t);return BigInt(s*10**t.decimals)}};var es=require("@galacticcouncil/xc-core");var oa=class extends es.TransferValidation{async skipFor(e){let{asset:t,destination:s}=e,a=s.chain;return await new $e(a).checkIfSufficient(t)}async validate(e){if(await this.skipFor(e))return;let{address:s,destination:a}=e,i=a.chain;if(await new $e(i).getSystemAccountBalance(s)===0n)throw new es.TransferValidationError("Insufficient_Ed",{amount:"0.1",asset:"DOT",chain:a.chain.name,error:"account.insufficientDeposit"})}},ca=class extends es.TransferValidation{async validate(e){let{asset:t,sender:s,source:a}=e,i=a.chain;if(await new $e(i).checkIfFrozen(s,t))throw new es.TransferValidationError("Asset_Frozen",{asset:t.originSymbol,chain:a.chain.name,error:"asset.frozen"})}};var It=require("@galacticcouncil/xc-core");var _u=12,Du=1,Fu=18,ma=class extends It.TransferValidation{async skipFor(e){let{destination:t}=e,s=t.chain,a=new ke(s),i=t.balance.amount>0n,r=await a.checkIfSufficient(t.balance);return i||r}async validate(e){if(await this.skipFor(e))return;let{address:s,destination:a}=e,i=a.chain,r=new ke(i),o=await r.getFeeAsset(s),c=i.findAssetById(o),m=c.min||Du,g=c.decimals||_u,f=m*Math.pow(10,g),y=await r.getAssetBalance(s,o);if(BigInt(f*1.1)>y)throw new It.TransferValidationError("Insufficient_Ed",{amount:f,asset:c.asset.originSymbol,chain:i.name,error:"account.insufficientDeposit"})}},ua=class extends It.TransferValidation{async validate(e){let{amount:t,asset:s,destination:a}=e,i=a.chain,o=await new ke(i).getAssetDepositLimit(s);if(o.locked)throw new It.TransferValidationError("Deposit_Asset_Lockdown",{asset:s.originSymbol,chain:i.name,lockedUntilBlock:o.lockedUntilBlock,error:"circuitBreaker.assetLockdown"});if(o.headroom!==null&&t>o.headroom)throw new It.TransferValidationError("Deposit_Limit_Exceeded",{asset:s.originSymbol,chain:i.name,headroom:o.headroom,limit:o.limit,error:"circuitBreaker.depositLimitExceeded"})}},da=class extends It.TransferValidation{async validate(e){let{source:t}=e,s=t.chain,i=await new ke(s).getGlobalWithdrawLimit();if(i.lockdown)throw new It.TransferValidationError("Withdraw_Lockdown_Active",{chain:s.name,lockdownUntilMs:i.lockdownUntilMs,error:"circuitBreaker.withdrawLockdown"})}},la=class extends It.TransferValidation{async skipFor(e){let{source:t,transact:s}=e,{enabled:a}=t.destinationFeeSwap||{};return!(!!s&&s.chain.key==="moonbeam")||!!a}async validate(e){if(await this.skipFor(e))return;let{sender:s,source:a}=e,i=a.chain,r=new ke(i),o=i.getBalanceAssetId(ct),c=i.getAssetDecimals(ct)||Fu,m=1*Math.pow(10,c);if(await r.getTokensAccountsBalance(s,o.toString())<BigInt(m))throw new It.TransferValidationError("Insufficient_Ed",{amount:1,asset:ct.originSymbol,chain:i.name,error:"destFee.insufficientBalance"})}};var Te={isAny:()=>!0,isHydration:n=>n instanceof li.Parachain&&n.parachainId===2034,isHub:n=>n instanceof li.Parachain&&n.parachainId===1e3,isEvm:n=>n.isEvmChain()},Sc=[new ia(Te.isAny,Te.isAny),new ra(Te.isAny,Te.isAny),new oa(Te.isAny,Te.isHub),new ca(Te.isHub,Te.isAny),new ma(Te.isAny,Te.isHydration),new la(Te.isHydration,Te.isAny),new ua(Te.isAny,Te.isHydration),new da(Te.isHydration,Te.isAny)];var hi={};pn(hi,{AssethubDex:()=>pi,HydrationDex:()=>fi});var ts=require("@galacticcouncil/sdk-next"),vc=require("@galacticcouncil/common"),Mc=require("polkadot-api");var kc=(n,e=new Map)=>t=>{let s;return e.has(t)?e.get(t):(e.set(t,s=n(t)),s)};var{PoolType:fa}=ts.pool,{TradeRouteBuilder:Xu,TradeRouter:Vu}=ts.sor,{TxBuilderFactory:Ou}=ts.tx,fi=class{chain;client;poolCtx;txBuilder;getCtx=kc(async e=>{console.log("init swap router",e,"\u2705");let t=new Vu(this.poolCtx);return t.withFilter({useOnly:[fa.Aave,fa.Omni,fa.Stable,fa.XYK]}),t});constructor(e,t){this.chain=e,this.poolCtx=t,this.client=new ke(this.chain),this.txBuilder=new Ou(t.client,t.evm)}async getCalldata(e,t,s,a,i=0){let r=Number(this.chain.getMetadataAssetId(t)),o=Number(this.chain.getMetadataAssetId(s)),c=a.amount,m=await this.getCtx(1),g=await m.getMostLiquidRoute(r,o),f=await m.getBuy(r,o,c,g),x=await(await this.txBuilder.trade(f).withBeneficiary(e).withSlippage(i).build()).get().getEncodedData();return Mc.Binary.toHex(x)}async getQuote(e,t,s,a){let i=Number(this.chain.getMetadataAssetId(e)),r=Number(this.chain.getMetadataAssetId(t)),o=s.amount,c=await this.getCtx(1);try{let m=await c.getMostLiquidRoute(i,r),g=await c.getBuy(i,r,o,m);return{amount:g.amountIn,route:Xu.build(g.swaps)}}catch(m){if(a)return{amount:await this.getFallbackPrice(e,s.amount)};throw m}}async getFallbackPrice(e,t){let s=this.chain.getAssetId(e),a=await this.client.api().query.MultiTransactionPayment.AcceptedCurrencies.getValue(Number(s));if(!a)throw new Error(`No price found for asset ${e.key}`);let i=a*t,r=Math.pow(10,vc.RUNTIME_DECIMALS);return i/BigInt(r)}};var gi=require("@galacticcouncil/common"),pi=class{chain;client;constructor(e){this.chain=e,this.client=new $e(this.chain)}async getCalldata(e,t,s,a){throw Error("Not supported for "+this.chain.key)}async getQuote(e,t,s){let a=this.chain.getAssetXcmLocation(e),i=this.chain.getAssetXcmLocation(t),r=await this.client.api().apis.AssetConversionApi.quote_price_tokens_for_exact_tokens((0,gi.encodeLocation)(a),(0,gi.encodeLocation)(i),s.amount,!0);if(!r)throw new Error("Failed to get swap quote");return{amount:r}}};var Cc=require("@galacticcouncil/xc-core");var Ic=require("@galacticcouncil/xc-core");function ga(n){let{id:e,origin:t,symbol:s}=n,a=s.toLowerCase();return new Ic.Asset({key:[a,t,e].join("_"),originSymbol:s})}function Tc(n){let{decimals:e,id:t}=n;return{asset:ga(n),decimals:e,id:t,xcmLocation:{parents:0,interior:{type:"X2",value:[{type:"PalletInstance",value:50},{type:"GeneralIndex",value:t}]}}}}function Pc(n){let{decimals:e,id:t,internalId:s,origin:a}=n;return{asset:ga(n),decimals:e,id:s,xcmLocation:{parents:1,interior:{type:"X3",value:[{type:"Parachain",value:a},{type:"PalletInstance",value:50},{type:"GeneralIndex",value:t}]}}}}var pa=class extends Cc.ConfigService{registerExternal(e){let t=this.getChain("hydration"),s=this.getChain("assethub"),a=i=>!!t.findAssetById(i.internalId.toString());e.filter(i=>!a(i)&&i.origin===1e3).forEach(i=>{let r=ga(i),o=Tc(i),c=Pc(i);console.log("\u{1F480} Registering "+r.key),s.updateAsset(o),t.updateAsset(c),this.updateAsset(r),this.updateChainRoute(s,Js(r)),this.updateChainRoute(t,Qs(r))})}};0&&(module.exports={HydrationConfigService,assetsMap,builders,chainsMap,clients,dex,routesMap,tags,validations});
1
+ "use strict";var Zc=Object.create;var Ds=Object.defineProperty;var eu=Object.getOwnPropertyDescriptor;var tu=Object.getOwnPropertyNames;var nu=Object.getPrototypeOf,su=Object.prototype.hasOwnProperty;var Q=(n,e)=>()=>(n&&(e=n(n=0)),e);var An=(n,e)=>{for(var t in e)Ds(n,t,{get:e[t],enumerable:!0})},Bi=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of tu(e))!su.call(n,a)&&a!==t&&Ds(n,a,{get:()=>e[a],enumerable:!(s=eu(e,a))||s.enumerable});return n};var Vn=(n,e,t)=>(t=n!=null?Zc(nu(n)):{},Bi(e||!n||!n.__esModule?Ds(t,"default",{value:n,enumerable:!0}):t,n)),au=n=>Bi(Ds({},"__esModule",{value:!0}),n);var $s,Co=Q(()=>{$s={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 Po,Eo=Q(()=>{Po={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 hs,Bo=Q(()=>{Co();Eo();(function(n){n.idl={ntt:$s,transceiver:$s,transceiverLegacy:$s,governance:Po}})(hs||(hs={}))});var Qs,Ro=Q(()=>{Qs={version:"2.0.0",name:"example_native_token_transfers",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"deployer",isMut:!1,isSigner:!0},{name:"programData",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"rateLimit",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1,docs:["In any case, this function is used to set the Config and initialize the program so we","assume the caller of this function will have total control over the program.","",'TODO: Using `UncheckedAccount` here leads to "Access violation in stack frame ...".',"Could refactor code to use `Box<_>` to reduce stack size."]},{name:"custody",isMut:!0,isSigner:!1,docs:["The custody account that holds tokens in locking mode and temporarily","holds tokens in burning mode.","function if the token account has already been created."]},{name:"tokenProgram",isMut:!1,isSigner:!1,docs:["associated token account for the given mint."]},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"initializeLut",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"authority",isMut:!1,isSigner:!1},{name:"lutAddress",isMut:!0,isSigner:!1},{name:"lut",isMut:!0,isSigner:!1},{name:"lutProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"entries",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"custody",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"outboxRateLimit",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}]}],args:[{name:"recentSlot",type:"u64"}]},{name:"version",accounts:[],args:[],returns:"string"},{name:"transferBurn",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["Tokens are always transferred to the custody account first regardless of","the mode.","For an explanation, see the note in [`transfer_burn`]."]},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1,docs:["See [`crate::SESSION_AUTHORITY_SEED`] for an explanation of the flow."]},{name:"tokenAuthority",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"transferLock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["Tokens are always transferred to the custody account first regardless of","the mode.","For an explanation, see the note in [`transfer_burn`]."]},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1,docs:["See [`crate::SESSION_AUTHORITY_SEED`] for an explanation of the flow."]}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"redeem",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!1,isSigner:!1,docs:["`Account<T>` and `owner` constraints are mutually-exclusive"]},{name:"transceiver",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"inboxItem",isMut:!0,isSigner:!1,docs:["NOTE: This account is content-addressed (PDA seeded by the message hash).","This is because in a multi-transceiver configuration, the different",'transceivers "vote" on messages (by delivering them). By making the inbox',"items content-addressed, we can ensure that disagreeing votes don't","interfere with each other.","On the first call to [`redeem()`], [`InboxItem`] will be allocated and initialized with","default values.",'On subsequent calls, we want to modify the `InboxItem` by "voting" on it. Therefore the',"program should not fail which would occur when using the `init` constraint.","The [`InboxItem::init`] field is used to guard against malicious or accidental modification","InboxItem fields that should remain constant."]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RedeemArgs"}}]},{name:"releaseInboundMint",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1,docs:["CHECK The seeds constraint ensures that this is the correct address"]},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"releaseInboundUnlock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1,docs:["CHECK The seeds constraint ensures that this is the correct address"]},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"transferOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"newOwner",isMut:!1,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"claimOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"newOwner",isMut:!1,isSigner:!0},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setPaused",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"pause",type:"bool"}]},{name:"setPeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!0,isSigner:!1},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetPeerArgs"}}]},{name:"registerTransceiver",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"transceiver",isMut:!1,isSigner:!1,docs:["used here that wraps the Transceiver account type."]},{name:"registeredTransceiver",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setOutboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetOutboundLimitArgs"}}]},{name:"setInboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetInboundLimitArgs"}}]},{name:"setWormholePeer",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"peer",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetTransceiverPeerArgs"}}]},{name:"receiveWormholeMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"peer",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"releaseWormholeOutbound",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseOutboundArgs"}}]},{name:"broadcastWormholeId",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[]},{name:"broadcastWormholePeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"BroadcastPeerArgs"}}]}],accounts:[{name:"config",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"owner",docs:["Owner of the program."],type:"publicKey"},{name:"pendingOwner",docs:["Pending next owner (before claiming ownership)."],type:{option:"publicKey"}},{name:"mint",docs:["Mint address of the token managed by this program."],type:"publicKey"},{name:"tokenProgram",docs:["Address of the token program (token or token22). This could always be queried","from the [`mint`] account's owner, but storing it here avoids an indirection","on the client side."],type:"publicKey"},{name:"mode",docs:["The mode that this program is running in. This is used to determine","whether the program is burning tokens or locking tokens."],type:{defined:"Mode"}},{name:"chainId",docs:["The chain id of the chain that this program is running on. We don't","hardcode this so that the program is deployable on any potential SVM","forks."],type:{defined:"ChainId"}},{name:"nextTransceiverId",docs:["The next transceiver id to use when registering an transceiver."],type:"u8"},{name:"threshold",docs:["The number of transceivers that must attest to a transfer before it is","accepted."],type:"u8"},{name:"enabledTransceivers",docs:["Bitmap of enabled transceivers.","The maximum number of transceivers is equal to [`Bitmap::BITS`]."],type:{defined:"Bitmap"}},{name:"paused",docs:["Pause the program. This is useful for upgrades and other maintenance."],type:"bool"},{name:"custody",docs:["The custody account that holds tokens in locking mode."],type:"publicKey"}]}},{name:"LUT",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:"publicKey"}]}},{name:"nttManagerPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}},{name:"tokenDecimals",type:"u8"}]}},{name:"inboxItem",type:{kind:"struct",fields:[{name:"init",type:"bool"},{name:"bump",type:"u8"},{name:"amount",type:"u64"},{name:"recipientAddress",type:"publicKey"},{name:"votes",type:{defined:"Bitmap"}},{name:"releaseStatus",type:{defined:"ReleaseStatus"}}]}},{name:"inboxRateLimit",docs:["Inbound rate limit per chain.","SECURITY: must check the PDA (since there are multiple PDAs, namely one for each chain.)"],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"outboxItem",type:{kind:"struct",fields:[{name:"amount",type:{defined:"TrimmedAmount"}},{name:"sender",type:"publicKey"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientNttManager",type:{array:["u8",32]}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"releaseTimestamp",type:"i64"},{name:"released",type:{defined:"Bitmap"}}]}},{name:"outboxRateLimit",type:{kind:"struct",fields:[{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"registeredTransceiver",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"id",type:"u8"},{name:"transceiverAddress",type:"publicKey"}]}},{name:"transceiverPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}},{name:"bridgeData",type:{kind:"struct",fields:[{name:"guardianSetIndex",docs:["The current guardian set index, used to decide which signature sets to accept."],type:"u32"},{name:"lastLamports",docs:["Lamports in the collection account"],type:"u64"},{name:"config",docs:["Bridge configuration, which is set once upon initialization."],type:{defined:"BridgeConfig"}}]}}],types:[{name:"Bitmap",type:{kind:"struct",fields:[{name:"map",type:"u128"}]}},{name:"SetInboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"},{name:"chainId",type:{defined:"ChainId"}}]}},{name:"SetOutboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"}]}},{name:"SetPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}},{name:"limit",type:"u64"},{name:"tokenDecimals",docs:["The token decimals on the peer chain."],type:"u8"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"},{name:"limit",type:"u64"},{name:"mode",type:{defined:"Mode"}}]}},{name:"RedeemArgs",type:{kind:"struct",fields:[]}},{name:"ReleaseInboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"TransferArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"shouldQueue",type:"bool"}]}},{name:"ReleaseStatus",docs:["The status of an InboxItem. This determines whether the tokens are minted/unlocked to the recipient. As","such, this must be used as a state machine that moves forward in a linear manner. A state",'should never "move backward" to a previous state (e.g. should never move from `Released` to',"`ReleaseAfter`)."],type:{kind:"enum",variants:[{name:"NotApproved"},{name:"ReleaseAfter",fields:["i64"]},{name:"Released"}]}},{name:"RateLimitState",type:{kind:"struct",fields:[{name:"limit",docs:["The maximum capacity of the rate limiter."],type:"u64"},{name:"capacityAtLastTx",docs:["The capacity of the rate limiter at `last_tx_timestamp`.","The actual current capacity is calculated in `capacity_at`, by","accounting for the time that has passed since `last_tx_timestamp` and","the refill rate."],type:"u64"},{name:"lastTxTimestamp",docs:["The timestamp of the last transaction that counted towards the current","capacity. Transactions that exceeded the capacity do not count, they are","just delayed."],type:"i64"}]}},{name:"SetTransceiverPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}}]}},{name:"BroadcastPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"ReleaseOutboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"ChainId",type:{kind:"struct",fields:[{name:"id",type:"u16"}]}},{name:"Mode",type:{kind:"enum",variants:[{name:"Locking"},{name:"Burning"}]}},{name:"TrimmedAmount",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]}},{name:"BridgeConfig",type:{kind:"struct",fields:[{name:"guardianSetExpirationTime",docs:["Period for how long a guardian set is valid after it has been replaced by a new one. This","guarantees that VAAs issued by that set can still be submitted for a certain period. In","this period we still trust the old guardian set."],type:"u32"},{name:"fee",docs:["Amount of lamports that needs to be paid to the protocol to post a message"],type:"u64"}]}}],errors:[{code:6e3,name:"CantReleaseYet",msg:"CantReleaseYet"},{code:6001,name:"InvalidPendingOwner",msg:"InvalidPendingOwner"},{code:6002,name:"InvalidChainId",msg:"InvalidChainId"},{code:6003,name:"InvalidRecipientAddress",msg:"InvalidRecipientAddress"},{code:6004,name:"InvalidTransceiverPeer",msg:"InvalidTransceiverPeer"},{code:6005,name:"InvalidNttManagerPeer",msg:"InvalidNttManagerPeer"},{code:6006,name:"InvalidRecipientNttManager",msg:"InvalidRecipientNttManager"},{code:6007,name:"TransferAlreadyRedeemed",msg:"TransferAlreadyRedeemed"},{code:6008,name:"TransferCannotBeRedeemed",msg:"TransferCannotBeRedeemed"},{code:6009,name:"TransferNotApproved",msg:"TransferNotApproved"},{code:6010,name:"MessageAlreadySent",msg:"MessageAlreadySent"},{code:6011,name:"InvalidMode",msg:"InvalidMode"},{code:6012,name:"InvalidMintAuthority",msg:"InvalidMintAuthority"},{code:6013,name:"TransferExceedsRateLimit",msg:"TransferExceedsRateLimit"},{code:6014,name:"Paused",msg:"Paused"},{code:6015,name:"DisabledTransceiver",msg:"DisabledTransceiver"},{code:6016,name:"InvalidDeployer",msg:"InvalidDeployer"},{code:6017,name:"BadAmountAfterTransfer",msg:"BadAmountAfterTransfer"},{code:6018,name:"BadAmountAfterBurn",msg:"BadAmountAfterBurn"},{code:6019,name:"ZeroThreshold",msg:"ZeroThreshold"},{code:6020,name:"OverflowExponent",msg:"OverflowExponent"},{code:6021,name:"OverflowScaledAmount",msg:"OverflowScaledAmount"},{code:6022,name:"BitmapIndexOutOfBounds",msg:"BitmapIndexOutOfBounds"},{code:6023,name:"NoRegisteredTransceivers",msg:"NoRegisteredTransceivers"}]}});var Lo,_o=Q(()=>{Lo={version:"2.0.0",name:"wormhole_governance",instructions:[{name:"governance",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"governance",isMut:!0,isSigner:!1,docs:["governed program. This account is validated by Wormhole, not this program."]},{name:"vaa",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"replay",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"replayProtection",type:{kind:"struct",fields:[{name:"bump",type:"u8"}]}}],errors:[{code:6e3,name:"InvalidGovernanceChain",msg:"InvalidGovernanceChain"},{code:6001,name:"InvalidGovernanceEmitter",msg:"InvalidGovernanceEmitter"},{code:6002,name:"InvalidGovernanceProgram",msg:"InvalidGovernanceProgram"}]}});var ys,Do=Q(()=>{Ro();_o();(function(n){n.idl={ntt:Qs,transceiver:Qs,transceiverLegacy:Qs,governance:Lo}})(ys||(ys={}))});var Fo,Xo=Q(()=>{Fo={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 Vo,Oo=Q(()=>{Vo={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 No,Wo=Q(()=>{No={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 Ho,Uo=Q(()=>{Ho={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 As,Ko=Q(()=>{Xo();Oo();Wo();Uo();(function(n){n.idl={ntt:Fo,transceiver:Vo,transceiverLegacy:No,governance:Ho}})(As||(As={}))});var ci=Q(()=>{Bo();Do();Ko()});function qo(n){for(let[e,t]of Ys)if(Go.Ntt.abiVersionMatches(n,e))return t;throw new Error(`Unknown IDL version: ${n}`)}function bs(n,e,t){let{idl:{ntt:s}}=qo(t);return new ui.Program(s,e,{connection:n})}function Js(n,e,t,s=!1){let{idl:{transceiver:a,transceiverLegacy:i}}=qo(t),r=s?i:a;return new ui.Program(r,e,{connection:n})}var ui,Go,Ys,Zs=Q(()=>{ui=require("@coral-xyz/anchor");ci();Go=require("@wormhole-foundation/sdk-definitions-ntt"),Ys=[["3.0.0",As],["2.0.0",ys],["1.0.0",hs]]});function xs(n){return un.PublicKey.findProgramAddressSync([new un.PublicKey(n).toBytes()],ss)[0]}function mn(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 ee(n,e){let t=s=>typeof s=="string"?ws.encoding.bytes.encode(s):s;return un.PublicKey.findProgramAddressSync(Array.isArray(n)?n.map(t):[t(n)],new un.PublicKey(e))[0]}var un,ws,mi,ss,zo,ch,dn,di,uh,mh,ea=Q(()=>{un=require("@solana/web3.js"),ws=require("@wormhole-foundation/sdk-base"),mi=Vn(require("bn.js"),1),ss=new un.PublicKey("BPFLoaderUpgradeab1e11111111111111111111111");zo=[{name:"length",binary:"uint",endianness:"little",size:4},{name:"version",binary:"bytes"}],ch={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};dn=n=>ws.encoding.bignum.toBytes((0,ws.toChainId)(n),2),di=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)},uh=new un.PublicKey(Buffer.from("owner".padEnd(32,"\0"))),mh=new un.PublicKey(Buffer.from("payer".padEnd(32,"\0")))});async function ta(n,e,t,s,a,i,r,o,c){let u=J.getExtraAccountMetaAddress(a,t),g=await n.getAccountInfo(u,c);if(g==null)return e;let f=J.getExtraAccountMetas(g);if(![s,a,i,r].every(b=>e.keys.some(x=>x.pubkey.equals(b))))throw new Error("Missing required account in instruction");let h=J.createExecuteInstruction(t,s,a,i,r,u,BigInt(o));for(let b of f)h.keys.push(gm(await J.resolveExtraAccountMeta(n,b,h.keys,h.data,h.programId),h.keys));e.keys.push(...h.keys.slice(5)),e.keys.push({pubkey:t,isSigner:!1,isWritable:!1}),e.keys.push({pubkey:u,isSigner:!1,isWritable:!1})}function gm(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 ln,J,ce,Ae,jo,na,li,Ss,$o,z,Qo=Q(()=>{ln=require("@coral-xyz/anchor"),J=Vn(require("@solana/spl-token"),1),ce=require("@solana/web3.js"),Ae=require("@wormhole-foundation/sdk-base"),jo=require("@wormhole-foundation/sdk-definitions"),na=Vn(require("bn.js"),1),li=require("@wormhole-foundation/sdk-definitions-ntt"),Ss=require("@solana/spl-token"),$o=require("@wormhole-foundation/sdk-solana-core");Zs();ea();(function(n){function e(l,d,m){return{amount:new na.default(l.toString()),recipientChain:{id:(0,Ae.toChainId)(d.chain)},recipientAddress:Array.from(d.address.toUniversalAddress().toUint8Array()),shouldQueue:m}}n.transferArgs=e,n.pdas=l=>({configAccount:()=>ee("config",l),outboxRateLimitAccount:()=>ee("outbox_rate_limit",l),inboxRateLimitAccount:Qe=>ee(["inbox_rate_limit",dn(Qe)],l),inboxItemAccount:(Qe,it)=>ee(["inbox_item",li.Ntt.messageDigest(Qe,it)],l),upgradeLock:()=>ee("upgrade_lock",l),sessionAuthority:(Qe,it)=>ee(["session_authority",Qe.toBytes(),(0,jo.keccak256)(Ae.encoding.bytes.concat(Ae.encoding.bytes.zpad(new Uint8Array(it.amount.toArray()),8),dn(it.recipientChain.id),new Uint8Array(it.recipientAddress),new Uint8Array([it.shouldQueue?1:0])))],l),tokenAuthority:()=>ee("token_authority",l),pendingTokenAuthority:()=>ee("pending_token_authority",l),peerAccount:Qe=>ee(["peer",dn(Qe)],l),registeredTransceiver:Qe=>ee(["registered_transceiver",Qe.toBytes()],l),lutAccount:()=>ee("lut",l),lutAuthority:()=>ee("lut_authority",l)}),n.transceiverPdas=l=>{let d=()=>ee("emitter",l);return{emitterAccount:d,outboxItemSigner:()=>ee(["outbox_item_signer"],l),transceiverPeerAccount:H=>ee(["transceiver_peer",dn(H)],l),transceiverMessageAccount:(H,ue)=>ee(["transceiver_message",dn(H),ue],l),unverifiedMessageAccount:(H,ue)=>ee(["vaa_body",H.toBytes(),new Uint8Array(ue.toArray("be"))],l),wormholeMessageAccount:H=>ee(["message",H.toBytes()],l),wormholeMessageWithShimAccount:H=>ee(d().toBytes(),H)}};async function t(l,d,m){if(!m){let at=l.rpcEndpoint===Ae.rpc.rpcAddress("Devnet","Solana")?"6sbzC1eH4FTujJXWj51eQe25cYvr4xfXbJ1vAj7j2k5J":l.rpcEndpoint.startsWith("http://localhost")?"98evdAiWr7ey9MAQzoQQMwFQkTsSR6KkWQuFqKrgwNwb":"Hk3SdYTJFpawrvRz4qRztuEt2SqoCG7BGj2yJfDJSFbJ";m=new ce.PublicKey(at)}let p=bs(l,d.toString(),"1.0.0"),_=await p.methods.version().accountsStrict({}).instruction(),{blockhash:Z}=await p.provider.connection.getLatestBlockhash("finalized"),te=new ce.TransactionMessage({payerKey:m,recentBlockhash:Z,instructions:[_]}).compileToV0Message(),ke=new ce.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,ln.translateError)(H.value.err,(0,ln.parseIdlErrors)(p.idl))));let ue=Ae.encoding.b64.decode(H.value.returnData?.data[0]),$e=(0,Ae.deserializeLayout)(zo,ue),Be=Ae.encoding.bytes.decode($e.version);for(let[at]of Ys)if(li.Ntt.abiVersionMatches(Be,at))return at;throw new Error(`Unknown IDL version: ${Be}`)}n.getVersion=t;async function s(l,d,m){let[p,,,]=mn(l.idl.version),_=d.mode==="burning"?{burning:{}}:{locking:{}},Z=(0,Ae.toChainId)(d.chain);m=m??n.pdas(l.programId);let te=new na.default(d.outboundLimit.toString());return l.methods.initialize({chainId:Z,limit:te,mode:_}).accounts({payer:d.payer,deployer:d.owner,programData:xs(l.programId),config:m.configAccount(),mint:d.mint,rateLimit:m.outboxRateLimitAccount(),tokenProgram:d.tokenProgram,tokenAuthority:m.tokenAuthority(),...p>=3&&{multisigTokenAuthority:d.multisigTokenAuthority??null},custody:await n.custodyAccountAddress(m,d.mint,d.tokenProgram),bpfLoaderUpgradeableProgram:ss,associatedTokenProgram:J.ASSOCIATED_TOKEN_PROGRAM_ID,systemProgram:ce.SystemProgram.programId}).instruction()}n.createInitializeInstruction=s;async function a(l,d,m,p,_){let[Z,,,]=mn(l.idl.version);if(Z<2)return;_=_??n.pdas(l.programId);let te=await l.provider.connection.getSlot()-1,[ke,H]=ln.web3.AddressLookupTableProgram.createLookupTable({authority:_.lutAuthority(),payer:p.payer,recentSlot:te}),ue=$o.utils.getWormholeDerivedAccounts(m,p.wormholeId.toString()),$e={config:_.configAccount(),custody:d.custody,tokenProgram:d.tokenProgram,mint:d.mint,tokenAuthority:_.tokenAuthority(),outboxRateLimit:_.outboxRateLimitAccount(),wormhole:{bridge:ue.wormholeBridge,feeCollector:ue.wormholeFeeCollector,sequence:ue.wormholeSequence,program:p.wormholeId,systemProgram:ce.SystemProgram.programId,clock:ln.web3.SYSVAR_CLOCK_PUBKEY,rent:ln.web3.SYSVAR_RENT_PUBKEY}},Be=it=>{let Ls=new Array;for(let cs in it){let _s=it[cs];_s instanceof ce.PublicKey?Ls.push(_s):typeof _s=="object"&&Ls.push(...Be(_s))}return Ls},at=Be($e).map(it=>it.toBase58()),Qe=await Jt(l,_);if(Qe!==null){let it=Qe.state.addresses?.map(cs=>cs.toBase58())??[];if(at.filter(cs=>!it.includes(cs)).length===0)return null}return l.methods.initializeLut(new na.default(te)).accountsStrict({payer:p.payer,owner:p.owner,authority:_.lutAuthority(),lutAddress:H,lut:_.lutAccount(),lutProgram:ce.AddressLookupTableProgram.programId,systemProgram:ce.SystemProgram.programId,entries:$e}).instruction()}n.initializeOrUpdateLUT=a;async function i(l,d,m,p){p=p??n.pdas(l.programId);let _=await Se(p,d),Z=(0,Ae.toChain)(m.transferArgs.recipientChain.id),te=await l.methods.transferBurn(m.transferArgs).accountsStrict({common:{payer:m.payer,config:{config:p.configAccount()},mint:d.mint,from:m.from,tokenProgram:d.tokenProgram,outboxItem:m.outboxItem,outboxRateLimit:p.outboxRateLimitAccount(),systemProgram:ce.SystemProgram.programId,custody:_},peer:p.peerAccount(Z),inboxRateLimit:p.inboxRateLimitAccount(Z),sessionAuthority:p.sessionAuthority(m.fromAuthority,m.transferArgs),tokenAuthority:p.tokenAuthority()}).instruction(),ke=await J.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),H=J.getTransferHook(ke);if(H){let ue=m.from,$e=d.mint,Be=await Se(p,d),at=p.sessionAuthority(m.fromAuthority,m.transferArgs);await ta(l.provider.connection,te,H.programId,ue,$e,Be,at,0)}return te}n.createTransferBurnInstruction=i;async function r(l,d,m,p){if(d.paused)throw new Error("Contract is paused");p=p??n.pdas(l.programId);let _=(0,Ae.toChain)(m.transferArgs.recipientChain.id),Z=await Se(p,d),te=await l.methods.transferLock(m.transferArgs).accountsStrict({common:{payer:m.payer,config:{config:p.configAccount()},mint:d.mint,from:m.from,tokenProgram:d.tokenProgram,outboxItem:m.outboxItem,outboxRateLimit:p.outboxRateLimitAccount(),custody:Z,systemProgram:ce.SystemProgram.programId},peer:p.peerAccount(_),inboxRateLimit:p.inboxRateLimitAccount(_),sessionAuthority:p.sessionAuthority(m.fromAuthority,m.transferArgs),custody:Z}).instruction(),ke=await J.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),H=J.getTransferHook(ke);if(H){let ue=m.from,$e=await Se(p,d),Be=p.sessionAuthority(m.fromAuthority,m.transferArgs);await ta(l.provider.connection,te,H.programId,ue,d.mint,$e,Be,0)}return te}n.createTransferLockInstruction=r;async function o(l,d,m,p){let[_,,,]=mn(l.idl.version);p=p??n.pdas(l.programId);let Z=await J.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),te=null;Z.mintAuthority?.equals(p.tokenAuthority())||(te=Z.mintAuthority);let ke=m.recipient??(await qt(l,m.chain,m.nttMessage)).recipientAddress,H=await l.methods.releaseInboundMint({revertOnDelay:m.revertWhenNotReady,revertWhenNotReady:m.revertWhenNotReady}).accounts({common:{payer:m.payer,config:{config:p.configAccount()},inboxItem:p.inboxItemAccount(m.chain,m.nttMessage),recipient:(0,Ss.getAssociatedTokenAddressSync)(d.mint,ke,!0,d.tokenProgram),mint:d.mint,tokenAuthority:p.tokenAuthority(),tokenProgram:d.tokenProgram,custody:await Se(p,d)},..._>=3&&{multisigTokenAuthority:te}}).instruction(),ue=J.getTransferHook(Z);if(ue){let $e=await Se(p,d),Be=d.mint,at=(0,Ss.getAssociatedTokenAddressSync)(Be,ke,!0,d.tokenProgram),Qe=p.tokenAuthority();await ta(l.provider.connection,H,ue.programId,$e,Be,at,Qe,0)}return H}n.createReleaseInboundMintInstruction=o;async function c(l,d,m,p){let _=m.recipient??(await n.getInboxItem(l,m.chain,m.nttMessage)).recipientAddress;p=p??n.pdas(l.programId);let Z=await Se(p,d),te=await l.methods.releaseInboundUnlock({revertOnDelay:m.revertWhenNotReady,revertWhenNotReady:m.revertWhenNotReady}).accountsStrict({common:{payer:m.payer,config:{config:p.configAccount()},inboxItem:p.inboxItemAccount(m.chain,m.nttMessage),recipient:(0,Ss.getAssociatedTokenAddressSync)(d.mint,_,!0,d.tokenProgram),mint:d.mint,tokenAuthority:p.tokenAuthority(),tokenProgram:d.tokenProgram,custody:Z},custody:Z}).instruction(),ke=await J.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),H=J.getTransferHook(ke);if(H){let ue=await Se(p,d),$e=d.mint,Be=(0,Ss.getAssociatedTokenAddressSync)($e,_,!0,d.tokenProgram),at=p.tokenAuthority();await ta(l.provider.connection,te,H.programId,ue,$e,Be,at,0)}return te}n.createReleaseInboundUnlockInstruction=c;async function u(l,d,m){return m=m??n.pdas(l.programId),l.methods.transferOwnershipOneStepUnchecked().accountsStrict({config:m.configAccount(),owner:d.owner,newOwner:d.newOwner,upgradeLock:m.upgradeLock(),programData:xs(l.programId),bpfLoaderUpgradeableProgram:ss}).instruction()}n.createTransferOwnershipOneStepUncheckedInstruction=u;async function g(l,d,m){return m=m??n.pdas(l.programId),l.methods.transferOwnership().accountsStrict({config:m.configAccount(),owner:d.owner,newOwner:d.newOwner,upgradeLock:m.upgradeLock(),programData:xs(l.programId),bpfLoaderUpgradeableProgram:ss}).instruction()}n.createTransferOwnershipInstruction=g;async function f(l,d,m){return m=m??n.pdas(l.programId),l.methods.claimOwnership().accountsStrict({config:m.configAccount(),newOwner:d.newOwner,upgradeLock:m.upgradeLock(),programData:xs(l.programId),bpfLoaderUpgradeableProgram:ss}).instruction()}n.createClaimOwnershipInstruction=f;async function h(l,d,m,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:m.multisigTokenAuthority??null},currentAuthority:m.currentAuthority}).instruction()}n.createAcceptTokenAuthorityInstruction=h;async function b(l,d,m,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:m.multisigTokenAuthority??null},currentMultisigAuthority:m.currentMultisigAuthority}).remainingAccounts(m.additionalSigners.map(_=>({pubkey:_,isSigner:!0,isWritable:!1}))).instruction()}n.createAcceptTokenAuthorityFromMultisigInstruction=b;async function x(l,d,m,p){return p=p??n.pdas(l.programId),l.methods.setTokenAuthorityOneStepUnchecked().accountsStrict({common:{config:p.configAccount(),tokenAuthority:p.tokenAuthority(),mint:d.mint,owner:m.owner,newAuthority:m.newAuthority,multisigTokenAuthority:m.multisigTokenAuthority??null},tokenProgram:d.tokenProgram}).instruction()}n.createSetTokenAuthorityOneStepUncheckedInstruction=x;async function S(l,d,m,p){return p=p??n.pdas(l.programId),l.methods.setTokenAuthority().accountsStrict({common:{config:p.configAccount(),tokenAuthority:p.tokenAuthority(),mint:d.mint,owner:m.owner,newAuthority:m.newAuthority,multisigTokenAuthority:m.multisigTokenAuthority??null},rentPayer:m.rentPayer,pendingTokenAuthority:p.pendingTokenAuthority(),systemProgram:ce.SystemProgram.programId}).instruction()}n.createSetTokenAuthorityInstruction=S;async function R(l,d,m,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:ce.SystemProgram.programId,rentPayer:m.rentPayer,pendingTokenAuthority:p.pendingTokenAuthority(),multisigTokenAuthority:m.multisigTokenAuthority??null},owner:m.owner}).instruction()}n.createRevertTokenAuthorityInstruction=R;async function k(l,d,m,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:ce.SystemProgram.programId,rentPayer:m.rentPayer,pendingTokenAuthority:p.pendingTokenAuthority(),multisigTokenAuthority:m.multisigTokenAuthority??null},newAuthority:m.newAuthority}).instruction()}n.createClaimTokenAuthorityInstruction=k;async function X(l,d,m,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:ce.SystemProgram.programId,rentPayer:m.rentPayer,pendingTokenAuthority:p.pendingTokenAuthority(),multisigTokenAuthority:m.multisigTokenAuthority??null},newMultisigAuthority:m.newMultisigAuthority}).remainingAccounts(m.additionalSigners.map(_=>({pubkey:_,isSigner:!0,isWritable:!1}))).instruction()}n.createClaimTokenAuthorityToMultisigInstruction=X;async function M(l,d,m){return m=m??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:m.configAccount(),peer:m.peerAccount(d.chain),inboxRateLimit:m.inboxRateLimitAccount(d.chain)}).instruction()}n.createSetPeerInstruction=M;async function W(l,d,m){return m=m??n.pdas(l.programId),l.methods.setPaused(d.paused).accountsStrict({owner:d.owner,config:m.configAccount()}).instruction()}n.createSetPausedInstruction=W;async function U(l,d,m){return m=m??n.pdas(l.programId),l.methods.setThreshold(d.threshold).accountsStrict({owner:d.owner,config:m.configAccount()}).instruction()}n.createSetThresholdInstruction=U;async function T(l,d,m){return m=m??n.pdas(l.programId),l.methods.setOutboundLimit({limit:d.limit}).accounts({owner:d.owner,config:m.configAccount(),rateLimit:m.outboxRateLimitAccount()}).instruction()}n.createSetOutboundLimitInstruction=T;async function $(l,d,m){return m=m??n.pdas(l.programId),l.methods.setInboundLimit({chainId:{id:(0,Ae.toChainId)(d.chain)},limit:d.limit}).accounts({owner:d.owner,config:m.configAccount(),rateLimit:m.inboxRateLimitAccount(d.chain)}).instruction()}n.createSetInboundLimitInstruction=$;async function je(l,d,m,p,_,Z){_=_??n.pdas(l.programId),Z=Z??n.transceiverPdas(m);let te=p.vaa,ke=te.payload.nttManagerPayload,H=te.emitterChain;return l.methods.redeem({}).accounts({payer:p.payer,config:_.configAccount(),peer:_.peerAccount(H),transceiverMessage:Z.transceiverMessageAccount(H,ke.id),transceiver:_.registeredTransceiver(m),mint:d.mint,inboxItem:_.inboxItemAccount(H,ke),inboxRateLimit:_.inboxRateLimitAccount(H),outboxRateLimit:_.outboxRateLimitAccount()}).instruction()}n.createRedeemInstruction=je;async function st(l,d){return l.account.config.fetch(d.configAccount())}n.getConfig=st;async function qt(l,d,m){return l.account.inboxItem.fetch(n.pdas(l.programId).inboxItemAccount(d,m))}n.getInboxItem=qt;async function Jt(l,d){let[m,,,]=mn(l.idl.version);if(m<2)return null;d=d??n.pdas(l.programId);let p=await l.account.lut.fetchNullable(d.lutAccount());if(!p)return null;let _=await l.provider.connection.getAddressLookupTable(p.address);if(_.value===null)throw new Error("Could not fetch LUT");return _.value}n.getAddressLookupTable=Jt;async function Se(l,d,m=J.TOKEN_PROGRAM_ID){return d instanceof ce.PublicKey?J.getAssociatedTokenAddress(d,l.tokenAuthority(),!0,m):J.getAssociatedTokenAddress(d.mint,l.tokenAuthority(),!0,d.tokenProgram)}n.custodyAccountAddress=Se})(z||(z={}))});var fi=Q(()=>{Qo();Zs();ci()});var Yo,Jo=Q(()=>{Yo={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 Zo,ec=Q(()=>{Zo={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 gi,qe,B,pi,_n,hi,G,Rn,Ln,ks,vs,yi=Q(()=>{gi=require("@coral-xyz/anchor"),qe=Vn(require("@solana/spl-token"),1),B=require("@solana/web3.js"),pi=require("@wormhole-foundation/sdk-base"),_n=require("@wormhole-foundation/sdk-definitions"),hi=require("@wormhole-foundation/sdk-definitions-ntt"),G=require("@wormhole-foundation/sdk-solana"),Rn=require("@wormhole-foundation/sdk-solana-core"),Ln=Vn(require("bn.js"),1);Zs();fi();ea();Jo();ec();ks=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??hi.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 gi.Program(Yo,i,{connection:this.program.provider.connection});let r=a.verifyVaaShimOverride??hi.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 gi.Program(Zo,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,u]=B.PublicKey.findProgramAddressSync([Buffer.from("GuardianSet"),o],this.manager.core.coreBridge.programId);if(a){let g=new Ln.default(e.hash.subarray(-8));return this.program.methods.receiveWormholeMessageAccount(u,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(u,{span:di((0,_n.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:Rn.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 Ln.default(e.hash.subarray(-8)),r=di((0,_n.serialize)(e)),o=r.length,c=[],u=0;for(;u<o;){let g=r.subarray(u,u+s);if(c.push(this.program.methods.postUnverifiedWormholeMessageAccount({seed:i,offset:u,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}u+=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 Ln.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,,,]=mn(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 u=Buffer.from(c.value.returnData?.data[0],"base64"),g=u.readUInt32LE(0);return u.subarray(4,g+4).toString()}else throw new Error("no transceiver type found")}async getAddress(){return{chain:this.manager.chain,address:(0,_n.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,pi.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,_n.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=Rn.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:ee(["__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=Rn.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,pi.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:ee(["__event_authority"],this.postMessageShim.programId)}}}).instruction()}async createReleaseWormholeOutboundIx(e,t,s){let[a,,,]=mn(this.version),i=Rn.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:ee(["__event_authority"],this.postMessageShim.programId)}},...a>=3&&{manager:this.manager.program.programId,outboxItemSigner:this.pdas.outboxItemSigner()}}).instruction()}},vs=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=bs(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),u=new B.PublicKey(a.ntt.transceiver[o]);if(z.transceiverPdas(c).emitterAccount().equals(u)||c.equals(u)){let g=new ks(this,Js(s,a.ntt.manager,i,!a.ntt.svmShims),i,a.ntt.svmShims);this.transceivers.push(g.program)}else this.transceivers.push(Js(s,a.ntt.transceiver[o],i,!a.ntt.svmShims))}),this.managerAddress=a.ntt.manager,this.tokenAddress=a.ntt.token,this.core=new Rn.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 ks(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,_n.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),u=new B.Transaction;u.feePayer=t,u.add(i,c),yield this.createUnsignedTx({transaction:u,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 Ln.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,u=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 M=qe.getAssociatedTokenAddressSync(qe.NATIVE_MINT,o),U=[...await this.connection.getAccountInfo(M)?[]:[qe.createAssociatedTokenAccountInstruction(o,M,o,qe.NATIVE_MINT)],B.SystemProgram.transfer({fromPubkey:o,toPubkey:M,lamports:t}),qe.createSyncNativeInstruction(M)],{blockhash:T}=await this.connection.getLatestBlockhash(),$=new B.TransactionMessage({payerKey:o,instructions:U,recentBlockhash:T}).compileToV0Message(),je=new B.VersionedTransaction($);yield this.createUnsignedTx({transaction:je},"Ntt.WrapNative")}let g=z.transferArgs(t,s,a.queue),f={transferArgs:g,payer:o,from:u,fromAuthority:c,outboxItem:i.publicKey},h=qe.createApproveInstruction(u,this.pdas.sessionAuthority(c,g),c,t,[],r.tokenProgram),b=[],x=r.mode.locking!=null?z.createTransferLockInstruction(this.program,r,f,this.pdas):z.createTransferBurnInstruction(this.program,r,f,this.pdas);b.push(x);for(let M=0;M<this.transceivers.length;++M)if(M===0){let W=await this.getWormholeTransceiver();if(!W)throw new Error("Wormhole transceiver not found");let U=W.createReleaseWormholeOutboundIx(o,i.publicKey,!a.queue);b.push(U)}let S=new B.Transaction;S.feePayer=o,S.add(h,...await Promise.all(b));let R=[];try{R.push(await this.getAddressLookupTable())}catch{}let k=new B.TransactionMessage({payerKey:o,instructions:S.instructions,recentBlockhash:(await this.connection.getLatestBlockhash()).blockhash}).compileToV0Message(R),X=new B.VersionedTransaction(k);yield this.createUnsignedTx({transaction:X,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(),u=[];if(o.verifyVaaShim){let M=B.Keypair.generate(),W=await o.verifyVaaShim.methods.postSignatures(r.guardianSet,r.signatures.length,r.signatures.map($=>[$.guardianIndex,...$.signature.encode()])).accounts({payer:c,guardianSignatures:M.publicKey}).instruction(),U=new B.Transaction;U.feePayer=c,U.add(W),yield this.createUnsignedTx({transaction:U,signers:[M]},"VerifyVAAShim.PostSignature"),u.push(o.createReceiveIx(r,c,M.publicKey,!1)),u.push(o.verifyVaaShim.methods.closeSignatures().accounts({guardianSignatures:M.publicKey,refundRecipient:c}).instruction())}else yield*this.core.postVaa(t,r),u.push(o.createReceiveIx(r,c));let g=z.createRedeemInstruction(this.program,s,o.program.programId,{payer:c,vaa:r}),f=r.payload.nttManagerPayload,h=r.emitterChain,b={payer:c,config:s,nttMessage:f,recipient:new B.PublicKey(f.payload.recipientAddress.toUint8Array()),chain:h,revertWhenNotReady:!1},x=s.mode.locking!=null?z.createReleaseInboundUnlockInstruction(this.program,s,{...b}):z.createReleaseInboundMintInstruction(this.program,s,{...b}),S=new B.Transaction;S.feePayer=c,S.add(...await Promise.all([...u,g,x]));let R=[];try{R.push(await this.getAddressLookupTable())}catch{}let k=new B.TransactionMessage({payerKey:c,instructions:S.instructions,recentBlockhash:(await this.connection.getLatestBlockhash()).blockhash}).compileToV0Message(R),X=new B.VersionedTransaction(k);yield this.createUnsignedTx({transaction:X},"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 Ln.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 Ln.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 tc,nc=Q(()=>{tc={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 sc,ac=Q(()=>{sc={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 Ai,Kt,q,ic,Ms,sa,Is,bi=Q(()=>{Ai=require("@coral-xyz/anchor"),Kt=require("@solana/spl-token"),q=require("@solana/web3.js"),ic=require("@wormhole-foundation/sdk-base"),Ms=require("@wormhole-foundation/sdk-solana"),sa=Vn(require("bn.js"),1);nc();ac();ea();Is=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 Ms.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 Ms.SolanaAddress(e).unwrap(),c={queue:!1,automatic:!1,wrapNative:r},u=q.Keypair.generate(),g=i.transfer(e,a.remainingAmount,t,c,u);for await(let f of g)if(f.description==="Ntt.Transfer"){let h=[];try{h.push(await i.getAddressLookupTable())}catch(k){console.debug(k)}let b=q.TransactionMessage.decompile(f.transaction.transaction.message,{addressLookupTableAccounts:h});if(a.transferTokenFee>0n){let k=new q.PublicKey(a.referrer.address.toString()),{mint:X,tokenProgram:M}=await i.getConfig(),W=(0,Kt.getAssociatedTokenAddressSync)(X,k,!0,M),U=(0,Kt.getAssociatedTokenAddressSync)(X,o,!0,M);await this.connection.getAccountInfo(W)||b.instructions.push((0,Kt.createAssociatedTokenAccountIdempotentInstruction)(o,W,k,X,M));let $=await(0,Kt.getMint)(this.connection,X,void 0,M);b.instructions.push((0,Kt.createTransferCheckedInstruction)(U,X,W,o,a.transferTokenFee,$.decimals,void 0,M))}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 x=new Ai.Program(sc,this.nttWithExecutorProgramId,{connection:this.connection}),S=new q.PublicKey(this.contracts.ntt.manager),R=q.PublicKey.findProgramAddressSync([Buffer.from("peer"),dn(t.chain)],S)[0];if(b.instructions.push(await x.methods.relayNttMesage({execAmount:new sa.default(a.estimatedCost.toString()),recipientChain:(0,ic.toChainId)(t.chain),signedQuoteBytes:Buffer.from(a.signedQuote),relayInstructions:Buffer.from(a.relayInstructions)}).accounts({payer:o,payee:new q.PublicKey(a.payeeAddress),nttProgramId:S,nttPeer:R,nttMessage:u.publicKey,executorProgram:this.executorProgramId}).instruction()),h.length===0){console.debug("no manager lookup table found, checking helper program");let k=new Ai.Program(tc,this.nttLutProgramId,{connection:this.connection}),X=q.PublicKey.findProgramAddressSync([Buffer.from("lut"),S.toBuffer()],k.programId)[0],M=await k.account.lut.fetchNullable(X);if(!M){console.debug("no helper program lookup table found, initializing...");let[U]=await q.PublicKey.findProgramAddressSync([Buffer.from("config")],S),[T]=await q.PublicKey.findProgramAddressSync([Buffer.from("lut_authority")],k.programId),$=await this.connection.getSlot("finalized")-10,[je]=await q.PublicKey.findProgramAddressSync([T.toBuffer(),new sa.default($).toArrayLike(Buffer,"le",8)],q.AddressLookupTableProgram.programId),[st]=await q.PublicKey.findProgramAddressSync([Buffer.from("lut"),S.toBuffer()],k.programId),qt=await k.methods.initializeLut(new sa.default($)).accounts({nttProgramId:S,nttConfig:U,authority:T,lutAddress:je,lut:st,lutProgram:q.AddressLookupTableProgram.programId,systemProgram:q.SystemProgram.programId,payer:o}).instruction(),Jt=new q.TransactionMessage({payerKey:o,recentBlockhash:(await this.connection.getLatestBlockhash("finalized")).blockhash,instructions:[qt]}).compileToV0Message();yield i.createUnsignedTx({transaction:new q.VersionedTransaction(Jt)},"NttSvmLut.InitializeLut"),console.debug(`initialized lookup table: ${f}`);let Se=0;for(;!M&&Se<10;)await new Promise(l=>setTimeout(l,2e3)),M=await k.account.lut.fetchNullable(X),Se++}let W=await this.connection.getAddressLookupTable(M.address);if(!W.value)throw new Error("unable to fetch lookup table");h.push(W.value)}f.transaction.transaction.message=b.compileToV0Message(h),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 Ms.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,Kt.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 rc=Q(()=>{"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 pm(){(0,oc.register)(),(0,as.protocolIsRegistered)(Ts._platform,"Ntt")||(0,as.registerProtocol)(Ts._platform,"Ntt",vs),(0,as.protocolIsRegistered)(Ts._platform,"NttWithExecutor")||(0,as.registerProtocol)(Ts._platform,"NttWithExecutor",Is)}var as,Ts,oc,cc=Q(()=>{as=require("@wormhole-foundation/sdk-definitions"),Ts=require("@wormhole-foundation/sdk-solana");yi();bi();oc=require("@wormhole-foundation/sdk-definitions-ntt");rc();yi();bi()});var uc={};An(uc,{IdlVersions:()=>Ys,NTT:()=>z,SolanaNtt:()=>vs,SolanaNttWithExecutor:()=>Is,SolanaNttWormholeTransceiver:()=>ks,_1_0_0:()=>hs,_2_0_0:()=>ys,_3_0_0:()=>As,getNttProgram:()=>bs,getTransceiverProgram:()=>Js,register:()=>pm});var mc=Q(()=>{cc();fi()});var Sd={};An(Sd,{HydrationConfigService:()=>Ca,assetsMap:()=>Ri,builders:()=>xi,chainsMap:()=>qi,clients:()=>Ga,dex:()=>Ei,routesMap:()=>Kc,tags:()=>Si,validations:()=>Gc});module.exports=au(Sd);var C=require("@galacticcouncil/xc-core"),Re=new C.Asset({key:"aave",originSymbol:"AAVE"}),Pa=new C.Asset({key:"ajun",originSymbol:"AJUN"}),Le=new C.Asset({key:"apyusd",originSymbol:"apyUSD"}),j=new C.Asset({key:"astr",originSymbol:"ASTR"}),K=new C.Asset({key:"bnc",originSymbol:"BNC"}),Ea=new C.Asset({key:"bsx",originSymbol:"BSX"}),_e=new C.Asset({key:"cfg_new",originSymbol:"CFG"}),Ba=new C.Asset({key:"cru",originSymbol:"CRU"}),St=new C.Asset({key:"dai",originSymbol:"DAI"}),_t=new C.Asset({...St,key:"dai_wh"}),P=new C.Asset({key:"dot",originSymbol:"DOT"}),D=new C.Asset({key:"eth",originSymbol:"ETH"}),De=new C.Asset({key:"ena",originSymbol:"ENA"}),gt=new C.Asset({key:"eurc",originSymbol:"EURC"}),kt=new C.Asset({...gt,key:"eurc_wh"}),pt=new C.Asset({key:"glmr",originSymbol:"GLMR"}),On=new C.Asset({key:"hdx",originSymbol:"HDX"}),ie=new C.Asset({key:"ibtc",originSymbol:"IBTC"}),rt=new C.Asset({key:"intr",originSymbol:"INTR"}),Ye=new C.Asset({key:"jitoSol",originSymbol:"jitoSOL"}),F=new C.Asset({key:"ksm",originSymbol:"KSM"}),Fe=new C.Asset({key:"ldo",originSymbol:"LDO"}),Xe=new C.Asset({key:"lbtc",originSymbol:"LBTC"}),Je=new C.Asset({key:"ewt",originSymbol:"EWT"}),Ve=new C.Asset({key:"link",originSymbol:"LINK"}),ne=new C.Asset({key:"myth",originSymbol:"MYTH"}),vt=new C.Asset({key:"neuro",originSymbol:"NEURO"}),ot=new C.Asset({key:"pen",originSymbol:"PEN"}),Oe=new C.Asset({key:"paxg",originSymbol:"PAXG"}),Ze=new C.Asset({key:"prime",originSymbol:"PRIME"}),Ne=new C.Asset({key:"sky",originSymbol:"SKY"}),ve=new C.Asset({key:"sol",originSymbol:"SOL"}),We=new C.Asset({key:"sui",originSymbol:"SUI"}),He=new C.Asset({key:"susde",originSymbol:"sUSDe"}),ct=new C.Asset({key:"susds",originSymbol:"sUSDS"}),Dt=new C.Asset({...ct,key:"susds_wh"}),Ue=new C.Asset({key:"tbtc",originSymbol:"tBTC"}),Ke=new C.Asset({key:"trac",originSymbol:"TRAC"}),Mt=new C.Asset({key:"unq",originSymbol:"UNQ"}),I=new C.Asset({key:"usdt",originSymbol:"USDT"}),Ft=new C.Asset({...I,key:"usdt_wh"}),zt=new C.Asset({...I,key:"usdt_eth"}),L=new C.Asset({key:"usdc",originSymbol:"USDC"}),Xt=new C.Asset({...L,key:"usdc_wh"}),jt=new C.Asset({...L,key:"usdc_eth"}),le=new C.Asset({key:"vastr",originSymbol:"vASTR"}),fe=new C.Asset({key:"vdot",originSymbol:"vDOT"}),Vt=new C.Asset({key:"weth",originSymbol:"WETH"}),et=new C.Asset({...Vt,key:"weth_wh"}),ut=new C.Asset({key:"wbtc",originSymbol:"WBTC"}),Ot=new C.Asset({...ut,key:"wbtc_wh"}),Ge=new C.Asset({key:"wsteth",originSymbol:"wstETH"}),$t=new C.Asset({key:"wud",originSymbol:"WUD"}),iu=[Re,Pa,Le,j,Ea,_e,Ba,K,St,_t,P,De,gt,kt,D,pt,On,ie,rt,F,Fe,Xe,Je,Ye,Ve,ne,vt,Oe,ot,Ze,Ne,ve,We,He,ct,Dt,Ke,Ue,Mt,L,Xt,jt,I,Ft,zt,le,fe,ut,Ot,Vt,et,Ge,$t],Ri=new Map(iu.map(n=>[n.key,n]));var Nn=require("@galacticcouncil/xc-core");var Li=require("viem/chains"),bn=new Nn.EvmChain({id:8453,key:"base",name:"Base",assetsData:[{asset:D,decimals:18,id:"0x4200000000000000000000000000000000000006"},{asset:gt,decimals:6,id:"0x60a3e35cc302bfa44cb288bc5a4f316fdb1adb42"},{asset:L,decimals:6,id:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}],balance:Nn.EvmBalanceType.Erc20,ecosystem:Nn.ChainEcosystem.Ethereum,evmChain:Li.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:{[gt.key]:{token:"0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42",manager:"0xD1dc3517732c98502b5c1ba2389AcA9E9016d89a",transceiver:{wormhole:"0xa84b362290b0CFdB55e877dfc633284091e0B3F7"}}}}});var wn=require("@galacticcouncil/xc-core");var _i=require("viem/chains"),E=new wn.EvmChain({id:1,key:"ethereum",name:"Ethereum",assetsData:[{asset:D,decimals:18,id:"0x0000000000000000000000000000000000000000"},{asset:Re,decimals:18,id:"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"},{asset:Le,decimals:18,id:"0x38eeb52f0771140d10c4e9a9a72349a329fe8a6a"},{asset:_e,decimals:18,id:"0xcccccccccc33d538dbc2ee4feab0a7a1ff4e8a94"},{asset:Vt,decimals:18,id:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"},{asset:St,decimals:18,id:"0x6B175474E89094C44Da98b954EedeAC495271d0F"},{asset:De,decimals:18,id:"0x57e114b691db790c35207b2e685d4a43181e6061"},{asset:He,decimals:18,id:"0x9d39a5de30e57443bff2a8307a4256c8797a3497"},{asset:ct,decimals:18,id:"0xa3931d71877c0e7a3148cb7eb4463524fec27fbd"},{asset:Ue,decimals:18,id:"0x18084fba666a33d37592fa2633fd49a74dd93a88"},{asset:ut,decimals:8,id:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"},{asset:Xe,decimals:8,id:"0x8236a87084f8b84306f72007f36f2618a5634494"},{asset:L,decimals:6,id:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"},{asset:I,decimals:6,id:"0xdAC17F958D2ee523a2206206994597C13D831ec7"},{asset:Fe,decimals:18,id:"0x5a98fcbea516cf06857215779fd812ca3bef1b32"},{asset:Ve,decimals:18,id:"0x514910771af9ca656af840dff83e8264ecf986ca"},{asset:Oe,decimals:18,id:"0x45804880de22913dafe09f4980848ece6ecbaf78"},{asset:Ne,decimals:18,id:"0x56072c95faa701256059aa122697b133aded9279"},{asset:Ke,decimals:18,id:"0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F"},{asset:Ge,decimals:18,id:"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"}],balance:wn.EvmBalanceType.Erc20,balanceOverrides:{[D.key]:wn.EvmBalanceType.Native},ecosystem:wn.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"}},[ct.key]:{token:"0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD",manager:"0x5085A4863f89eC9553F70187EE73B5aAe0fd14b5",transceiver:{wormhole:"0x7C236d237BEbBE1b7902131B31b7b3270005a810"}},[L.key]:{token:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",manager:"0x447b2c7485A3d6813F8197E605b10BcCD8dd8398",transceiver:{wormhole:"0xA108BD5dBc6CE665aEbB6895351e0609c76F8EFc"}},[I.key]:{token:"0xdAC17F958D2ee523a2206206994597C13D831ec7",manager:"0x9fbd9F16cE7Fa17097E91cc36DC1B7b47aDCa9De",transceiver:{wormhole:"0x45c566f6595CF93e639E77cc1bbE57A8D27901c2"}},[ut.key]:{token:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",manager:"0x081b76AC3cFb65DCe93961d66cea44A74EC8Ef28",transceiver:{wormhole:"0x3FE8fBB8505c8dB2264f6Ebc5559c7C2b2647218"}},[Vt.key]:{token:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",manager:"0x283B14B5Dd352e32154Df014EA96834F395E04b6",transceiver:{wormhole:"0xbA0Cd32131b8206AF4feB79A1A3aaF0AEfe18b48"}},[D.key]:{token:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",manager:"0x283B14B5Dd352e32154Df014EA96834F395E04b6",transceiver:{wormhole:"0xbA0Cd32131b8206AF4feB79A1A3aaF0AEfe18b48"}}}}});var Di=[bn,E];var ht=require("@galacticcouncil/xc-core");var Fi={assetsData:[{asset:P,decimals:10,id:0,xcmLocation:{parents:1,interior:"Here"}},{asset:I,decimals:6,id:1984,min:.7,xcmLocation:{parents:0,interior:{X2:[{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:L,decimals:6,id:1337,min:.7,xcmLocation:{parents:0,interior:{X2:[{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:$t,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:ht.SubstrateBalanceType.Assets,balanceOverrides:{[P.key]:ht.SubstrateBalanceType.System,[F.key]:ht.SubstrateBalanceType.ForeignAssets,[ne.key]:ht.SubstrateBalanceType.ForeignAssets},min:ht.SubstrateMinType.Assets,ecosystem:ht.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"]},O=new ht.Parachain({...Fi,key:"assethub",name:"AssetHub Polkadot"}),Zt=new ht.Parachain({...Fi,key:"assethub_cex",name:"AssetHub (CEX)",usesSignerFee:!0,isTestChain:!0,balanceOverrides:{}});var xn=require("@galacticcouncil/xc-core");var Me=new xn.Parachain({assetsData:[{asset:j,xcmLocation:{parents:0,interior:"Here"}},{asset:P,id:"340282366920938463463374607431768211455",decimals:10,min:1e-4,xcmLocation:{parents:1,interior:"Here"}},{asset:I,id:"4294969280",decimals:6,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:L,id:"4294969281",decimals:6,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:K,id:"18446744073709551623",decimals:12,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2030},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:pt,id:"18446744073709551619",decimals:18,min:.01,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:ie,id:"18446744073709551620",decimals:8,min:1e-6,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:rt,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:xn.SubstrateBalanceType.Assets,balanceOverrides:{[j.key]:xn.SubstrateBalanceType.System},ecosystem:xn.ChainEcosystem.Polkadot,explorer:"https://astar.subscan.io",genesisHash:"0x9eb76c5184c4ab8679d2d5d819fdf90b9c001403e9e17da2e14b6d8aec4029c6",key:"astar",name:"Astar",parachainId:2006,ss58Format:5,ws:"wss://rpc.astar.network"});var Sn=require("@galacticcouncil/xc-core");var ru=["wss://bifrost-polkadot.ibp.network","wss://eu.bifrost-polkadot-rpc.liebi.com/ws","wss://bifrost-polkadot.dotters.network"],se=new Sn.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:I,id:{Token2:2},decimals:6,min:.001,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:L,id:{Token2:5},decimals:6,min:.001,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1337}]}}},{asset:j,id:{Token2:3},decimals:18,min:.01,xcmLocation:{parents:1,interior:{X1:{Parachain:2006}}}},{asset:pt,id:{Token2:1},decimals:18,min:1e-5,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:ie,id:{Token2:6},decimals:8,min:1e-6,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}}],balance:Sn.SubstrateBalanceType.Tokens,balanceOverrides:{[K.key]:Sn.SubstrateBalanceType.System},ecosystem:Sn.ChainEcosystem.Polkadot,explorer:"https://bifrost.subscan.io",genesisHash:"0x262e1b2ad728475fd6fe88e62d34c200abe6fd693931ddad144059b1eb884e5b",key:"bifrost",name:"Bifrost",parachainId:2030,ss58Format:6,ws:ru});var kn=require("@galacticcouncil/xc-core"),Ni=require("viem");var Vi=require("@galacticcouncil/common"),Oi=require("polkadot-api"),{isEvmAccount:ou,H160:Xi}=Vi.h160,Fs=class{async toH160(e,t){if(ou(e))return Xi.fromAccount(e);let s=Xi.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,Oi.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 cu=new Fs,Ra=["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"],La=["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"],uu=(0,Ni.defineChain)({id:222222,name:"Hydration",network:"hydration",nativeCurrency:{decimals:18,name:"WETH",symbol:"WETH"},rpcUrls:{public:{http:Ra,webSocket:La},default:{http:Ra,webSocket:La}},blockExplorers:{default:{name:"Hydration Explorer",url:"https://hydration.subscan.io"}},testnet:!1}),v=new kn.EvmParachain({assetsData:[{asset:On,id:0,xcmLocation:{parents:0,interior:{X1:[{GeneralIndex:0}]}}},{asset:Re,decimals:18,id:1000624,min:6e-5,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"}}]}}},{asset:Pa,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:_e,decimals:18,id:41,min:.1,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xcccccccccc33d538dbc2ee4feab0a7a1ff4e8a94"}}]}}},{asset:Ba,decimals:12,id:27,min:.0079,xcmLocation:{parents:1,interior:{X1:{Parachain:2008}}}},{asset:P,decimals:10,id:5,min:.0018,xcmLocation:{parents:1,interior:"Here"}},{asset:_t,decimals:18,id:18,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f"}}]}}},{asset:D,decimals:18,id:34,min:55e-7,xcmLocation:{parents:2,interior:{X1:{GlobalConsensus:{Ethereum:{chain_id:1}}}}}},{asset:Le,decimals:18,id:46,min:.0147058823529412,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x38eeb52f0771140d10c4e9a9a72349a329fe8a6a"}}]}}},{asset:De,decimals:18,id:38,min:.037,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x57e114b691db790c35207b2e685d4a43181e6061"}}]}}},{asset:pt,decimals:18,id:16,min:.035,xcmLocation:{parents:1,interior:{X2:[{Parachain:2004},{PalletInstance:10}]}}},{asset:ie,decimals:8,id:11,min:36e-8,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0001000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:rt,decimals:10,id:17,min:.62,xcmLocation:{parents:1,interior:{X2:[{Parachain:2032},{GeneralKey:{length:2,data:"0x0002000000000000000000000000000000000000000000000000000000000000"}}]}}},{asset:Ye,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:Ze,decimals:6,id:43,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:1},{GeneralKey:{length:32,data:"0x26759f460ee5f743ed66d27c8f2a5623bf39d53ed575955320661e6e13e0e3da"}}]}}},{asset:Je,decimals:18,id:252525,min:.022,xcmLocation:{parents:1,interior:{X1:{Parachain:3345}}}},{asset:Fe,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:Xe,decimals:8,id:1000851,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x8236a87084f8b84306f72007f36f2618a5634494"}}]}}},{asset:Ve,decimals:18,id:1000794,min:.001,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x514910771af9ca656af840dff83e8264ecf986ca"}}]}}},{asset:Oe,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:ot,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:We,decimals:9,id:1000753,min:.003,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:21},{GeneralKey:{length:32,data:"0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3"}}]}}},{asset:He,decimals:18,id:1000625,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x9d39a5de30e57443bff2a8307a4256c8797a3497"}}]}}},{asset:ct,decimals:18,id:1000626,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xa3931d71877c0e7a3148cb7eb4463524fec27fbd"}}]}}},{asset:Dt,decimals:18,id:1000745,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000a3931d71877c0e7a3148cb7eb4463524fec27fbd"}}]}}},{asset:Ue,decimals:18,id:1000765,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x18084fba666a33d37592fa2633fd49a74dd93a88"}}]}}},{asset:Ke,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:Xt,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:jt,decimals:6,id:1000766,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"}}]}}},{asset:I,decimals:6,id:10,min:.01,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:Ft,decimals:6,id:23,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7"}}]}}},{asset:zt,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:ut,decimals:8,id:1000190,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"}}]}}},{asset:Ot,decimals:8,id:19,min:34e-8,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599"}}]}}},{asset:Vt,decimals:18,id:1000189,min:61e-7,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"}}]}}},{asset:et,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:Ge,decimals:18,id:1000809,min:635e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"}}]}}},{asset:$t,decimals:10,id:1000085,min:2e4,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:31337}]}}}],balance:kn.SubstrateBalanceType.Tokens,balanceOverrides:{[On.key]:kn.SubstrateBalanceType.System},ecosystem:kn.ChainEcosystem.Polkadot,evmChain:uu,evmResolver:cu,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:{[_t.key]:{token:"0x0000000000000000000000000000000100000012",manager:"0xcFd576F88C90844AEBF45378Fd09931281D8b14d",transceiver:{wormhole:"0xe8660CA48f6f4D98BC48DB7Dd07C1a8E555801eA"}},[kt.key]:{token:"0x000000000000000000000000000000010000002C",manager:"0x8dd1286A29dF5a2785FB638d6fB1598144Cfbc4C",transceiver:{wormhole:"0x2e84fac378D67Dc2e11026fB4919E80263a87375"}},[Ye.key]:{token:"0x0000000000000000000000000000000100000028",manager:"0xcE73C15B9ED02413066DE5B904A36F8e8f9B5331",transceiver:{wormhole:"0xF38D9C3bA6999Dc331b32B416083Fd7e02D17B04"}},[Ze.key]:{token:"0x000000000000000000000000000000010000002B",manager:"0xFCaF4aA069C565d25539028970703F01e47D3E0B",transceiver:{wormhole:"0x4e7b1E55D2354d4Dc6ABD876096Dc201de0541D1"}},[ve.key]:{token:"0x00000000000000000000000000000001000F4530",manager:"0x9e200C0f28D92D296b201D96C8269d3CAFFfA9FF",transceiver:{wormhole:"0x2F04AcF249091425d51e67EeA3C3161ccE283202"}},[We.key]:{token:"0x00000000000000000000000000000001000F4531",manager:"0x978443f00cAB6b09445140321EC73a221ebFF5F8",transceiver:{wormhole:"0xA224D6f4e0E276b34D91bfE6c3A5fE6838322AF7"}},[Dt.key]:{token:"0x00000000000000000000000000000001000F4529",manager:"0x1973E7044d9A7C7bB2d6ea1693A296a9e4B7E448",transceiver:{wormhole:"0x68Ecadd7934D4FcFEABAfB209C95D379B96400cb"}},[Xt.key]:{token:"0x0000000000000000000000000000000100000015",manager:"0xEcEab64542A875C4472671D9Ed1E690cdD4e28fC",transceiver:{wormhole:"0x0d7488B39AA64468a709eC3b3d354DeFE539eD97"}},[Ft.key]:{token:"0x0000000000000000000000000000000100000017",manager:"0x5E6C488103b47F804824AE15861638af4C436795",transceiver:{wormhole:"0xd2a16B736F32Df7C0DE72838837656FE0f85Ac0F"}},[Ot.key]:{token:"0x0000000000000000000000000000000100000013",manager:"0x6BFca089916c045b0Ca4A09B655aF9F926189993",transceiver:{wormhole:"0x9a8a1ab288f6749Ce5626DEE1B5d59441BdC187F"}},[et.key]:{token:"0x0000000000000000000000000000000100000014",manager:"0xB5cEf790D52A57fa619eD96eDd64c5328F3DCFb7",transceiver:{wormhole:"0x8acce9CA511d5D7213F8C3f813B8916087cd00ae"}}}},ws:La,rpcs:Ra});var Wn=require("@galacticcouncil/xc-core");var en=new Wn.Parachain({assetsData:[{asset:ne,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:Wn.SubstrateBalanceType.System,ecosystem:Wn.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 Hn=require("@galacticcouncil/xc-core");var Un=new Hn.Parachain({assetsData:[{asset:vt,xcmLocation:{parents:0,interior:{X1:{PalletInstance:10}}}}],balance:Hn.SubstrateBalanceType.System,ecosystem:Hn.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 tn=require("@galacticcouncil/xc-core");var Kn=new tn.Parachain({assetsData:[{asset:ot,id:"Native",xcmLocation:{parents:0,interior:{X1:{PalletInstance:10}}}}],balance:tn.SubstrateBalanceType.System,ecosystem:tn.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:tn.XcmVersion.v3});var Gn=require("@galacticcouncil/xc-core");var mu={assetsData:[{asset:P,xcmLocation:{parents:0,interior:"Here"}}],balance:Gn.SubstrateBalanceType.System,ecosystem:Gn.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"},Wi=new Gn.Parachain({...mu,key:"polkadot"});var qn=require("@galacticcouncil/xc-core");var zn=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 nn=require("@galacticcouncil/xc-core");var jn=new nn.Parachain({assetsData:[{asset:Je,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:nn.SubstrateBalanceType.System,ecosystem:nn.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:nn.XcmVersion.v3});var Hi=[O,Zt,Me,se,v,Un,en,Kn,Wi,zn,jn];var vn=require("@galacticcouncil/xc-core");var It=new vn.SolanaChain({id:101,key:"solana",name:"Solana",assetsData:[{asset:ve,decimals:9},{asset:Ye,id:"J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",decimals:9},{asset:Ze,id:"3b8X44fLF9ooXaUm3hhSgjpmVs6rZZ3pPoGnGahc3Uu7",decimals:6}],balance:vn.SolanaBalanceType.Token,balanceOverrides:{[ve.key]:vn.SolanaBalanceType.Native},ecosystem:vn.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"},[Ye.key]:{token:"J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",manager:"9HFvXujdkXubvmf93gyzkH1g3VPowDrmp85sWsfdcBTh",transceiver:{wormhole:"HgxvrPomT84AxgxknddAcC1iW9ysqHxmeoiKNZmQcovs"},emitter:"9Ss1eMHE8iDv9kCxERH5nabp9tx75AVoUWWEKaGgMrh9"},[Ze.key]:{token:"3b8X44fLF9ooXaUm3hhSgjpmVs6rZZ3pPoGnGahc3Uu7",manager:"4T5m5NtRVewiCVzP2mnfeUoMYRqncfkrS21X2dhVCNRT",transceiver:{wormhole:"GiTY93vtrK4jZZchrxdV9r28JByRs7Ary2rsTPyPabJc"},emitter:"HuvSXe6hQaSMgo5dc8GYzavcS3aB4Bix9XYgVdfsq2sY"}},platformAddressFormat:"base58"}});var Ui=[It];var $n=require("@galacticcouncil/xc-core");var Mn=new $n.SuiChain({id:"0x35834a8a",key:"sui",name:"Sui",assetsData:[{asset:We,decimals:9}],balance:$n.SuiBalanceType.Native,ecosystem:$n.ChainEcosystem.Sui,explorer:"https://suiscan.xyz/",rpc:"https://rpc-mainnet.suiscan.xyz",wormhole:{id:21,coreBridge:"0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c",ntt:{[We.key]:{token:"0x2::sui::SUI",manager:"0xa0bc45e0384140dc125f273eda89cad1434f5dee430726cf6364bdcceba1e9a3",transceiver:{wormhole:"0x6afb4a6a9c4e5b6eeed568381ce95a79590f0c17ab8d0c59295826f2775bf832"},emitter:"0x25437da9f99dfab32c1a275663f51cd5c99eb867ab4d1f630e3799c5e68215da"}}}});var Ki=[Mn];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:I,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 Qn=require("@galacticcouncil/xc-core");var Yn=new Qn.Parachain({assetsData:[{asset:Ea,id:0,xcmLocation:{parents:0,interior:"Here"}},{asset:F,decimals:12,id:1,xcmLocation:{parents:1,interior:"Here"}},{asset:I,decimals:6,id:14,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}}],balance:Qn.SubstrateBalanceType.Tokens,ecosystem:Qn.ChainEcosystem.Kusama,explorer:"https://basilisk.subscan.io",genesisHash:"0xa85cfb9b9fd4d622a5b28289a02347af987d8f73fa3108450e2b4a11c1ce5755",key:"basilisk",name:"Basilisk",parachainId:2090,ss58Format:10041,ws:"wss://basilisk-rpc.n.dwellir.com"});var Gi=[Tt,Yn];var du=[...Di,...Hi,...Ui,...Ki,...Gi],qi=new Map(du.map(n=>[n.key,n]));var wc=require("@galacticcouncil/xc-core");var ia=require("@galacticcouncil/xc-core");var xi={};An(xi,{ContractBuilder:()=>ye,ContractDecorator:()=>za,ExtrinsicBuilder:()=>w,ExtrinsicDecorator:()=>cn,FeeAmountBuilder:()=>V,FeeAssetBuilder:()=>ps,MoveBuilder:()=>oi,ProgramBuilder:()=>wi,XcmTransferType:()=>dt,XcmVersion:()=>Wt});var Rr=require("@galacticcouncil/xc-core");var In=require("@galacticcouncil/xc-core"),zi=require("viem"),lu=n=>({build:async e=>{let t=await Promise.all(n.map(r=>r.build(e))),s=t.map(r=>r.address),a=[0,0],i=t.map(r=>(0,zi.encodeFunctionData)({abi:In.Abi[r.module],functionName:r.func,args:r.args}));return new In.ContractConfig({abi:In.Abi.Batch,address:In.Precompile.Batch,args:[s,a,i,[]],func:"batchAll",module:"Batch"})}}),ji=()=>({batchAll:lu});var Jn=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 Tn(n){return typeof n=="object"?Object.values(n)[0]:n}function $i(){return{approve:n=>({build:async e=>{let{amount:t,asset:s,source:a,transact:i}=e,r=i?i.chain:a.chain,o=Jn.Wormhole.fromChain(r),c=r.getAssetId(s);return new Jn.ContractConfig({abi:Jn.Abi.Erc20,address:Tn(c).toString(),args:[n(o),t],func:"approve",module:"Erc20"})}})}}var Zn=require("@galacticcouncil/xc-core");var Qi=require("@galacticcouncil/common"),Yi=require("polkadot-api"),Ji=require("@polkadot-api/utils"),{H160:fu,isEvmAddress:gu}=Qi.h160;function pu(n){let e=gu(n)?fu.toAccount(n):n;return(0,Ji.toHex)((0,Yi.AccountId)().enc(e))}var hu=()=>({build:async n=>{let{address:e,amount:t,asset:s,source:a}=n,i=a.chain,r=Zn.Basejump.fromChain(i),o=i.getAssetId(s);return new Zn.ContractConfig({abi:Zn.Abi.Basejump,address:r.getAddress(),args:[Tn(o),t,pu(e)],func:"bridgeViaWormhole",module:"Basejump"})}}),Zi=()=>({bridgeViaWormhole:hu});var Ct=require("@galacticcouncil/xc-core"),tr=require("@galacticcouncil/common"),{Ss58Addr:er}=Ct.addr;function yu(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 _a(n,e){let t=n.getAssetId(e);return typeof t=="string"?yu(t):t}function nr(){return{transferAssetsToPara32:()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=_a(a.chain,t);return new Ct.ContractConfig({abi:Ct.Abi.PolkadotXcm,address:Ct.Precompile.PolkadotXcm,args:[s.chain.parachainId,er.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=_a(a.chain,t),r=_a(a.chain,a.destinationFeeBalance),o=tr.big.toBigInt(s.fee.amount,s.fee.decimals);return new Ct.ContractConfig({abi:Ct.Abi.PolkadotXcm,address:Ct.Precompile.PolkadotXcm,args:[s.chain.parachainId,er.getPubKey(n),[{asset:i,amount:e},{asset:r,amount:o}],1],func:"transferAssetsToPara32",module:"PolkadotXcm"})}})}}var Et=require("@galacticcouncil/xc-core"),an=require("@galacticcouncil/descriptors"),gr=require("@polkadot-api/substrate-bindings"),Os=require("@polkadot-api/utils"),pr=require("viem");var sr=require("@galacticcouncil/xc-core"),Xs=null;async function ar(){if(Xs)return Xs;let n=await sr.codec.getHubCodecs();return Xs={message:n.tx.PolkadotXcm.send.inner.message,location:n.tx.PolkadotXcm.send.inner.dest},Xs}var ur=require("@galacticcouncil/xc-core"),y=require("@galacticcouncil/descriptors"),mr=require("@polkadot-api/substrate-bindings"),dr=require("@polkadot-api/utils");var ir=require("@galacticcouncil/descriptors"),pe=340282366920938463463374607431768211455n,Pt="0x0000000000000000000000000000000000000000000000000000000000000000",me={parents:1,interior:ir.XcmV3Junctions.Here()},rr=0,sn=1e3,Vs=1002,yt=1,Cn="5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY",or="0x0000000000000000000000000000000000000000000000000000000000000000",cr="0x0000000000000000000000000000000000000000";var Da="0x0000000000000000000000000000000000000000",es=n=>({parents:2,interior:y.XcmV5Junctions.X1(y.XcmV5Junction.GlobalConsensus(y.XcmV5NetworkId.Ethereum({chain_id:BigInt(n)})))}),Fa=(n,e)=>({parents:2,interior:y.XcmV5Junctions.X2([y.XcmV5Junction.GlobalConsensus(y.XcmV5NetworkId.Ethereum({chain_id:BigInt(n)})),y.XcmV5Junction.AccountKey20({key:e,network:void 0})])});function lr(n,e){let t=es(n),s=Fa(n,"0x"+"00".repeat(20)),a=1000000000000n,i=1000000000n,r=[y.XcmV5Instruction.ReserveAssetDeposited([{id:t,fun:y.XcmV3MultiassetFungibility.Fungible(a)},{id:s,fun:y.XcmV3MultiassetFungibility.Fungible(a)}]),y.XcmV5Instruction.ExchangeAsset({give:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.AllOf({id:t,fun:{type:"Fungible",value:void 0}})),want:[{id:me,fun:y.XcmV3MultiassetFungibility.Fungible(i)}],maximal:!1}),y.XcmV5Instruction.PayFees({asset:{id:me,fun:y.XcmV3MultiassetFungibility.Fungible(i)}})],o=Xa({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 Xa(n){let{ethChainId:e,destinationParaId:t,tokenAddress:s,beneficiaryHex:a,tokenAmount:i,hydrationDotFee:r,topic:o}=n,c=es(e),u=s===Da?c:Fa(e,s),f=a.length===42&&a.startsWith("0x")?y.XcmV5Junction.AccountKey20({key:a,network:void 0}):y.XcmV5Junction.AccountId32({id:a,network:void 0}),h={parents:0,interior:y.XcmV5Junctions.X1(f)};return[y.XcmV5Instruction.SetAppendix([y.XcmV5Instruction.RefundSurplus(),y.XcmV5Instruction.DepositAsset({assets:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.All()),beneficiary:h})]),y.XcmV5Instruction.ExchangeAsset({give:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.AllOf({id:c,fun:{type:"Fungible",value:void 0}})),want:[{id:me,fun:y.XcmV3MultiassetFungibility.Fungible(r)}],maximal:!1}),y.XcmV5Instruction.InitiateTransfer({destination:{parents:1,interior:y.XcmV5Junctions.X1(y.XcmV5Junction.Parachain(t))},remote_fees:{type:"ReserveDeposit",value:y.XcmV5AssetFilter.Definite([{id:me,fun:y.XcmV3MultiassetFungibility.Fungible(r)}])},preserve_origin:!1,assets:[{type:"ReserveDeposit",value:y.XcmV5AssetFilter.Definite([{id:u,fun:y.XcmV3MultiassetFungibility.Fungible(i)}])}],remote_xcm:[y.XcmV5Instruction.DepositAsset({assets:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.AllCounted(3)),beneficiary:h}),y.XcmV5Instruction.SetTopic(o)]}),y.XcmV5Instruction.RefundSurplus(),y.XcmV5Instruction.DepositAsset({assets:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.All()),beneficiary:h}),y.XcmV5Instruction.SetTopic(o)]}function Va(n){let{tokenAddress:e,senderPubKey:t,beneficiaryHex:s,tokenAmount:a,sourceExecutionFee:i,dotRemoteFee:r,dotToEtherSwapAmount:o,etherFeeAmount:c,topic:u}=n,g=es(yt),f=e===Da?g:Fa(yt,e),h={parents:0,interior:y.XcmV5Junctions.X1(y.XcmV5Junction.AccountId32({id:t,network:void 0}))},b={parents:0,interior:y.XcmV5Junctions.X1(y.XcmV5Junction.AccountKey20({key:s,network:void 0}))},x={parents:2,interior:y.XcmV5Junctions.X1(y.XcmV5Junction.GlobalConsensus(y.XcmV5NetworkId.Ethereum({chain_id:BigInt(yt)})))},S=[y.XcmV5Instruction.DepositAsset({assets:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.AllCounted(3)),beneficiary:b}),y.XcmV5Instruction.SetTopic(u)],R=[y.XcmV5Instruction.SetAppendix([y.XcmV5Instruction.SetHints({hints:[{type:"AssetClaimer",value:{location:h}}]}),y.XcmV5Instruction.RefundSurplus(),y.XcmV5Instruction.DepositAsset({assets:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.All()),beneficiary:h})])];R.push(y.XcmV5Instruction.ExchangeAsset({give:y.XcmV5AssetFilter.Definite([{id:me,fun:y.XcmV3MultiassetFungibility.Fungible(o)}]),want:[{id:g,fun:y.XcmV3MultiassetFungibility.Fungible(c)}],maximal:!1}));let k=[{type:"ReserveWithdraw",value:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.AllOf({id:f,fun:{type:"Fungible",value:void 0}}))}],X=y.XcmV5AssetFilter.Definite([{id:g,fun:y.XcmV3MultiassetFungibility.Fungible(c)}]);R.push(y.XcmV5Instruction.InitiateTransfer({destination:x,remote_fees:{type:"ReserveWithdraw",value:X},preserve_origin:!0,assets:k,remote_xcm:S}),y.XcmV5Instruction.SetTopic(u));let M=i+r+o,W=[{id:me,fun:y.XcmV3MultiassetFungibility.Fungible(M)},{id:f,fun:y.XcmV3MultiassetFungibility.Fungible(a)}],U=[{id:me,fun:y.XcmV3MultiassetFungibility.Fungible(i)}],T={type:"ReserveWithdraw",value:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.AllOf({id:f,fun:{type:"Fungible",value:void 0}}))},$=[{type:"ReserveWithdraw",value:y.XcmV5AssetFilter.Definite([{id:me,fun:y.XcmV3MultiassetFungibility.Fungible(o)}])},T];return[y.XcmV5Instruction.WithdrawAsset(W),y.XcmV5Instruction.PayFees({asset:U[0]}),y.XcmV5Instruction.SetAppendix([y.XcmV5Instruction.SetHints({hints:[{type:"AssetClaimer",value:{location:h}}]}),y.XcmV5Instruction.RefundSurplus(),y.XcmV5Instruction.DepositAsset({assets:y.XcmV5AssetFilter.Wild(y.XcmV5WildAsset.All()),beneficiary:h})]),y.XcmV5Instruction.InitiateTransfer({destination:{parents:1,interior:y.XcmV5Junctions.X1(y.XcmV5Junction.Parachain(sn))},remote_fees:{type:"ReserveWithdraw",value:y.XcmV5AssetFilter.Definite([{id:me,fun:y.XcmV3MultiassetFungibility.Fungible(r)}])},preserve_origin:!0,assets:$,remote_xcm:R}),y.XcmV5Instruction.SetTopic(u)]}function fr(n){let{address:e,amount:t,asset:s,sender:a,source:i,destination:r,messageId:o}=n,c=i.chain,u=(0,mr.getSs58AddressInfo)(a);if(!u.isValid)throw new Error(`Invalid SS58 address: ${a}`);let g=(0,dr.toHex)(u.publicKey),f=c.getAssetXcmLocation(s),h=f?ur.multiloc.findNestedKey(f,"key"):void 0,b=h?h.key:Da,x=r.feeBreakdown,S=x.sourceExecutionFee??0n,R=x.dotRemoteFee??0n,k=x.dotToEtherSwapAmount??0n,X=x.etherFeeAmount??0n,W=Va({tokenAddress:b,senderPubKey:g,beneficiaryHex:e,tokenAmount:t,sourceExecutionFee:S,dotRemoteFee:R,dotToEtherSwapAmount:k,etherFeeAmount:X,topic:o??"0x0000000000000000000000000000000000000000000000000000000000000000"});return y.XcmVersionedXcm.V5(W)}var{Ss58Addr:hr}=Et.addr,Au="0x0000000000000000000000000000000000000000",bu=()=>({build:async n=>{let{address:e,amount:t,asset:s,sender:a,source:i,destination:r}=n,o=i.chain,c=r.chain,u=Et.Snowbridge.fromChain(o),g=o.getAssetId(s),f=Tn(g),h=s.originSymbol==="ETH",b=r.feeBreakdown.executionFee,x=r.feeBreakdown.relayerFee,S=r.feeBreakdown.hydrationDotFee,R=r.fee.amount,k=hr.getPubKey(e),X=new TextEncoder().encode(`${c.parachainId}${a}${f}${k}${t}${Date.now()}`),M=(0,Os.toHex)((0,gr.Blake2256)(X)),W=Xa({ethChainId:yt,destinationParaId:c.parachainId,tokenAddress:h?Au:f,beneficiaryHex:k,tokenAmount:t,hydrationDotFee:S,topic:M}),U=await ar(),T=(0,Os.toHex)(U.message.enc(an.XcmVersionedXcm.V5(W))),$=[];h||$.push((0,pr.encodeAbiParameters)([{type:"uint8"},{type:"address"},{type:"uint128"}],[0,f,t]));let je=U.location.enc(an.XcmVersionedLocation.V5({parents:0,interior:an.XcmV5Junctions.X1(an.XcmV5Junction.AccountId32({id:k,network:void 0}))})),st=(0,Os.toHex)(je.slice(1));return new Et.ContractConfig({abi:Et.Abi.Snowbridge,address:u.getGateway(),args:[T,$,st,b,x],value:h?R+t:R,func:"v2_sendMessage",module:"Snowbridge"})}}),wu=()=>({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),u=r.getAssetId(s),g=Tn(u),f=s.originSymbol==="ETH",h=i.feeBreakdown.bridgeFeeInDot,b=i.fee.amount;return new Et.ContractConfig({abi:Et.Abi.Snowbridge,address:c.getGateway(),args:[g,o.parachainId,[1,hr.getPubKey(e)],h,t],value:f?b+t:b,func:"sendToken",module:"Snowbridge"})}}),yr=()=>({v2SendMessage:bu,sendToken:wu});var Y=require("@galacticcouncil/xc-core");var us=require("@wormhole-foundation/sdk-base"),Ns=require("@wormhole-foundation/sdk-definitions"),ms="0x00",Oa=8,Ar="https://executor.labsapis.com",xu=[{name:"prefix",binary:"bytes",size:4},{name:"srcChain",binary:"uint",size:2},{name:"srcManager",binary:"bytes",size:32},{name:"messageId",binary:"uint",size:32}],br=(n,e,t)=>{let s=(0,us.serializeLayout)(xu,{prefix:us.encoding.bytes.encode(Ns.RequestPrefix.ERN1),srcChain:n,srcManager:new Ns.UniversalAddress(e,"hex").toUint8Array(),messageId:t});return us.encoding.hex.encode(s,!0)};var Su=500000n,wr=()=>({build:async()=>({gasLimit:Su,msgValue:0n})});var xr=require("@galacticcouncil/xc-core"),ts=require("@solana/spl-token"),Na=require("@solana/web3.js"),ku=250000n,vu=10000000n,Mu=2039280n,Sr=()=>({build:async({destination:n,asset:e,recipient:t})=>{let s={gasLimit:ku,msgValue:vu};if(!e||!t)return{...s,msgValue:s.msgValue+Mu};let a=n,i=xr.Ntt.fromChain(a,e),r=new Na.PublicKey(i.token),o=await a.connection.getAccountInfo(r),c=(0,ts.getAssociatedTokenAddressSync)(r,new Na.PublicKey(t),!0,o?.owner??ts.TOKEN_PROGRAM_ID);if(await a.connection.getAccountInfo(c))return s;let g=await(0,ts.getMinimumBalanceForRentExemptAccount)(a.connection);return{...s,msgValue:s.msgValue+BigInt(g)}}});var Iu=10000000n,kr=()=>({build:async()=>({gasLimit:Iu,msgValue:0n})});var ds=n=>{let{destination:e}=n;return e.isSolana()?Sr().build(n):e.isSui()?kr().build(n):wr().build(n)};var Ga={};An(Ga,{ASSET_LOCKDOWN_PERIOD_BLOCKS:()=>Ir,AssethubClient:()=>tt,BaseClient:()=>At,ExecutorClient:()=>rn,HydrationClient:()=>Ie,getAllAssetDepositLimits:()=>Ua,getAssetDepositLimit:()=>Ha,getGlobalWithdrawLimit:()=>Ka});var Wa=require("@galacticcouncil/common"),ls=require("@galacticcouncil/descriptors"),At=class{chain;descriptor;constructor(e,t){this.chain=e,this.descriptor=t??ls.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,Wa.encodeLocation)(a),r=await this.refApi.apis.XcmPaymentApi.query_weight_to_asset_fee(s.value,ls.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,Wa.encodeLocation)(a),r=await this.refApi.apis.XcmPaymentApi.query_weight_to_asset_fee(s.value,ls.XcmVersionedAssetId.V4(i));if(!r.success)throw Error(`Can't convert weight to fee in ${t.originSymbol}`);return BigInt(r.value)}};var mt=require("@galacticcouncil/descriptors"),vr=require("@galacticcouncil/common"),Ws=require("@polkadot-api/substrate-bindings"),Mr=require("@polkadot-api/utils");var tt=class extends At{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,Mr.toHex)((0,Ws.Twox128)(s)),i=await this.client._request("state_getStorage",[a]);if(!i)return t;let r=Ws.u128.dec(i);return r===0n?t:r}async calculateDeliveryFee(e,t){let s=mt.XcmVersionedLocation.V5({parents:1,interior:mt.XcmV5Junctions.X1(mt.XcmV5Junction.Parachain(t))}),a=mt.XcmVersionedAssetId.V5({parents:1,interior:{type:"Here",value:void 0}}),i=await this.api().apis.XcmPaymentApi.query_delivery_fees(s,mt.XcmVersionedXcm.V4(e),a);if(!i.success)throw Error("Can't query XCM delivery fee.");let r=i.value.value.find(c=>{let u=c.id;return u&&u.parents&&u.parents===1&&u.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:mt.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:mt.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:mt.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 Cr=require("@galacticcouncil/descriptors");var Ir=14400;function Tr(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,u=!1,g,f,h;t&&(t.type==="Locked"?(g=t.value,u=a<t.value):(f=t.value[0],h=t.value[1]));let b=s?.type==="Local"?"Local":"External",x=!u&&f!==void 0&&f+Ir<=a,S=null;if(r!==null)if(u)S=0n;else if(x)S=r;else{let R=h??i,k=i>R?i-R:0n;S=r>k?r-k:0n}return{assetId:n,symbol:o,decimals:c,limit:r,locked:u,lockedUntilBlock:g,lastResetBlock:f,baselineIssuance:h,currentIssuance:i,headroom:S,category:b,periodExpired:x}}async function Ha(n,e){let t=e===0?n.query.Balances.TotalIssuance.getValue({at:"best"}):n.query.Tokens.TotalIssuance.getValue(e,{at:"best"}),[s,a,i,r,o]=await Promise.all([n.query.AssetRegistry.Assets.getValue(e,{at:"best"}),n.query.CircuitBreaker.AssetLockdownState.getValue(e,{at:"best"}),n.query.CircuitBreaker.GlobalAssetOverrides.getValue(e,{at:"best"}),n.query.System.Number.getValue({at:"best"}),t]);return Tr(e,s,a,i,r,o)}async function Ua(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])),u=new Map(r.map(f=>[f.keyArgs[0],f.value])),g=new Map;for(let f of e){let h=f.keyArgs[0],b=f.value;if(b?.xcm_rate_limit==null)continue;let x=h===0?i:u.get(h)??0n,S=Tr(h,b,o.get(h),c.get(h),a,x);g.set(h.toString(),S)}return g}async function Ka(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:u,window:g}=e,f=o;if(!r&&g>0n){let b=a>c?a-c:0n;if(b>0n){let x=b>g?g:b,S=o*x/g;f=o>S?o-S:0n}}let h=r||f>=u?0n:u-f;return{configured:!0,limit:u,windowMs:g,used:f,lastUpdateMs:c,headroom:h,lockdown:r,lockdownUntilMs:i}}var Ie=class extends At{constructor(e){super(e,Cr.hydration)}async checkIfSufficient(e){let t=this.chain.getAssetId(e),s=Number(t),a=await this.api().query.AssetRegistry.Assets.getValue(s);return a?a.is_sufficient||!1:!0}async getFeeAsset(e){let t=await this.api().query.MultiTransactionPayment.AccountCurrencyMap.getValue(e);return t?t.toString():"0"}async getAssetBalance(e,t){return t==="0"?this.getSystemAccountBalance(e):this.getTokensAccountsBalance(e,t)}async getSystemAccountBalance(e){let s=(await this.api().query.System.Account.getValue(e)).data,{free:a,frozen:i}=s;return BigInt(a)-BigInt(i)}async getTokensAccountsBalance(e,t){let s=Number(t),a=await this.api().query.Tokens.Accounts.getValue(e,s),{free:i,frozen:r}=a;return BigInt(i)-BigInt(r)}getAssetDepositLimit(e){let t=typeof e=="number"?e:Number(this.chain.getAssetId(e));return Ha(this.api(),t)}getAllAssetDepositLimits(){return Ua(this.api())}getGlobalWithdrawLimit(){return Ka(this.api())}};var Pn=require("@wormhole-foundation/sdk-base"),Hs=require("@wormhole-foundation/sdk-definitions");var Tu=300*1e3,Cu=n=>{try{let{quote:e}=(0,Pn.deserializeLayout)(Hs.signedQuoteLayout,Pn.encoding.hex.decode(n));return e.expiryTime.getTime()}catch{return 0}},Pr=new Map,rn=class{async quote(e,t,s){let{gasLimit:a,msgValue:i}=s,r=[e,t,a,i].join(":"),o=Pr.get(r);if(o&&Cu(o.signedQuote)-Date.now()>Tu)return o;let c=Pn.encoding.hex.encode((0,Pn.serializeLayout)(Hs.relayInstructionsLayout,{requests:[{request:{type:"GasInstruction",gasLimit:a,msgValue:i}}]}),!0),u=await fetch(Ar+"/v0/quote",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({srcChain:e,dstChain:t,relayInstructions:c})});if(!u.ok)throw new Error("Executor quote failed ["+e+"->"+t+"]");let{signedQuote:g,estimatedCost:f}=await u.json();if(!g||!f)throw new Error("Executor quote incomplete");let h={signedQuote:g,estimatedCost:BigInt(f),relayInstructions:c};return Pr.set(r,h),h}};var qa=async n=>{let{address:e,amount:t,asset:s,source:a,destination:i}=n,r=a.chain,o=i.chain,c=Y.Ntt.fromChain(r,s),u=Y.Wormhole.fromChain(o),g=e;o instanceof Y.EvmParachain&&(g=await o.getDerivatedAddress(e));let f=await r.evmClient.getProvider().readContract({abi:Y.Abi.NttManager,address:c.manager,args:[u.getWormholeId(),ms],functionName:"quoteDeliveryPrice"}),h=r.getAssetDecimals(s)??0,b=t;if(h>Oa){let x=10n**BigInt(h-Oa);b=t-t%x}return{ctx:r,ntt:c,rcvWh:u,rcvAddress:g,transferAmount:b,deliveryPrice:f[1],wrapNative:r.getBalanceType(s)===Y.EvmBalanceType.Native}},Pu=()=>({build:async n=>{let{ntt:e,rcvWh:t,rcvAddress:s,transferAmount:a,deliveryPrice:i,wrapNative:r}=await qa(n);return new Y.ContractConfig({abi:Y.Abi.NttManager,address:e.manager,args:[a,t.getWormholeId(),t.normalizeAddress(s)],token:e.token,wrapNative:r,value:i,func:"transfer",module:"NttManager"})}}),Eu=()=>({build:async n=>{let{ctx:e,ntt:t,rcvWh:s,rcvAddress:a,transferAmount:i,deliveryPrice:r,wrapNative:o}=await qa(n),c=Y.Wormhole.fromChain(e),u=c.getNttExecutor(),g=e instanceof Y.EvmParachain?await e.getDerivatedAddress(n.sender):n.sender,f=await ds({destination:n.destination.chain,asset:n.destination.balance,recipient:n.address}),{signedQuote:h,estimatedCost:b,relayInstructions:x}=await new rn().quote(c.getWormholeId(),s.getWormholeId(),f),S=s.normalizeAddress(a),R={value:b,refundAddress:g,signedQuote:h,instructions:x},k={transferTokenFee:0n,nativeTokenFee:0n,payee:g};return new Y.ContractConfig({abi:Y.Abi.NttManagerWithExecutor,address:u,args:[t.manager,i,s.getWormholeId(),S,S,ms,R,k],token:t.token,wrapNative:o,value:r+b,func:"transfer",module:"NttManagerWithExecutor"})}}),Bu=()=>({build:async n=>{let{ctx:e,ntt:t,rcvWh:s,rcvAddress:a,transferAmount:i,deliveryPrice:r,wrapNative:o}=await qa(n),c=Y.Wormhole.fromChain(e),u=n.destination.chain,g=Y.Ntt.find(u,n.destination.balance.key);if(!g)throw new Error("Ntt deployment missing on "+u.key);let f=e instanceof Y.EvmParachain?await e.getDerivatedAddress(n.sender):n.sender,h=await ds({destination:u,asset:n.destination.balance,recipient:n.address}),[b,x]=await Promise.all([new rn().quote(c.getWormholeId(),s.getWormholeId(),h),e.evmClient.getProvider().readContract({abi:Y.Abi.NttManager,address:t.manager,functionName:"nextMessageSequence"})]);return new Y.ContractConfig({abi:Y.Abi.NttManager,address:t.manager,args:[i,s.getWormholeId(),s.normalizeAddress(a)],token:t.token,wrapNative:o,value:r,func:"transfer",module:"NttManager",follow:new Y.ContractConfig({abi:Y.Abi.Executor,address:c.getExecutor(),args:[s.getWormholeId(),s.normalizeAddress(g.manager),f,b.signedQuote,br(c.getWormholeId(),t.manager,BigInt(x)),b.relayInstructions],value:b.estimatedCost,func:"requestExecution",module:"Executor"})})}}),Er=()=>({transfer:Pu,transferWithExecutor:Eu,transferViaExecutor:Bu});function Br(){return{Ntt:Er}}function ye(){return{Batch:ji,Erc20:$i,Basejump:Zi,PolkadotXcm:nr,Snowbridge:yr,Wormhole:Br}}function za(n,e){return{prior:function(t){return{build:async s=>{let a=await t.build(s);return n(s)?new Rr.ContractConfig({...a,prior:await e.build(s)}):a}}}}}var ja=require("@galacticcouncil/common"),_r=require("@galacticcouncil/xc-core"),Lr="AssetConversion",Ru=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,u=(0,ja.encodeLocation)(c.getAssetXcmLocation(r)),g=(0,ja.encodeLocation)(c.getAssetXcmLocation(o)),f=r.amount+r.amount*BigInt(n.slippage)/100n,h=o.amount;return new _r.ExtrinsicConfig({module:Lr,func:e,getTx:b=>b.getUnsafeApi().tx[Lr][e]({path:[u,g],amount_out:h,amount_in_max:f,send_to:t,keep_alive:!0})})}}},Dr=()=>({swapTokensForExactTokens:Ru});var Us=require("@galacticcouncil/descriptors"),Fr=require("@galacticcouncil/xc-core"),Lu="Assets",_u=()=>{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 Fr.ExtrinsicConfig({module:Lu,func:n,getTx:u=>u.getTypedApi(Us.hub).tx.Assets.transfer({id:Number(c),target:Us.MultiAddress.Id(s),amount:o})})}}},Xr=()=>({transfer:_u});var Or=require("@galacticcouncil/xc-core"),Vr="Balances",Du=(n=!1)=>{let e="transfer_all";return{build:async({address:t})=>new Or.ExtrinsicConfig({module:Vr,func:e,getTx:s=>s.getUnsafeApi().tx[Vr][e]({dest:t,keep_alive:n})})}},Nr=()=>({transferAll:Du});var Wr=require("@galacticcouncil/descriptors"),Hr=require("@galacticcouncil/xc-core"),Fu="Router",Xu=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,u=c.getMetadataAssetId(i),g=c.getMetadataAssetId(r),f=r.amount,h=i.amount+i.amount*BigInt(n.slippage)/100n;return new Hr.ExtrinsicConfig({module:Fu,func:"buy",getTx:b=>b.getTypedApi(Wr.hydration).tx.Router.buy({asset_in:Number(u),asset_out:Number(g),amount_out:f,max_amount_in:h,route:o})})}}),Ur=()=>({buy:Xu});var Gr=require("@galacticcouncil/xc-core"),Kr="Utility",Vu=n=>{let e="batch_all";return{build:async t=>{let s=await Promise.all(n.map(a=>a.build(t)));return new Gr.ExtrinsicConfig({module:Kr,func:e,getTx:a=>{let i=s.map(r=>r.getTx(a).decodedCall);return a.getUnsafeApi().tx[Kr][e]({calls:i})}})}}},qr=()=>({batchAll:Vu});var Ks=require("@galacticcouncil/xc-core"),jr=require("polkadot-api"),$r=require("viem");var Wt=(i=>(i.v1="V1",i.v2="V2",i.v3="V3",i.v4="V4",i.v5="V5",i))(Wt||{}),dt=(a=>(a.Teleport="Teleport",a.LocalReserve="LocalReserve",a.DestinationReserve="DestinationReserve",a.RemoteReserve="RemoteReserve",a))(dt||{});var zr="EthereumXcm",Ou=n=>{let e="transact";return{build:async t=>{let s=await n.build(t),a="V1",i=(0,$r.encodeFunctionData)({abi:Ks.Abi[s.module],functionName:s.func,args:s.args});return new Ks.ExtrinsicConfig({module:zr,func:e,getTx:r=>r.getUnsafeApi().tx[zr][e]({xcm_transaction:{type:a,value:{gas_limit:[5000000n,0n,0n,0n],fee_payment:{type:"Auto",value:void 0},action:{type:"Call",value:s.address},value:[0n,0n,0n,0n],input:jr.Binary.fromHex(i),access_list:void 0}}})})}}},$a=()=>({transact:Ou});var Qt=require("@galacticcouncil/xc-core"),fs=require("@galacticcouncil/common");var En=require("@galacticcouncil/xc-core"),A=require("@galacticcouncil/descriptors");var he=require("@galacticcouncil/descriptors");var Qr=require("@galacticcouncil/common"),Qa=require("@galacticcouncil/descriptors"),Yr=require("@polkadot-api/substrate-bindings"),Jr=require("@polkadot-api/utils");function oe(n){if(n.length===42&&n.startsWith("0x"))return Qa.XcmV3Junction.AccountKey20({key:n,network:void 0});let t=(0,Yr.getSs58AddressInfo)(n);if(!t.isValid)throw new Error(`Invalid SS58 address: ${n}`);return Qa.XcmV3Junction.AccountId32({id:(0,Jr.toHex)(t.publicKey),network:void 0})}function ns(n,e,t){return Qr.acc.getMultilocationDerivatedAccount(n.parachainId,e,t.parachainId===0?0:1,t.usesH160Acc)}var Ya=require("@galacticcouncil/xc-core");function Zr(n,e){let t=Ya.multiloc.findNestedKey(n,"GeneralIndex"),s=Ya.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 ae(n,e){let t=n.getAssetXcmLocation(e);if(!t)throw new Error(e.originSymbol+" location config is missing.");return t}var Gs={};An(Gs,{ETHER_TOKEN_ADDRESS:()=>Ja,erc20Location:()=>Wu,erc20LocationReanchored:()=>Hu,ethereumLocation:()=>to,parachainLocation:()=>Nu});var bt=require("@galacticcouncil/descriptors"),Ja="0x0000000000000000000000000000000000000000",eo=n=>bt.XcmV3Junction.GlobalConsensus(bt.XcmV3JunctionNetworkId.Ethereum({chain_id:BigInt(n)}));function to(n){return{parents:2,interior:bt.XcmV3Junctions.X1(eo(n))}}function Nu(n){return{parents:1,interior:bt.XcmV3Junctions.X1(bt.XcmV3Junction.Parachain(n))}}function Wu(n,e){return e===Ja?to(n):{parents:2,interior:bt.XcmV3Junctions.X2([eo(n),bt.XcmV3Junction.AccountKey20({key:e})])}}function Hu(n){return n===Ja?{parents:0,interior:{type:"Here"}}:{parents:0,interior:bt.XcmV3Junctions.X1(bt.XcmV3Junction.AccountKey20({key:n}))}}var Za=require("@galacticcouncil/common"),no=require("@galacticcouncil/xc-core");function re(n,e){return Uu(e)>=4?(0,Za.encodeLocation)(n):Ku(n)}function Uu(n){let e=n.toString().replace("V","").replace("v","");return Number(e)}function Ku(n){return{type:"Concrete",value:(0,Za.encodeLocation)(n)}}var Gu=1e3;function qu(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 zu(n){if(n)return qu(n)?Gu:no.multiloc.findParachain(n)}function so(n,e,t,s){let a=e.getAssetXcmLocation(n),i=zu(a),r=s?.parachainId??t.parachainId;if(i&&r!==i)throw new Error(s?`Wrong reserve for "${n.originSymbol}": expected chain ${i}, got ${s.name} (${s.parachainId})`:`Reserve chain ${i} required for "${n.originSymbol}"`)}function qs(n,e){let t="V4",s=re(ae(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(oe(Cn))}}),he.XcmV4Instruction.SetTopic(a)]}var Ht=require("@galacticcouncil/descriptors");function ei(n,e){let t="V4",s=re(ae(e,n),t),a=zs("V4",oe(cr),oe(Cn),s,Pt);return[Ht.XcmV4Instruction.WithdrawAsset([{id:me,fun:Ht.XcmV3MultiassetFungibility.Fungible(pe)},{id:s,fun:Ht.XcmV3MultiassetFungibility.Fungible(pe)}]),Ht.XcmV4Instruction.ClearOrigin(),Ht.XcmV4Instruction.BuyExecution({fees:{id:me,fun:Ht.XcmV3MultiassetFungibility.Fungible(pe)},weight_limit:Ht.XcmV3WeightLimit.Unlimited()}),...a.value]}var N=require("@galacticcouncil/descriptors");function ao(n,e){let t="V4",s=re(ae(e,n),t),a=Pt;return[N.XcmV4Instruction.WithdrawAsset([{id:s,fun:N.XcmV3MultiassetFungibility.Fungible(pe)}]),N.XcmV4Instruction.ClearOrigin(),N.XcmV4Instruction.BuyExecution({fees:{id:s,fun:N.XcmV3MultiassetFungibility.Fungible(pe)},weight_limit:N.XcmV3WeightLimit.Unlimited()}),N.XcmV4Instruction.DepositAsset({assets:N.XcmV4AssetAssetFilter.Wild(N.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:N.XcmV3Junctions.X1(oe(Cn))}}),N.XcmV4Instruction.SetTopic(a)]}function ti(n,e){let t="V4",s=re(ae(e,n),t);return[N.XcmV4Instruction.BuyExecution({fees:{id:s,fun:N.XcmV3MultiassetFungibility.Fungible(pe)},weight_limit:N.XcmV3WeightLimit.Unlimited()}),N.XcmV4Instruction.DepositAsset({assets:N.XcmV4AssetAssetFilter.Wild(N.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:N.XcmV3Junctions.X1(oe(Cn))}})]}function io(n,e,t){let s="V4",a=re(ae(e,n),s),i=Pt,r=ti(n,t);return[N.XcmV4Instruction.WithdrawAsset([{id:a,fun:N.XcmV3MultiassetFungibility.Fungible(pe)}]),N.XcmV4Instruction.ClearOrigin(),N.XcmV4Instruction.BuyExecution({fees:{id:a,fun:N.XcmV3MultiassetFungibility.Fungible(pe)},weight_limit:N.XcmV3WeightLimit.Unlimited()}),N.XcmV4Instruction.DepositReserveAsset({assets:N.XcmV4AssetAssetFilter.Wild(N.XcmV4AssetWildAsset.AllCounted(1)),dest:{parents:1,interior:N.XcmV3Junctions.X1(N.XcmV3Junction.Parachain(t.parachainId))},xcm:r}),N.XcmV4Instruction.SetTopic(i)]}var de=require("@galacticcouncil/descriptors");function ro(n,e){let t="V5",s=re(ae(e,n),t),a={parents:0,interior:de.XcmV5Junctions.X1(de.XcmV5Junction.AccountId32({id:or,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 oo=[En.ChainEcosystem.Polkadot,En.ChainEcosystem.Kusama],ju={parents:1,interior:A.XcmV3Junctions.X1(A.XcmV3Junction.Parachain(1e3))},$u=n=>{let{parents:e,interior:t}=n;return e!==1?!1:t==="Here"||t?.type==="Here"},co=(n,e)=>!n.ecosystem||!e.ecosystem?!1:oo.includes(n.ecosystem)&&oo.includes(e.ecosystem)&&n.ecosystem!==e.ecosystem,uo=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},Ut=(n,e,t)=>{if(co(e,t))return{type:n,value:ni(t.ecosystem,t.parachainId)};if(t.parachainId===rr)return{type:n,value:{parents:1,interior:A.XcmV3Junctions.Here()}};let s=t.key==="ethereum"?sn:t.parachainId;return{type:n,value:{parents:1,interior:A.XcmV3Junctions.X1(A.XcmV3Junction.Parachain(s))}}},Qu=n=>n===En.ChainEcosystem.Kusama?A.XcmV3JunctionNetworkId.Kusama():A.XcmV3JunctionNetworkId.Polkadot(),ni=(n,e)=>({parents:2,interior:A.XcmV3Junctions.X2([A.XcmV3Junction.GlobalConsensus(Qu(n)),A.XcmV3Junction.Parachain(e)])}),mo=(n,e,t,s)=>{if(co(e,t)){if(e.parachainId!==sn){let a=En.multiloc.findGlobalConsensus(ae(e,s)),i=typeof a=="string"&&a===t.ecosystem;return{dest:{type:n,value:{parents:1,interior:A.XcmV3Junctions.X1(A.XcmV3Junction.Parachain(sn))}},mode:i?"bridge-withdraw":"bridge-deposit"}}if(t.parachainId!==sn)return{dest:{type:n,value:ni(t.ecosystem,sn)},mode:"onward"}}},Bn=(n,e)=>({type:n,value:{parents:0,interior:A.XcmV3Junctions.X1(e)}}),si=(n,e,t)=>e==="RemoteReserve"?{type:"RemoteReserve",value:{type:n,value:$u(t)?ju:t}}:{type:e},on=(n,e)=>({id:n,fun:A.XcmV3MultiassetFungibility.Fungible(e)}),lo=(n,e,t)=>({type:n,value:[A.XcmV4Instruction.DepositAsset({assets:A.XcmV4AssetAssetFilter.Wild(A.XcmV4AssetWildAsset.AllCounted(t)),beneficiary:{parents:0,interior:A.XcmV3Junctions.X1(e)}})]}),zs=(n,e,t,s,a)=>{let i=a;return{type:n,value:[A.XcmV4Instruction.SetAppendix([A.XcmV4Instruction.DepositAsset({assets:A.XcmV4AssetAssetFilter.Wild(A.XcmV4AssetWildAsset.All()),beneficiary:{parents:0,interior:A.XcmV3Junctions.X1(t)}})]),A.XcmV4Instruction.InitiateReserveWithdraw({assets:A.XcmV4AssetAssetFilter.Wild(A.XcmV4AssetWildAsset.AllOf({id:s,fun:A.XcmV2MultiassetWildFungibility.Fungible()})),reserve:Gs.ethereumLocation(yt),xcm:[A.XcmV4Instruction.BuyExecution({fees:{id:Yu(s),fun:A.XcmV3MultiassetFungibility.Fungible(1n)},weight_limit:A.XcmV3WeightLimit.Unlimited()}),A.XcmV4Instruction.DepositAsset({assets:A.XcmV4AssetAssetFilter.Wild(A.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:A.XcmV3Junctions.X1(e)}}),A.XcmV4Instruction.SetTopic(i)]}),A.XcmV4Instruction.SetTopic(i)]}},fo=(n,e,t,s,a,i)=>{let r=s==="onward"?{parents:1,interior:A.XcmV3Junctions.X1(A.XcmV3Junction.Parachain(t.parachainId))}:ni(t.ecosystem,t.parachainId),o={parents:0,interior:A.XcmV3Junctions.X1(e)},c=A.XcmV4AssetAssetFilter.Wild(A.XcmV4AssetWildAsset.AllCounted(1)),u=[A.XcmV4Instruction.BuyExecution({fees:{id:a,fun:A.XcmV3MultiassetFungibility.Fungible(i)},weight_limit:A.XcmV3WeightLimit.Unlimited()}),A.XcmV4Instruction.DepositAsset({assets:c,beneficiary:o})],g=s==="bridge-withdraw"?A.XcmV4Instruction.InitiateReserveWithdraw({assets:c,reserve:r,xcm:u}):A.XcmV4Instruction.DepositReserveAsset({assets:c,dest:r,xcm:u});return{type:n,value:[A.XcmV4Instruction.SetAppendix([A.XcmV4Instruction.DepositAsset({assets:A.XcmV4AssetAssetFilter.Wild(A.XcmV4AssetWildAsset.All()),beneficiary:o})]),g]}},Yu=n=>{let e=En.multiloc.findNestedKey(n,"key");return e?{parents:0,interior:A.XcmV3Junctions.X1(A.XcmV3Junction.AccountKey20({key:e.key}))}:{parents:0,interior:A.XcmV3Junctions.Here()}},go=(n,e,t,s,a,i)=>({type:n,value:[A.XcmV4Instruction.WithdrawAsset([{id:t,fun:A.XcmV3MultiassetFungibility.Fungible(s)}]),A.XcmV4Instruction.BuyExecution({fees:{id:t,fun:A.XcmV3MultiassetFungibility.Fungible(s)},weight_limit:A.XcmV3WeightLimit.Unlimited()}),A.XcmV4Instruction.Transact({origin_kind:A.XcmV2OriginKind.SovereignAccount(),require_weight_at_most:{ref_time:i.refTime,proof_size:i.proofSize},call:a}),A.XcmV4Instruction.RefundSurplus(),A.XcmV4Instruction.DepositAsset({assets:A.XcmV4AssetAssetFilter.Wild(A.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:A.XcmV3Junctions.X1(e)}})]}),po=(n,e,t,s,a,i)=>({type:n,value:[A.XcmV4Instruction.WithdrawAsset([{id:t,fun:A.XcmV3MultiassetFungibility.Fungible(a)}]),A.XcmV4Instruction.BuyExecution({fees:{id:t,fun:A.XcmV3MultiassetFungibility.Fungible(a)},weight_limit:A.XcmV3WeightLimit.Unlimited()}),A.XcmV4Instruction.TransferAsset({assets:[{id:t,fun:A.XcmV3MultiassetFungibility.Fungible(s)}],beneficiary:{parents:0,interior:A.XcmV3Junctions.X1(i)}}),A.XcmV4Instruction.RefundSurplus(),A.XcmV4Instruction.DepositAsset({assets:A.XcmV4AssetAssetFilter.Wild(A.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:A.XcmV3Junctions.X1(e)}})]});var Te="PolkadotXcm",Ju=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=oe(n),r=a.chain,o=s.chain,c="V4",u=ae(r,t),g=ae(r,s.fee),f=re(u,c),h=re(g,c),b=on(f,e),x=on(h,s.fee.amount),S="limited_reserve_transfer_assets";return new Qt.ExtrinsicConfig({module:Te,func:S,getTx:R=>{let k=R.getUnsafeApi().tx[Te][S];return t.key===s.fee.key?k({dest:Ut(c,r,o),beneficiary:Bn(c,i),assets:{type:c,value:[b]},fee_asset_item:0,weight_limit:{type:"Unlimited"}}):Zr(u,g)?k({dest:Ut(c,r,o),beneficiary:Bn(c,i),assets:{type:c,value:[x,b]},fee_asset_item:0,weight_limit:{type:"Unlimited"}}):k({dest:Ut(c,r,o),beneficiary:Bn(c,i),assets:{type:c,value:[b,x]},fee_asset_item:1,weight_limit:{type:"Unlimited"}})}})}}),Zu=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=oe(n),r=a.chain,o=s.chain,c="V4",u=re(ae(r,t),c),g=on(u,e),f=Ut(c,r,o),h=Bn(c,i),b={type:c,value:[g]},x="limited_teleport_assets";return new Qt.ExtrinsicConfig({module:Te,func:x,getTx:S=>S.getUnsafeApi().tx[Te][x]({dest:f,beneficiary:h,assets:b,fee_asset_item:0,weight_limit:{type:"Unlimited"}})})}}),em=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=oe(n),r=a.chain,o=s.chain,c=r.xcmVersion??"V4",u=re(ae(r,t),c),g=on(u,e),f=Ut(c,r,o),h=Bn(c,i),b={type:c,value:[g]},x="reserve_transfer_assets";return new Qt.ExtrinsicConfig({module:Te,func:x,getTx:S=>S.getUnsafeApi().tx[Te][x]({dest:f,beneficiary:h,assets:b,fee_asset_item:0})})}}),tm=()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=oe(n),r=a.chain,o=s.chain,c="V4",u=re(ae(r,t),c),g=on(u,e),f=Ut(c,r,o),h=Bn(c,i),b={type:c,value:[g]},x="transfer_assets";return new Qt.ExtrinsicConfig({module:Te,func:x,getTx:S=>S.getUnsafeApi().tx[Te][x]({dest:f,beneficiary:h,assets:b,fee_asset_item:0,weight_limit:{type:"Unlimited"}})})}}),nm=n=>({build:async({address:e,asset:t,amount:s,destination:a,messageId:i,sender:r,source:o,transact:c})=>{let u="V4",g=o.chain,f=a.chain,h=a.fee.amount,b=a.fee;c&&(f=c.chain,h=fs.big.toBigInt(c.fee.amount,c.fee.decimals),b=c.fee);let x=oe(r),S=c||f.usesCexForwarding?ns(g,r,f):e,R=oe(S),{transferType:k}=n,X=re(ae(g,t),u),M=re(ae(g,b),u),W=on(X,s),U=on(M,h),T=t.isEqual(b),$=mo(u,g,f,t),je=$?.dest??Ut(u,g,f),st={type:u,value:T?[W]:[U,W]},qt=si(u,k,X),Jt={type:u,value:T?X:M},Se=si(u,k,M),l;if(uo(X)&&a.chain.isEvmChain())l=zs(u,R,x,X,i);else if($){let m=fs.big.toBigInt(n.executionFee??a.fee.amount,a.fee.decimals),p=re(ae(f,t),u);l=fo(u,R,f,$.mode,p,m)}else l=lo(u,R,st.value.length);let d="transfer_assets_using_type_and_then";return new Qt.ExtrinsicConfig({module:Te,func:d,getTx:m=>m.getUnsafeApi().tx[Te][d]({dest:je,assets:st,assets_transfer_type:qt,remote_fees_id:Jt,fees_transfer_type:Se,custom_xcm_on_dest:l,weight_limit:{type:"Unlimited"}})})}}),sm=()=>{let n="send";return{transact:e=>({build:async t=>{let{sender:s,source:a,transact:i}=t,r="V4";if(!i)throw new Error("Transact ctx configuration is missing.");let o=a.chain,c=i.chain,u=ns(o,s,c),g=oe(u),{fee:f}=i,h=re(ae(c,f),r),b=fs.big.toBigInt(e.fee,f.decimals);return new Qt.ExtrinsicConfig({module:Te,func:n,getTx:x=>x.getUnsafeApi().tx[Te][n]({dest:Ut(r,o,c),message:go(r,g,h,b,i.call,i.weight)})})}}),transferAsset:e=>({build:async t=>{let{amount:s,address:a,asset:i,sender:r,source:o,destination:c}=t,u="V4",g=o.chain,f=c.chain,h=ns(g,r,f),b=oe(h),x=oe(a),S=re(ae(f,i),u),{fee:R}=c,k=fs.big.toBigInt(e.fee,R.decimals),X=s>R.amount?s-(R.amount+k):s;return new Qt.ExtrinsicConfig({module:Te,func:n,getTx:M=>M.getUnsafeApi().tx[Te][n]({dest:Ut(u,g,f),message:po(u,b,S,X,k,x)})})}})}};function am(n){let e=t=>({build:async s=>{let a=t(s),i="execute";return new Qt.ExtrinsicConfig({module:Te,func:i,getTx:r=>r.getUnsafeApi().tx[Te][i]({message:a,max_weight:{ref_time:20000000000n,proof_size:500000n}})})}});return n?e(n):{viaSnowbridge:()=>e(fr)}}var ai=()=>({limitedReserveTransferAssets:Ju,limitedTeleportAssets:Zu,reserveTransferAssets:em,transferAssets:tm,transferAssetsUsingTypeAndThen:nm,execute:am,send:sm});var Ao=require("@galacticcouncil/xc-core"),bo=require("@galacticcouncil/common");var gs=require("@galacticcouncil/descriptors"),ho=(n,e,t)=>e.parachainId===0?{type:n,value:{parents:1,interior:gs.XcmV3Junctions.X1(t)}}:{type:n,value:{parents:1,interior:gs.XcmV3Junctions.X2([gs.XcmV3Junction.Parachain(e.parachainId),t])}};var yo="XTokens",im=()=>({build:async({address:n,amount:e,asset:t,destination:s,sender:a,source:i})=>{let r=i.chain,o=s.chain,c="V3",u=o.usesCexForwarding?ns(r,a,o):n,g=oe(u),f=r.getAssetId(t),h=(0,bo.encodeAssetId)(f),b="transfer";return new Ao.ExtrinsicConfig({module:yo,func:b,getTx:x=>x.getUnsafeApi().tx[yo][b]({currency_id:h,amount:e,dest:ho(c,o,g),dest_weight_limit:{type:"Unlimited"}})})}}),ii=()=>({transfer:im});function w(){return{assetConversion:Dr,assets:Xr,balances:Nr,ethereumXcm:$a,polkadotXcm:ai,router:Ur,utility:qr,xTokens:ii}}function cn(n,e){return{prior:function(t){return{build:async s=>n(s)?w().utility().batchAll([e,t]).build(s):t.build(s)}},priorMulti:function(t){return{build:async s=>n(s)?w().utility().batchAll([e,...t]).build(s):w().utility().batchAll([...t]).build(s)}}}}var lt=require("@galacticcouncil/xc-core");var wo=80000n,xo=120000n,So=100000n,ko=2000000n,ri=15000000000000n;function rm(){return{calculateInboundFee:n=>({build:async({feeAsset:e,destination:t})=>{let s=t,a=new Ie(s),i=new tt(n.hub),r=qs(e,s),o=ro(e,s),c=es(yt),u=250000000n,g=lr(yt,s.parachainId),[f,h,b,x]=await Promise.all([a.calculateDestinationFeeV5(o,P),i.calculateDeliveryFee(r,s.parachainId),i.calculateDeliveryFee(r,Vs),i.calculateDestinationFeeV5(g,P)]),S=ge(f,33n),R=ge(h,33n),k=ge(b,33n),M=ge(x,33n)+R,W=S,U=await i.quoteEtherForDot(c,M),T=ge(U,30n),$=T<ri*2n?ri*2n:T,je=ge(await i.quoteEtherForDot(c,W),100n),st=ge(await i.quoteDotToEther(c,u+k),30n);return{amount:$+st+je,breakdown:{executionFee:$,relayerFee:st,remoteEtherFee:je,hydrationDotFee:W}}}}),calculateOutboundFee:n=>({build:async({transferAsset:e,feeAsset:t,source:s,destination:a})=>{let i=s,r=a,o=new tt(n.hub),c=es(yt),u=ei(e,i),[g,f,h]=await Promise.all([o.getBridgeDeliveryFee(),o.calculateDeliveryFee(u,Vs),o.calculateDestinationFee(u,t)]),b=await r.evmClient.getProvider().getGasPrice(),x=ko+xo+wo+So,S=b*x,R=ge(S,10n),k=g+ge(f,33n)+ge(h,33n),X=ge(await o.quoteDotForExactEther(c,R),20n),M=new Ie(i),W=Va({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 M.calculateDestinationFeeV5(W,P),33n);return{amount:k+X+U,breakdown:{dotRemoteFee:k,dotToEtherSwapAmount:X,etherFeeAmount:R,sourceExecutionFee:U}}}}),calculateInboundFeeV1:n=>({build:async({feeAsset:e,destination:t,source:s})=>{let a=s,i=t,r=lt.Snowbridge.fromChain(a),o=new At(i),c=new tt(n.hub),u=qs(e,i),[g,f]=await Promise.all([o.calculateDestinationFee(u,P),c.calculateDeliveryFee(u,i.parachainId)]),h=f+ge(g,25n),b=a.getAssetId(e);return{amount:await a.evmClient.getProvider().readContract({abi:lt.Abi.Snowbridge,address:r.getGateway(),args:[b,i.parachainId,h],functionName:"quoteSendTokenFee"}),breakdown:{bridgeFeeInDot:h}}}}),calculateOutboundFeeV1:n=>({build:async({transferAsset:e,feeAsset:t,source:s})=>{let a=s,i=new tt(n.hub),r=ei(e,a),o=qs(e,a),[c,u,g,f,h]=await Promise.all([i.getBridgeDeliveryFeeV1(),i.calculateDeliveryFee(r,Vs),i.calculateDestinationFee(r,t),i.calculateDeliveryFee(o,a.parachainId),i.calculateDestinationFee(o,t)]);return{amount:c+u+ge(g,25n)+f+ge(h,25n),breakdown:{bridgeDeliveryFee:c,bridgeHubDeliveryFee:u,assetHubDestinationFee:g,returnToSenderDeliveryFee:f,returnToSenderDestinationFee:h}}}})}}function om(){return{calculateDestFee:n=>({build:async({feeAsset:e,source:t,destination:s})=>{let a=t,i=s,r=n?.reserve;if(so(e,a,i,r),r){let h=new At(i),b=new At(r),x=ti(e,i),S=io(e,r,i),[R,k]=await Promise.all([h.calculateDestinationFee(x,e),b.calculateDestinationFee(S,e)]),X=k+R,M=ge(X,20n),W=M-X;return{amount:M,breakdown:{reserveFee:k,destinationFee:R,margin:W}}}let o=new At(i),c=ao(e,i),u=await o.calculateDestinationFee(c,e),g=ge(u,20n),f=g-u;return{amount:g,breakdown:{totalFee:u,margin:f}}}})}}function cm(){return{quoteExecutorCost:()=>({build:async({address:n,destinationAsset:e,transferAsset:t,source:s,destination:a})=>{let i=s,r=lt.Ntt.fromChain(i,t),o=lt.Wormhole.fromChain(i),c=lt.Wormhole.fromChain(a),u=await ds({destination:a,asset:e,recipient:n}),[g,f]=await Promise.all([i.evmClient.getProvider().readContract({abi:lt.Abi.NttManager,address:r.manager,args:[c.getWormholeId(),ms],functionName:"quoteDeliveryPrice"}),new rn().quote(o.getWormholeId(),c.getWormholeId(),u)]);return{amount:g[1]+f.estimatedCost,breakdown:{deliveryPrice:g[1],executorCost:f.estimatedCost}}}})}}function um(){return{quoteFee:()=>({build:async({feeAsset:n,source:e})=>{let t=e,s=lt.Basejump.fromChain(t),a=t.getAssetId(n);return{amount:await t.evmClient.getProvider().readContract({abi:lt.Abi.Basejump,address:s.getAddress(),args:[a],functionName:"quoteFee"})}}})}}function V(){return{Basejump:um,XcmPaymentApi:om,Snowbridge:rm,Wormhole:cm}}var mm="0";function dm(){return{build:async({address:n,chain:e})=>{let s=await new Ie(e).api().query.MultiTransactionPayment.AccountCurrencyMap.getValue(n),a=s?s.toString():mm,i=e.findAssetById(a);return i?i.asset:On}}}var lm=()=>({accountCurrencyMap:dm});function ps(){return{multiTransactionPayment:lm}}var nt=require("@galacticcouncil/xc-core"),vo=require("@mysten/sui/transactions"),js=require("@mysten/sui/utils"),Mo=require("@wormhole-foundation/sdk-base"),fm=()=>({build:async n=>{let{address:e,amount:t,asset:s,source:a,destination:i}=n,r=a.chain,o=i.chain,c=nt.Ntt.fromChain(r,s),u=nt.Wormhole.fromChain(r),g=nt.Wormhole.fromChain(o),f=r.client,h=e;o instanceof nt.EvmParachain&&(h=await o.getDerivatedAddress(e));let b=Mo.encoding.hex.decode(g.normalizeAddress(h)),x=u.getCoreBridge(),S=c.manager,R=c.transceiver.wormhole,k=c.token,[X,M,W,U]=await Promise.all([nt.suiPkg.getWormholePackageId(f,x),nt.suiPkg.getCurrentPackageId(f,S),nt.suiPkg.getCurrentPackageId(f,R),nt.suiPkg.getCoinMetadataId(f,k)]),T=new vo.Transaction,[$]=T.splitCoins(T.gas,[T.pure.u64(t)]),[je]=T.moveCall({target:`${M}::upgrades::new_version_gated`,arguments:[]}),[st,qt]=T.moveCall({target:`${M}::ntt::prepare_transfer`,typeArguments:[k],arguments:[T.object(S),$,T.object(U),T.pure.u16(g.getWormholeId()),T.pure.vector("u8",Array.from(b)),T.pure.option("vector<u8>",null),T.pure.bool(!1)]}),[Jt]=T.moveCall({target:`${M}::state::get_next_sequence`,typeArguments:[k],arguments:[T.object(S)]});T.moveCall({target:`${M}::ntt::transfer_tx_sender`,typeArguments:[k],arguments:[T.object(S),je,T.object(U),st,T.object(js.SUI_CLOCK_OBJECT_ID)]});let[Se]=T.moveCall({target:`${M}::state::create_transceiver_message`,typeArguments:[`${W}::wormhole_transceiver::TransceiverAuth`,k],arguments:[T.object(S),Jt,T.object(js.SUI_CLOCK_OBJECT_ID)]}),[l]=T.moveCall({target:`${W}::wormhole_transceiver::release_outbound`,typeArguments:[`${M}::auth::ManagerAuth`],arguments:[T.object(R),Se]}),[d]=T.splitCoins(T.gas,[T.pure.u64(0n)]);T.moveCall({target:`${X}::publish_message::publish_message`,arguments:[T.object(x),d,l,T.object(js.SUI_CLOCK_OBJECT_ID)]});let[m]=T.moveCall({target:"0x2::coin::from_balance",typeArguments:[k],arguments:[qt]});return T.mergeCoins(T.gas,[m]),new nt.MoveConfig({transaction:T,func:"transfer",module:"NttManager"})}}),Io=()=>({transfer:fm});function To(){return{Ntt:Io}}function oi(){return{Wormhole:To}}var Bt=require("@galacticcouncil/xc-core"),dc=require("@solana/spl-token"),aa=require("@solana/web3.js"),lc=require("@wormhole-foundation/sdk-base"),fc=require("@wormhole-foundation/sdk-definitions"),gc=require("@wormhole-foundation/sdk-solana"),jh=require("@wormhole-foundation/sdk-definitions-ntt");async function hm(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 ym(n,e,t){let s=await hm(n,e);return{instructions:"message"in e?aa.TransactionMessage.decompile(e.message,{addressLookupTableAccounts:s}).instructions:e.instructions,signers:t,lookupTables:s}}var Am=()=>({build:async n=>{let{address:e,amount:t,asset:s,sender:a,source:i,destination:r}=n,o=i.chain,c=r.chain,u=Bt.Ntt.fromChain(o,s),g=Bt.Wormhole.fromChain(o),f=Bt.Wormhole.fromChain(c),h=e;c instanceof Bt.EvmParachain&&(h=await c.getDerivatedAddress(e));let{SolanaNtt:b}=await Promise.resolve().then(()=>(mc(),uc)),x=new b("Mainnet","Solana",o.connection,{coreBridge:g.getCoreBridge(),ntt:{manager:u.manager,token:u.token,transceiver:{wormhole:u.transceiver.wormhole}}}),S=o.getBalanceType(s)===Bt.SolanaBalanceType.Native,R=aa.Keypair.generate(),k=[];for await(let W of x.transfer(new gc.SolanaAddress(a),t,{chain:(0,lc.toChain)(f.getWormholeId()),address:new fc.UniversalAddress(f.normalizeAddress(h))},{queue:!1,automatic:!1,wrapNative:S},R)){let{transaction:U,signers:T}=W.transaction;k.push(await ym(o.connection,U,T??[]))}let X=S?BigInt(await(0,dc.getMinimumBalanceForRentExemptAccount)(o.connection)):0n,M=k[k.length-1];return new Bt.ProgramConfig({instructions:M.instructions,signers:M.signers,lookupTables:M.lookupTables,prerequisites:k.slice(0,-1),rentReserve:X,func:"transfer",module:"NttManager"})}}),pc=()=>({transfer:Am});function hc(){return{Ntt:pc}}function wi(){return{Wormhole:hc}}var Si={};An(Si,{Tag:()=>fn});var fn=(o=>(o.Basejump="Basejump",o.Ntt="Ntt",o.NttExecutor="NttExecutor",o.Wormhole="Wormhole",o.Relayer="Relayer",o.Snowbridge="Snowbridge",o.SnowbridgeV1="SnowbridgeV1",o))(fn||{});function yc(n,e){return new ia.AssetRoute({source:{asset:n,fee:{asset:D}},destination:{chain:v,asset:e,fee:{amount:0,asset:n}},contract:ye().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function Ac(n,e){return new ia.AssetRoute({source:{asset:n,fee:{asset:D}},destination:{chain:v,asset:e,fee:{amount:V().Wormhole().quoteExecutorCost(),asset:D}},contract:ye().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}function bc(n,e){return new ia.AssetRoute({source:{asset:n,fee:{asset:D},destinationFee:n},destination:{chain:v,asset:e,fee:{amount:V().Basejump().quoteFee(),asset:n}},contract:ye().Basejump().bridgeViaWormhole(),tags:["Basejump"]})}var bm=[bc(gt,kt)],wm=[yc(gt,kt)],xm=[Ac(gt,kt)],xc=new wc.ChainRoutes({chain:bn,routes:[...wm,...xm,...bm]});var Cs=require("@galacticcouncil/xc-core");var is=require("@galacticcouncil/xc-core");function gn(n,e){return new is.AssetRoute({source:{asset:n,fee:{asset:D}},destination:{chain:v,asset:e,fee:{amount:0,asset:n}},contract:ye().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function Dn(n,e){return new is.AssetRoute({source:{asset:n,fee:{asset:D}},destination:{chain:v,asset:e,fee:{amount:V().Wormhole().quoteExecutorCost(),asset:D}},contract:ye().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}function Sc(n,e){return new is.AssetRoute({source:{asset:n,fee:{asset:D}},destination:{chain:v,asset:e,fee:{amount:0,asset:n}},contract:ye().Wormhole().Ntt().transferWithExecutor(),tags:["Wormhole","Ntt","NttExecutor"]})}function Ce(n,e){return new is.AssetRoute({source:{asset:n,fee:{asset:D}},destination:{chain:v,asset:e,fee:{amount:V().Snowbridge().calculateInboundFee({hub:O}),asset:D}},contract:ye().Snowbridge().v2SendMessage(),tags:["Snowbridge"]})}function Pe(n,e){return new is.AssetRoute({source:{asset:n,fee:{asset:D}},destination:{chain:v,asset:e,fee:{amount:V().Snowbridge().calculateInboundFeeV1({hub:O}),asset:D}},contract:ye().Snowbridge().sendToken(),tags:["Snowbridge","SnowbridgeV1"]})}var Sm=[gn(St,_t),gn(ct,Dt),gn(L,Xt),gn(I,Ft),gn(ut,Ot),gn(Vt,et),gn(D,et)],km=[Dn(St,_t),Dn(ct,Dt),Dn(L,Xt),Dn(I,Ft),Dn(ut,Ot),Dn(Vt,et),Sc(D,et)],vm=[new Cs.AssetRoute({source:{asset:D,fee:{asset:D}},destination:{chain:v,asset:D,fee:{amount:V().Snowbridge().calculateInboundFee({hub:O}),asset:D}},contract:ye().Snowbridge().v2SendMessage(),tags:["Snowbridge"]}),Ce(Re,Re),Ce(Le,Le),Ce(_e,_e),Ce(De,De),Ce(Oe,Oe),Ce(He,He),Ce(Ue,Ue),Ce(Xe,Xe),Ce(Fe,Fe),Ce(Ve,Ve),Ce(Ne,Ne),Ce(Ke,Ke),Ce(Ge,Ge),Ce(L,jt),Ce(I,zt)],Mm=[new Cs.AssetRoute({source:{asset:D,fee:{asset:D}},destination:{chain:v,asset:D,fee:{amount:V().Snowbridge().calculateInboundFeeV1({hub:O}),asset:D}},contract:ye().Snowbridge().sendToken(),tags:["Snowbridge","SnowbridgeV1"]}),Pe(Re,Re),Pe(Le,Le),Pe(_e,_e),Pe(De,De),Pe(Oe,Oe),Pe(He,He),Pe(Ue,Ue),Pe(Xe,Xe),Pe(Fe,Fe),Pe(Ve,Ve),Pe(Ne,Ne),Pe(Ke,Ke),Pe(Ge,Ge),Pe(L,jt),Pe(I,zt)],kc=new Cs.ChainRoutes({chain:E,routes:[...Sm,...km,...vm,...Mm]});var vc=[xc,kc];var pn=require("@galacticcouncil/xc-core");var ra=require("@galacticcouncil/xc-core");var Fn=0,Im=n=>{let{source:e}=n;return!!e.feeSwap},Tm=n=>{let{source:e}=n,{enabled:t}=e.destinationFeeSwap||{};return!!t},Mc=w().assetConversion().swapTokensForExactTokens({slippage:30});function Cm(n,e,t){return new ra.AssetRoute({source:{asset:n,fee:{asset:P,extra:Fn}},destination:{chain:e,asset:n,fee:{amount:t,asset:I}},extrinsic:cn(Tm,Mc).prior(w().polkadotXcm().limitedReserveTransferAssets())})}function oa(n,e,t){return new ra.AssetRoute({source:{asset:n,fee:{asset:n,swap:!n.isEqual(P)}},destination:{chain:e,asset:n,fee:{amount:t,asset:n}},extrinsic:cn(Im,Mc).prior(w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"}))})}function Ps(n,e,t){return new ra.AssetRoute({source:{asset:n,fee:{asset:P,extra:Fn}},destination:{chain:e,asset:n,fee:{amount:t,asset:n}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})})}function ca(n){return Cm(n,v,.02)}var Pm=[new pn.AssetRoute({source:{asset:P,fee:{asset:P,extra:Fn}},destination:{chain:v,asset:P,fee:{amount:.001,asset:P}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),new pn.AssetRoute({source:{asset:F,fee:{asset:P,extra:Fn}},destination:{chain:v,asset:F,fee:{amount:1e-4,asset:F}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),Ps(I,v,.02),Ps(L,v,.02),ca($t)],Em=[new pn.AssetRoute({source:{asset:F,fee:{asset:P,extra:Fn}},destination:{chain:Tt,asset:F,fee:{amount:.001,asset:F}},extrinsic:w().polkadotXcm().transferAssets()})],Bm=[Ps(I,se,.03),Ps(L,se,.03)],Rm=[new pn.AssetRoute({source:{asset:ne,fee:{asset:P,extra:Fn}},destination:{chain:en,asset:ne,fee:{amount:2.5,asset:ne}},extrinsic:w().polkadotXcm().limitedTeleportAssets()})],Ic=new pn.ChainRoutes({chain:Zt,routes:[oa(I,v,.02),oa(L,v,.02),oa(P,v,.001)]}),Tc=new pn.ChainRoutes({chain:O,routes:[...Pm,...Em,...Bm,...Rm]});var Rt=require("@galacticcouncil/xc-core");var Lm=[new Rt.AssetRoute({source:{asset:j},destination:{chain:v,asset:j,fee:{amount:.044306118,asset:j}},extrinsic:w().polkadotXcm().reserveTransferAssets()}),new Rt.AssetRoute({source:{asset:K,fee:{asset:j}},destination:{chain:v,asset:K,fee:{amount:V().XcmPaymentApi().calculateDestFee({reserve:se}),asset:K}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new Rt.AssetRoute({source:{asset:ie,fee:{asset:j}},destination:{chain:v,asset:ie,fee:{amount:2e-6,asset:ie}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new Rt.AssetRoute({source:{asset:rt,fee:{asset:j}},destination:{chain:v,asset:rt,fee:{amount:.01,asset:rt}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new Rt.AssetRoute({source:{asset:fe,fee:{asset:j}},destination:{chain:v,asset:fe,fee:{amount:V().XcmPaymentApi().calculateDestFee({reserve:se}),asset:fe}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new Rt.AssetRoute({source:{asset:le,fee:{asset:j}},destination:{chain:v,asset:le,fee:{amount:V().XcmPaymentApi().calculateDestFee({reserve:se}),asset:le}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new Rt.AssetRoute({source:{asset:I,fee:{asset:j}},destination:{chain:v,asset:I,fee:{amount:V().XcmPaymentApi().calculateDestFee({reserve:O}),asset:I}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new Rt.AssetRoute({source:{asset:L,fee:{asset:j}},destination:{chain:v,asset:L,fee:{amount:V().XcmPaymentApi().calculateDestFee({reserve:O}),asset:L}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],Cc=new Rt.ChainRoutes({chain:Me,routes:[...Lm]});var ft=require("@galacticcouncil/xc-core");var _m=[new ft.AssetRoute({source:{asset:K},destination:{chain:v,asset:K,fee:{amount:V().XcmPaymentApi().calculateDestFee(),asset:K}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ft.AssetRoute({source:{asset:fe,fee:{asset:K}},destination:{chain:v,asset:fe,fee:{amount:V().XcmPaymentApi().calculateDestFee(),asset:fe}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ft.AssetRoute({source:{asset:le,fee:{asset:K}},destination:{chain:v,asset:le,fee:{amount:V().XcmPaymentApi().calculateDestFee(),asset:le}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ft.AssetRoute({source:{asset:P,fee:{asset:K}},destination:{chain:v,asset:P,fee:{amount:V().XcmPaymentApi().calculateDestFee({reserve:O}),asset:P}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"RemoteReserve"})}),new ft.AssetRoute({source:{asset:j,fee:{asset:K}},destination:{chain:v,asset:j,fee:{amount:V().XcmPaymentApi().calculateDestFee({reserve:Me}),asset:j}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ft.AssetRoute({source:{asset:ie,fee:{asset:K}},destination:{chain:v,asset:ie,fee:{amount:625e-8,asset:ie}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ft.AssetRoute({source:{asset:I,fee:{asset:K}},destination:{chain:v,asset:I,fee:{amount:V().XcmPaymentApi().calculateDestFee({reserve:O}),asset:I}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ft.AssetRoute({source:{asset:L,fee:{asset:K}},destination:{chain:v,asset:L,fee:{amount:V().XcmPaymentApi().calculateDestFee({reserve:O}),asset:L}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],Dm=[new ft.AssetRoute({source:{asset:I,fee:{asset:K}},destination:{chain:O,asset:I,fee:{amount:V().XcmPaymentApi().calculateDestFee(),asset:I}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ft.AssetRoute({source:{asset:L,fee:{asset:K}},destination:{chain:O,asset:L,fee:{amount:V().XcmPaymentApi().calculateDestFee(),asset:L}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],Pc=new ft.ChainRoutes({chain:se,routes:[..._m,...Dm]});var Gt=require("@galacticcouncil/xc-core");var be=()=>({asset:ps().multiTransactionPayment().accountCurrencyMap()});var Yt=require("@galacticcouncil/xc-core");var Fm=.02,ua=n=>{let{source:e}=n,{enabled:t}=e.destinationFeeSwap||{};return!!t},ma=w().router().buy({slippage:30});function ze(n,e,t){return new Yt.AssetRoute({source:{asset:n,fee:be()},destination:{chain:e,asset:n,fee:{amount:V().XcmPaymentApi().calculateDestFee(t?{reserve:t}:void 0),asset:n}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})}function hn(n,e){return new Yt.AssetRoute({source:{asset:n,fee:be()},destination:{chain:e,asset:n,fee:{amount:V().XcmPaymentApi().calculateDestFee(),asset:n}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})})}function da(n){return new Yt.AssetRoute({source:{asset:n,fee:be()},destination:{chain:O,asset:n,fee:{amount:Fm,asset:I}},extrinsic:cn(ua,ma).prior(w().polkadotXcm().limitedReserveTransferAssets())})}function ki(n,e,t){return new Yt.AssetRoute({source:{asset:n,fee:be()},destination:{chain:Tt,asset:n,fee:{amount:e,asset:n}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve",executionFee:t})})}function wt(n,e,t){return new Yt.AssetRoute({source:{asset:n,fee:be()},destination:{chain:t,asset:e,fee:{amount:0,asset:n}},contract:ye().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function xt(n,e,t){return new Yt.AssetRoute({source:{asset:n,fee:be()},destination:{chain:t,asset:e,fee:{amount:V().Wormhole().quoteExecutorCost(),asset:et}},contract:za(ua,ma).prior(ye().Wormhole().Ntt().transferViaExecutor()),tags:["Wormhole","Ntt","NttExecutor"]})}function we(n,e,t){return new Yt.AssetRoute({source:{asset:n,fee:be()},destination:{chain:t,asset:e,fee:{amount:V().Snowbridge().calculateOutboundFee({hub:O}),asset:P}},extrinsic:cn(ua,ma).prior(w().polkadotXcm().execute().viaSnowbridge()),tags:["Snowbridge"]})}function xe(n,e,t){return new Yt.AssetRoute({source:{asset:n,fee:be()},destination:{chain:t,asset:e,fee:{amount:V().Snowbridge().calculateOutboundFeeV1({hub:O}),asset:P}},extrinsic:cn(ua,ma).prior(w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})),tags:["Snowbridge","SnowbridgeV1"]})}var Xm=[hn(P,O),hn(F,O),hn(I,O),hn(L,O),da($t)],Vm=[ki(F,.05,.005),ki(P,.2,.02)],Om=[ze(j,Me),ze(K,Me,se),new Gt.AssetRoute({source:{asset:ie,fee:be()},destination:{chain:Me,asset:ie,fee:{amount:2e-6,asset:ie}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new Gt.AssetRoute({source:{asset:rt,fee:be()},destination:{chain:Me,asset:rt,fee:{amount:.01,asset:rt}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),ze(fe,Me,se),ze(le,Me,se),ze(I,Me,O),ze(L,Me,O)],Nm=[ze(K,se),ze(fe,se),ze(le,se),ze(j,se,Me),new Gt.AssetRoute({source:{asset:ie,fee:be()},destination:{chain:se,asset:ie,fee:{amount:5e-6,asset:ie}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),ze(I,se,O),ze(L,se,O),new Gt.AssetRoute({source:{asset:P,fee:be()},destination:{chain:se,asset:P,fee:{amount:V().XcmPaymentApi().calculateDestFee({reserve:O}),asset:P}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"RemoteReserve"})})],Wm=[new Gt.AssetRoute({source:{asset:ne,fee:be()},destination:{chain:en,asset:ne,fee:{amount:2.5,asset:ne}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],Hm=[ze(Mt,zn)],Um=[new Gt.AssetRoute({source:{asset:Je,fee:be()},destination:{chain:jn,asset:Je,fee:{amount:.02,asset:Je}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],Km=[new Gt.AssetRoute({source:{asset:ot,fee:be()},destination:{chain:Kn,asset:ot,fee:{amount:1.1,asset:ot}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],Gm=[ze(vt,Un)],qm=[wt(_t,St,E),wt(Dt,ct,E),wt(Xt,L,E),wt(Ft,I,E),wt(Ot,ut,E),wt(et,D,E)],zm=[wt(kt,gt,bn)],jm=[wt(ve,ve,It),wt(Ye,Ye,It),wt(Ze,Ze,It)],$m=[wt(We,We,Mn)],Qm=[xt(_t,St,E),xt(Dt,ct,E),xt(Xt,L,E),xt(Ft,I,E),xt(Ot,ut,E),xt(et,D,E),xt(kt,gt,bn),xt(ve,ve,It),xt(Ye,Ye,It),xt(Ze,Ze,It),xt(We,We,Mn)],Ym=[we(D,D,E),we(Re,Re,E),we(Le,Le,E),we(_e,_e,E),we(De,De,E),we(Oe,Oe,E),we(He,He,E),we(Ue,Ue,E),we(Ke,Ke,E),we(Xe,Xe,E),we(Fe,Fe,E),we(Ve,Ve,E),we(Ne,Ne,E),we(Ge,Ge,E),we(jt,L,E),we(zt,I,E)],Jm=[xe(D,D,E),xe(Re,Re,E),xe(Le,Le,E),xe(_e,_e,E),xe(De,De,E),xe(Oe,Oe,E),xe(He,He,E),xe(Ue,Ue,E),xe(Ke,Ke,E),xe(Xe,Xe,E),xe(Fe,Fe,E),xe(Ve,Ve,E),xe(Ne,Ne,E),xe(Ge,Ge,E),xe(jt,L,E),xe(zt,I,E)],Zm=[hn(P,Zt),hn(I,Zt),hn(L,Zt)],Ec=new Gt.ChainRoutes({chain:v,routes:[...Xm,...Om,...Nm,...Zm,...zm,...qm,...Ym,...jm,...$m,...Qm,...Jm,...Um,...Vm,...Wm,...Gm,...Km,...Hm]});var Es=require("@galacticcouncil/xc-core");var ed=[new Es.AssetRoute({source:{asset:ne},destination:{chain:v,asset:ne,fee:{amount:.01,asset:ne}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})})],td=[new Es.AssetRoute({source:{asset:ne},destination:{chain:O,asset:ne,fee:{amount:.1,asset:ne}},extrinsic:w().polkadotXcm().limitedTeleportAssets()})],Bc=new Es.ChainRoutes({chain:en,routes:[...ed,...td]});var la=require("@galacticcouncil/xc-core");var nd=[new la.AssetRoute({source:{asset:Mt},destination:{chain:v,asset:Mt,fee:{amount:V().XcmPaymentApi().calculateDestFee(),asset:Mt}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],Rc=new la.ChainRoutes({chain:zn,routes:[...nd]});var fa=require("@galacticcouncil/xc-core");var sd=[new fa.AssetRoute({source:{asset:ot},destination:{chain:v,asset:ot,fee:{amount:.2,asset:ot}},extrinsic:w().polkadotXcm().reserveTransferAssets()})],Lc=new fa.ChainRoutes({chain:Kn,routes:[...sd]});var ga=require("@galacticcouncil/xc-core");var ad=[new ga.AssetRoute({source:{asset:Je,fee:{asset:Je,extra:.030555}},destination:{chain:v,asset:Je,fee:{amount:.03,asset:Je}},extrinsic:w().polkadotXcm().reserveTransferAssets()})],_c=new ga.ChainRoutes({chain:jn,routes:[...ad]});var pa=require("@galacticcouncil/xc-core");var id=[new pa.AssetRoute({source:{asset:vt},destination:{chain:v,asset:vt,fee:{amount:.205,asset:vt}},extrinsic:w().polkadotXcm().reserveTransferAssets()})],Dc=new pa.ChainRoutes({chain:Un,routes:[...id]});var Fc=[Tc,Ic,Cc,Pc,Ec,Bc,Dc,Rc,Lc,_c];var ha=require("@galacticcouncil/xc-core");function vi(n){return new ha.AssetRoute({source:{asset:n,fee:{asset:ve}},destination:{chain:v,asset:n,fee:{amount:0,asset:n}},program:wi().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}var rd=[vi(ve),vi(Ye),vi(Ze)],Xc=new ha.ChainRoutes({chain:It,routes:[...rd]});var Vc=[Xc];var ya=require("@galacticcouncil/xc-core");function od(n){return new ya.AssetRoute({source:{asset:n,fee:{asset:We}},destination:{chain:v,asset:n,fee:{amount:0,asset:n}},move:oi().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}var cd=[od(We)],Oc=new ya.ChainRoutes({chain:Mn,routes:[...cd]});var Nc=[Oc];var Xn=require("@galacticcouncil/xc-core");var ud=require("@galacticcouncil/xc-core");var Bs=.0015;var md=new Xn.AssetRoute({source:{asset:F,fee:{asset:F,extra:Bs}},destination:{chain:O,asset:F,fee:{amount:.002,asset:F}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),dd=new Xn.AssetRoute({source:{asset:F,fee:{asset:F,extra:Bs}},destination:{chain:Yn,asset:F,fee:{amount:.0012,asset:F}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),ld=[new Xn.AssetRoute({source:{asset:F,fee:{asset:F,extra:Bs}},destination:{chain:v,asset:F,fee:{amount:.04,asset:F}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve",executionFee:.005})}),new Xn.AssetRoute({source:{asset:P,fee:{asset:F,extra:Bs}},destination:{chain:v,asset:P,fee:{amount:.15,asset:P}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve",executionFee:.01})})],Wc=new Xn.ChainRoutes({chain:Tt,routes:[dd,md,...ld]});var Rs=require("@galacticcouncil/xc-core");var Mi=()=>({asset:ps().multiTransactionPayment().accountCurrencyMap()});var fd=[new Rs.AssetRoute({source:{asset:I,fee:Mi()},destination:{chain:Tt,asset:I,fee:{amount:V().XcmPaymentApi().calculateDestFee(),asset:I}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],gd=[new Rs.AssetRoute({source:{asset:F,fee:Mi()},destination:{chain:Tt,asset:F,fee:{amount:.0012,asset:F}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})})],Hc=new Rs.ChainRoutes({chain:Yn,routes:[...fd,...gd]});var Uc=[Wc,Hc];var pd=[...vc,...Fc,...Vc,...Nc,...Uc],Kc=new Map(pd.map(n=>[n.chain.key,n]));var Ii=require("@galacticcouncil/xc-core");var yn=require("@galacticcouncil/xc-core"),Aa=class extends yn.TransferValidation{async validate(e){let{source:t}=e,{chain:s,fee:a,feeBalance:i}=t;if(i.amount<a.amount)throw new yn.TransferValidationError("Insufficient_Fee_Balance",{amount:a.toDecimal(),asset:a.symbol,chain:s.name,error:"fee.insufficientBalance"})}},ba=class extends yn.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 yn.TransferValidationError("Insufficient_Fee_Balance",{amount:c.toDecimal(),asset:c.symbol,chain:a.name,error:"destFee.insufficientBalance"})}async getMin(e,t){if(e instanceof yn.Parachain)return(await e.getMin(t)).amount;let s=e.getAssetMin(t);return BigInt(s*10**t.decimals)}};var rs=require("@galacticcouncil/xc-core");var wa=class extends rs.TransferValidation{async skipFor(e){let{asset:t,destination:s}=e,a=s.chain;return await new tt(a).checkIfSufficient(t)}async validate(e){if(await this.skipFor(e))return;let{address:s,destination:a}=e,i=a.chain;if(await new tt(i).getSystemAccountBalance(s)===0n)throw new rs.TransferValidationError("Insufficient_Ed",{amount:"0.1",asset:"DOT",chain:a.chain.name,error:"account.insufficientDeposit"})}},xa=class extends rs.TransferValidation{async validate(e){let{asset:t,sender:s,source:a}=e,i=a.chain;if(await new tt(i).checkIfFrozen(s,t))throw new rs.TransferValidationError("Asset_Frozen",{asset:t.originSymbol,chain:a.chain.name,error:"asset.frozen"})}};var Lt=require("@galacticcouncil/xc-core");var hd=12,yd=1,Ad=18,Sa=class extends Lt.TransferValidation{async skipFor(e){let{destination:t}=e,s=t.chain,a=new Ie(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 Ie(i),o=await r.getFeeAsset(s),c=i.findAssetById(o),u=c.min||yd,g=c.decimals||hd,f=u*Math.pow(10,g),h=await r.getAssetBalance(s,o);if(BigInt(f*1.1)>h)throw new Lt.TransferValidationError("Insufficient_Ed",{amount:f,asset:c.asset.originSymbol,chain:i.name,error:"account.insufficientDeposit"})}},ka=class extends Lt.TransferValidation{async validate(e){let{amount:t,asset:s,destination:a}=e,i=a.chain,o=await new Ie(i).getAssetDepositLimit(s);if(o.locked)throw new Lt.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 Lt.TransferValidationError("Deposit_Limit_Exceeded",{asset:s.originSymbol,chain:i.name,headroom:o.headroom,limit:o.limit,error:"circuitBreaker.depositLimitExceeded"})}},va=class extends Lt.TransferValidation{async validate(e){let{source:t}=e,s=t.chain,i=await new Ie(s).getGlobalWithdrawLimit();if(i.lockdown)throw new Lt.TransferValidationError("Withdraw_Lockdown_Active",{chain:s.name,lockdownUntilMs:i.lockdownUntilMs,error:"circuitBreaker.withdrawLockdown"})}},Ma=class extends Lt.TransferValidation{async skipFor(e){let{source:t,transact:s}=e,{enabled:a}=t.destinationFeeSwap||{};return!(!!s&&s.chain.key==="moonbeam")||!!a}async validate(e){if(await this.skipFor(e))return;let{sender:s,source:a}=e,i=a.chain,r=new Ie(i),o=i.getBalanceAssetId(pt),c=i.getAssetDecimals(pt)||Ad,u=1*Math.pow(10,c);if(await r.getTokensAccountsBalance(s,o.toString())<BigInt(u))throw new Lt.TransferValidationError("Insufficient_Ed",{amount:1,asset:pt.originSymbol,chain:i.name,error:"destFee.insufficientBalance"})}};var Ee={isAny:()=>!0,isHydration:n=>n instanceof Ii.Parachain&&n.parachainId===2034,isHub:n=>n instanceof Ii.Parachain&&n.parachainId===1e3,isEvm:n=>n.isEvmChain()},Gc=[new Aa(Ee.isAny,Ee.isAny),new ba(Ee.isAny,Ee.isAny),new wa(Ee.isAny,Ee.isHub),new xa(Ee.isHub,Ee.isAny),new Sa(Ee.isAny,Ee.isHydration),new Ma(Ee.isHydration,Ee.isAny),new ka(Ee.isAny,Ee.isHydration),new va(Ee.isHydration,Ee.isAny)];var Ei={};An(Ei,{AssethubDex:()=>Pi,HydrationDex:()=>Ti});var os=require("@galacticcouncil/sdk-next"),zc=require("@galacticcouncil/common"),jc=require("polkadot-api");var qc=(n,e=new Map)=>t=>{let s;return e.has(t)?e.get(t):(e.set(t,s=n(t)),s)};var{PoolType:Ia}=os.pool,{TradeRouteBuilder:bd,TradeRouter:wd}=os.sor,{TxBuilderFactory:xd}=os.tx,Ti=class{chain;client;poolCtx;txBuilder;getCtx=qc(async e=>{console.log("init swap router",e,"\u2705");let t=new wd(this.poolCtx);return t.withFilter({useOnly:[Ia.Aave,Ia.Omni,Ia.Stable,Ia.XYK]}),t});constructor(e,t){this.chain=e,this.poolCtx=t,this.client=new Ie(this.chain),this.txBuilder=new xd(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,u=await this.getCtx(1),g=await u.getMostLiquidRoute(r,o),f=await u.getBuy(r,o,c,g),x=await(await this.txBuilder.trade(f).withBeneficiary(e).withSlippage(i).build()).get().getEncodedData();return jc.Binary.toHex(x)}async getQuote(e,t,s,a){let i=Number(this.chain.getMetadataAssetId(e)),r=Number(this.chain.getMetadataAssetId(t)),o=s.amount,c=await this.getCtx(1);try{let u=await c.getMostLiquidRoute(i,r),g=await c.getBuy(i,r,o,u);return{amount:g.amountIn,route:bd.build(g.swaps)}}catch(u){if(a)return{amount:await this.getFallbackPrice(e,s.amount)};throw u}}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,zc.RUNTIME_DECIMALS);return i/BigInt(r)}};var Ci=require("@galacticcouncil/common"),Pi=class{chain;client;constructor(e){this.chain=e,this.client=new tt(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,Ci.encodeLocation)(a),(0,Ci.encodeLocation)(i),s.amount,!0);if(!r)throw new Error("Failed to get swap quote");return{amount:r}}};var Jc=require("@galacticcouncil/xc-core");var $c=require("@galacticcouncil/xc-core");function Ta(n){let{id:e,origin:t,symbol:s}=n,a=s.toLowerCase();return new $c.Asset({key:[a,t,e].join("_"),originSymbol:s})}function Qc(n){let{decimals:e,id:t}=n;return{asset:Ta(n),decimals:e,id:t,xcmLocation:{parents:0,interior:{type:"X2",value:[{type:"PalletInstance",value:50},{type:"GeneralIndex",value:t}]}}}}function Yc(n){let{decimals:e,id:t,internalId:s,origin:a}=n;return{asset:Ta(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 Ca=class extends Jc.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=Ta(i),o=Qc(i),c=Yc(i);console.log("\u{1F480} Registering "+r.key),s.updateAsset(o),t.updateAsset(c),this.updateAsset(r),this.updateChainRoute(s,ca(r)),this.updateChainRoute(t,da(r))})}};0&&(module.exports={HydrationConfigService,assetsMap,builders,chainsMap,clients,dex,routesMap,tags,validations});