@galacticcouncil/xc-cfg 2.2.0 → 2.2.1

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 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://eu.bifrost-polkadot-rpc.liebi.com/ws","wss://hk.p.bifrost-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});