@galacticcouncil/xc-cfg 2.2.0 → 2.3.0-pr350-baf950c

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 Kc=Object.create;var Ps=Object.defineProperty;var Gc=Object.getOwnPropertyDescriptor;var qc=Object.getOwnPropertyNames;var zc=Object.getPrototypeOf,jc=Object.prototype.hasOwnProperty;var Y=(n,e)=>()=>(n&&(e=n(n=0)),e);var yn=(n,e)=>{for(var t in e)Ps(n,t,{get:e[t],enumerable:!0})},vi=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of qc(e))!jc.call(n,a)&&a!==t&&Ps(n,a,{get:()=>e[a],enumerable:!(s=Gc(e,a))||s.enumerable});return n};var _n=(n,e,t)=>(t=n!=null?Kc(zc(n)):{},vi(e||!n||!n.__esModule?Ps(t,"default",{value:n,enumerable:!0}):t,n)),$c=n=>vi(Ps({},"__esModule",{value:!0}),n);var Us,wo=Y(()=>{Us={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 xo,So=Y(()=>{xo={version:"1.0.0",name:"wormhole_governance",instructions:[{name:"governance",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"governance",isMut:!0,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"replay",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"replayProtection",type:{kind:"struct",fields:[{name:"bump",type:"u8"}]}}],errors:[{code:6e3,name:"InvalidGovernanceChain",msg:"InvalidGovernanceChain"},{code:6001,name:"InvalidGovernanceEmitter",msg:"InvalidGovernanceEmitter"}]}});var us,ko=Y(()=>{wo();So();(function(n){n.idl={ntt:Us,transceiver:Us,transceiverLegacy:Us,governance:xo}})(us||(us={}))});var Ws,vo=Y(()=>{Ws={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 Mo,Io=Y(()=>{Mo={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 ds,To=Y(()=>{vo();Io();(function(n){n.idl={ntt:Ws,transceiver:Ws,transceiverLegacy:Ws,governance:Mo}})(ds||(ds={}))});var Co,Po=Y(()=>{Co={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 Eo,Bo=Y(()=>{Eo={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 Lo,Ro=Y(()=>{Lo={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 _o,Do=Y(()=>{_o={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 ls,Fo=Y(()=>{Po();Bo();Ro();Do();(function(n){n.idl={ntt:Co,transceiver:Eo,transceiverLegacy:Lo,governance:_o}})(ls||(ls={}))});var Qa=Y(()=>{ko();To();Fo()});function Oo(n){for(let[e,t]of Ks)if(Xo.Ntt.abiVersionMatches(n,e))return t;throw new Error(`Unknown IDL version: ${n}`)}function fs(n,e,t){let{idl:{ntt:s}}=Oo(t);return new Za.Program(s,e,{connection:n})}function Gs(n,e,t,s=!1){let{idl:{transceiver:a,transceiverLegacy:i}}=Oo(t),r=s?i:a;return new Za.Program(r,e,{connection:n})}var Za,Xo,Ks,qs=Y(()=>{Za=require("@coral-xyz/anchor");Qa();Xo=require("@wormhole-foundation/sdk-definitions-ntt"),Ks=[["3.0.0",ls],["2.0.0",ds],["1.0.0",us]]});function ps(n){return on.PublicKey.findProgramAddressSync([new on.PublicKey(n).toBytes()],es)[0]}function cn(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"?gs.encoding.bytes.encode(s):s;return on.PublicKey.findProgramAddressSync(Array.isArray(n)?n.map(t):[t(n)],new on.PublicKey(e))[0]}var on,gs,ei,es,Vo,Bp,mn,ti,Lp,Rp,zs=Y(()=>{on=require("@solana/web3.js"),gs=require("@wormhole-foundation/sdk-base"),ei=_n(require("bn.js"),1),es=new on.PublicKey("BPFLoaderUpgradeab1e11111111111111111111111");Vo=[{name:"length",binary:"uint",endianness:"little",size:4},{name:"version",binary:"bytes"}],Bp={MAX:new ei.default((2n**64n-1n).toString()),to:(n,e)=>{let t=new ei.default(Math.round(n*e));if(t.isNeg())throw new Error("Value negative");if(t.bitLength()>64)throw new Error("Value too large");return t},from:(n,e)=>n.toNumber()/e};mn=n=>gs.encoding.bignum.toBytes((0,gs.toChainId)(n),2),ti=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)},Lp=new on.PublicKey(Buffer.from("owner".padEnd(32,"\0"))),Rp=new on.PublicKey(Buffer.from("payer".padEnd(32,"\0")))});async function js(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(nu(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 nu(n,e){let t=e.filter(s=>s.pubkey.equals(n.pubkey)).reduce((s,a)=>s?{isSigner:s.isSigner||a.isSigner,isWritable:s.isWritable||a.isWritable}:{isSigner:a.isSigner,isWritable:a.isWritable},void 0);if(t){let{isSigner:s,isWritable:a}=t;!s&&s!==n.isSigner&&(n.isSigner=!1),!a&&a!==n.isWritable&&(n.isWritable=!1)}return n}var un,J,oe,ye,No,$s,ni,hs,Ho,z,Uo=Y(()=>{un=require("@coral-xyz/anchor"),J=_n(require("@solana/spl-token"),1),oe=require("@solana/web3.js"),ye=require("@wormhole-foundation/sdk-base"),No=require("@wormhole-foundation/sdk-definitions"),$s=_n(require("bn.js"),1),ni=require("@wormhole-foundation/sdk-definitions-ntt"),hs=require("@solana/spl-token"),Ho=require("@wormhole-foundation/sdk-solana-core");qs();zs();(function(n){function e(l,d,u){return{amount:new $s.default(l.toString()),recipientChain:{id:(0,ye.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",mn(qe)],l),inboxItemAccount:(qe,Ze)=>Z(["inbox_item",ni.Ntt.messageDigest(qe,Ze)],l),upgradeLock:()=>Z("upgrade_lock",l),sessionAuthority:(qe,Ze)=>Z(["session_authority",qe.toBytes(),(0,No.keccak256)(ye.encoding.bytes.concat(ye.encoding.bytes.zpad(new Uint8Array(Ze.amount.toArray()),8),mn(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",mn(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:H=>Z(["transceiver_peer",mn(H)],l),transceiverMessageAccount:(H,ce)=>Z(["transceiver_message",mn(H),ce],l),unverifiedMessageAccount:(H,ce)=>Z(["vaa_body",H.toBytes(),new Uint8Array(ce.toArray("be"))],l),wormholeMessageAccount:H=>Z(["message",H.toBytes()],l),wormholeMessageWithShimAccount:H=>Z(d().toBytes(),H)}};async function t(l,d,u){if(!u){let Qe=l.rpcEndpoint===ye.rpc.rpcAddress("Devnet","Solana")?"6sbzC1eH4FTujJXWj51eQe25cYvr4xfXbJ1vAj7j2k5J":l.rpcEndpoint.startsWith("http://localhost")?"98evdAiWr7ey9MAQzoQQMwFQkTsSR6KkWQuFqKrgwNwb":"Hk3SdYTJFpawrvRz4qRztuEt2SqoCG7BGj2yJfDJSFbJ";u=new oe.PublicKey(Qe)}let p=fs(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(),xe=new oe.VersionedTransaction(ee),H=await p.provider.connection.simulateTransaction(xe,{sigVerify:!1});if(!H.value.returnData||H.value.err)throw new Error("Could not fetch IDL version: "+JSON.stringify((0,un.translateError)(H.value.err,(0,un.parseIdlErrors)(p.idl))));let ce=ye.encoding.b64.decode(H.value.returnData?.data[0]),Ge=(0,ye.deserializeLayout)(Vo,ce),Ce=ye.encoding.bytes.decode(Ge.version);for(let[Qe]of Ks)if(ni.Ntt.abiVersionMatches(Ce,Qe))return Qe;throw new Error(`Unknown IDL version: ${Ce}`)}n.getVersion=t;async function s(l,d,u){let[p,,,]=cn(l.idl.version),_=d.mode==="burning"?{burning:{}}:{locking:{}},Q=(0,ye.toChainId)(d.chain);u=u??n.pdas(l.programId);let ee=new $s.default(d.outboundLimit.toString());return l.methods.initialize({chainId:Q,limit:ee,mode:_}).accounts({payer:d.payer,deployer:d.owner,programData:ps(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:es,associatedTokenProgram:J.ASSOCIATED_TOKEN_PROGRAM_ID,systemProgram:oe.SystemProgram.programId}).instruction()}n.createInitializeInstruction=s;async function a(l,d,u,p,_){let[Q,,,]=cn(l.idl.version);if(Q<2)return;_=_??n.pdas(l.programId);let ee=await l.provider.connection.getSlot()-1,[xe,H]=un.web3.AddressLookupTableProgram.createLookupTable({authority:_.lutAuthority(),payer:p.payer,recentSlot:ee}),ce=Ho.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:un.web3.SYSVAR_CLOCK_PUBKEY,rent:un.web3.SYSVAR_RENT_PUBKEY}},Ce=Ze=>{let Ts=new Array;for(let as in Ze){let Cs=Ze[as];Cs instanceof oe.PublicKey?Ts.push(Cs):typeof Cs=="object"&&Ts.push(...Ce(Cs))}return Ts},Qe=Ce(Ge).map(Ze=>Ze.toBase58()),qe=await Gt(l,_);if(qe!==null){let Ze=qe.state.addresses?.map(as=>as.toBase58())??[];if(Qe.filter(as=>!Ze.includes(as)).length===0)return null}return l.methods.initializeLut(new $s.default(ee)).accountsStrict({payer:p.payer,owner:p.owner,authority:_.lutAuthority(),lutAddress:H,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 we(p,d),Q=(0,ye.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(),xe=await J.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),H=J.getTransferHook(xe);if(H){let ce=u.from,Ge=d.mint,Ce=await we(p,d),Qe=p.sessionAuthority(u.fromAuthority,u.transferArgs);await js(l.provider.connection,ee,H.programId,ce,Ge,Ce,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,ye.toChain)(u.transferArgs.recipientChain.id),Q=await we(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(),xe=await J.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),H=J.getTransferHook(xe);if(H){let ce=u.from,Ge=await we(p,d),Ce=p.sessionAuthority(u.fromAuthority,u.transferArgs);await js(l.provider.connection,ee,H.programId,ce,d.mint,Ge,Ce,0)}return ee}n.createTransferLockInstruction=r;async function o(l,d,u,p){let[_,,,]=cn(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 xe=u.recipient??(await Dt(l,u.chain,u.nttMessage)).recipientAddress,H=await l.methods.releaseInboundMint({revertOnDelay:u.revertWhenNotReady,revertWhenNotReady:u.revertWhenNotReady}).accounts({common:{payer:u.payer,config:{config:p.configAccount()},inboxItem:p.inboxItemAccount(u.chain,u.nttMessage),recipient:(0,hs.getAssociatedTokenAddressSync)(d.mint,xe,!0,d.tokenProgram),mint:d.mint,tokenAuthority:p.tokenAuthority(),tokenProgram:d.tokenProgram,custody:await we(p,d)},..._>=3&&{multisigTokenAuthority:ee}}).instruction(),ce=J.getTransferHook(Q);if(ce){let Ge=await we(p,d),Ce=d.mint,Qe=(0,hs.getAssociatedTokenAddressSync)(Ce,xe,!0,d.tokenProgram),qe=p.tokenAuthority();await js(l.provider.connection,H,ce.programId,Ge,Ce,Qe,qe,0)}return H}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 we(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,hs.getAssociatedTokenAddressSync)(d.mint,_,!0,d.tokenProgram),mint:d.mint,tokenAuthority:p.tokenAuthority(),tokenProgram:d.tokenProgram,custody:Q},custody:Q}).instruction(),xe=await J.getMint(l.provider.connection,d.mint,void 0,d.tokenProgram),H=J.getTransferHook(xe);if(H){let ce=await we(p,d),Ge=d.mint,Ce=(0,hs.getAssociatedTokenAddressSync)(Ge,_,!0,d.tokenProgram),Qe=p.tokenAuthority();await js(l.provider.connection,ee,H.programId,ce,Ge,Ce,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:ps(l.programId),bpfLoaderUpgradeableProgram:es}).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:ps(l.programId),bpfLoaderUpgradeableProgram:es}).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:ps(l.programId),bpfLoaderUpgradeableProgram:es}).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,ye.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 N(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=N;async function W(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=W;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,ye.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,xe=ee.payload.nttManagerPayload,H=ee.emitterChain;return l.methods.redeem({}).accounts({payer:p.payer,config:_.configAccount(),peer:_.peerAccount(H),transceiverMessage:Q.transceiverMessageAccount(H,xe.id),transceiver:_.registeredTransceiver(u),mint:d.mint,inboxItem:_.inboxItemAccount(H,xe),inboxRateLimit:_.inboxRateLimitAccount(H),outboxRateLimit:_.outboxRateLimitAccount()}).instruction()}n.createRedeemInstruction=Ke;async function Je(l,d){return l.account.config.fetch(d.configAccount())}n.getConfig=Je;async function Dt(l,d,u){return l.account.inboxItem.fetch(n.pdas(l.programId).inboxItemAccount(d,u))}n.getInboxItem=Dt;async function Gt(l,d){let[u,,,]=cn(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=Gt;async function we(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=we})(z||(z={}))});var si=Y(()=>{Uo();qs();Qa()});var Wo,Ko=Y(()=>{Wo={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 Go,qo=Y(()=>{Go={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 ai,Ue,E,ii,Bn,ri,G,Pn,En,ys,bs,oi=Y(()=>{ai=require("@coral-xyz/anchor"),Ue=_n(require("@solana/spl-token"),1),E=require("@solana/web3.js"),ii=require("@wormhole-foundation/sdk-base"),Bn=require("@wormhole-foundation/sdk-definitions"),ri=require("@wormhole-foundation/sdk-definitions-ntt"),G=require("@wormhole-foundation/sdk-solana"),Pn=require("@wormhole-foundation/sdk-solana-core"),En=_n(require("bn.js"),1);qs();si();zs();Ko();qo();ys=class{manager;program;version;svmShims;programId;pdas;postMessageShim;verifyVaaShim;constructor(e,t,s="3.0.0",a=void 0){if(this.manager=e,this.program=t,this.version=s,this.svmShims=a,this.programId=t.programId,this.pdas=z.transceiverPdas(t.programId),a){let i=a.postMessageShimOverride??ri.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 ai.Program(Wo,i,{connection:this.program.provider.connection});let r=a.verifyVaaShimOverride??ri.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 ai.Program(Go,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 En.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:ti((0,Bn.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:Pn.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 En.default(e.hash.subarray(-8)),r=ti((0,Bn.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 En.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,,,]=cn(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,Bn.toUniversal)(this.manager.chain,this.pdas.emitterAccount().toBase58())}}async*setPeer(e,t){let s=new G.SolanaAddress(t).unwrap(),a=await this.program.methods.setWormholePeer({chainId:{id:(0,ii.toChainId)(e.chain)},address:Array.from(e.address.toUniversalAddress().toUint8Array())}).accounts({payer:s,owner:s,config:this.manager.pdas.configAccount(),peer:this.pdas.transceiverPeerAccount(e.chain)}).instruction(),i=this.postMessageShim?void 0: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,Bn.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=Pn.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=Pn.utils.getWormholeDerivedAccounts(this.program.programId,this.manager.core.address);return s=this.postMessageShim?this.pdas.wormholeMessageWithShimAccount(this.postMessageShim.programId):s,this.program.methods.broadcastWormholePeer({chainId:(0,ii.toChainId)(e)}).accounts({payer:t,config:this.manager.pdas.configAccount(),peer:this.pdas.transceiverPeerAccount(e),wormholeMessage:s,emitter:a.wormholeEmitter,wormhole:{bridge:a.wormholeBridge,feeCollector:a.wormholeFeeCollector,sequence:a.wormholeSequence,program:this.manager.core.address,...this.postMessageShim&&{postMessageShim:this.postMessageShim.programId,wormholePostMessageShimEa:Z(["__event_authority"],this.postMessageShim.programId)}}}).instruction()}async createReleaseWormholeOutboundIx(e,t,s){let[a,,,]=cn(this.version),i=Pn.utils.getWormholeDerivedAccounts(this.program.programId,this.manager.core.address),r=this.postMessageShim?this.pdas.wormholeMessageWithShimAccount(this.postMessageShim.programId):this.pdas.wormholeMessageAccount(t);return this.program.methods.releaseWormholeOutbound({revertOnDelay:s}).accounts({payer:e,config:{config:this.manager.pdas.configAccount()},outboxItem:t,wormholeMessage:r,emitter:i.wormholeEmitter,transceiver:this.manager.pdas.registeredTransceiver(this.program.programId),wormhole:{bridge:i.wormholeBridge,feeCollector:i.wormholeFeeCollector,sequence:i.wormholeSequence,program:this.manager.core.address,...this.postMessageShim&&{postMessageShim:this.postMessageShim.programId,wormholePostMessageShimEa:Z(["__event_authority"],this.postMessageShim.programId)}},...a>=3&&{manager:this.manager.program.programId,outboxItemSigner:this.pdas.outboxItemSigner()}}).instruction()}},bs=class n{network;chain;connection;contracts;version;core;pdas;program;config;addressLookupTable;transceivers;managerAddress;tokenAddress;constructor(e,t,s,a,i="3.0.0"){if(this.network=e,this.chain=t,this.connection=s,this.contracts=a,this.version=i,!a.ntt)throw new Error("Ntt contracts not found");this.program=fs(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 ys(this,Gs(s,a.ntt.manager,i,!a.ntt.svmShims),i,a.ntt.svmShims);this.transceivers.push(g.program)}else this.transceivers.push(Gs(s,a.ntt.transceiver[o],i,!a.ntt.svmShims))}),this.managerAddress=a.ntt.manager,this.tokenAddress=a.ntt.token,this.core=new Pn.SolanaWormholeCore(e,t,s,a),this.pdas=z.pdas(this.program.programId)}async getTransceiver(e){let t=this.transceivers[e]??null;return t&&e===0?new ys(this,t,this.version,this.contracts.ntt.svmShims):null}async getWormholeTransceiver(){return this.getTransceiver(0)}async getMode(){return(await this.getConfig()).mode.locking!=null?"locking":"burning"}async isPaused(){return(await this.getConfig()).paused}async*pause(e){let t=new G.SolanaAddress(e).unwrap(),s=await z.createSetPausedInstruction(this.program,{owner:t,paused:!0}),a=new 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,Bn.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 En.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),W=[...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:W,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 N=await this.getWormholeTransceiver();if(!N)throw new Error("Wormhole transceiver not found");let W=N.createReleaseWormholeOutboundIx(o,i.publicKey,!a.queue);A.push(W)}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(),N=await o.verifyVaaShim.methods.postSignatures(r.guardianSet,r.signatures.length,r.signatures.map($=>[$.guardianIndex,...$.signature.encode()])).accounts({payer:c,guardianSignatures:M.publicKey}).instruction(),W=new E.Transaction;W.feePayer=c,W.add(N),yield this.createUnsignedTx({transaction:W,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 En.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 En.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 zo,jo=Y(()=>{zo={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 $o,Yo=Y(()=>{$o={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 ci,Rt,q,Jo,As,Ys,ws,mi=Y(()=>{ci=require("@coral-xyz/anchor"),Rt=require("@solana/spl-token"),q=require("@solana/web3.js"),Jo=require("@wormhole-foundation/sdk-base"),As=require("@wormhole-foundation/sdk-solana"),Ys=_n(require("bn.js"),1);jo();Yo();zs();ws=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 As.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 As.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(),N=(0,Rt.getAssociatedTokenAddressSync)(F,k,!0,M),W=(0,Rt.getAssociatedTokenAddressSync)(F,o,!0,M);await this.connection.getAccountInfo(N)||A.instructions.push((0,Rt.createAssociatedTokenAccountIdempotentInstruction)(o,N,k,F,M));let $=await(0,Rt.getMint)(this.connection,F,void 0,M);A.instructions.push((0,Rt.createTransferCheckedInstruction)(W,F,N,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 ci.Program($o,this.nttWithExecutorProgramId,{connection:this.connection}),S=new q.PublicKey(this.contracts.ntt.manager),B=q.PublicKey.findProgramAddressSync([Buffer.from("peer"),mn(t.chain)],S)[0];if(A.instructions.push(await x.methods.relayNttMesage({execAmount:new Ys.default(a.estimatedCost.toString()),recipientChain:(0,Jo.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 ci.Program(zo,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[W]=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 Ys.default($).toArrayLike(Buffer,"le",8)],q.AddressLookupTableProgram.programId),[Je]=await q.PublicKey.findProgramAddressSync([Buffer.from("lut"),S.toBuffer()],k.programId),Dt=await k.methods.initializeLut(new Ys.default($)).accounts({nttProgramId:S,nttConfig:W,authority:I,lutAddress:Ke,lut:Je,lutProgram:q.AddressLookupTableProgram.programId,systemProgram:q.SystemProgram.programId,payer:o}).instruction(),Gt=new q.TransactionMessage({payerKey:o,recentBlockhash:(await this.connection.getLatestBlockhash("finalized")).blockhash,instructions:[Dt]}).compileToV0Message();yield i.createUnsignedTx({transaction:new q.VersionedTransaction(Gt)},"NttSvmLut.InitializeLut"),console.debug(`initialized lookup table: ${f}`);let we=0;for(;!M&&we<10;)await new Promise(l=>setTimeout(l,2e3)),M=await k.account.lut.fetchNullable(F),we++}let N=await this.connection.getAddressLookupTable(M.address);if(!N.value)throw new Error("unable to fetch lookup table");y.push(N.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 As.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 Qo=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 su(){(0,Zo.register)(),(0,ts.protocolIsRegistered)(xs._platform,"Ntt")||(0,ts.registerProtocol)(xs._platform,"Ntt",bs),(0,ts.protocolIsRegistered)(xs._platform,"NttWithExecutor")||(0,ts.registerProtocol)(xs._platform,"NttWithExecutor",ws)}var ts,xs,Zo,ec=Y(()=>{ts=require("@wormhole-foundation/sdk-definitions"),xs=require("@wormhole-foundation/sdk-solana");oi();mi();Zo=require("@wormhole-foundation/sdk-definitions-ntt");Qo();oi();mi()});var tc={};yn(tc,{IdlVersions:()=>Ks,NTT:()=>z,SolanaNtt:()=>bs,SolanaNttWithExecutor:()=>ws,SolanaNttWormholeTransceiver:()=>ys,_1_0_0:()=>us,_2_0_0:()=>ds,_3_0_0:()=>ls,getNttProgram:()=>fs,getTransceiverProgram:()=>Gs,register:()=>su});var nc=Y(()=>{ec();si()});var cd={};yn(cd,{HydrationConfigService:()=>wa,assetsMap:()=>Mi,builders:()=>di,chainsMap:()=>Vi,clients:()=>Ya,dex:()=>ki,routesMap:()=>_c,tags:()=>li,validations:()=>Fc});module.exports=$c(cd);var T=require("@galacticcouncil/xc-core"),Pe=new T.Asset({key:"aave",originSymbol:"AAVE"}),xa=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"}),Sa=new T.Asset({key:"bsx",originSymbol:"BSX"}),Be=new T.Asset({key:"cfg_new",originSymbol:"CFG"}),ka=new T.Asset({key:"cru",originSymbol:"CRU"}),Ft=new T.Asset({key:"dai",originSymbol:"DAI"}),qt=new T.Asset({...Ft,key:"dai_wh"}),P=new T.Asset({key:"dot",originSymbol:"DOT"}),U=new T.Asset({key:"eth",originSymbol:"ETH"}),Le=new T.Asset({key:"ena",originSymbol:"ENA"}),Ct=new T.Asset({key:"eurc",originSymbol:"EURC"}),Xt=new T.Asset({...Ct,key:"eurc_wh"}),mt=new T.Asset({key:"glmr",originSymbol:"GLMR"}),Dn=new T.Asset({key:"hdx",originSymbol:"HDX"}),ae=new T.Asset({key:"ibtc",originSymbol:"IBTC"}),et=new T.Asset({key:"intr",originSymbol:"INTR"}),ut=new T.Asset({key:"jitoSol",originSymbol:"jitoSOL"}),D=new T.Asset({key:"ksm",originSymbol:"KSM"}),Re=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"}),yt=new T.Asset({key:"neuro",originSymbol:"NEURO"}),tt=new T.Asset({key:"pen",originSymbol:"PEN"}),Fe=new T.Asset({key:"paxg",originSymbol:"PAXG"}),dt=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"}),Oe=new T.Asset({key:"susde",originSymbol:"sUSDe"}),bt=new T.Asset({key:"susds",originSymbol:"sUSDS"}),zt=new T.Asset({...bt,key:"susds_wh"}),Ve=new T.Asset({key:"tbtc",originSymbol:"tBTC"}),Ne=new T.Asset({key:"trac",originSymbol:"TRAC"}),At=new T.Asset({key:"unq",originSymbol:"UNQ"}),C=new T.Asset({key:"usdt",originSymbol:"USDT"}),jt=new T.Asset({...C,key:"usdt_wh"}),Ot=new T.Asset({...C,key:"usdt_eth"}),L=new T.Asset({key:"usdc",originSymbol:"USDC"}),$t=new T.Asset({...L,key:"usdc_wh"}),Vt=new T.Asset({...L,key:"usdc_eth"}),de=new T.Asset({key:"vastr",originSymbol:"vASTR"}),le=new T.Asset({key:"vdot",originSymbol:"vDOT"}),Nt=new T.Asset({key:"weth",originSymbol:"WETH"}),Ht=new T.Asset({...Nt,key:"weth_wh"}),wt=new T.Asset({key:"wbtc",originSymbol:"WBTC"}),Yt=new T.Asset({...wt,key:"wbtc_wh"}),He=new T.Asset({key:"wsteth",originSymbol:"wstETH"}),Ut=new T.Asset({key:"wud",originSymbol:"WUD"}),Yc=[Pe,xa,Ee,j,Sa,Be,ka,K,Ft,qt,P,Le,Ct,Xt,U,mt,Dn,ae,et,D,Re,_e,ze,ut,De,te,yt,Fe,tt,dt,Xe,je,nt,Oe,bt,zt,Ne,Ve,At,L,$t,Vt,C,jt,Ot,de,le,wt,Yt,Nt,Ht,He,Ut],Mi=new Map(Yc.map(n=>[n.key,n]));var Fn=require("@galacticcouncil/xc-core");var Ii=require("viem/chains"),Xn=new Fn.EvmChain({id:8453,key:"base",name:"Base",assetsData:[{asset:U,decimals:18,id:"0x4200000000000000000000000000000000000006"},{asset:Ct,decimals:6,id:"0x60a3e35cc302bfa44cb288bc5a4f316fdb1adb42"},{asset:L,decimals:6,id:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}],balance:Fn.EvmBalanceType.Erc20,ecosystem:Fn.ChainEcosystem.Ethereum,evmChain:Ii.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:{[Ct.key]:{token:"0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42",manager:"0xD1dc3517732c98502b5c1ba2389AcA9E9016d89a",transceiver:{wormhole:"0xa84b362290b0CFdB55e877dfc633284091e0B3F7"}}}}});var bn=require("@galacticcouncil/xc-core");var Ti=require("viem/chains"),R=new bn.EvmChain({id:1,key:"ethereum",name:"Ethereum",assetsData:[{asset:U,decimals:18,id:"0x0000000000000000000000000000000000000000"},{asset:Pe,decimals:18,id:"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"},{asset:Ee,decimals:18,id:"0x38eeb52f0771140d10c4e9a9a72349a329fe8a6a"},{asset:Be,decimals:18,id:"0xcccccccccc33d538dbc2ee4feab0a7a1ff4e8a94"},{asset:Nt,decimals:18,id:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"},{asset:Ft,decimals:18,id:"0x6B175474E89094C44Da98b954EedeAC495271d0F"},{asset:Le,decimals:18,id:"0x57e114b691db790c35207b2e685d4a43181e6061"},{asset:Oe,decimals:18,id:"0x9d39a5de30e57443bff2a8307a4256c8797a3497"},{asset:bt,decimals:18,id:"0xa3931d71877c0e7a3148cb7eb4463524fec27fbd"},{asset:Ve,decimals:18,id:"0x18084fba666a33d37592fa2633fd49a74dd93a88"},{asset:wt,decimals:8,id:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"},{asset:_e,decimals:8,id:"0x8236a87084f8b84306f72007f36f2618a5634494"},{asset:L,decimals:6,id:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"},{asset:C,decimals:6,id:"0xdAC17F958D2ee523a2206206994597C13D831ec7"},{asset:Re,decimals:18,id:"0x5a98fcbea516cf06857215779fd812ca3bef1b32"},{asset:De,decimals:18,id:"0x514910771af9ca656af840dff83e8264ecf986ca"},{asset:Fe,decimals:18,id:"0x45804880de22913dafe09f4980848ece6ecbaf78"},{asset:Xe,decimals:18,id:"0x56072c95faa701256059aa122697b133aded9279"},{asset:Ne,decimals:18,id:"0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F"},{asset:He,decimals:18,id:"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"}],balance:bn.EvmBalanceType.Erc20,balanceOverrides:{[U.key]:bn.EvmBalanceType.Native},ecosystem:bn.ChainEcosystem.Ethereum,evmChain:Ti.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:{[Ft.key]:{token:"0x6B175474E89094C44Da98b954EedeAC495271d0F",manager:"0x804F123f75cCa0A9c0Cba341F82f4A4DA86a5259",transceiver:{wormhole:"0x99673a01C5779Ebf59399B4B228c1825c0113571"}},[bt.key]:{token:"0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD",manager:"0x5085A4863f89eC9553F70187EE73B5aAe0fd14b5",transceiver:{wormhole:"0x7C236d237BEbBE1b7902131B31b7b3270005a810"}},[L.key]:{token:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",manager:"0x447b2c7485A3d6813F8197E605b10BcCD8dd8398",transceiver:{wormhole:"0xA108BD5dBc6CE665aEbB6895351e0609c76F8EFc"}},[C.key]:{token:"0xdAC17F958D2ee523a2206206994597C13D831ec7",manager:"0x9fbd9F16cE7Fa17097E91cc36DC1B7b47aDCa9De",transceiver:{wormhole:"0x45c566f6595CF93e639E77cc1bbE57A8D27901c2"}},[wt.key]:{token:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",manager:"0x081b76AC3cFb65DCe93961d66cea44A74EC8Ef28",transceiver:{wormhole:"0x3FE8fBB8505c8dB2264f6Ebc5559c7C2b2647218"}},[Nt.key]:{token:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",manager:"0x283B14B5Dd352e32154Df014EA96834F395E04b6",transceiver:{wormhole:"0xbA0Cd32131b8206AF4feB79A1A3aaF0AEfe18b48"}},[U.key]:{token:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",manager:"0x283B14B5Dd352e32154Df014EA96834F395E04b6",transceiver:{wormhole:"0xbA0Cd32131b8206AF4feB79A1A3aaF0AEfe18b48"}}}}});var Ci=[Xn,R];var lt=require("@galacticcouncil/xc-core");var Pi={assetsData:[{asset:P,decimals:10,id:0,xcmLocation:{parents:1,interior:"Here"}},{asset:C,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:Ut,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:lt.SubstrateBalanceType.Assets,balanceOverrides:{[P.key]:lt.SubstrateBalanceType.System,[D.key]:lt.SubstrateBalanceType.ForeignAssets,[te.key]:lt.SubstrateBalanceType.ForeignAssets},min:lt.SubstrateMinType.Assets,ecosystem:lt.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 lt.Parachain({...Pi,key:"assethub",name:"AssetHub Polkadot"}),Jt=new lt.Parachain({...Pi,key:"assethub_cex",name:"AssetHub (CEX)",usesSignerFee:!0,isTestChain:!0,balanceOverrides:{}});var An=require("@galacticcouncil/xc-core");var Se=new An.Parachain({assetsData:[{asset:j,xcmLocation:{parents:0,interior:"Here"}},{asset:P,id:"340282366920938463463374607431768211455",decimals:10,min:1e-4,xcmLocation:{parents:1,interior:"Here"}},{asset:C,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:mt,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:An.SubstrateBalanceType.Assets,balanceOverrides:{[j.key]:An.SubstrateBalanceType.System},ecosystem:An.ChainEcosystem.Polkadot,explorer:"https://astar.subscan.io",genesisHash:"0x9eb76c5184c4ab8679d2d5d819fdf90b9c001403e9e17da2e14b6d8aec4029c6",key:"astar",name:"Astar",parachainId:2006,ss58Format:5,ws:"wss://rpc.astar.network"});var wn=require("@galacticcouncil/xc-core");var Jc=["wss://bifrost-polkadot.ibp.network","wss://eu.bifrost-polkadot-rpc.liebi.com/ws","wss://bifrost-polkadot.dotters.network"],ne=new wn.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:P,id:{Token2:0},decimals:10,min:1e-4,xcmLocation:{parents:1,interior:"Here"}},{asset:C,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:mt,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:wn.SubstrateBalanceType.Tokens,balanceOverrides:{[K.key]:wn.SubstrateBalanceType.System},ecosystem:wn.ChainEcosystem.Polkadot,explorer:"https://bifrost.subscan.io",genesisHash:"0x262e1b2ad728475fd6fe88e62d34c200abe6fd693931ddad144059b1eb884e5b",key:"bifrost",name:"Bifrost",parachainId:2030,ss58Format:6,ws:Jc});var xn=require("@galacticcouncil/xc-core"),Ri=require("viem");var Bi=require("@galacticcouncil/common"),Li=require("polkadot-api"),{isEvmAccount:Qc,H160:Ei}=Bi.h160,Es=class{async toH160(e,t){if(Qc(e))return Ei.fromAccount(e);let s=Ei.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,Li.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 Zc=new Es,va=["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"],Ma=["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"],em=(0,Ri.defineChain)({id:222222,name:"Hydration",network:"hydration",nativeCurrency:{decimals:18,name:"WETH",symbol:"WETH"},rpcUrls:{public:{http:va,webSocket:Ma},default:{http:va,webSocket:Ma}},blockExplorers:{default:{name:"Hydration Explorer",url:"https://hydration.subscan.io"}},testnet:!1}),v=new xn.EvmParachain({assetsData:[{asset:Dn,id:0,xcmLocation:{parents:0,interior:{X1:[{GeneralIndex:0}]}}},{asset:Pe,decimals:18,id:1000624,min:6e-5,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"}}]}}},{asset:xa,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:ka,decimals:12,id:27,min:.0079,xcmLocation:{parents:1,interior:{X1:{Parachain:2008}}}},{asset:P,decimals:10,id:5,min:.0018,xcmLocation:{parents:1,interior:"Here"}},{asset:qt,decimals:18,id:18,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f"}}]}}},{asset: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:Le,decimals:18,id:38,min:.037,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x57e114b691db790c35207b2e685d4a43181e6061"}}]}}},{asset:mt,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:ut,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:dt,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:Re,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:yt,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:Oe,decimals:18,id:1000625,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x9d39a5de30e57443bff2a8307a4256c8797a3497"}}]}}},{asset:bt,decimals:18,id:1000626,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xa3931d71877c0e7a3148cb7eb4463524fec27fbd"}}]}}},{asset:zt,decimals:18,id:1000745,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000a3931d71877c0e7a3148cb7eb4463524fec27fbd"}}]}}},{asset:Ve,decimals:18,id:1000765,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x18084fba666a33d37592fa2633fd49a74dd93a88"}}]}}},{asset:Ne,decimals:18,id:35,min:.028,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F"}}]}}},{asset:At,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:$t,decimals:6,id:21,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"}}]}}},{asset:Xt,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:C,decimals:6,id:10,min:.01,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}},{asset:jt,decimals:6,id:23,min:.01,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7"}}]}}},{asset:Ot,decimals:6,id:1000767,min:.01,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0xdac17f958d2ee523a2206206994597c13d831ec7"}}]}}},{asset: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:wt,decimals:8,id:1000190,min:23e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"}}]}}},{asset:Yt,decimals:8,id:19,min:34e-8,xcmLocation:{parents:0,interior:{X3:[{GeneralKey:{length:2,data:"0x7768000000000000000000000000000000000000000000000000000000000000"}},{GeneralIndex:2},{GeneralKey:{length:32,data:"0x0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599"}}]}}},{asset:Nt,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:He,decimals:18,id:1000809,min:635e-8,xcmLocation:{parents:2,interior:{X2:[{GlobalConsensus:{Ethereum:{chain_id:1}}},{AccountKey20:{network:null,key:"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"}}]}}},{asset:Ut,decimals:10,id:1000085,min:2e4,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:31337}]}}}],balance:xn.SubstrateBalanceType.Tokens,balanceOverrides:{[Dn.key]:xn.SubstrateBalanceType.System},ecosystem:xn.ChainEcosystem.Polkadot,evmChain:em,evmResolver:Zc,explorer:"https://hydration.subscan.io",genesisHash:"0xafdc188f45c71dacbaa0b62e16a91f726c7b8699a9748cdf715459de6b7f366d",key:"hydration",name:"Hydration",parachainId:2034,ss58Format:63,wormhole:{id:73,coreBridge:"0x3792a6d63c31941B2805181771795D9176fA82A1",executor:"0xd633d8d1ceee8c8252196d44857c0f41b8dcb0d9",ntt:{[qt.key]:{token:"0x0000000000000000000000000000000100000012",manager:"0xcFd576F88C90844AEBF45378Fd09931281D8b14d",transceiver:{wormhole:"0xe8660CA48f6f4D98BC48DB7Dd07C1a8E555801eA"}},[Xt.key]:{token:"0x000000000000000000000000000000010000002C",manager:"0x8dd1286A29dF5a2785FB638d6fB1598144Cfbc4C",transceiver:{wormhole:"0x2e84fac378D67Dc2e11026fB4919E80263a87375"}},[ut.key]:{token:"0x0000000000000000000000000000000100000028",manager:"0xcE73C15B9ED02413066DE5B904A36F8e8f9B5331",transceiver:{wormhole:"0xF38D9C3bA6999Dc331b32B416083Fd7e02D17B04"}},[dt.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"}},[zt.key]:{token:"0x00000000000000000000000000000001000F4529",manager:"0x1973E7044d9A7C7bB2d6ea1693A296a9e4B7E448",transceiver:{wormhole:"0x68Ecadd7934D4FcFEABAfB209C95D379B96400cb"}},[$t.key]:{token:"0x0000000000000000000000000000000100000015",manager:"0xEcEab64542A875C4472671D9Ed1E690cdD4e28fC",transceiver:{wormhole:"0x0d7488B39AA64468a709eC3b3d354DeFE539eD97"}},[jt.key]:{token:"0x0000000000000000000000000000000100000017",manager:"0x5E6C488103b47F804824AE15861638af4C436795",transceiver:{wormhole:"0xd2a16B736F32Df7C0DE72838837656FE0f85Ac0F"}},[Yt.key]:{token:"0x0000000000000000000000000000000100000013",manager:"0x6BFca089916c045b0Ca4A09B655aF9F926189993",transceiver:{wormhole:"0x9a8a1ab288f6749Ce5626DEE1B5d59441BdC187F"}},[Ht.key]:{token:"0x0000000000000000000000000000000100000014",manager:"0xB5cEf790D52A57fa619eD96eDd64c5328F3DCFb7",transceiver:{wormhole:"0x8acce9CA511d5D7213F8C3f813B8916087cd00ae"}}}},ws:Ma,rpcs:va});var On=require("@galacticcouncil/xc-core");var Qt=new On.Parachain({assetsData:[{asset:te,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:On.SubstrateBalanceType.System,ecosystem:On.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 Vn=require("@galacticcouncil/xc-core");var Nn=new Vn.Parachain({assetsData:[{asset:yt,xcmLocation:{parents:0,interior:{X1:{PalletInstance:10}}}}],balance:Vn.SubstrateBalanceType.System,ecosystem:Vn.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 Zt=require("@galacticcouncil/xc-core");var Hn=new Zt.Parachain({assetsData:[{asset:tt,id:"Native",xcmLocation:{parents:0,interior:{X1:{PalletInstance:10}}}}],balance:Zt.SubstrateBalanceType.System,ecosystem:Zt.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:Zt.XcmVersion.v3});var Un=require("@galacticcouncil/xc-core");var tm={assetsData:[{asset:P,xcmLocation:{parents:0,interior:"Here"}}],balance:Un.SubstrateBalanceType.System,ecosystem:Un.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"},_i=new Un.Parachain({...tm,key:"polkadot"});var Wn=require("@galacticcouncil/xc-core");var Kn=new Wn.Parachain({assetsData:[{asset:At,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 en=require("@galacticcouncil/xc-core");var Gn=new en.Parachain({assetsData:[{asset:ze,id:0,xcmLocation:{parents:0,interior:"Here"}}],balance:en.SubstrateBalanceType.System,ecosystem:en.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:en.XcmVersion.v3});var Di=[X,Jt,Se,ne,v,Nn,Qt,Hn,_i,Kn,Gn];var Sn=require("@galacticcouncil/xc-core");var tn=new Sn.SolanaChain({id:101,key:"solana",name:"Solana",assetsData:[{asset:je,decimals:9},{asset:ut,id:"J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",decimals:9},{asset:dt,id:"3b8X44fLF9ooXaUm3hhSgjpmVs6rZZ3pPoGnGahc3Uu7",decimals:6}],balance:Sn.SolanaBalanceType.Token,balanceOverrides:{[je.key]:Sn.SolanaBalanceType.Native},ecosystem:Sn.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"},[ut.key]:{token:"J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",manager:"9HFvXujdkXubvmf93gyzkH1g3VPowDrmp85sWsfdcBTh",transceiver:{wormhole:"HgxvrPomT84AxgxknddAcC1iW9ysqHxmeoiKNZmQcovs"},emitter:"9Ss1eMHE8iDv9kCxERH5nabp9tx75AVoUWWEKaGgMrh9"},[dt.key]:{token:"3b8X44fLF9ooXaUm3hhSgjpmVs6rZZ3pPoGnGahc3Uu7",manager:"4T5m5NtRVewiCVzP2mnfeUoMYRqncfkrS21X2dhVCNRT",transceiver:{wormhole:"GiTY93vtrK4jZZchrxdV9r28JByRs7Ary2rsTPyPabJc"},emitter:"HuvSXe6hQaSMgo5dc8GYzavcS3aB4Bix9XYgVdfsq2sY"}},platformAddressFormat:"base58"}});var Fi=[tn];var qn=require("@galacticcouncil/xc-core");var zn=new qn.SuiChain({id:"0x35834a8a",key:"sui",name:"Sui",assetsData:[{asset:nt,decimals:9}],balance:qn.SuiBalanceType.Native,ecosystem:qn.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 Xi=[zn];var Pt=require("@galacticcouncil/xc-core");var xt=new Pt.Parachain({assetsData:[{asset:D,decimals:12,id:0,xcmLocation:{parents:1,interior:"Here"}},{asset:P,decimals:10,min:.001,xcmLocation:{parents:2,interior:{X1:[{GlobalConsensus:"Polkadot"}]}}},{asset:C,decimals:6,id:1984,xcmLocation:{parents:1,interior:{X2:[{PalletInstance:50},{GeneralIndex:1984}]}}}],balance:Pt.SubstrateBalanceType.Assets,balanceOverrides:{[D.key]:Pt.SubstrateBalanceType.System,[P.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 jn=require("@galacticcouncil/xc-core");var $n=new jn.Parachain({assetsData:[{asset:Sa,id:0,xcmLocation:{parents:0,interior:"Here"}},{asset:D,decimals:12,id:1,xcmLocation:{parents:1,interior:"Here"}},{asset:C,decimals:6,id:14,xcmLocation:{parents:1,interior:{X3:[{Parachain:1e3},{PalletInstance:50},{GeneralIndex:1984}]}}}],balance:jn.SubstrateBalanceType.Tokens,ecosystem:jn.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 Oi=[xt,$n];var nm=[...Ci,...Di,...Fi,...Xi,...Oi],Vi=new Map(nm.map(n=>[n.key,n]));var dc=require("@galacticcouncil/xc-core");var fi=require("@galacticcouncil/xc-core");var di={};yn(di,{ContractBuilder:()=>at,ExtrinsicBuilder:()=>w,ExtrinsicDecorator:()=>rn,FeeAmountBuilder:()=>V,FeeAssetBuilder:()=>ms,MoveBuilder:()=>Ja,ProgramBuilder:()=>ui,XcmTransferType:()=>it,XcmVersion:()=>Et});var kn=require("@galacticcouncil/xc-core"),Ni=require("viem"),sm=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,Ni.encodeFunctionData)({abi:kn.Abi[r.module],functionName:r.func,args:r.args}));return new kn.ContractConfig({abi:kn.Abi.Batch,address:kn.Precompile.Batch,args:[s,a,i,[]],func:"batchAll",module:"Batch"})}}),Hi=()=>({batchAll:sm});var Yn=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 vn(n){return typeof n=="object"?Object.values(n)[0]:n}function Ui(){return{approve:n=>({build:async e=>{let{amount:t,asset:s,source:a,transact:i}=e,r=i?i.chain:a.chain,o=Yn.Wormhole.fromChain(r),c=r.getAssetId(s);return new Yn.ContractConfig({abi:Yn.Abi.Erc20,address:vn(c).toString(),args:[n(o),t],func:"approve",module:"Erc20"})}})}}var Jn=require("@galacticcouncil/xc-core");var Wi=require("@galacticcouncil/common"),Ki=require("polkadot-api"),Gi=require("@polkadot-api/utils"),{H160:am,isEvmAddress:im}=Wi.h160;function rm(n){let e=im(n)?am.toAccount(n):n;return(0,Gi.toHex)((0,Ki.AccountId)().enc(e))}var om=()=>({build:async n=>{let{address:e,amount:t,asset:s,source:a}=n,i=a.chain,r=Jn.Basejump.fromChain(i),o=i.getAssetId(s);return new Jn.ContractConfig({abi:Jn.Abi.Basejump,address:r.getAddress(),args:[vn(o),t,rm(e)],func:"bridgeViaWormhole",module:"Basejump"})}}),qi=()=>({bridgeViaWormhole:om});var St=require("@galacticcouncil/xc-core"),ji=require("@galacticcouncil/common"),{Ss58Addr:zi}=St.addr;function cm(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 Ia(n,e){let t=n.getAssetId(e);return typeof t=="string"?cm(t):t}function $i(){return{transferAssetsToPara32:()=>({build:async({address:n,amount:e,asset:t,destination:s,source:a})=>{let i=Ia(a.chain,t);return new St.ContractConfig({abi:St.Abi.PolkadotXcm,address:St.Precompile.PolkadotXcm,args:[s.chain.parachainId,zi.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=Ia(a.chain,t),r=Ia(a.chain,a.destinationFeeBalance),o=ji.big.toBigInt(s.fee.amount,s.fee.decimals);return new St.ContractConfig({abi:St.Abi.PolkadotXcm,address:St.Precompile.PolkadotXcm,args:[s.chain.parachainId,zi.getPubKey(n),[{asset:i,amount:e},{asset:r,amount:o}],1],func:"transferAssetsToPara32",module:"PolkadotXcm"})}})}}var vt=require("@galacticcouncil/xc-core"),sn=require("@galacticcouncil/descriptors"),or=require("@polkadot-api/substrate-bindings"),Rs=require("@polkadot-api/utils"),cr=require("viem");var Yi=require("@galacticcouncil/xc-core"),Bs=null;async function Ji(){if(Bs)return Bs;let n=await Yi.codec.getHubCodecs();return Bs={message:n.tx.PolkadotXcm.send.inner.message,location:n.tx.PolkadotXcm.send.inner.dest},Bs}var nr=require("@galacticcouncil/xc-core"),h=require("@galacticcouncil/descriptors"),sr=require("@polkadot-api/substrate-bindings"),ar=require("@polkadot-api/utils");var Qi=require("@galacticcouncil/descriptors"),ge=340282366920938463463374607431768211455n,kt="0x0000000000000000000000000000000000000000000000000000000000000000",me={parents:1,interior:Qi.XcmV3Junctions.Here()},Zi=0,nn=1e3,Ls=1002,ft=1,Mn="5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY",er="0x0000000000000000000000000000000000000000000000000000000000000000",tr="0x0000000000000000000000000000000000000000";var Ta="0x0000000000000000000000000000000000000000",Qn=n=>({parents:2,interior:h.XcmV5Junctions.X1(h.XcmV5Junction.GlobalConsensus(h.XcmV5NetworkId.Ethereum({chain_id:BigInt(n)})))}),Ca=(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 ir(n,e){let t=Qn(n),s=Ca(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=Pa({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 Pa(n){let{ethChainId:e,destinationParaId:t,tokenAddress:s,beneficiaryHex:a,tokenAmount:i,hydrationDotFee:r,topic:o}=n,c=Qn(e),m=s===Ta?c:Ca(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 Ea(n){let{tokenAddress:e,senderPubKey:t,beneficiaryHex:s,tokenAmount:a,sourceExecutionFee:i,dotRemoteFee:r,dotToEtherSwapAmount:o,etherFeeAmount:c,topic:m}=n,g=Qn(ft),f=e===Ta?g:Ca(ft,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(ft)})))},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,N=[{id:me,fun:h.XcmV3MultiassetFungibility.Fungible(M)},{id:f,fun:h.XcmV3MultiassetFungibility.Fungible(a)}],W=[{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(N),h.XcmV5Instruction.PayFees({asset:W[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(nn))},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 rr(n){let{address:e,amount:t,asset:s,sender:a,source:i,destination:r,messageId:o}=n,c=i.chain,m=(0,sr.getSs58AddressInfo)(a);if(!m.isValid)throw new Error(`Invalid SS58 address: ${a}`);let g=(0,ar.toHex)(m.publicKey),f=c.getAssetXcmLocation(s),y=f?nr.multiloc.findNestedKey(f,"key"):void 0,A=y?y.key:Ta,x=r.feeBreakdown,S=x.sourceExecutionFee??0n,B=x.dotRemoteFee??0n,k=x.dotToEtherSwapAmount??0n,F=x.etherFeeAmount??0n,N=Ea({tokenAddress:A,senderPubKey:g,beneficiaryHex:e,tokenAmount:t,sourceExecutionFee:S,dotRemoteFee:B,dotToEtherSwapAmount:k,etherFeeAmount:F,topic:o??"0x0000000000000000000000000000000000000000000000000000000000000000"});return h.XcmVersionedXcm.V5(N)}var{Ss58Addr:mr}=vt.addr,mm="0x0000000000000000000000000000000000000000",um=()=>({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.Snowbridge.fromChain(o),g=o.getAssetId(s),f=vn(g),y=s.originSymbol==="ETH",A=r.feeBreakdown.executionFee,x=r.feeBreakdown.relayerFee,S=r.feeBreakdown.hydrationDotFee,B=r.fee.amount,k=mr.getPubKey(e),F=new TextEncoder().encode(`${c.parachainId}${a}${f}${k}${t}${Date.now()}`),M=(0,Rs.toHex)((0,or.Blake2256)(F)),N=Pa({ethChainId:ft,destinationParaId:c.parachainId,tokenAddress:y?mm:f,beneficiaryHex:k,tokenAmount:t,hydrationDotFee:S,topic:M}),W=await Ji(),I=(0,Rs.toHex)(W.message.enc(sn.XcmVersionedXcm.V5(N))),$=[];y||$.push((0,cr.encodeAbiParameters)([{type:"uint8"},{type:"address"},{type:"uint128"}],[0,f,t]));let Ke=W.location.enc(sn.XcmVersionedLocation.V5({parents:0,interior:sn.XcmV5Junctions.X1(sn.XcmV5Junction.AccountId32({id:k,network:void 0}))})),Je=(0,Rs.toHex)(Ke.slice(1));return new vt.ContractConfig({abi:vt.Abi.Snowbridge,address:m.getGateway(),args:[I,$,Je,A,x],value:y?B+t:B,func:"v2_sendMessage",module:"Snowbridge"})}}),dm=()=>({build:async n=>{let{address:e,amount:t,asset:s,source:a,destination:i}=n,r=a.chain,o=i.chain,c=vt.Snowbridge.fromChain(r),m=r.getAssetId(s),g=vn(m),f=s.originSymbol==="ETH",y=i.feeBreakdown.bridgeFeeInDot,A=i.fee.amount;return new vt.ContractConfig({abi:vt.Abi.Snowbridge,address:c.getGateway(),args:[g,o.parachainId,[1,mr.getPubKey(e)],y,t],value:f?A+t:A,func:"sendToken",module:"Snowbridge"})}}),ur=()=>({v2SendMessage:um,sendToken:dm});var st=require("@galacticcouncil/xc-core"),lm="0x00",dr=8,fm=()=>({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(),lm],functionName:"quoteDeliveryPrice"}),A=f.getAssetDecimals(s)??0,x=t;if(A>dr){let S=10n**BigInt(A-dr);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"})}}),lr=()=>({transfer:fm});function fr(){return{Ntt:lr}}function at(){return{Batch:Hi,Erc20:Ui,Basejump:qi,PolkadotXcm:$i,Snowbridge:ur,Wormhole:fr}}var Ba=require("@galacticcouncil/common"),pr=require("@galacticcouncil/xc-core"),gr="AssetConversion",gm=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,Ba.encodeLocation)(c.getAssetXcmLocation(r)),g=(0,Ba.encodeLocation)(c.getAssetXcmLocation(o)),f=r.amount+r.amount*BigInt(n.slippage)/100n,y=o.amount;return new pr.ExtrinsicConfig({module:gr,func:e,getTx:A=>A.getUnsafeApi().tx[gr][e]({path:[m,g],amount_out:y,amount_in_max:f,send_to:t,keep_alive:!0})})}}},hr=()=>({swapTokensForExactTokens:gm});var _s=require("@galacticcouncil/descriptors"),yr=require("@galacticcouncil/xc-core"),pm="Assets",hm=()=>{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 yr.ExtrinsicConfig({module:pm,func:n,getTx:m=>m.getTypedApi(_s.hub).tx.Assets.transfer({id:Number(c),target:_s.MultiAddress.Id(s),amount:o})})}}},br=()=>({transfer:hm});var wr=require("@galacticcouncil/xc-core"),Ar="Balances",ym=(n=!1)=>{let e="transfer_all";return{build:async({address:t})=>new wr.ExtrinsicConfig({module:Ar,func:e,getTx:s=>s.getUnsafeApi().tx[Ar][e]({dest:t,keep_alive:n})})}},xr=()=>({transferAll:ym});var Sr=require("@galacticcouncil/descriptors"),kr=require("@galacticcouncil/xc-core"),bm="Router",Am=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 kr.ExtrinsicConfig({module:bm,func:"buy",getTx:A=>A.getTypedApi(Sr.hydration).tx.Router.buy({asset_in:Number(m),asset_out:Number(g),amount_out:f,max_amount_in:y,route:o})})}}),vr=()=>({buy:Am});var Ir=require("@galacticcouncil/xc-core"),Mr="Utility",wm=n=>{let e="batch_all";return{build:async t=>{let s=await Promise.all(n.map(a=>a.build(t)));return new Ir.ExtrinsicConfig({module:Mr,func:e,getTx:a=>{let i=s.map(r=>r.getTx(a).decodedCall);return a.getUnsafeApi().tx[Mr][e]({calls:i})}})}}},Tr=()=>({batchAll:wm});var Ds=require("@galacticcouncil/xc-core"),Pr=require("polkadot-api"),Er=require("viem");var Et=(i=>(i.v1="V1",i.v2="V2",i.v3="V3",i.v4="V4",i.v5="V5",i))(Et||{}),it=(a=>(a.Teleport="Teleport",a.LocalReserve="LocalReserve",a.DestinationReserve="DestinationReserve",a.RemoteReserve="RemoteReserve",a))(it||{});var Cr="EthereumXcm",xm=n=>{let e="transact";return{build:async t=>{let s=await n.build(t),a="V1",i=(0,Er.encodeFunctionData)({abi:Ds.Abi[s.module],functionName:s.func,args:s.args});return new Ds.ExtrinsicConfig({module:Cr,func:e,getTx:r=>r.getUnsafeApi().tx[Cr][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:Pr.Binary.fromHex(i),access_list:void 0}}})})}}},La=()=>({transact:xm});var Wt=require("@galacticcouncil/xc-core"),is=require("@galacticcouncil/common");var In=require("@galacticcouncil/xc-core"),b=require("@galacticcouncil/descriptors");var pe=require("@galacticcouncil/descriptors");var Br=require("@galacticcouncil/common"),Ra=require("@galacticcouncil/descriptors"),Lr=require("@polkadot-api/substrate-bindings"),Rr=require("@polkadot-api/utils");function re(n){if(n.length===42&&n.startsWith("0x"))return Ra.XcmV3Junction.AccountKey20({key:n,network:void 0});let t=(0,Lr.getSs58AddressInfo)(n);if(!t.isValid)throw new Error(`Invalid SS58 address: ${n}`);return Ra.XcmV3Junction.AccountId32({id:(0,Rr.toHex)(t.publicKey),network:void 0})}function Zn(n,e,t){return Br.acc.getMultilocationDerivatedAccount(n.parachainId,e,t.parachainId===0?0:1,t.usesH160Acc)}var _a=require("@galacticcouncil/xc-core");function _r(n,e){let t=_a.multiloc.findNestedKey(n,"GeneralIndex"),s=_a.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 Fs={};yn(Fs,{ETHER_TOKEN_ADDRESS:()=>Da,erc20Location:()=>km,erc20LocationReanchored:()=>vm,ethereumLocation:()=>Fr,parachainLocation:()=>Sm});var gt=require("@galacticcouncil/descriptors"),Da="0x0000000000000000000000000000000000000000",Dr=n=>gt.XcmV3Junction.GlobalConsensus(gt.XcmV3JunctionNetworkId.Ethereum({chain_id:BigInt(n)}));function Fr(n){return{parents:2,interior:gt.XcmV3Junctions.X1(Dr(n))}}function Sm(n){return{parents:1,interior:gt.XcmV3Junctions.X1(gt.XcmV3Junction.Parachain(n))}}function km(n,e){return e===Da?Fr(n):{parents:2,interior:gt.XcmV3Junctions.X2([Dr(n),gt.XcmV3Junction.AccountKey20({key:e})])}}function vm(n){return n===Da?{parents:0,interior:{type:"Here"}}:{parents:0,interior:gt.XcmV3Junctions.X1(gt.XcmV3Junction.AccountKey20({key:n}))}}var Fa=require("@galacticcouncil/common"),Xr=require("@galacticcouncil/xc-core");function ie(n,e){return Mm(e)>=4?(0,Fa.encodeLocation)(n):Im(n)}function Mm(n){let e=n.toString().replace("V","").replace("v","");return Number(e)}function Im(n){return{type:"Concrete",value:(0,Fa.encodeLocation)(n)}}var Tm=1e3;function Cm(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 Cm(n)?Tm:Xr.multiloc.findParachain(n)}function Or(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 Xs(n,e){let t="V4",s=ie(se(e,n),t),a=kt;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(Mn))}}),pe.XcmV4Instruction.SetTopic(a)]}var Bt=require("@galacticcouncil/descriptors");function Xa(n,e){let t="V4",s=ie(se(e,n),t),a=Os("V4",re(tr),re(Mn),s,kt);return[Bt.XcmV4Instruction.WithdrawAsset([{id:me,fun:Bt.XcmV3MultiassetFungibility.Fungible(ge)},{id:s,fun:Bt.XcmV3MultiassetFungibility.Fungible(ge)}]),Bt.XcmV4Instruction.ClearOrigin(),Bt.XcmV4Instruction.BuyExecution({fees:{id:me,fun:Bt.XcmV3MultiassetFungibility.Fungible(ge)},weight_limit:Bt.XcmV3WeightLimit.Unlimited()}),...a.value]}var O=require("@galacticcouncil/descriptors");function Vr(n,e){let t="V4",s=ie(se(e,n),t),a=kt;return[O.XcmV4Instruction.WithdrawAsset([{id:s,fun:O.XcmV3MultiassetFungibility.Fungible(ge)}]),O.XcmV4Instruction.ClearOrigin(),O.XcmV4Instruction.BuyExecution({fees:{id:s,fun:O.XcmV3MultiassetFungibility.Fungible(ge)},weight_limit:O.XcmV3WeightLimit.Unlimited()}),O.XcmV4Instruction.DepositAsset({assets:O.XcmV4AssetAssetFilter.Wild(O.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:O.XcmV3Junctions.X1(re(Mn))}}),O.XcmV4Instruction.SetTopic(a)]}function Oa(n,e){let t="V4",s=ie(se(e,n),t);return[O.XcmV4Instruction.BuyExecution({fees:{id:s,fun:O.XcmV3MultiassetFungibility.Fungible(ge)},weight_limit:O.XcmV3WeightLimit.Unlimited()}),O.XcmV4Instruction.DepositAsset({assets:O.XcmV4AssetAssetFilter.Wild(O.XcmV4AssetWildAsset.AllCounted(1)),beneficiary:{parents:0,interior:O.XcmV3Junctions.X1(re(Mn))}})]}function Nr(n,e,t){let s="V4",a=ie(se(e,n),s),i=kt,r=Oa(n,t);return[O.XcmV4Instruction.WithdrawAsset([{id:a,fun:O.XcmV3MultiassetFungibility.Fungible(ge)}]),O.XcmV4Instruction.ClearOrigin(),O.XcmV4Instruction.BuyExecution({fees:{id:a,fun:O.XcmV3MultiassetFungibility.Fungible(ge)},weight_limit:O.XcmV3WeightLimit.Unlimited()}),O.XcmV4Instruction.DepositReserveAsset({assets:O.XcmV4AssetAssetFilter.Wild(O.XcmV4AssetWildAsset.AllCounted(1)),dest:{parents:1,interior:O.XcmV3Junctions.X1(O.XcmV3Junction.Parachain(t.parachainId))},xcm:r}),O.XcmV4Instruction.SetTopic(i)]}var ue=require("@galacticcouncil/descriptors");function Hr(n,e){let t="V5",s=ie(se(e,n),t),a={parents:0,interior:ue.XcmV5Junctions.X1(ue.XcmV5Junction.AccountId32({id:er,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(kt)]}var Ur=[In.ChainEcosystem.Polkadot,In.ChainEcosystem.Kusama],Em={parents:1,interior:b.XcmV3Junctions.X1(b.XcmV3Junction.Parachain(1e3))},Bm=n=>{let{parents:e,interior:t}=n;return e!==1?!1:t==="Here"||t?.type==="Here"},Wr=(n,e)=>!n.ecosystem||!e.ecosystem?!1:Ur.includes(n.ecosystem)&&Ur.includes(e.ecosystem)&&n.ecosystem!==e.ecosystem,Kr=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},Lt=(n,e,t)=>{if(Wr(e,t))return{type:n,value:Va(t.ecosystem,t.parachainId)};if(t.parachainId===Zi)return{type:n,value:{parents:1,interior:b.XcmV3Junctions.Here()}};let s=t.key==="ethereum"?nn:t.parachainId;return{type:n,value:{parents:1,interior:b.XcmV3Junctions.X1(b.XcmV3Junction.Parachain(s))}}},Lm=n=>n===In.ChainEcosystem.Kusama?b.XcmV3JunctionNetworkId.Kusama():b.XcmV3JunctionNetworkId.Polkadot(),Va=(n,e)=>({parents:2,interior:b.XcmV3Junctions.X2([b.XcmV3Junction.GlobalConsensus(Lm(n)),b.XcmV3Junction.Parachain(e)])}),Gr=(n,e,t,s)=>{if(Wr(e,t)){if(e.parachainId!==nn){let a=In.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(nn))}},mode:i?"bridge-withdraw":"bridge-deposit"}}if(t.parachainId!==nn)return{dest:{type:n,value:Va(t.ecosystem,nn)},mode:"onward"}}},Tn=(n,e)=>({type:n,value:{parents:0,interior:b.XcmV3Junctions.X1(e)}}),Na=(n,e,t)=>e==="RemoteReserve"?{type:"RemoteReserve",value:{type:n,value:Bm(t)?Em:t}}:{type:e},an=(n,e)=>({id:n,fun:b.XcmV3MultiassetFungibility.Fungible(e)}),qr=(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)}})]}),Os=(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:Fs.ethereumLocation(ft),xcm:[b.XcmV4Instruction.BuyExecution({fees:{id:Rm(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)]}},zr=(n,e,t,s,a,i)=>{let r=s==="onward"?{parents:1,interior:b.XcmV3Junctions.X1(b.XcmV3Junction.Parachain(t.parachainId))}:Va(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]}},Rm=n=>{let e=In.multiloc.findNestedKey(n,"key");return e?{parents:0,interior:b.XcmV3Junctions.X1(b.XcmV3Junction.AccountKey20({key:e.key}))}:{parents:0,interior:b.XcmV3Junctions.Here()}},jr=(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)}})]}),$r=(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 ke="PolkadotXcm",_m=()=>({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=an(f,e),x=an(y,s.fee.amount),S="limited_reserve_transfer_assets";return new Wt.ExtrinsicConfig({module:ke,func:S,getTx:B=>{let k=B.getUnsafeApi().tx[ke][S];return t.key===s.fee.key?k({dest:Lt(c,r,o),beneficiary:Tn(c,i),assets:{type:c,value:[A]},fee_asset_item:0,weight_limit:{type:"Unlimited"}}):_r(m,g)?k({dest:Lt(c,r,o),beneficiary:Tn(c,i),assets:{type:c,value:[x,A]},fee_asset_item:0,weight_limit:{type:"Unlimited"}}):k({dest:Lt(c,r,o),beneficiary:Tn(c,i),assets:{type:c,value:[A,x]},fee_asset_item:1,weight_limit:{type:"Unlimited"}})}})}}),Dm=()=>({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=an(m,e),f=Lt(c,r,o),y=Tn(c,i),A={type:c,value:[g]},x="limited_teleport_assets";return new Wt.ExtrinsicConfig({module:ke,func:x,getTx:S=>S.getUnsafeApi().tx[ke][x]({dest:f,beneficiary:y,assets:A,fee_asset_item:0,weight_limit:{type:"Unlimited"}})})}}),Fm=()=>({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=an(m,e),f=Lt(c,r,o),y=Tn(c,i),A={type:c,value:[g]},x="reserve_transfer_assets";return new Wt.ExtrinsicConfig({module:ke,func:x,getTx:S=>S.getUnsafeApi().tx[ke][x]({dest:f,beneficiary:y,assets:A,fee_asset_item:0})})}}),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=an(m,e),f=Lt(c,r,o),y=Tn(c,i),A={type:c,value:[g]},x="transfer_assets";return new Wt.ExtrinsicConfig({module:ke,func:x,getTx:S=>S.getUnsafeApi().tx[ke][x]({dest:f,beneficiary:y,assets:A,fee_asset_item:0,weight_limit:{type:"Unlimited"}})})}}),Om=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=is.big.toBigInt(c.fee.amount,c.fee.decimals),A=c.fee);let x=re(r),S=c||f.usesCexForwarding?Zn(g,r,f):e,B=re(S),{transferType:k}=n,F=ie(se(g,t),m),M=ie(se(g,A),m),N=an(F,s),W=an(M,y),I=t.isEqual(A),$=Gr(m,g,f,t),Ke=$?.dest??Lt(m,g,f),Je={type:m,value:I?[N]:[W,N]},Dt=Na(m,k,F),Gt={type:m,value:I?F:M},we=Na(m,k,M),l;if(Kr(F)&&a.chain.isEvmChain())l=Os(m,B,x,F,i);else if($){let u=is.big.toBigInt(n.executionFee??a.fee.amount,a.fee.decimals),p=ie(se(f,t),m);l=zr(m,B,f,$.mode,p,u)}else l=qr(m,B,Je.value.length);let d="transfer_assets_using_type_and_then";return new Wt.ExtrinsicConfig({module:ke,func:d,getTx:u=>u.getUnsafeApi().tx[ke][d]({dest:Ke,assets:Je,assets_transfer_type:Dt,remote_fees_id:Gt,fees_transfer_type:we,custom_xcm_on_dest:l,weight_limit:{type:"Unlimited"}})})}}),Vm=()=>{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=Zn(o,s,c),g=re(m),{fee:f}=i,y=ie(se(c,f),r),A=is.big.toBigInt(e.fee,f.decimals);return new Wt.ExtrinsicConfig({module:ke,func:n,getTx:x=>x.getUnsafeApi().tx[ke][n]({dest:Lt(r,o,c),message:jr(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=Zn(g,r,f),A=re(y),x=re(a),S=ie(se(f,i),m),{fee:B}=c,k=is.big.toBigInt(e.fee,B.decimals),F=s>B.amount?s-(B.amount+k):s;return new Wt.ExtrinsicConfig({module:ke,func:n,getTx:M=>M.getUnsafeApi().tx[ke][n]({dest:Lt(m,g,f),message:$r(m,A,S,F,k,x)})})}})}};function Nm(n){let e=t=>({build:async s=>{let a=t(s),i="execute";return new Wt.ExtrinsicConfig({module:ke,func:i,getTx:r=>r.getUnsafeApi().tx[ke][i]({message:a,max_weight:{ref_time:20000000000n,proof_size:500000n}})})}});return n?e(n):{viaSnowbridge:()=>e(rr)}}var Ha=()=>({limitedReserveTransferAssets:_m,limitedTeleportAssets:Dm,reserveTransferAssets:Fm,transferAssets:Xm,transferAssetsUsingTypeAndThen:Om,execute:Nm,send:Vm});var Qr=require("@galacticcouncil/xc-core"),Zr=require("@galacticcouncil/common");var rs=require("@galacticcouncil/descriptors"),Yr=(n,e,t)=>e.parachainId===0?{type:n,value:{parents:1,interior:rs.XcmV3Junctions.X1(t)}}:{type:n,value:{parents:1,interior:rs.XcmV3Junctions.X2([rs.XcmV3Junction.Parachain(e.parachainId),t])}};var Jr="XTokens",Hm=()=>({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?Zn(r,a,o):n,g=re(m),f=r.getAssetId(t),y=(0,Zr.encodeAssetId)(f),A="transfer";return new Qr.ExtrinsicConfig({module:Jr,func:A,getTx:x=>x.getUnsafeApi().tx[Jr][A]({currency_id:y,amount:e,dest:Yr(c,o,g),dest_weight_limit:{type:"Unlimited"}})})}}),Ua=()=>({transfer:Hm});function w(){return{assetConversion:hr,assets:br,balances:xr,ethereumXcm:La,polkadotXcm:Ha,router:vr,utility:Tr,xTokens:Ua}}function rn(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 Cn=require("@galacticcouncil/xc-core");var eo=80000n,to=120000n,no=100000n,so=2000000n,Wa=15000000000000n;var Ya={};yn(Ya,{ASSET_LOCKDOWN_PERIOD_BLOCKS:()=>fo,AssethubClient:()=>$e,BaseClient:()=>pt,HydrationClient:()=>ve,getAllAssetDepositLimits:()=>ja,getAssetDepositLimit:()=>za,getGlobalWithdrawLimit:()=>$a,getNttInboundLimit:()=>qa,getNttOutboundLimit:()=>Ga});var Ka=require("@galacticcouncil/common"),os=require("@galacticcouncil/descriptors"),pt=class{chain;descriptor;constructor(e,t){this.chain=e,this.descriptor=t??os.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,Ka.encodeLocation)(a),r=await this.refApi.apis.XcmPaymentApi.query_weight_to_asset_fee(s.value,os.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,Ka.encodeLocation)(a),r=await this.refApi.apis.XcmPaymentApi.query_weight_to_asset_fee(s.value,os.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/xc-core"),Vs=require("@solana/web3.js"),cs={capacity:0n,limit:0n,windowMs:0,capacityAtLastTx:0n,lastTxMs:0};function co(n,e,t,s,a){let i=s>t?s-t:0n,r=e+n*i/a;return r<n?r:n}function ao(n,e){let t=n>>8n,s=Number(n&0xffn);return t*10n**BigInt(e-s)}async function Um(n,e,t){let s=n.evmClient.getProvider(),a=rt.Abi.NttManager,i=e.manager,[r,o,c,m]=await Promise.all([s.readContract({abi:a,address:i,functionName:"rateLimitDuration"}),s.readContract({abi:a,address:i,functionName:"tokenDecimals"}),t===void 0?s.readContract({abi:a,address:i,functionName:"getCurrentOutboundCapacity"}):s.readContract({abi:a,address:i,functionName:"getCurrentInboundCapacity",args:[t]}),t===void 0?s.readContract({abi:a,address:i,functionName:"getOutboundLimitParams"}):s.readContract({abi:a,address:i,functionName:"getInboundLimitParams",args:[t]})]);return r===0n?cs:{capacity:c,limit:ao(m.limit,o),windowMs:Number(r)*1e3,capacityAtLastTx:ao(m.currentCapacity,o),lastTxMs:Number(m.lastTxTimestamp)*1e3}}var io=3600*24,Wm=8,Km=9;function Gm(n,e){let t=new DataView(n.buffer,n.byteOffset,n.byteLength);return{limit:t.getBigUint64(e,!0),capacityAtLastTx:t.getBigUint64(e+8,!0),lastTxTimestamp:t.getBigInt64(e+16,!0)}}function qm(n,e){let t=new Vs.PublicKey(n.manager),s=new TextEncoder;if(e===void 0){let[r]=Vs.PublicKey.findProgramAddressSync([s.encode("outbox_rate_limit")],t);return{pda:r,offset:Wm}}let a=new Uint8Array(2);new DataView(a.buffer).setUint16(0,e,!1);let[i]=Vs.PublicKey.findProgramAddressSync([s.encode("inbox_rate_limit"),a],t);return{pda:i,offset:Km}}async function zm(n,e,t){let{pda:s,offset:a}=qm(e,t),i=await n.connection.getAccountInfo(s);if(!i)return cs;let{limit:r,capacityAtLastTx:o,lastTxTimestamp:c}=Gm(i.data,a),m=BigInt(Math.floor(Date.now()/1e3));return{capacity:co(r,o,c,m,BigInt(io)),limit:r,windowMs:io*1e3,capacityAtLastTx:o,lastTxMs:Number(c)*1e3}}var ro=3600*24*1e3;function oo(n){let e=BigInt(n.limit),t=BigInt(n.capacity_at_last_tx),s=BigInt(n.last_tx_timestamp),a=BigInt(Date.now());return{capacity:co(e,t,s,a,BigInt(ro)),limit:e,windowMs:ro,capacityAtLastTx:t,lastTxMs:Number(s)}}async function jm(n,e,t){let s=n.client,a=await rt.suiPkg.getObject(s,e.manager);if(t===void 0){let m=a.fields.outbox?.fields?.rate_limit?.fields;return m?oo(m):cs}let i=a.fields.peers?.fields?.id?.id;if(!i)return cs;let{data:r}=await s.getDynamicFieldObject({parentId:i,name:{type:"u16",value:t}}),c=r?.content?.fields?.value?.fields?.inbound_rate_limit?.fields;return c?oo(c):cs}function mo(n,e,t){return n instanceof rt.SolanaChain?zm(n,e,t):n instanceof rt.SuiChain?jm(n,e,t):Um(n,e,t)}async function Ga(n,e){return mo(n,rt.Ntt.fromChain(n,e))}async function qa(n,e,t){return mo(n,rt.Ntt.fromChain(n,e),rt.Wormhole.fromChain(t).getWormholeId())}var ot=require("@galacticcouncil/descriptors"),uo=require("@galacticcouncil/common"),Ns=require("@polkadot-api/substrate-bindings"),lo=require("@polkadot-api/utils");var $e=class extends pt{constructor(e){super(e)}async checkIfSufficient(e){let t=this.chain.getAssetId(e),s=this.chain.getAssetXcmLocation(e),a=(0,uo.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,lo.toHex)((0,Ns.Twox128)(s)),i=await this.client._request("state_getStorage",[a]);if(!i)return t;let r=Ns.u128.dec(i);return r===0n?t:r}async calculateDeliveryFee(e,t){let s=ot.XcmVersionedLocation.V5({parents:1,interior:ot.XcmV5Junctions.X1(ot.XcmV5Junction.Parachain(t))}),a=ot.XcmVersionedAssetId.V5({parents:1,interior:{type:"Here",value:void 0}}),i=await this.api().apis.XcmPaymentApi.query_delivery_fees(s,ot.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:ot.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:ot.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:ot.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 po=require("@galacticcouncil/descriptors");var fo=14400;function go(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+fo<=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 za(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 go(e,s,a,i,r,o)}async function ja(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=go(y,A,o.get(y),c.get(y),a,x);g.set(y.toString(),S)}return g}async function $a(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 ve=class extends pt{constructor(e){super(e,po.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 za(this.api(),t)}getAllAssetDepositLimits(){return ja(this.api())}getGlobalWithdrawLimit(){return $a(this.api())}};function $m(){return{calculateInboundFee:n=>({build:async({feeAsset:e,destination:t})=>{let s=t,a=new ve(s),i=new $e(n.hub),r=Xs(e,s),o=Hr(e,s),c=Qn(ft),m=250000000n,g=ir(ft,s.parachainId),[f,y,A,x]=await Promise.all([a.calculateDestinationFeeV5(o,P),i.calculateDeliveryFee(r,s.parachainId),i.calculateDeliveryFee(r,Ls),i.calculateDestinationFeeV5(g,P)]),S=fe(f,33n),B=fe(y,33n),k=fe(A,33n),M=fe(x,33n)+B,N=S,W=await i.quoteEtherForDot(c,M),I=fe(W,30n),$=I<Wa*2n?Wa*2n:I,Ke=fe(await i.quoteEtherForDot(c,N),100n),Je=fe(await i.quoteDotToEther(c,m+k),30n);return{amount:$+Je+Ke,breakdown:{executionFee:$,relayerFee:Je,remoteEtherFee:Ke,hydrationDotFee:N}}}}),calculateOutboundFee:n=>({build:async({transferAsset:e,feeAsset:t,source:s,destination:a})=>{let i=s,r=a,o=new $e(n.hub),c=Qn(ft),m=Xa(e,i),[g,f,y]=await Promise.all([o.getBridgeDeliveryFee(),o.calculateDeliveryFee(m,Ls),o.calculateDestinationFee(m,t)]),A=await r.evmClient.getProvider().getGasPrice(),x=so+to+eo+no,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 ve(i),N=Ea({tokenAddress:"0x0000000000000000000000000000000000000000",senderPubKey:"0x"+"00".repeat(32),beneficiaryHex:"0x"+"00".repeat(20),tokenAmount:1000000000000n,sourceExecutionFee:1000000000n,dotRemoteFee:1000000000n,dotToEtherSwapAmount:1000000000n,etherFeeAmount:1000000000n,topic:kt}),W=fe(await M.calculateDestinationFeeV5(N,P),33n);return{amount:k+F+W,breakdown:{dotRemoteFee:k,dotToEtherSwapAmount:F,etherFeeAmount:B,sourceExecutionFee:W}}}}),calculateInboundFeeV1:n=>({build:async({feeAsset:e,destination:t,source:s})=>{let a=s,i=t,r=Cn.Snowbridge.fromChain(a),o=new pt(i),c=new $e(n.hub),m=Xs(e,i),[g,f]=await Promise.all([o.calculateDestinationFee(m,P),c.calculateDeliveryFee(m,i.parachainId)]),y=f+fe(g,25n),A=a.getAssetId(e);return{amount:await a.evmClient.getProvider().readContract({abi:Cn.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=Xa(e,a),o=Xs(e,a),[c,m,g,f,y]=await Promise.all([i.getBridgeDeliveryFeeV1(),i.calculateDeliveryFee(r,Ls),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 Ym(){return{calculateDestFee:n=>({build:async({feeAsset:e,source:t,destination:s})=>{let a=t,i=s,r=n?.reserve;if(Or(e,a,i,r),r){let y=new pt(i),A=new pt(r),x=Oa(e,i),S=Nr(e,r,i),[B,k]=await Promise.all([y.calculateDestinationFee(x,e),A.calculateDestinationFee(S,e)]),F=k+B,M=fe(F,20n),N=M-F;return{amount:M,breakdown:{reserveFee:k,destinationFee:B,margin:N}}}let o=new pt(i),c=Vr(e,i),m=await o.calculateDestinationFee(c,e),g=fe(m,20n),f=g-m;return{amount:g,breakdown:{totalFee:m,margin:f}}}})}}function Jm(){return{quoteFee:()=>({build:async({feeAsset:n,source:e})=>{let t=e,s=Cn.Basejump.fromChain(t),a=t.getAssetId(n);return{amount:await t.evmClient.getProvider().readContract({abi:Cn.Abi.Basejump,address:s.getAddress(),args:[a],functionName:"quoteFee"})}}})}}function V(){return{Basejump:Jm,XcmPaymentApi:Ym,Snowbridge:$m}}var Qm="0";function Zm(){return{build:async({address:n,chain:e})=>{let s=await new ve(e).api().query.MultiTransactionPayment.AccountCurrencyMap.getValue(n),a=s?s.toString():Qm,i=e.findAssetById(a);return i?i.asset:Dn}}}var eu=()=>({accountCurrencyMap:Zm});function ms(){return{multiTransactionPayment:eu}}var Ye=require("@galacticcouncil/xc-core"),ho=require("@mysten/sui/transactions"),Hs=require("@mysten/sui/utils"),yo=require("@wormhole-foundation/sdk-base"),tu=()=>({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=yo.encoding.hex.decode(g.normalizeAddress(y)),x=m.getCoreBridge(),S=c.manager,B=c.transceiver.wormhole,k=c.token,[F,M,N,W]=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 ho.Transaction,[$]=I.splitCoins(I.gas,[I.pure.u64(t)]),[Ke]=I.moveCall({target:`${M}::upgrades::new_version_gated`,arguments:[]}),[Je,Dt]=I.moveCall({target:`${M}::ntt::prepare_transfer`,typeArguments:[k],arguments:[I.object(S),$,I.object(W),I.pure.u16(g.getWormholeId()),I.pure.vector("u8",Array.from(A)),I.pure.option("vector<u8>",null),I.pure.bool(!1)]}),[Gt]=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(W),Je,I.object(Hs.SUI_CLOCK_OBJECT_ID)]});let[we]=I.moveCall({target:`${M}::state::create_transceiver_message`,typeArguments:[`${N}::wormhole_transceiver::TransceiverAuth`,k],arguments:[I.object(S),Gt,I.object(Hs.SUI_CLOCK_OBJECT_ID)]}),[l]=I.moveCall({target:`${N}::wormhole_transceiver::release_outbound`,typeArguments:[`${M}::auth::ManagerAuth`],arguments:[I.object(B),we]}),[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(Hs.SUI_CLOCK_OBJECT_ID)]});let[u]=I.moveCall({target:"0x2::coin::from_balance",typeArguments:[k],arguments:[Dt]});return I.mergeCoins(I.gas,[u]),new Ye.MoveConfig({transaction:I,func:"transfer",module:"NttManager"})}}),bo=()=>({transfer:tu});function Ao(){return{Ntt:bo}}function Ja(){return{Wormhole:Ao}}var Mt=require("@galacticcouncil/xc-core"),sc=require("@solana/spl-token"),Js=require("@solana/web3.js"),ac=require("@wormhole-foundation/sdk-base"),ic=require("@wormhole-foundation/sdk-definitions"),rc=require("@wormhole-foundation/sdk-solana"),yh=require("@wormhole-foundation/sdk-definitions-ntt");async function au(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 iu(n,e,t){let s=await au(n,e);return{instructions:"message"in e?Js.TransactionMessage.decompile(e.message,{addressLookupTableAccounts:s}).instructions:e.instructions,signers:t,lookupTables:s}}var ru=()=>({build:async n=>{let{address:e,amount:t,asset:s,sender:a,source:i,destination:r}=n,o=i.chain,c=r.chain,m=Mt.Ntt.fromChain(o,s),g=Mt.Wormhole.fromChain(o),f=Mt.Wormhole.fromChain(c),y=e;c instanceof Mt.EvmParachain&&(y=await c.getDerivatedAddress(e));let{SolanaNtt:A}=await Promise.resolve().then(()=>(nc(),tc)),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)===Mt.SolanaBalanceType.Native,B=Js.Keypair.generate(),k=[];for await(let N of x.transfer(new rc.SolanaAddress(a),t,{chain:(0,ac.toChain)(f.getWormholeId()),address:new ic.UniversalAddress(f.normalizeAddress(y))},{queue:!1,automatic:!1,wrapNative:S},B)){let{transaction:W,signers:I}=N.transaction;k.push(await iu(o.connection,W,I??[]))}let F=S?BigInt(await(0,sc.getMinimumBalanceForRentExemptAccount)(o.connection)):0n,M=k[k.length-1];return new Mt.ProgramConfig({instructions:M.instructions,signers:M.signers,lookupTables:M.lookupTables,prerequisites:k.slice(0,-1),rentReserve:F,func:"transfer",module:"NttManager"})}}),oc=()=>({transfer:ru});function cc(){return{Ntt:oc}}function ui(){return{Wormhole:cc}}var li={};yn(li,{Tag:()=>dn});var dn=(r=>(r.Basejump="Basejump",r.Ntt="Ntt",r.Wormhole="Wormhole",r.Relayer="Relayer",r.Snowbridge="Snowbridge",r.SnowbridgeV1="SnowbridgeV1",r))(dn||{});function mc(n,e){return new fi.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 uc(n,e){return new fi.AssetRoute({source:{asset:n,fee:{asset:U},destinationFee:n},destination:{chain:v,asset:e,fee:{amount:V().Basejump().quoteFee(),asset:n}},contract:at().Basejump().bridgeViaWormhole(),tags:["Basejump"]})}var ou=[uc(Ct,Xt)],cu=[mc(Ct,Xt)],lc=new dc.ChainRoutes({chain:Xn,routes:[...cu,...ou]});var Ss=require("@galacticcouncil/xc-core");var Qs=require("@galacticcouncil/xc-core");function ln(n,e){return new Qs.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 Me(n,e){return new Qs.AssetRoute({source:{asset:n,fee:{asset:U}},destination:{chain:v,asset:e,fee:{amount:V().Snowbridge().calculateInboundFee({hub:X}),asset:U}},contract:at().Snowbridge().v2SendMessage(),tags:["Snowbridge"]})}function Ie(n,e){return new Qs.AssetRoute({source:{asset:n,fee:{asset:U}},destination:{chain:v,asset:e,fee:{amount:V().Snowbridge().calculateInboundFeeV1({hub:X}),asset:U}},contract:at().Snowbridge().sendToken(),tags:["Snowbridge","SnowbridgeV1"]})}var mu=[ln(Ft,qt),ln(bt,zt),ln(L,$t),ln(C,jt),ln(wt,Yt),ln(Nt,Ht),ln(U,Ht)],uu=[new Ss.AssetRoute({source:{asset:U,fee:{asset:U}},destination:{chain:v,asset:U,fee:{amount:V().Snowbridge().calculateInboundFee({hub:X}),asset:U}},contract:at().Snowbridge().v2SendMessage(),tags:["Snowbridge"]}),Me(Pe,Pe),Me(Ee,Ee),Me(Be,Be),Me(Le,Le),Me(Fe,Fe),Me(Oe,Oe),Me(Ve,Ve),Me(_e,_e),Me(Re,Re),Me(De,De),Me(Xe,Xe),Me(Ne,Ne),Me(He,He),Me(L,Vt),Me(C,Ot)],du=[new Ss.AssetRoute({source:{asset:U,fee:{asset:U}},destination:{chain:v,asset:U,fee:{amount:V().Snowbridge().calculateInboundFeeV1({hub:X}),asset:U}},contract:at().Snowbridge().sendToken(),tags:["Snowbridge","SnowbridgeV1"]}),Ie(Pe,Pe),Ie(Ee,Ee),Ie(Be,Be),Ie(Le,Le),Ie(Fe,Fe),Ie(Oe,Oe),Ie(Ve,Ve),Ie(_e,_e),Ie(Re,Re),Ie(De,De),Ie(Xe,Xe),Ie(Ne,Ne),Ie(He,He),Ie(L,Vt),Ie(C,Ot)],fc=new Ss.ChainRoutes({chain:R,routes:[...mu,...uu,...du]});var gc=[lc,fc];var fn=require("@galacticcouncil/xc-core");var Zs=require("@galacticcouncil/xc-core");var Ln=0,lu=n=>{let{source:e}=n;return!!e.feeSwap},fu=n=>{let{source:e}=n,{enabled:t}=e.destinationFeeSwap||{};return!!t},pc=w().assetConversion().swapTokensForExactTokens({slippage:30});function gu(n,e,t){return new Zs.AssetRoute({source:{asset:n,fee:{asset:P,extra:Ln}},destination:{chain:e,asset:n,fee:{amount:t,asset:C}},extrinsic:rn(fu,pc).prior(w().polkadotXcm().limitedReserveTransferAssets())})}function ea(n,e,t){return new Zs.AssetRoute({source:{asset:n,fee:{asset:n,swap:!n.isEqual(P)}},destination:{chain:e,asset:n,fee:{amount:t,asset:n}},extrinsic:rn(lu,pc).prior(w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"}))})}function ks(n,e,t){return new Zs.AssetRoute({source:{asset:n,fee:{asset:P,extra:Ln}},destination:{chain:e,asset:n,fee:{amount:t,asset:n}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})})}function ta(n){return gu(n,v,.02)}var pu=[new fn.AssetRoute({source:{asset:P,fee:{asset:P,extra:Ln}},destination:{chain:v,asset:P,fee:{amount:.001,asset:P}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),new fn.AssetRoute({source:{asset:D,fee:{asset:P,extra:Ln}},destination:{chain:v,asset:D,fee:{amount:1e-4,asset:D}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),ks(C,v,.02),ks(L,v,.02),ta(Ut)],hu=[new fn.AssetRoute({source:{asset:D,fee:{asset:P,extra:Ln}},destination:{chain:xt,asset:D,fee:{amount:.001,asset:D}},extrinsic:w().polkadotXcm().transferAssets()})],yu=[ks(C,ne,.03),ks(L,ne,.03)],bu=[new fn.AssetRoute({source:{asset:te,fee:{asset:P,extra:Ln}},destination:{chain:Qt,asset:te,fee:{amount:2.5,asset:te}},extrinsic:w().polkadotXcm().limitedTeleportAssets()})],hc=new fn.ChainRoutes({chain:Jt,routes:[ea(C,v,.02),ea(L,v,.02),ea(P,v,.001)]}),yc=new fn.ChainRoutes({chain:X,routes:[...pu,...hu,...yu,...bu]});var It=require("@galacticcouncil/xc-core");var Au=[new It.AssetRoute({source:{asset:j},destination:{chain:v,asset:j,fee:{amount:.044306118,asset:j}},extrinsic:w().polkadotXcm().reserveTransferAssets()}),new It.AssetRoute({source:{asset:K,fee:{asset:j}},destination:{chain:v,asset:K,fee:{amount:V().XcmPaymentApi().calculateDestFee({reserve:ne}),asset:K}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new It.AssetRoute({source:{asset:ae,fee:{asset:j}},destination:{chain:v,asset:ae,fee:{amount:2e-6,asset:ae}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new It.AssetRoute({source:{asset:et,fee:{asset:j}},destination:{chain:v,asset:et,fee:{amount:.01,asset:et}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new It.AssetRoute({source:{asset:le,fee:{asset:j}},destination:{chain:v,asset:le,fee:{amount:V().XcmPaymentApi().calculateDestFee({reserve:ne}),asset:le}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new It.AssetRoute({source:{asset:de,fee:{asset:j}},destination:{chain:v,asset:de,fee:{amount:V().XcmPaymentApi().calculateDestFee({reserve:ne}),asset:de}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new It.AssetRoute({source:{asset:C,fee:{asset:j}},destination:{chain:v,asset:C,fee:{amount:V().XcmPaymentApi().calculateDestFee({reserve:X}),asset:C}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new It.AssetRoute({source:{asset:L,fee:{asset:j}},destination:{chain:v,asset:L,fee:{amount:V().XcmPaymentApi().calculateDestFee({reserve:X}),asset:L}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],bc=new It.ChainRoutes({chain:Se,routes:[...Au]});var ct=require("@galacticcouncil/xc-core");var wu=[new ct.AssetRoute({source:{asset:K},destination:{chain:v,asset:K,fee:{amount:V().XcmPaymentApi().calculateDestFee(),asset:K}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ct.AssetRoute({source:{asset:le,fee:{asset:K}},destination:{chain:v,asset:le,fee:{amount:V().XcmPaymentApi().calculateDestFee(),asset:le}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ct.AssetRoute({source:{asset:de,fee:{asset:K}},destination:{chain:v,asset:de,fee:{amount:V().XcmPaymentApi().calculateDestFee(),asset:de}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ct.AssetRoute({source:{asset:P,fee:{asset:K}},destination:{chain:v,asset:P,fee:{amount:V().XcmPaymentApi().calculateDestFee({reserve:X}),asset:P}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"RemoteReserve"})}),new ct.AssetRoute({source:{asset:j,fee:{asset:K}},destination:{chain:v,asset:j,fee:{amount:V().XcmPaymentApi().calculateDestFee({reserve:Se}),asset:j}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ct.AssetRoute({source:{asset:ae,fee:{asset:K}},destination:{chain:v,asset:ae,fee:{amount:625e-8,asset:ae}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ct.AssetRoute({source:{asset:C,fee:{asset:K}},destination:{chain:v,asset:C,fee:{amount:V().XcmPaymentApi().calculateDestFee({reserve:X}),asset:C}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ct.AssetRoute({source:{asset:L,fee:{asset:K}},destination:{chain:v,asset:L,fee:{amount:V().XcmPaymentApi().calculateDestFee({reserve:X}),asset:L}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],xu=[new ct.AssetRoute({source:{asset:C,fee:{asset:K}},destination:{chain:X,asset:C,fee:{amount:V().XcmPaymentApi().calculateDestFee(),asset:C}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new ct.AssetRoute({source:{asset:L,fee:{asset:K}},destination:{chain:X,asset:L,fee:{amount:V().XcmPaymentApi().calculateDestFee(),asset:L}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],Ac=new ct.ChainRoutes({chain:ne,routes:[...wu,...xu]});var _t=require("@galacticcouncil/xc-core");var Te=()=>({asset:ms().multiTransactionPayment().accountCurrencyMap()});var gn=require("@galacticcouncil/xc-core");var Su=.02,gi=n=>{let{source:e}=n,{enabled:t}=e.destinationFeeSwap||{};return!!t},pi=w().router().buy({slippage:30});function We(n,e,t){return new gn.AssetRoute({source:{asset:n,fee:Te()},destination:{chain:e,asset:n,fee:{amount:V().XcmPaymentApi().calculateDestFee(t?{reserve:t}:void 0),asset:n}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})}function pn(n,e){return new gn.AssetRoute({source:{asset:n,fee:Te()},destination:{chain:e,asset:n,fee:{amount:V().XcmPaymentApi().calculateDestFee(),asset:n}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})})}function na(n){return new gn.AssetRoute({source:{asset:n,fee:Te()},destination:{chain:X,asset:n,fee:{amount:Su,asset:C}},extrinsic:rn(gi,pi).prior(w().polkadotXcm().limitedReserveTransferAssets())})}function hi(n,e,t){return new gn.AssetRoute({source:{asset:n,fee:Te()},destination:{chain:xt,asset:n,fee:{amount:e,asset:n}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve",executionFee:t})})}function ht(n,e,t){return new gn.AssetRoute({source:{asset:n,fee:Te()},destination:{chain:t,asset:e,fee:{amount:0,asset:n}},contract:at().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}function be(n,e,t){return new gn.AssetRoute({source:{asset:n,fee:Te()},destination:{chain:t,asset:e,fee:{amount:V().Snowbridge().calculateOutboundFee({hub:X}),asset:P}},extrinsic:rn(gi,pi).prior(w().polkadotXcm().execute().viaSnowbridge()),tags:["Snowbridge"]})}function Ae(n,e,t){return new gn.AssetRoute({source:{asset:n,fee:Te()},destination:{chain:t,asset:e,fee:{amount:V().Snowbridge().calculateOutboundFeeV1({hub:X}),asset:P}},extrinsic:rn(gi,pi).prior(w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})),tags:["Snowbridge","SnowbridgeV1"]})}var ku=[pn(P,X),pn(D,X),pn(C,X),pn(L,X),na(Ut)],vu=[hi(D,.05,.005),hi(P,.2,.02)],Mu=[We(j,Se),We(K,Se,ne),new _t.AssetRoute({source:{asset:ae,fee:Te()},destination:{chain:Se,asset:ae,fee:{amount:2e-6,asset:ae}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),new _t.AssetRoute({source:{asset:et,fee:Te()},destination:{chain:Se,asset:et,fee:{amount:.01,asset:et}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),We(le,Se,ne),We(de,Se,ne),We(C,Se,X),We(L,Se,X)],Iu=[We(K,ne),We(le,ne),We(de,ne),We(j,ne,Se),new _t.AssetRoute({source:{asset:ae,fee:Te()},destination:{chain:ne,asset:ae,fee:{amount:5e-6,asset:ae}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()}),We(C,ne,X),We(L,ne,X),new _t.AssetRoute({source:{asset:P,fee:Te()},destination:{chain:ne,asset:P,fee:{amount:V().XcmPaymentApi().calculateDestFee({reserve:X}),asset:P}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"RemoteReserve"})})],Tu=[new _t.AssetRoute({source:{asset:te,fee:Te()},destination:{chain:Qt,asset:te,fee:{amount:2.5,asset:te}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],Cu=[We(At,Kn)],Pu=[new _t.AssetRoute({source:{asset:ze,fee:Te()},destination:{chain:Gn,asset:ze,fee:{amount:.02,asset:ze}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],Eu=[new _t.AssetRoute({source:{asset:tt,fee:Te()},destination:{chain:Hn,asset:tt,fee:{amount:1.1,asset:tt}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],Bu=[We(yt,Nn)],Lu=[ht(qt,Ft,R),ht(zt,bt,R),ht($t,L,R),ht(jt,C,R),ht(Yt,wt,R),ht(Ht,U,R)],Ru=[ht(Xt,Ct,Xn)],_u=[ht(je,je,tn),ht(ut,ut,tn),ht(dt,dt,tn)],Du=[ht(nt,nt,zn)],Fu=[be(U,U,R),be(Pe,Pe,R),be(Ee,Ee,R),be(Be,Be,R),be(Le,Le,R),be(Fe,Fe,R),be(Oe,Oe,R),be(Ve,Ve,R),be(Ne,Ne,R),be(_e,_e,R),be(Re,Re,R),be(De,De,R),be(Xe,Xe,R),be(He,He,R),be(Vt,L,R),be(Ot,C,R)],Xu=[Ae(U,U,R),Ae(Pe,Pe,R),Ae(Ee,Ee,R),Ae(Be,Be,R),Ae(Le,Le,R),Ae(Fe,Fe,R),Ae(Oe,Oe,R),Ae(Ve,Ve,R),Ae(Ne,Ne,R),Ae(_e,_e,R),Ae(Re,Re,R),Ae(De,De,R),Ae(Xe,Xe,R),Ae(He,He,R),Ae(Vt,L,R),Ae(Ot,C,R)],Ou=[pn(P,Jt),pn(C,Jt),pn(L,Jt)],wc=new _t.ChainRoutes({chain:v,routes:[...ku,...Mu,...Iu,...Ou,...Ru,...Lu,...Fu,..._u,...Du,...Xu,...Pu,...vu,...Tu,...Bu,...Eu,...Cu]});var vs=require("@galacticcouncil/xc-core");var Vu=[new vs.AssetRoute({source:{asset:te},destination:{chain:v,asset:te,fee:{amount:.01,asset:te}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})})],Nu=[new vs.AssetRoute({source:{asset:te},destination:{chain:X,asset:te,fee:{amount:.1,asset:te}},extrinsic:w().polkadotXcm().limitedTeleportAssets()})],xc=new vs.ChainRoutes({chain:Qt,routes:[...Vu,...Nu]});var sa=require("@galacticcouncil/xc-core");var Hu=[new sa.AssetRoute({source:{asset:At},destination:{chain:v,asset:At,fee:{amount:V().XcmPaymentApi().calculateDestFee(),asset:At}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],Sc=new sa.ChainRoutes({chain:Kn,routes:[...Hu]});var aa=require("@galacticcouncil/xc-core");var Uu=[new aa.AssetRoute({source:{asset:tt},destination:{chain:v,asset:tt,fee:{amount:.2,asset:tt}},extrinsic:w().polkadotXcm().reserveTransferAssets()})],kc=new aa.ChainRoutes({chain:Hn,routes:[...Uu]});var ia=require("@galacticcouncil/xc-core");var Wu=[new ia.AssetRoute({source:{asset:ze,fee:{asset:ze,extra:.030555}},destination:{chain:v,asset:ze,fee:{amount:.03,asset:ze}},extrinsic:w().polkadotXcm().reserveTransferAssets()})],vc=new ia.ChainRoutes({chain:Gn,routes:[...Wu]});var ra=require("@galacticcouncil/xc-core");var Ku=[new ra.AssetRoute({source:{asset:yt},destination:{chain:v,asset:yt,fee:{amount:.205,asset:yt}},extrinsic:w().polkadotXcm().reserveTransferAssets()})],Mc=new ra.ChainRoutes({chain:Nn,routes:[...Ku]});var Ic=[yc,hc,bc,Ac,wc,xc,Mc,Sc,kc,vc];var oa=require("@galacticcouncil/xc-core");function yi(n){return new oa.AssetRoute({source:{asset:n,fee:{asset:je}},destination:{chain:v,asset:n,fee:{amount:0,asset:n}},program:ui().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}var Gu=[yi(je),yi(ut),yi(dt)],Tc=new oa.ChainRoutes({chain:tn,routes:[...Gu]});var Cc=[Tc];var ca=require("@galacticcouncil/xc-core");function qu(n){return new ca.AssetRoute({source:{asset:n,fee:{asset:nt}},destination:{chain:v,asset:n,fee:{amount:0,asset:n}},move:Ja().Wormhole().Ntt().transfer(),tags:["Wormhole","Ntt"]})}var zu=[qu(nt)],Pc=new ca.ChainRoutes({chain:zn,routes:[...zu]});var Ec=[Pc];var Rn=require("@galacticcouncil/xc-core");var ju=require("@galacticcouncil/xc-core");var Ms=.0015;var $u=new Rn.AssetRoute({source:{asset:D,fee:{asset:D,extra:Ms}},destination:{chain:X,asset:D,fee:{amount:.002,asset:D}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),Yu=new Rn.AssetRoute({source:{asset:D,fee:{asset:D,extra:Ms}},destination:{chain:$n,asset:D,fee:{amount:.0012,asset:D}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve"})}),Ju=[new Rn.AssetRoute({source:{asset:D,fee:{asset:D,extra:Ms}},destination:{chain:v,asset:D,fee:{amount:.04,asset:D}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"LocalReserve",executionFee:.005})}),new Rn.AssetRoute({source:{asset:P,fee:{asset:D,extra:Ms}},destination:{chain:v,asset:P,fee:{amount:.15,asset:P}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve",executionFee:.01})})],Bc=new Rn.ChainRoutes({chain:xt,routes:[Yu,$u,...Ju]});var Is=require("@galacticcouncil/xc-core");var bi=()=>({asset:ms().multiTransactionPayment().accountCurrencyMap()});var Qu=[new Is.AssetRoute({source:{asset:C,fee:bi()},destination:{chain:xt,asset:C,fee:{amount:V().XcmPaymentApi().calculateDestFee(),asset:C}},extrinsic:w().polkadotXcm().limitedReserveTransferAssets()})],Zu=[new Is.AssetRoute({source:{asset:D,fee:bi()},destination:{chain:xt,asset:D,fee:{amount:.0012,asset:D}},extrinsic:w().polkadotXcm().transferAssetsUsingTypeAndThen({transferType:"DestinationReserve"})})],Lc=new Is.ChainRoutes({chain:$n,routes:[...Qu,...Zu]});var Rc=[Bc,Lc];var ed=[...gc,...Ic,...Cc,...Ec,...Rc],_c=new Map(ed.map(n=>[n.chain.key,n]));var Ai=require("@galacticcouncil/xc-core");var hn=require("@galacticcouncil/xc-core"),ma=class extends hn.TransferValidation{async validate(e){let{source:t}=e,{chain:s,fee:a,feeBalance:i}=t;if(i.amount<a.amount)throw new hn.TransferValidationError("Insufficient_Fee_Balance",{amount:a.toDecimal(),asset:a.symbol,chain:s.name,error:"fee.insufficientBalance"})}},ua=class extends hn.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 hn.TransferValidationError("Insufficient_Fee_Balance",{amount:c.toDecimal(),asset:c.symbol,chain:a.name,error:"destFee.insufficientBalance"})}async getMin(e,t){if(e instanceof hn.Parachain)return(await e.getMin(t)).amount;let s=e.getAssetMin(t);return BigInt(s*10**t.decimals)}};var Kt=require("@galacticcouncil/xc-core");function Dc(n,e){throw new Kt.TransferValidationError("Ntt_Limit_Unreachable",{asset:n.originSymbol,chain:e.name,error:"ntt.limitUnreachable"})}function td(n,e,t){return e===t?n:t>e?n*10n**BigInt(t-e):n/10n**BigInt(e-t)}var da=class extends Kt.TransferValidation{skipFor(e){let{asset:t,destination:s,source:a}=e;return!Kt.Ntt.isKnown(a.chain,t)||!Kt.Ntt.isKnown(s.chain,s.balance)}async validate(e){if(this.skipFor(e))return;let{amount:t,asset:s,destination:a,source:i}=e,[r,o]=await Promise.all([Ga(i.chain,s).catch(()=>Dc(s,i.chain)),qa(a.chain,a.balance,i.chain).catch(()=>Dc(a.balance,a.chain))]);if(r.windowMs>0&&t>r.capacity)throw new Kt.TransferValidationError("Ntt_Outbound_Limit_Exceeded",{asset:s.originSymbol,chain:i.chain.name,decimals:i.balance.decimals,headroom:r.capacity,limit:r.limit,windowMs:r.windowMs,error:"ntt.outboundLimitExceeded"});let c=td(t,i.balance.decimals,a.balance.decimals);if(o.windowMs>0&&c>o.capacity)throw new Kt.TransferValidationError("Ntt_Inbound_Limit_Exceeded",{asset:a.balance.originSymbol,chain:a.chain.name,decimals:a.balance.decimals,headroom:o.capacity,limit:o.limit,windowMs:o.windowMs,error:"ntt.inboundLimitExceeded"})}};var ns=require("@galacticcouncil/xc-core");var la=class extends ns.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 ns.TransferValidationError("Insufficient_Ed",{amount:"0.1",asset:"DOT",chain:a.chain.name,error:"account.insufficientDeposit"})}},fa=class extends ns.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 ns.TransferValidationError("Asset_Frozen",{asset:t.originSymbol,chain:a.chain.name,error:"asset.frozen"})}};var Tt=require("@galacticcouncil/xc-core");var nd=12,sd=1,ad=18,ga=class extends Tt.TransferValidation{async skipFor(e){let{destination:t}=e,s=t.chain,a=new ve(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 ve(i),o=await r.getFeeAsset(s),c=i.findAssetById(o),m=c.min||sd,g=c.decimals||nd,f=m*Math.pow(10,g),y=await r.getAssetBalance(s,o);if(BigInt(f*1.1)>y)throw new Tt.TransferValidationError("Insufficient_Ed",{amount:f,asset:c.asset.originSymbol,chain:i.name,error:"account.insufficientDeposit"})}},pa=class extends Tt.TransferValidation{async validate(e){let{amount:t,asset:s,destination:a}=e,i=a.chain,o=await new ve(i).getAssetDepositLimit(s);if(o.locked)throw new Tt.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 Tt.TransferValidationError("Deposit_Limit_Exceeded",{asset:s.originSymbol,chain:i.name,headroom:o.headroom,limit:o.limit,error:"circuitBreaker.depositLimitExceeded"})}},ha=class extends Tt.TransferValidation{async validate(e){let{source:t}=e,s=t.chain,i=await new ve(s).getGlobalWithdrawLimit();if(i.lockdown)throw new Tt.TransferValidationError("Withdraw_Lockdown_Active",{chain:s.name,lockdownUntilMs:i.lockdownUntilMs,error:"circuitBreaker.withdrawLockdown"})}},ya=class extends Tt.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 ve(i),o=i.getBalanceAssetId(mt),c=i.getAssetDecimals(mt)||ad,m=1*Math.pow(10,c);if(await r.getTokensAccountsBalance(s,o.toString())<BigInt(m))throw new Tt.TransferValidationError("Insufficient_Ed",{amount:1,asset:mt.originSymbol,chain:i.name,error:"destFee.insufficientBalance"})}};var he={isAny:()=>!0,isHydration:n=>n instanceof Ai.Parachain&&n.parachainId===2034,isHub:n=>n instanceof Ai.Parachain&&n.parachainId===1e3,isEvm:n=>n.isEvmChain()},Fc=[new ma(he.isAny,he.isAny),new ua(he.isAny,he.isAny),new la(he.isAny,he.isHub),new fa(he.isHub,he.isAny),new ga(he.isAny,he.isHydration),new ya(he.isHydration,he.isAny),new pa(he.isAny,he.isHydration),new ha(he.isHydration,he.isAny),new da(he.isAny,he.isAny)];var ki={};yn(ki,{AssethubDex:()=>Si,HydrationDex:()=>wi});var ss=require("@galacticcouncil/sdk-next"),Oc=require("@galacticcouncil/common"),Vc=require("polkadot-api");var Xc=(n,e=new Map)=>t=>{let s;return e.has(t)?e.get(t):(e.set(t,s=n(t)),s)};var{PoolType:ba}=ss.pool,{TradeRouteBuilder:id,TradeRouter:rd}=ss.sor,{TxBuilderFactory:od}=ss.tx,wi=class{chain;client;poolCtx;txBuilder;getCtx=Xc(async e=>{console.log("init swap router",e,"\u2705");let t=new rd(this.poolCtx);return t.withFilter({useOnly:[ba.Aave,ba.Omni,ba.Stable,ba.XYK]}),t});constructor(e,t){this.chain=e,this.poolCtx=t,this.client=new ve(this.chain),this.txBuilder=new od(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 Vc.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:id.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,Oc.RUNTIME_DECIMALS);return i/BigInt(r)}};var xi=require("@galacticcouncil/common"),Si=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,xi.encodeLocation)(a),(0,xi.encodeLocation)(i),s.amount,!0);if(!r)throw new Error("Failed to get swap quote");return{amount:r}}};var Wc=require("@galacticcouncil/xc-core");var Nc=require("@galacticcouncil/xc-core");function Aa(n){let{id:e,origin:t,symbol:s}=n,a=s.toLowerCase();return new Nc.Asset({key:[a,t,e].join("_"),originSymbol:s})}function Hc(n){let{decimals:e,id:t}=n;return{asset:Aa(n),decimals:e,id:t,xcmLocation:{parents:0,interior:{type:"X2",value:[{type:"PalletInstance",value:50},{type:"GeneralIndex",value:t}]}}}}function Uc(n){let{decimals:e,id:t,internalId:s,origin:a}=n;return{asset:Aa(n),decimals:e,id:s,xcmLocation:{parents:1,interior:{type:"X3",value:[{type:"Parachain",value:a},{type:"PalletInstance",value:50},{type:"GeneralIndex",value:t}]}}}}var wa=class extends Wc.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=Aa(i),o=Hc(i),c=Uc(i);console.log("\u{1F480} Registering "+r.key),s.updateAsset(o),t.updateAsset(c),this.updateAsset(r),this.updateChainRoute(s,ta(r)),this.updateChainRoute(t,na(r))})}};0&&(module.exports={HydrationConfigService,assetsMap,builders,chainsMap,clients,dex,routesMap,tags,validations});