@mayanfinance/swap-sdk
Version:
A SDK to swap with Mayan
4 lines • 130 kB
JavaScript
var Nn=Object.create;var Ge=Object.defineProperty;var Wn=Object.getOwnPropertyDescriptor;var Kn=Object.getOwnPropertyNames;var Ln=Object.getPrototypeOf,Un=Object.prototype.hasOwnProperty;var Gn=(e,t)=>{for(var n in t)Ge(e,n,{get:t[n],enumerable:!0})},Dt=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Kn(t))!Un.call(e,i)&&i!==n&&Ge(e,i,{get:()=>t[i],enumerable:!(r=Wn(t,i))||r.enumerable});return e};var He=(e,t,n)=>(n=e!=null?Nn(Ln(e)):{},Dt(t||!e||!e.__esModule?Ge(n,"default",{value:e,enumerable:!0}):n,e)),Hn=e=>Dt(Ge({},"__esModule",{value:!0}),e);var Ia={};Gn(Ia,{FAST_MCTP_PAYLOAD_TYPE_CUSTOM_PAYLOAD:()=>ct,FAST_MCTP_PAYLOAD_TYPE_DEFAULT:()=>pt,FAST_MCTP_PAYLOAD_TYPE_ORDER:()=>lt,MCTP_INIT_ORDER_PAYLOAD_ID:()=>ut,MCTP_PAYLOAD_TYPE_CUSTOM_PAYLOAD:()=>Fe,MCTP_PAYLOAD_TYPE_DEFAULT:()=>Oe,ZeroPermit:()=>re,addBridgeLockedFeeMoveCalls:()=>hn,addBridgeWithFeeMoveCalls:()=>In,addInitOrderMoveCalls:()=>Cn,addresses:()=>d,assertArgumentIsImmutable:()=>Rt,broadcastJitoBundleId:()=>St,checkSdkVersionSupport:()=>st,confirmJitoBundleId:()=>Ct,createApproveInstruction:()=>At,createAssociatedTokenAccountInstruction:()=>q,createCloseAccountInstruction:()=>zt,createInitializeRandomTokenAccountInstructions:()=>Be,createMctpFromSolanaInstructions:()=>Mt,createMctpFromSuiMoveCalls:()=>Ot,createSplTransferInstruction:()=>Me,createSwapFromSolanaInstructions:()=>cn,createSwapFromSuiMoveCalls:()=>Aa,createSwiftFromSolanaInstructions:()=>_t,createSwiftOrderHash:()=>Ye,createSyncNativeInstruction:()=>Se,createTransferAllAndCloseInstruction:()=>Ke,decentralizeClientSwapInstructions:()=>We,decideRelayer:()=>It,deserializeInstructionInfo:()=>ve,estimateQuoteRequiredGas:()=>ga,estimateQuoteRequiredGasAprox:()=>wa,fetchAllCoins:()=>Ze,fetchAllTokenList:()=>Yn,fetchMayanSuiPackageId:()=>Xe,fetchQuote:()=>zn,fetchTokenList:()=>$n,generateFetchQuoteUrl:()=>Bt,getAddressLookupTableAccounts:()=>Ne,getAmountOfFractionalAmount:()=>g,getAnchorInstructionData:()=>te,getAssociatedTokenAddress:()=>x,getCurrentChainTime:()=>Jn,getDisplayAmount:()=>Vn,getEvmChainIdByName:()=>it,getGasDecimal:()=>B,getGasDecimalsInSolana:()=>ot,getJitoTipTransfer:()=>ht,getMctpFromEvmTxPayload:()=>wt,getQuoteSuitableReferrerAddress:()=>Ae,getSafeU64Blob:()=>F,getSdkVersion:()=>Ee,getSuggestedRelayer:()=>mt,getSwapFromEvmTxPayload:()=>Je,getSwapSolana:()=>De,getSwapSui:()=>yt,getWormholeChainIdById:()=>Y,getWormholeChainIdByName:()=>_,hexToUint8Array:()=>U,isValidAptosType:()=>xt,nativeAddressToHexString:()=>I,sendJitoBundle:()=>je,solMint:()=>ce,submitSwiftEvmSwap:()=>ft,submitSwiftSolanaSwap:()=>bt,submitTransactionWithRetry:()=>xe,swapFromEvm:()=>Ta,swapFromSolana:()=>ca,unwrapSol:()=>na,validateJupSwap:()=>_e,wait:()=>Re,wrapSol:()=>ta});module.exports=Hn(Ia);var se=He(require("cross-fetch"));var d={MAYAN_FORWARDER_CONTRACT:"0x337685fdaB40D39bd02028545a4FfA7D287cC3E2",MAYAN_PROGRAM_ID:"FC4eXxkyrMPTjiYUpp4EAnkmwMbQyZ6NDCh1kfLn6vsf",AUCTION_PROGRAM_ID:"8QJmxZcEzwuYmCPy6XqgN2sHcYCcFq6AEfBMJZZuLo5a",MCTP_PROGRAM_ID:"dkpZqrxHFrhziEMQ931GLtfy11nFkCsfMftH9u6QwBU",SWIFT_PROGRAM_ID:"BLZRi6frs4X4DNLw56V4EXai1b6QVESN1BhHBTYM9VcY",FEE_MANAGER_PROGRAM_ID:"5VtQHnhs2pfVEr68qQsbTRwKh4JV5GTu9mBHgHFxpHeQ",WORMHOLE_PROGRAM_ID:"worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth",CCTP_CORE_PROGRAM_ID:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",CCTP_TOKEN_PROGRAM_ID:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",TOKEN_PROGRAM_ID:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",TOKEN_2022_PROGRAM_ID:"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",ASSOCIATED_TOKEN_PROGRAM_ID:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL",SPL_UTILS_PROGRAM_ID:"B96dV3Luxzo6SokJx3xt8i5y8Mb7HRR6Eec8hCjJDT69",LOOKUP_TABLE:"75X8YgJPcadksw6Ag3qsYUfi1bsFwDoCKYtqPPqdydAG",SUI_MCTP_STATE:"0xb787fe0f7530b4fd2162fa0cc92f4f6c5a97c54b4c5c55eb04ab29f4b803ac9c",SUI_MCTP_FEE_MANAGER_STATE:"0xa1b4a96ce93d36dd0bbce0adc39533a07d2f32928918c80cd6fe7868320978f2",SUI_CCTP_CORE_PACKAGE_ID:"0x08d87d37ba49e785dde270a83f8e979605b03dc552b5548f26fdf2f49bf7ed1b",SUI_CCTP_CORE_STATE:"0xf68268c3d9b1df3215f2439400c1c4ea08ac4ef4bb7d6f3ca6a2a239e17510af",SUI_CCTP_TOKEN_PACKAGE_ID:"0x2aa6c5d56376c371f88a6cc42e852824994993cb9bab8d3e6450cbe3cb32b94e",SUI_CCTP_TOKEN_STATE:"0x45993eecc0382f37419864992c12faee2238f5cfe22b98ad3bf455baf65c8a2f",SUI_WORMHOLE_PACKAGE_ID:"0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a",SUI_WORMHOLE_STATE:"0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c",SUI_LOGGER_PACKAGE_ID:"0x05680e9030c147b413a489f7891273acc221d49bd061c433e5771bc170fc37ac",EXPLORER_URL:"https://explorer-api.mayan.finance/v3",PRICE_URL:"https://price-api.mayan.finance/v3",RELAYER_URL:"https://relayer-api.mayan.finance/v3"};var we=require("ethers"),de=require("@solana/web3.js"),Qe=require("buffer");var vt=He(require("js-sha3")),Qn=vt.sha3_256,xt=e=>/^(0x)?[0-9a-fA-F]+::\w+::\w+$/.test(e);function I(e,t){if(t===1)return(0,we.zeroPadValue)(new de.PublicKey(e).toBytes(),32);if(t===Z.ethereum||t===Z.bsc||t===Z.polygon||t===Z.avalanche||t===Z.arbitrum||t===Z.optimism||t===Z.base||t===Z.unichain||t===Z.linea)return(0,we.zeroPadValue)(e,32);if(t===Z.aptos&&xt(e))return`0x${Qn(e)}`;if(t===Z.sui){let n=e.startsWith("0x")?e.substring(2):e;if(Qe.Buffer.from(n,"hex").length!==32)throw new Error("Invalid sui address: "+e);return(0,we.zeroPadValue)(e,32)}else throw console.log(`Unsupported chain id: ${t}`,e),new Error("Unsupported token chain")}function U(e){return new Uint8Array(Qe.Buffer.from(e.startsWith("0x")?e.substring(2):e,"hex"))}function x(e,t,n=!1,r=new de.PublicKey(d.TOKEN_PROGRAM_ID),i=new de.PublicKey(d.ASSOCIATED_TOKEN_PROGRAM_ID)){if(!n&&!de.PublicKey.isOnCurve(t.toBuffer()))throw new Error("TokenOwnerOffCurveError");let[u]=de.PublicKey.findProgramAddressSync([t.toBuffer(),r.toBuffer(),e.toBuffer()],i);return u}function g(e,t){if(e==null)throw new Error("getAmountOfFractionalAmount: Amount is null or undefined");if(typeof e!="string"&&typeof e!="number")throw new Error("getAmountOfFractionalAmount: Amount is not a string or number");if(typeof e=="string"&&e.length===0)throw new Error("getAmountOfFractionalAmount: Amount is empty");if(!Number.isFinite(Number(e)))throw new Error("getAmountOfFractionalAmount: Amount is not a number");let n=Math.min(8,Number(t)),r=Number(e).toFixed(n+1),i=new RegExp(`^-?\\d+(?:\\.\\d{0,${n}})?`),u=r.match(i);if(!u)throw new Error("getAmountOfFractionalAmount: fixedAmount is null");let s=u[0];return(0,we.parseUnits)(s,Number(t))}function Vn(e,t){return Number((0,we.formatUnits)(e,t))}var Z={solana:1,ethereum:2,bsc:4,polygon:5,avalanche:6,arbitrum:23,optimism:24,base:30,aptos:22,sui:21,unichain:44,linea:38};function _(e){return Z[e]}var rt={[1]:2,[56]:4,[137]:5,[43114]:6,[42161]:23,[10]:24,[8453]:30,[130]:44,[59144]:38};function it(e){let t=Z[e],n=Object.keys(rt);for(let r of n)if(rt[r]===t)return Number(r);throw new Error(`Unsupported chain: ${e}`)}function Y(e){return rt[e]}var Ce=[10,6,0];function Ee(){return Ce.join("_")}function st(e){return Ce[0]<e[0]?!1:Ce[0]>e[0]?!0:Ce[1]<e[1]?!1:Ce[1]>e[1]||Ce[2]>=e[2]}function B(e){return e==="solana"?9:18}function ot(e){return e==="solana"?9:8}var jn=BigInt(2)**BigInt(64)-BigInt(1);function F(e){if(e<BigInt(0)||e>jn)throw new Error(`Invalid u64: ${e}`);let t=Qe.Buffer.alloc(8);return t.writeBigUInt64LE(e),t}var re={value:BigInt(0),deadline:0,v:0,r:`0x${de.SystemProgram.programId.toBuffer().toString("hex")}`,s:`0x${de.SystemProgram.programId.toBuffer().toString("hex")}`};function Re(e){return new Promise(t=>{setTimeout(()=>{t()},e)})}function Ae(e,t){return!e||!t?null:e.type==="WH"?t?.solana||null:e.type==="MCTP"||e.type==="SWIFT"?e.toChain==="solana"?t?.solana||null:e.toChain==="sui"?t?.sui||null:t?.evm||null:e.type==="FAST_MCTP"&&e.toChain!=="solana"&&e.toChain!=="sui"&&t?.evm||null}var Oe=1,Fe=2,ut=1,pt=1,ct=2,lt=3;function dt(e){return Object.entries(e).filter(([t,n])=>n!=null&&!Array.isArray(n)).map(([t,n])=>`${encodeURIComponent(t)}=${encodeURIComponent(n)}`).join("&")}async function me(e){if(e.status.toString().startsWith("5")){let t;try{let n=await e.json();(n?.code||n?.statusCode)&&(n?.message||n?.msg)&&(t={code:n?.code||n?.statusCode,message:n?.message||n?.msg})}catch{t=new Error("Internal server error")}throw t}}async function Yn(e){let t=e?`?standard=${e.join(",")}`:"",n=await(0,se.default)(`${d.PRICE_URL}/tokens${t}`,{method:"GET",redirect:"follow"});if(await me(n),n.status===200)return await n.json();throw new Error("Cannot fetch Mayan tokens!")}async function $n(e,t=!1,n){let r={chain:e,nonPortal:t,standard:n?n?.join(","):void 0},i=await(0,se.default)(`${d.PRICE_URL}/tokens?${dt(r)}`);if(await me(i),i.status===200)return(await i.json())[e];throw new Error("Cannot fetch Mayan tokens!")}function Bt(e,t={wormhole:!0,swift:!0,mctp:!0,shuttle:!0,gasless:!1,onlyDirect:!1,fastMctp:!0}){let{gasDrop:n,referrerBps:r}=e,i=e.slippageBps;i!=="auto"&&!Number.isFinite(i)&&(i=e.slippage*100);let s={...{wormhole:t.wormhole!==!1,swift:t.swift!==!1,mctp:t.mctp!==!1,shuttle:t.shuttle===!0,fastMctp:t.fastMctp!==!1,gasless:t.gasless===!0,onlyDirect:t.onlyDirect===!0},solanaProgram:d.MAYAN_PROGRAM_ID,forwarderAddress:d.MAYAN_FORWARDER_CONTRACT,amountIn:!e.amountIn64&&Number.isFinite(e.amount)?e.amount:void 0,amountIn64:e.amountIn64,fromToken:e.fromToken,fromChain:e.fromChain,toToken:e.toToken,toChain:e.toChain,slippageBps:i,referrer:e.referrer,referrerBps:Number.isFinite(r)?r:void 0,gasDrop:Number.isFinite(n)?n:void 0,sdkVersion:Ee()},a=`${d.PRICE_URL}/quote?`,p=dt(s);return a+p}async function zn(e,t={swift:!0,mctp:!0,gasless:!1,onlyDirect:!1}){let n=Bt(e,t),r=await(0,se.default)(n,{method:"GET",redirect:"follow"});await me(r);let i=await r.json();if(r.status!==200&&r.status!==201)throw{code:i?.code||0,message:i?.msg||i?.message||"Route not found",data:i?.data};if(!st(i.minimumSdkVersion))throw{code:9999,message:"Swap SDK is outdated!"};return i.quotes}async function Jn(e){let t=await(0,se.default)(`${d.PRICE_URL}/clock/${e}`,{method:"GET",redirect:"follow"});await me(t);let n=await t.json();if(t.status!==200&&t.status!==201)throw n;return n.clock}async function mt(){let e=await(0,se.default)(`${d.RELAYER_URL}/active-relayers?solanaProgram=${d.MAYAN_PROGRAM_ID}`,{method:"GET",redirect:"follow"});await me(e);let t=await e.json();if(e.status!==200&&e.status!==201)throw t;return t.suggested}async function De(e){let t=dt({...e,sdkVersion:Ee()}),n=await(0,se.default)(`${d.PRICE_URL}/get-swap/solana?${t}`,{method:"GET",redirect:"follow"});await me(n);let r=await n.json();if(n.status!==200&&n.status!==201)throw r;return r}async function yt(e){let t=JSON.stringify({...e,sdkVersion:Ee()}),n=`${d.PRICE_URL}/get-swap/sui`,r=await(0,se.default)(n,{method:"POST",redirect:"follow",body:t,headers:{"Content-Type":"application/json"}});await me(r);let i=await r.json();if(r.status!==200&&r.status!==201)throw i;return i}async function ft(e,t){let n=await(0,se.default)(`${d.EXPLORER_URL}/submit/evm`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...e,signature:t},(r,i)=>typeof i=="bigint"?i.toString():i)});await me(n)}async function bt(e){let t=await(0,se.default)(`${d.EXPLORER_URL}/submit/solana`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({signedTx:e})});await me(t);let n=await t.json();if(t.status!==200&&t.status!==201)throw n;return n}var Te=require("ethers"),Pe=require("@solana/web3.js");var Nt={_format:"hh-sol-artifact-1",contractName:"MayanSwap",sourceName:"src/MayanSwap.sol",abi:[{inputs:[{internalType:"address",name:"_tokenBridge",type:"address"},{internalType:"address",name:"_weth",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint16",name:"emitterChainId",type:"uint16"},{indexed:!0,internalType:"bytes32",name:"emitterAddress",type:"bytes32"},{indexed:!0,internalType:"uint64",name:"sequence",type:"uint64"}],name:"Redeemed",type:"event"},{inputs:[{internalType:"address",name:"newGuardian",type:"address"}],name:"changeGuardian",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"claimGuardian",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"uint8",name:"payloadId",type:"uint8"},{internalType:"bytes32",name:"tokenAddr",type:"bytes32"},{internalType:"uint16",name:"tokenChainId",type:"uint16"},{internalType:"bytes32",name:"destAddr",type:"bytes32"},{internalType:"uint16",name:"destChainId",type:"uint16"},{internalType:"bytes32",name:"sourceAddr",type:"bytes32"},{internalType:"uint16",name:"sourceChainId",type:"uint16"},{internalType:"uint64",name:"sequence",type:"uint64"},{internalType:"uint64",name:"amountOutMin",type:"uint64"},{internalType:"uint64",name:"deadline",type:"uint64"},{internalType:"uint64",name:"swapFee",type:"uint64"},{internalType:"uint64",name:"redeemFee",type:"uint64"},{internalType:"uint64",name:"refundFee",type:"uint64"},{internalType:"bytes32",name:"auctionAddr",type:"bytes32"},{internalType:"bool",name:"unwrapRedeem",type:"bool"},{internalType:"bool",name:"unwrapRefund",type:"bool"}],internalType:"struct MayanStructs.Swap",name:"s",type:"tuple"}],name:"encodeSwap",outputs:[{internalType:"bytes",name:"encoded",type:"bytes"}],stateMutability:"pure",type:"function"},{inputs:[],name:"getWeth",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"isPaused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"encoded",type:"bytes"}],name:"parseRedeemPayload",outputs:[{components:[{internalType:"uint8",name:"payloadId",type:"uint8"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint64",name:"relayerFee",type:"uint64"},{internalType:"bool",name:"unwrap",type:"bool"},{internalType:"uint64",name:"gasDrop",type:"uint64"},{internalType:"bytes",name:"customPayload",type:"bytes"}],internalType:"struct MayanStructs.Redeem",name:"r",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"encodedVm",type:"bytes"}],name:"redeem",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"encodedVm",type:"bytes"}],name:"redeemAndUnwrap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bool",name:"_pause",type:"bool"}],name:"setPause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"uint64",name:"swapFee",type:"uint64"},{internalType:"uint64",name:"redeemFee",type:"uint64"},{internalType:"uint64",name:"refundFee",type:"uint64"}],internalType:"struct MayanSwap.RelayerFees",name:"relayerFees",type:"tuple"},{components:[{internalType:"bytes32",name:"mayanAddr",type:"bytes32"},{internalType:"uint16",name:"mayanChainId",type:"uint16"},{internalType:"bytes32",name:"auctionAddr",type:"bytes32"},{internalType:"bytes32",name:"destAddr",type:"bytes32"},{internalType:"uint16",name:"destChainId",type:"uint16"},{internalType:"bytes32",name:"referrer",type:"bytes32"},{internalType:"bytes32",name:"refundAddr",type:"bytes32"}],internalType:"struct MayanSwap.Recepient",name:"recipient",type:"tuple"},{internalType:"bytes32",name:"tokenOutAddr",type:"bytes32"},{internalType:"uint16",name:"tokenOutChainId",type:"uint16"},{components:[{internalType:"uint256",name:"transferDeadline",type:"uint256"},{internalType:"uint64",name:"swapDeadline",type:"uint64"},{internalType:"uint64",name:"amountOutMin",type:"uint64"},{internalType:"bool",name:"unwrap",type:"bool"},{internalType:"uint64",name:"gasDrop",type:"uint64"},{internalType:"bytes",name:"customPayload",type:"bytes"}],internalType:"struct MayanSwap.Criteria",name:"criteria",type:"tuple"},{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"amountIn",type:"uint256"}],name:"swap",outputs:[{internalType:"uint64",name:"sequence",type:"uint64"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"to",type:"address"}],name:"sweepEth",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address",name:"to",type:"address"}],name:"sweepToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"uint64",name:"swapFee",type:"uint64"},{internalType:"uint64",name:"redeemFee",type:"uint64"},{internalType:"uint64",name:"refundFee",type:"uint64"}],internalType:"struct MayanSwap.RelayerFees",name:"relayerFees",type:"tuple"},{components:[{internalType:"bytes32",name:"mayanAddr",type:"bytes32"},{internalType:"uint16",name:"mayanChainId",type:"uint16"},{internalType:"bytes32",name:"auctionAddr",type:"bytes32"},{internalType:"bytes32",name:"destAddr",type:"bytes32"},{internalType:"uint16",name:"destChainId",type:"uint16"},{internalType:"bytes32",name:"referrer",type:"bytes32"},{internalType:"bytes32",name:"refundAddr",type:"bytes32"}],internalType:"struct MayanSwap.Recepient",name:"recipient",type:"tuple"},{internalType:"bytes32",name:"tokenOutAddr",type:"bytes32"},{internalType:"uint16",name:"tokenOutChainId",type:"uint16"},{components:[{internalType:"uint256",name:"transferDeadline",type:"uint256"},{internalType:"uint64",name:"swapDeadline",type:"uint64"},{internalType:"uint64",name:"amountOutMin",type:"uint64"},{internalType:"bool",name:"unwrap",type:"bool"},{internalType:"uint64",name:"gasDrop",type:"uint64"},{internalType:"bytes",name:"customPayload",type:"bytes"}],internalType:"struct MayanSwap.Criteria",name:"criteria",type:"tuple"}],name:"wrapAndSwapETH",outputs:[{internalType:"uint64",name:"sequence",type:"uint64"}],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}]};var oe={_format:"hh-sol-artifact-1",contractName:"MayanForwarder",sourceName:"src/MayanForwarder.sol",abi:[{inputs:[{internalType:"address",name:"_guardian",type:"address"},{internalType:"address[]",name:"_swapProtocols",type:"address[]"},{internalType:"address[]",name:"_mayanProtocols",type:"address[]"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"UnsupportedProtocol",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"address",name:"mayanProtocol",type:"address"},{indexed:!1,internalType:"bytes",name:"protocolData",type:"bytes"}],name:"ForwardedERC20",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"mayanProtocol",type:"address"},{indexed:!1,internalType:"bytes",name:"protocolData",type:"bytes"}],name:"ForwardedEth",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"SwapAndForwarded",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"tokenIn",type:"address"},{indexed:!1,internalType:"uint256",name:"amountIn",type:"uint256"},{indexed:!1,internalType:"address",name:"swapProtocol",type:"address"},{indexed:!1,internalType:"address",name:"middleToken",type:"address"},{indexed:!1,internalType:"uint256",name:"middleAmount",type:"uint256"},{indexed:!1,internalType:"address",name:"mayanProtocol",type:"address"},{indexed:!1,internalType:"bytes",name:"mayanData",type:"bytes"}],name:"SwapAndForwardedERC20",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amountIn",type:"uint256"},{indexed:!1,internalType:"address",name:"swapProtocol",type:"address"},{indexed:!1,internalType:"address",name:"middleToken",type:"address"},{indexed:!1,internalType:"uint256",name:"middleAmount",type:"uint256"},{indexed:!1,internalType:"address",name:"mayanProtocol",type:"address"},{indexed:!1,internalType:"bytes",name:"mayanData",type:"bytes"}],name:"SwapAndForwardedEth",type:"event"},{inputs:[{internalType:"address",name:"newGuardian",type:"address"}],name:"changeGuardian",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"claimGuardian",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"amountIn",type:"uint256"},{components:[{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],internalType:"struct MayanForwarder.PermitParams",name:"permitParams",type:"tuple"},{internalType:"address",name:"mayanProtocol",type:"address"},{internalType:"bytes",name:"protocolData",type:"bytes"}],name:"forwardERC20",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"mayanProtocol",type:"address"},{internalType:"bytes",name:"protocolData",type:"bytes"}],name:"forwardEth",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"guardian",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"mayanProtocols",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"nextGuardian",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"to",type:"address"}],name:"rescueEth",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address",name:"to",type:"address"}],name:"rescueToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"mayanProtocol",type:"address"},{internalType:"bool",name:"enabled",type:"bool"}],name:"setMayanProtocol",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"swapProtocol",type:"address"},{internalType:"bool",name:"enabled",type:"bool"}],name:"setSwapProtocol",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"amountIn",type:"uint256"},{components:[{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],internalType:"struct MayanForwarder.PermitParams",name:"permitParams",type:"tuple"},{internalType:"address",name:"swapProtocol",type:"address"},{internalType:"bytes",name:"swapData",type:"bytes"},{internalType:"address",name:"middleToken",type:"address"},{internalType:"uint256",name:"minMiddleAmount",type:"uint256"},{internalType:"address",name:"mayanProtocol",type:"address"},{internalType:"bytes",name:"mayanData",type:"bytes"}],name:"swapAndForwardERC20",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"amountIn",type:"uint256"},{internalType:"address",name:"swapProtocol",type:"address"},{internalType:"bytes",name:"swapData",type:"bytes"},{internalType:"address",name:"middleToken",type:"address"},{internalType:"uint256",name:"minMiddleAmount",type:"uint256"},{internalType:"address",name:"mayanProtocol",type:"address"},{internalType:"bytes",name:"mayanData",type:"bytes"}],name:"swapAndForwardEth",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"swapProtocols",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"}],linkReferences:{},deployedLinkReferences:{}};var Et=require("buffer");var G=require("ethers"),gt=require("@solana/web3.js");var Tt={_format:"hh-sol-artifact-1",contractName:"MayanCircle",sourceName:"src/MayanCircle.sol",abi:[{inputs:[{internalType:"address",name:"_cctpTokenMessenger",type:"address"},{internalType:"address",name:"_wormhole",type:"address"},{internalType:"address",name:"_feeManager",type:"address"},{internalType:"uint16",name:"_auctionChainId",type:"uint16"},{internalType:"bytes32",name:"_auctionAddr",type:"bytes32"},{internalType:"uint8",name:"_consistencyLevel",type:"uint8"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"CallerAlreadySet",type:"error"},{inputs:[],name:"CallerNotSet",type:"error"},{inputs:[],name:"CctpReceiveFailed",type:"error"},{inputs:[],name:"DeadlineViolation",type:"error"},{inputs:[],name:"DomainAlreadySet",type:"error"},{inputs:[],name:"DomainNotSet",type:"error"},{inputs:[],name:"EmitterAlreadySet",type:"error"},{inputs:[],name:"EthTransferFailed",type:"error"},{inputs:[],name:"InvalidAction",type:"error"},{inputs:[],name:"InvalidAddress",type:"error"},{inputs:[],name:"InvalidAmountOut",type:"error"},{inputs:[],name:"InvalidCaller",type:"error"},{inputs:[],name:"InvalidDestAddr",type:"error"},{inputs:[],name:"InvalidDomain",type:"error"},{inputs:[],name:"InvalidEmitter",type:"error"},{inputs:[],name:"InvalidGasDrop",type:"error"},{inputs:[],name:"InvalidMintRecipient",type:"error"},{inputs:[],name:"InvalidNonce",type:"error"},{inputs:[],name:"InvalidOrder",type:"error"},{inputs:[],name:"InvalidPayload",type:"error"},{inputs:[],name:"InvalidProtocolFee",type:"error"},{inputs:[],name:"InvalidRedeemFee",type:"error"},{inputs:[],name:"InvalidReferrerFee",type:"error"},{inputs:[],name:"MintRecipientAlreadySet",type:"error"},{inputs:[],name:"MintRecipientNotSet",type:"error"},{inputs:[],name:"Paused",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint32",name:"sourceDomain",type:"uint32"},{indexed:!1,internalType:"uint64",name:"sourceNonce",type:"uint64"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"OrderFulfilled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint32",name:"sourceDomain",type:"uint32"},{indexed:!1,internalType:"uint64",name:"sourceNonce",type:"uint64"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"OrderRefunded",type:"event"},{inputs:[],name:"auctionAddr",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"auctionChainId",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"amountIn",type:"uint256"},{internalType:"uint64",name:"redeemFee",type:"uint64"},{internalType:"uint64",name:"gasDrop",type:"uint64"},{internalType:"bytes32",name:"destAddr",type:"bytes32"},{internalType:"uint32",name:"destDomain",type:"uint32"},{internalType:"uint8",name:"payloadType",type:"uint8"},{internalType:"bytes",name:"customPayload",type:"bytes"}],name:"bridgeWithFee",outputs:[{internalType:"uint64",name:"sequence",type:"uint64"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"amountIn",type:"uint256"},{internalType:"uint64",name:"gasDrop",type:"uint64"},{internalType:"uint256",name:"redeemFee",type:"uint256"},{internalType:"uint32",name:"destDomain",type:"uint32"},{internalType:"bytes32",name:"destAddr",type:"bytes32"}],name:"bridgeWithLockedFee",outputs:[{internalType:"uint64",name:"cctpNonce",type:"uint64"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"cctpTokenMessenger",outputs:[{internalType:"contract ITokenMessenger",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint16",name:"",type:"uint16"}],name:"chainIdToEmitter",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newGuardian",type:"address"}],name:"changeGuardian",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"claimGuardian",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"consistencyLevel",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"amountIn",type:"uint256"},{internalType:"uint64",name:"gasDrop",type:"uint64"},{internalType:"bytes32",name:"destAddr",type:"bytes32"},{internalType:"uint16",name:"destChain",type:"uint16"},{internalType:"bytes32",name:"tokenOut",type:"bytes32"},{internalType:"uint64",name:"minAmountOut",type:"uint64"},{internalType:"uint64",name:"deadline",type:"uint64"},{internalType:"uint64",name:"redeemFee",type:"uint64"},{internalType:"bytes32",name:"referrerAddr",type:"bytes32"},{internalType:"uint8",name:"referrerBps",type:"uint8"}],internalType:"struct MayanCircle.OrderParams",name:"params",type:"tuple"}],name:"createOrder",outputs:[{internalType:"uint64",name:"sequence",type:"uint64"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint32",name:"",type:"uint32"}],name:"domainToCaller",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"feeManager",outputs:[{internalType:"contract IFeeManager",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint64",name:"",type:"uint64"}],name:"feeStorage",outputs:[{internalType:"bytes32",name:"destAddr",type:"bytes32"},{internalType:"uint64",name:"gasDrop",type:"uint64"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"redeemFee",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"cctpMsg",type:"bytes"},{internalType:"bytes",name:"cctpSigs",type:"bytes"},{internalType:"bytes",name:"encodedVm",type:"bytes"},{components:[{internalType:"bytes32",name:"destAddr",type:"bytes32"},{internalType:"uint16",name:"destChainId",type:"uint16"},{internalType:"bytes32",name:"tokenOut",type:"bytes32"},{internalType:"uint64",name:"promisedAmount",type:"uint64"},{internalType:"uint64",name:"gasDrop",type:"uint64"},{internalType:"uint64",name:"redeemFee",type:"uint64"},{internalType:"uint64",name:"deadline",type:"uint64"},{internalType:"bytes32",name:"referrerAddr",type:"bytes32"},{internalType:"uint8",name:"referrerBps",type:"uint8"},{internalType:"uint8",name:"protocolBps",type:"uint8"},{internalType:"bytes32",name:"driver",type:"bytes32"}],internalType:"struct MayanCircle.FulfillParams",name:"params",type:"tuple"},{internalType:"address",name:"swapProtocol",type:"address"},{internalType:"bytes",name:"swapData",type:"bytes"}],name:"fulfillOrder",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint16",name:"chainId",type:"uint16"}],name:"getDomain",outputs:[{internalType:"uint32",name:"domain",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[],name:"guardian",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"isPaused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"keyToMintRecipient",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"localDomain",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"cctpMsg",type:"bytes"},{internalType:"bytes",name:"cctpSigs",type:"bytes"},{internalType:"bytes",name:"encodedVm",type:"bytes"},{components:[{internalType:"uint8",name:"payloadType",type:"uint8"},{internalType:"bytes32",name:"destAddr",type:"bytes32"},{internalType:"uint64",name:"gasDrop",type:"uint64"},{internalType:"uint64",name:"redeemFee",type:"uint64"},{internalType:"uint64",name:"burnAmount",type:"uint64"},{internalType:"bytes32",name:"burnToken",type:"bytes32"},{internalType:"bytes32",name:"customPayload",type:"bytes32"}],internalType:"struct MayanCircle.BridgeWithFeeParams",name:"bridgeParams",type:"tuple"}],name:"redeemWithFee",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"cctpMsg",type:"bytes"},{internalType:"bytes",name:"cctpSigs",type:"bytes"},{internalType:"bytes32",name:"unlockerAddr",type:"bytes32"}],name:"redeemWithLockedFee",outputs:[{internalType:"uint64",name:"sequence",type:"uint64"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint32",name:"cctpNonce",type:"uint32"},{internalType:"uint32",name:"cctpDomain",type:"uint32"},{internalType:"bytes32",name:"destAddr",type:"bytes32"},{internalType:"bytes32",name:"unlockerAddr",type:"bytes32"}],name:"refineFee",outputs:[{internalType:"uint64",name:"sequence",type:"uint64"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"encodedVm",type:"bytes"},{internalType:"bytes",name:"cctpMsg",type:"bytes"},{internalType:"bytes",name:"cctpSigs",type:"bytes"},{components:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"amountIn",type:"uint256"},{internalType:"uint64",name:"gasDrop",type:"uint64"},{internalType:"bytes32",name:"destAddr",type:"bytes32"},{internalType:"uint16",name:"destChain",type:"uint16"},{internalType:"bytes32",name:"tokenOut",type:"bytes32"},{internalType:"uint64",name:"minAmountOut",type:"uint64"},{internalType:"uint64",name:"deadline",type:"uint64"},{internalType:"uint64",name:"redeemFee",type:"uint64"},{internalType:"bytes32",name:"referrerAddr",type:"bytes32"},{internalType:"uint8",name:"referrerBps",type:"uint8"}],internalType:"struct MayanCircle.OrderParams",name:"orderParams",type:"tuple"},{components:[{internalType:"bytes32",name:"trader",type:"bytes32"},{internalType:"uint16",name:"sourceChainId",type:"uint16"},{internalType:"uint8",name:"protocolBps",type:"uint8"}],internalType:"struct MayanCircle.ExtraParams",name:"extraParams",type:"tuple"}],name:"refund",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"to",type:"address"}],name:"rescueEth",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address",name:"to",type:"address"}],name:"rescueToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint8",name:"_consistencyLevel",type:"uint8"}],name:"setConsistencyLevel",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"chainId",type:"uint16"},{internalType:"uint32",name:"domain",type:"uint32"}],name:"setDomain",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint32",name:"domain",type:"uint32"},{internalType:"bytes32",name:"caller",type:"bytes32"}],name:"setDomainCaller",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"chainId",type:"uint16"},{internalType:"bytes32",name:"emitter",type:"bytes32"}],name:"setEmitter",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_feeManager",type:"address"}],name:"setFeeManager",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint32",name:"destDomain",type:"uint32"},{internalType:"address",name:"tokenIn",type:"address"},{internalType:"bytes32",name:"mintRecipient",type:"bytes32"}],name:"setMintRecipient",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bool",name:"_pause",type:"bool"}],name:"setPause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"encodedVm",type:"bytes"},{components:[{internalType:"uint8",name:"action",type:"uint8"},{internalType:"uint8",name:"payloadType",type:"uint8"},{internalType:"uint64",name:"cctpNonce",type:"uint64"},{internalType:"uint32",name:"cctpDomain",type:"uint32"},{internalType:"bytes32",name:"unlockerAddr",type:"bytes32"},{internalType:"uint64",name:"gasDrop",type:"uint64"}],internalType:"struct MayanCircle.UnlockFeeMsg",name:"unlockMsg",type:"tuple"}],name:"unlockFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"encodedVm1",type:"bytes"},{internalType:"bytes",name:"encodedVm2",type:"bytes"},{components:[{internalType:"uint8",name:"action",type:"uint8"},{internalType:"uint8",name:"payloadType",type:"uint8"},{internalType:"uint64",name:"cctpNonce",type:"uint64"},{internalType:"uint32",name:"cctpDomain",type:"uint32"},{internalType:"bytes32",name:"unlockerAddr",type:"bytes32"},{internalType:"uint64",name:"gasDrop",type:"uint64"}],internalType:"struct MayanCircle.UnlockFeeMsg",name:"unlockMsg",type:"tuple"},{components:[{internalType:"uint8",name:"action",type:"uint8"},{internalType:"uint8",name:"payloadType",type:"uint8"},{internalType:"uint64",name:"cctpNonce",type:"uint64"},{internalType:"uint32",name:"cctpDomain",type:"uint32"},{internalType:"bytes32",name:"unlockerAddr",type:"bytes32"},{internalType:"uint64",name:"gasDrop",type:"uint64"},{internalType:"bytes32",name:"destAddr",type:"bytes32"}],internalType:"struct MayanCircle.UnlockRefinedFeeMsg",name:"refinedMsg",type:"tuple"}],name:"unlockFeeRefined",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"wormhole",outputs:[{internalType:"contract IWormhole",name:"",type:"address"}],stateMutability:"view",type:"function"},{stateMutability:"payable",type:"receive"}],linkReferences:{},deployedLinkReferences:{}};var Lt=require("buffer");var ie=require("@solana/web3.js");var ue=require("buffer"),K=6;function pe(e){switch(e){case"ethereum":return 0;case"avalanche":return 1;case"optimism":return 2;case"arbitrum":return 3;case"solana":return 5;case"base":return 6;case"polygon":return 7;case"sui":return 8;case"unichain":return 10;case"linea":return 11;default:throw new Error("unsupported chain for cctp")}}function Ve(e,t){let n=new ie.PublicKey(d.CCTP_CORE_PROGRAM_ID),r=new ie.PublicKey(d.CCTP_TOKEN_PROGRAM_ID),[i]=ie.PublicKey.findProgramAddressSync([ue.Buffer.from("message_transmitter")],n),[u]=ie.PublicKey.findProgramAddressSync([ue.Buffer.from("sender_authority")],r),[s]=ie.PublicKey.findProgramAddressSync([ue.Buffer.from("local_token"),e.toBytes()],r),[a]=ie.PublicKey.findProgramAddressSync([ue.Buffer.from("token_messenger")],r),[p]=ie.PublicKey.findProgramAddressSync([ue.Buffer.from("token_minter")],r),o=pe(t),[c]=ie.PublicKey.findProgramAddressSync([ue.Buffer.from("remote_token_messenger"),ue.Buffer.from(o.toString())],r),[l]=ie.PublicKey.findProgramAddressSync([ue.Buffer.from("__event_authority")],n),[m]=ie.PublicKey.findProgramAddressSync([ue.Buffer.from("__event_authority")],r);return{messageTransmitter:i,senderAuthority:u,remoteTokenMessengerKey:c,tokenMessenger:a,tokenMinter:p,eventAuthToken:m,eventAuthCore:l,localToken:s}}function Zn(e,t,n,r){let i=Y(Number(n)),u=_(e.fromChain),s=_(e.toChain);if(u!==i)throw new Error(`Signer chain id(${Number(n)}) and quote from chain are not same! ${u} !== ${i}`);let a=e.cheaperChain===e.fromChain;if(a&&r)throw new Error("Bridge lock fee cannot have custom payload");let p=I(t,s),o=g(e.redeemRelayerFee,K),c=g(e.gasDrop,Math.min(B(e.toChain),8)),l=BigInt(e.effectiveAmountIn64),m=pe(e.toChain);if(!e.mctpMayanContract)throw new Error("MCTP contract address is missing");let y=e.mctpMayanContract;if(e.toChain==="solana"&&a)throw new Error("Cannot lock fee for transfer to solana");let f=g(e.bridgeFee,B(e.fromChain));return a&&(f=BigInt(0)),{lockFee:a,tokenIn:e.mctpInputContract,amountIn:l,redeemFee:o,gasDrop:c,destAddr:p,destDomain:m,payloadType:r?Fe:Oe,customPayload:r?`0x${Lt.Buffer.from(r).toString("hex")}`:"0x",bridgeFee:f,contractAddress:y}}function Wt(e,t,n,r){let i=Zn(e,t,n,r),{contractAddress:u,tokenIn:s,amountIn:a,destAddr:p,lockFee:o,redeemFee:c,gasDrop:l,destDomain:m,customPayload:y,payloadType:f,bridgeFee:b}=i,T=new G.Contract(u,Tt.abi),C,A;return o?C=T.interface.encodeFunctionData("bridgeWithLockedFee",[s,a,l,c,m,p]):C=T.interface.encodeFunctionData("bridgeWithFee",[s,a,c,l,p,m,f,y]),A=(0,G.toBeHex)(b),{to:u,data:C,value:A,_params:i}}function Xn(e,t,n,r){let i=Y(Number(r)),u=_(e.fromChain),s=_(e.toChain);if(u!==i)throw new Error(`Signer chain id(${Number(r)}) and quote from chain are not same! ${u} !== ${i}`);if(!e.mctpMayanContract)throw new Error("MCTP contract address is missing");let a=e.mctpMayanContract,p=I(t,s),o;n?o=I(n,s):o=I(gt.SystemProgram.programId.toString(),_("solana"));let c=g(e.redeemRelayerFee,K),l=g(e.gasDrop,Math.min(B(e.toChain),8)),m=BigInt(e.effectiveAmountIn64),y=g(e.minAmountOut,Math.min(8,e.toToken.decimals)),f=BigInt(e.deadline64),b=e.toToken.contract===G.ZeroAddress?I(gt.SystemProgram.programId.toString(),_("solana")):I(e.toChain==="sui"?e.toToken.verifiedAddress:e.toToken.contract,e.toToken.wChainId);return{params:{tokenIn:e.mctpInputContract,amountIn:m,gasDrop:l,destAddr:p,destChain:s,tokenOut:b,minAmountOut:y,deadline:f,redeemFee:c,referrerAddr:o,referrerBps:e.referrerBps||0},bridgeFee:g(e.bridgeFee,B(e.fromChain)),contractAddress:a}}function Kt(e,t,n,r){let i=Xn(e,t,n,r),{contractAddress:u,params:s,bridgeFee:a}=i,o=new G.Contract(u,Tt.abi).interface.encodeFunctionData("createOrder",[s]),c=(0,G.toBeHex)(a);return{to:u,data:o,value:c,_params:i}}function wt(e,t,n,r,i,u){if(e.type!=="MCTP")throw new Error("Quote type is not MCTP");if(!Number.isFinite(Number(r)))throw new Error("Invalid signer chain id");r=Number(r);let s=i||re,a=new G.Contract(d.MAYAN_FORWARDER_CONTRACT,oe.abi),p=g(e.bridgeFee,B(e.fromChain)),o=(0,G.toBeHex)(p);if(e.fromToken.contract===e.mctpInputContract)if(e.hasAuction){if(!Number(e.deadline64))throw new Error("MCTP order requires timeout");let c=Kt(e,t,n,r),l="forwardERC20",m=[e.fromToken.contract,c._params.params.amountIn,s,c._params.contractAddress,c.data];return{data:a.interface.encodeFunctionData(l,m),to:d.MAYAN_FORWARDER_CONTRACT,value:(0,G.toBeHex)(o),chainId:r,_forwarder:{method:l,params:m}}}else{let c=Wt(e,t,r,u),l="forwardERC20",m=[e.fromToken.contract,c._params.amountIn,s,c._params.contractAddress,c.data];return{data:a.interface.encodeFunctionData(l,m),to:d.MAYAN_FORWARDER_CONTRACT,value:(0,G.toBeHex)(o),chainId:r,_forwarder:{method:l,params:m}}}else{let{minMiddleAmount:c,evmSwapRouterAddress:l,evmSwapRouterCalldata:m}=e;if(!c||!l||!m)throw new Error("MCTP swap requires middle amount, router address and calldata");if(e.hasAuction){if(!Number(e.deadline64))throw new Error("MCTP order requires timeout");let y=Kt(e,t,n,r),f=g(e.minMiddleAmount,K);if(e.fromToken.contract===G.ZeroAddress){let b=y._params.params.amountIn;if(b<=p)throw new Error("Amount in is less than bridge fee");p!==BigInt(0)&&(b-=p),o=(0,G.toBeHex)(y._params.params.amountIn);let T="swapAndForwardEth",C=[b,l,m,e.mctpInputContract,f,y._params.contractAddress,y.data];return{data:a.interface.encodeFunctionData(T,C),to:d.MAYAN_FORWARDER_CONTRACT,value:(0,G.toBeHex)(o),chainId:r,_forwarder:{method:T,params:C}}}else{let b="swapAndForwardERC20",T=[e.fromToken.contract,y._params.params.amountIn,s,l,m,e.mctpInputContract,f,y._params.contractAddress,y.data];return{data:a.interface.encodeFunctionData(b,T),to:d.MAYAN_FORWARDER_CONTRACT,value:(0,G.toBeHex)(o),chainId:r,_forwarder:{method:b,params:T}}}}else{let y=Wt(e,t,r,u),f=g(e.minMiddleAmount,K);if(e.fromToken.contract===G.ZeroAddress){let b=y._params.amountIn;if(b<=p)throw new Error("Amount in is less than bridge fee");p!==BigInt(0)&&(b-=p),o=(0,G.toBeHex)(y._params.amountIn);let T="swapAndForwardEth",C=[b,l,m,e.mctpInputContract,f,y._params.contractAddress,y.data];return{data:a.interface.encodeFunctionData(T,C),to:d.MAYAN_FORWARDER_CONTRACT,value:(0,G.toBeHex)(o),chainId:r,_forwarder:{method:T,params:C}}}else{let b="swapAndForwardERC20",T=[e.fromToken.contract,y._params.amountIn,s,l,m,e.mctpInputContract,f,y._params.contractAddress,y.data];return{data:a.interface.encodeFunctionData(b,T),to:d.MAYAN_FORWARDER_CONTRACT,value:(0,G.toBeHex)(o),chainId:r,_forwarder:{method:b,params:T}}}}}}var ee=require("ethers"),Ue=require("@solana/web3.js");var Ut={_format:"hh-sol-artifact-1",contractName:"MayanSwift",sourceName:"src/MayanSwift.sol",abi:[{inputs:[{internalType:"address",name:"_wormhole",type:"address"},{internalType:"address",name:"_feeManager",type:"address"},{internalType:"uint16",name:"_auctionChainId",type:"uint16"},{internalType:"bytes32",name:"_auctionAddr",type:"bytes32"},{internalType:"bytes32",name:"_solanaEmitter",type:"bytes32"},{internalType:"uint8",name:"_consistencyLevel",type:"uint8"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"DeadlineViolation",type:"error"},{inputs:[],name:"DuplicateOrder",type:"error"},{inputs:[],name:"FeesTooHigh",type:"error"},{inputs:[],name:"InvalidAction",type:"error"},{inputs:[],name:"InvalidAmount",type:"error"},{inputs:[],name:"InvalidAuctionMode",type:"error"},{inputs:[],name:"InvalidBpsFee",type:"error"},{inputs:[],name:"InvalidContractSignature",type:"error"},{inputs:[],name:"InvalidDestChain",type:"error"},{inputs:[],name:"InvalidEmitterAddress",type:"error"},{inputs:[],name:"InvalidEmitterChain",type:"error"},{inputs:[],name:"InvalidEvmAddr",type:"error"},{inputs:[],name:"InvalidGasDrop",type:"error"},{inputs:[],name:"InvalidOrderHash",type:"error"},{inputs:[],name:"InvalidOrderStatus",type:"error"},{inputs:[],name:"InvalidSignature",type:"error"},{inputs:[],name:"InvalidSignatureLength",type:"error"},{inputs:[],name:"InvalidSigner",type:"error"},{inputs:[],name:"InvalidSrcChain",type:"error"},{inputs:[],name:"InvalidWormholeFee",type:"error"},{inputs:[],name:"OrderNotExists",type:"error"},{inputs:[],name:"Paused",type:"error"},{inputs:[],name:"SmallAmountIn",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"key",type:"bytes32"},{indexed:!1,internalType:"uint64",name:"sequence",type:"uint64"}],name:"OrderCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"key",type:"bytes32"}],name:"OrderCreated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"key",type:"bytes32"},{indexed:!1,internalType:"uint64",name:"sequence",type:"uint64"},{indexed:!1,internalType:"uint256",name:"netAmount",type:"uint256"}],name:"OrderFulfilled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"key",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"netAmount",type:"uint256"}],name:"OrderRefunded",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"key",type:"bytes32"}],name:"OrderUnlocked",type:"event"},{inputs:[],name:"auctionAddr",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"auctionChainId",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"tokenIn",type:"bytes32"},{components:[{internalType:"bytes32",name:"trader",type:"bytes32"},{internalType:"bytes32",name:"tokenOut",type:"bytes32"},{internalType:"uint64",name:"minAmountOut",type:"uint64"},{internalType:"uint64",name:"gasDrop",type:"uint64"},{internalType:"uint64",name:"cancelFee",type:"uint64"},{internalType:"uint64",name:"refundFee",type:"uint64"},{internalType:"uint64",name:"deadline",type:"uint64"},{internalType:"bytes32",name:"destAddr",type:"bytes32"},{internalType:"uint16",name:"destChainId",type:"uint16"},{internalType:"bytes32",name:"referrerAddr",type:"bytes32"},{internalType:"uint8",name:"referrerBps",type:"uint8"},{internalType:"uint8",name:"auctionMode",type:"uint8"},{internalType:"bytes32",name:"random",type:"bytes32"}],internalType:"struct MayanSwift.OrderParams",name:"params",type:"tuple"},{internalType:"uint16",name:"srcChainId",type:"uint16"},{internalType:"uint8",name:"protocolBps",type:"uint8"},{internalType:"bytes32",name:"canceler",type:"bytes32"}],name:"cancelOrder",outputs:[{internalType:"uint64",name:"sequence",type:"uint64"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"newGuardian",type:"address"}],name:"changeGuardian",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"claimGuardian",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"consistencyLevel",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"bytes32",name:"trader",type:"bytes32"},{internalType:"bytes32",name:"tokenOut",type:"bytes32"},{internalType:"uint64",name:"minAmountOut",type:"uint64"},{internalType:"uint64",name:"gasDrop",type:"uint64"},{internalType:"uint64",name:"cancelFee",type:"uint64"},{internalType:"uint64",name:"refundFee",type:"uint64"},{internalType:"uint64",name:"deadline",type:"uint64"},{internalType:"bytes32",name:"destAddr",type:"bytes32"},{internalType:"uint16",name:"destChainId",type:"uint16"},{internalType:"bytes32",name:"referrerAddr",type:"bytes32"},{internalType:"uint8",name:"referrerBps",type:"uint8"},{internalType:"uint8",name:"auctionMode",type:"uint8"},{internalType:"bytes32",name:"random",type:"bytes32"}],internalType:"struct MayanSwift.OrderParams",name:"params",type:"tuple"}],name:"createOrderWithEth",outputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"amountIn",type:"uint256"},{components:[{internalType:"bytes32",name:"trader",type:"bytes32"},{internalType:"bytes32",name:"tokenOut",type:"bytes32"},{internalType:"uint64",name:"minAmountOut",type:"uint64"},{internalType:"uint64",name:"gasDrop",type:"uint64"},{internalType:"uint64",name:"cancelFee",type:"uint64"},{internalType:"uint64",name:"refundFee",type:"uint64"},{internalType:"uint64",name:"deadline",type:"uint64"},{internalType:"bytes32",name:"destAddr",type:"bytes32"},{internalType:"uint16",name:"destChainId",type:"uint16"},{internalType:"bytes32",name:"referrerAddr",type:"bytes32"},{internalType:"uint8",name:"referrerBps",type:"uint8"},{internalType:"uint8",name:"auctionMode",type:"uint8"},{internalType:"bytes32",name:"random",type:"bytes32"}],internalType:"struct MayanSwift.OrderParams",name:"params",type:"tuple"},{internalType:"bytes",name:"signedOrderHash",type:"bytes"}],name:"createOrderWithSig",outputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"amountIn",type:"uint256"},{components:[{internalType:"bytes32",name:"trader",type:"bytes32"},{internalType:"bytes32",name:"tokenOut",type:"bytes32"},{internalType:"uint64",name:"minAmountOut",type:"uint64"},{internalType:"uint64",name:"gasDrop",type:"uint64"},{internalType:"uint64",name:"cancelFee",type:"uint64"},{internalType:"uint64",name:"refundFee",type:"uint64"},{internalType:"uint64",name:"deadline",type:"uint64"},{internalType:"bytes32",name:"destAddr",type:"bytes32"},{internalType:"uint16",name:"destChainId",type:"uint16"},{internalType:"bytes32",name:"referrerAddr",type:"bytes32"},{internalType:"uint8",name:"referrerBps",type:"uint8"},{internalType:"uint8",name:"auctionMode",type:"uint8"},{internalType:"bytes32",name:"random",type:"bytes32"}],internalType:"struct MayanSwift.OrderParams",name:"params",type:"tuple"}],name:"createOrderWithToken",outputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"feeManager",outputs:[{internalType:"contract IFeeManager",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"fulfillAmount",type:"uint256"},{internalType:"bytes",name:"encodedVm",type:"bytes"},{internalType:"bytes32",name:"recepient",type:"bytes32"},{internalType:"bool",name:"batch",type:"bool"}],name:"fulfillOrder",outputs:[{internalType:"uint64",name:"sequence",type:"uint64"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"fulfillAmount",type:"uint256"},{internalType:"bytes32",name:"orderHash",type:"bytes32"},{internalType:"uint16",name:"srcChainId",type:"uint16"},{internalType:"bytes32",name:"tokenIn",type:"bytes32"},{internalType:"uint8",name:"protocolBps",type:"uint8"},{components:[{internalType:"bytes32",name:"trader",type:"bytes32"},{internalType:"bytes32",name:"tokenOut",type:"bytes32"},{internalType:"uint64",name:"minAmountOut",type:"uint64"},{internalType:"uint64",name:"gasDrop",type:"uint64"},{internalType:"uint64",name:"cancelFee",type:"uint64"},{internalType:"uint64",name:"refundFee",type:"uint64"},{internalType:"uint64",name:"deadline",type:"uint64"},{internalType:"bytes32",name:"destAddr",type:"bytes32"},{internalType:"uint16",name:"destChainId",type:"uint16"},{internalType:"bytes32",name:"referrerAddr",type:"bytes32"},{internalType:"uint8",name:"referrerBps",type:"uint8"},{internalType:"uint8",name:"auctionMode",type:"uint8"},{internalType:"bytes32",name:"random",type:"bytes32"}],internalType:"struct MayanSwift.OrderParams",name:"params",type:"tuple"},{internalType:"bytes32",name:"recepient",type:"bytes32"},{internalType:"bool",name:"batch",type:"bool"}],name:"fulfillSimple",outputs:[{internalType:"uint64",name:"sequence",type:"uint64"}],stateMutability:"payable",type:"function"},{inputs:[],name:"guardian",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"nextGuardian",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"orders",outputs:[{internalType:"enum MayanSwift.Status",name:"status",type:"uint8"},{internalType:"uint64",name:"amountIn",type:"uint64"},{internalType:"uint16",name:"destChainId",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"encoded",type:"bytes"}],name:"parseFulfillPayload",outputs:[{components:[{internalType:"uint8",name:"action",type:"uint8"},{internalType:"bytes32",name:"orderHash",type:"bytes32"},{internalType:"uint16",name:"destChainId",type:"uint16"},{internalType:"bytes32",name:"destAddr",type:"bytes32"},{internalType:"bytes32",name:"driver",type:"bytes32"},{internalType:"bytes32",name:"tokenOut",type:"bytes32"},{internalType:"uint64",name:"promisedAmount",type:"uint64"},{internalType:"uint64",name:"gasDrop",type:"uint64"},{internalType:"uint64",name:"deadline",type:"uint64"},{internalType:"bytes32",name:"referrerAddr",type:"bytes32"},{internalType:"uint8",name:"referrerBps",type:"uint8"},{internalType:"uint8",name:"protocolBps",type:"uint8"},{internalType:"uint16",name:"srcChainId",type:"uint16"},{internalType:"bytes32",name:"tokenIn",type:"bytes32"}],internalType:"struct MayanSwift.FulfillMsg",name:"fulfillMsg",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"encoded",type:"bytes"}],name:"parseRefundPayload",outputs:[{components:[{internalType:"uint8",name:"action",type:"uint8"},{internalType:"bytes32",name:"orderHash",type:"bytes32"},{internalType:"uint16",name:"srcChainId",type:"uint16"},{internalType:"bytes32",name:"tokenIn",type:"bytes32"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"canceler",type:"bytes32"},{internalType:"uint64",name:"cancelFee",type:"uint64"},{internalType:"uint64",name:"refundFee",type:"uint64"}],internalType:"struct MayanSwift.RefundMsg",name:"refundMsg",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"encoded",type:"bytes"}],name:"parseUnlockPayload",outputs:[{components:[{internalType:"uint8",name:"action",type:"uint8"},{internalType:"bytes32",name:"orderHash",type:"bytes32"},{internalType:"uint16",name:"srcChainId",type:"uint16"},{internalType:"bytes32",name:"tokenIn",type:"bytes32"},{internalType:"bytes32",name:"recipient",type:"bytes32"}],internalType:"struct MayanSwift.UnlockMsg",name:"unlockMsg",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32[]",name:"orderHashes",type:"bytes32[]"}],name:"postBatch",outputs:[{internalType:"uint64",name:"sequence",type:"uint64"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"encodedVm",type:"bytes"}],name:"refundOrder",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint8",name:"_consistencyLevel",type:"uint8"}],name:"setConsistencyLevel",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_feeManager",type:"address"}],name:"setFeeManager",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bool",name:"_pause",type:"bool"}],name:"setPause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"solanaEmitter",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"encodedVm",type:"bytes"}],name:"unlockBatch",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"unlockMsgs",outputs:[{internalType:"uint8",name:"action",type:"uint8"},{internalType:"bytes32",name:"orderHash",type:"bytes32"},{internalType:"uint16",name:"srcChainId",type:"uint16"},{internalType:"bytes32",name:"tokenIn",type:"bytes32"},{internalType:"bytes32",name:"recipient",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"encodedVm",type:"bytes"}],name:"unlockSingle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"wormhole",outputs:[{internalType:"contract IWormhole",name:"",type:"address"}],stateMutability:"view",type:"function"},{stateMutability:"payable",type:"receive"}],linkReferences:{},deployedLinkReferences:{}};var h=require("@solana/web3.js");var ye=require("buffer"),X=require("@solana/buffer-layout"),Yt=require("js-sha256"),$t=He(require("bs58"));var qn={};function ea(e){return qn[e]??=new h.Connection(e),new h.Connection(e)}async function xe({trx:e,connection:t,errorChance:n,extraRpcs:r,options:i,rate:u=8}){let s=null,a=0,p=[t].concat(r.map(ea));for(let o=0;o<u;o++){if(s)try{let l=await Promise.any(p.map(m=>m.getSignatureStatus(s)));if(l&&l.value){if(l.value.err){if(a>=n)return{signature:s,serializedTrx:e};a++}else if(l.value.confirmationStatus==="confirmed")return{signature:s,serializedTrx:e}}}catch(l){console.error(l)}let c=p.map(l=>l.sendRawTransaction(e,i));if(!s)try{s=await Promise.any(c)}catch(l){console.error("Transaction not submitted, remaining attempts:",u-o-1,l)}await Re(1e3)}if(!s)throw new Error("Failed to send transaction");return{signature:s,serializedTrx:e}}function q(e,t,n,r,i=new h.PublicKey(d.TOKEN_PROGRAM_ID),u=new h.PublicKey(d.ASSOCIATED_TOKEN_PROGRAM_ID)){let s=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:h.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:h.SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}];return new h.TransactionInstruction({keys:s,programId:u,data:ye.Buffer.alloc(0)})}var Gt=165;async function Be(e,t,n,r,i,u=new h.PublicKey(d.TOKEN_PROGRAM_ID)){let s=[],a=await e.getMinimumBalanceForRentExemption(Gt);return s.push(h.SystemProgram.createAccount({fromPubkey:t,newAccountPubkey:i.publicKey,lamports:a,space:Gt,programId:u})),s.push(new h.TransactionInstruction({keys:[{pubkey:i.publicKey,isWritable:!0,isSigner:!1},{pubkey:n,isWritable:!1,isSigner:!1},{pubkey:r,isWritable:!1,isSigner:!1},{pubkey:h.SYSVAR_RENT_PUBKEY,isWritable:!1,isSigner:!1}],programId:u,data:ye.Buffer.from([1])})),s}var Ht=(0,X.struct)([(0,X.u8)("instruction"),(0,X.blob)(8,"amount")]);function At(e,t,n,r,i=new h.PublicKey(d.TOKEN_PROGRAM_ID)){let u=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!1}],s=ye.Buffer.alloc(Ht.span);return Ht.encode({instruction:4,amount:F(r)},s),new h.TransactionInstruction({keys:u,programId:i,data:s})}var Qt=(0,X.struct)([(0,X.u8)("instruction")]);function Se(e){let t=[{pubkey:e,isSigner:!1,isWritable:!0}],n=ye.Buffer.alloc(Qt.span);return Qt.encode({instruction:17},n),new h.TransactionInstruction({keys:t,programId:new h.PublicKey(d.TOKEN_PROGRAM_ID),data:n})}var Vt=(0,X.struct)([(0,X.u8)("instruction")]);function zt(e,t,n,r=new h.PublicKey(d.TOKEN_PROGRAM_ID)){let i=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1}],u=ye.Buffer.alloc(Vt.span);return Vt.encode({instruction:9},u),new h.TransactionInstruction({keys:i,programId:r,data:u})}var jt=(0,X.struct)([(0,X.u8)("instruction"),(0,X.blob)(8,"amount")]);function Me(e,t,n,r,i=new h.PublicKey(d.TOKEN_PROGRAM_ID)){let u=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1}],s=ye.Buffer.alloc(jt.span);return jt.encode({instruction:3,amount:F(r)},s),new h.TransactionInstruction({keys:u,programId:i,data:s})}var ce=new h.PublicKey("So11111111111111111111111111111111111111112");async function ta(e,t,n,r){let i=r??new h.Connection("https://rpc.ankr.com/solana"),u=x(ce,e,!1),{blockhash:s,lastValidBlockHeight:a}=await i.getLatestBlockhash(),p=new h.Transaction({feePayer:e,blockhash:s,lastValidBlockHeight:a}),o=await i.getAccountInfo(u,"finalized");(!o||o.data.length===0)&&p.add(q(e,u,e,ce)),p.add(h.SystemProgram.transfer({fromPubkey:e,toPubkey:u,lamports:g(t,9)})),p.add(Se(u));let c=await n(p);return await xe({trx:c.serialize(),connection:i,errorChance:1,extraRpcs:[]})}async function na(e,t,n,r){let i=r??new h.Connection("https://rpc.ankr.com/solana"),u=x(ce,e,!1),s=h.Keypair.generate(),{blockhash:a,lastValidBlockHeight:p}=await i.getLatestBlockhash(),o=new h.Transaction({feePayer:e,blockhash:a,lastValidBlockHeight:p}),c=x(ce,s.publicKey,!1);o.add(q(e,c,s.publicKey,ce)),o.add(Me(u,c,e,g(t,9))),o.add(zt(c,e,s.publicKey)),o.partialSign(s);let l=await n(o);return await xe({trx:l.serialize(),connection:i,errorChance:1,extraRpcs:[]})}function ve(e){return new h.TransactionInstruction({programId:new h.PublicKey(e.programId),keys:e.accounts.map(t=>({pubkey:new h.PublicKey(t.pubkey),isSigner:t.isSigner,isWritable:t.isWritable})),data:ye.Buffer.from(e.data,"base64")})}async function Ne(e,t){return(await t.getMultipleAccountsInfo(e.map(r=>new h.PublicKey(r)))).reduce((r,i,u)=>{let s=e[u];if(i){let a=new h.AddressLookupTableAccount({key:new h.PublicKey(s),state:h.AddressLookupTableAccount.deserialize(i.data)});r.push(a)}return r},new Array)}function We(e,t){let n=ve(e.swapInstruction),r=e.cleanupInstruction?ve(e.cleanupInstruction):null,i=e.computeBudgetInstructions?e.computeBudgetInstructions.map(ve):[],u=e.setupInstructions?e.setupInstructions.map(ve):[];return{swapInstruction:n,cleanupInstruction:r,computeBudgetInstructions:i,setupInstructions:u,addressLookupTableAddresses:e.addressLookupTableAddresses}}function te(e){let t=`global:${e}`;return ye.Buffer.from(Yt.sha256.digest(t)).subarray(0,8)}async function It(){let e;try{let t=await mt();e=new h.PublicKey(t)}catch{console.log("Relayer not found, using system program"),e=h.SystemProgram.programId}return e}function ht(e,t,n,r){let i=r.jitoAccount||"Cw8CFyM9FkoMi7K7Crf6HNQqf4uEMzpKw6QNghXLvLkY";return new h.Transaction({feePayer:new h.PublicKey(e),blockhash:t,lastValidBlockHeight:n}).add(h.SystemProgram.transfer({fromPubkey:new h.PublicKey(e),toPubkey:new h.PublicKey(i),lamports:r.tipLamports}))}async function je(e,t,n=!1){try{let r=[];for(let s of e)r.push(s.serialize());let i={jsonrpc:"2.0",id:1,method:"sendBundle",params:[r.map(s=>$t.default.encode(s))]},u=await fetch(t.jitoSendUrl||"https://mainnet.block-engine.jito.wtf/api/v1/bundles",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)});if(u.status!==200&&u.status!==201)throw new Error("Send Jito bundle failed");return(await u.json()).result}catch(r){if(console.error("Send Jito bundle failed",r),n)throw r}}async function aa(e,t){let r=0;for(;r<5;)try{let i=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"getBundleStatuses",params:[e]})});if(!i.ok)throw new Error(`HTTP error! Status: ${i.status}`);let u=await i.json();if(u.error)throw new Error(`Error getting bundle statuses: ${JSON.stringify(u.error,null,2)}`);return u.result}catch(i){if(r++,await Re(400),r>=5)throw new Error(`Failed to fetch bundle statuses after 5 attempts: ${i.message}`)}}async function Ct(e,t,n,r,i){let s=Date.now();for(;Date.now()-s<9e4&&await i.getBlockHeight()<=n;){await Re(350);let a=await aa([e],t.jitoSendUrl||"https://mainnet.block-engine.jito.wtf/api/v1/bundles");if(a&&a.value&&a.value.length>0&&a.value[0]){console.log("===>",a.value[0]);let p=a.value[0].confirmation_status;if(p==="confirmed"||p==="finalized"){let o=await i.getSignatureStatus(r);if(!o||!o.value)continue;if(o.value?.err)throw new Error(`Bundle failed with error: ${o.value.err}`);return}}}throw new Error("Bundle not confirmed, timeout")}async function St(e){try{await fetch("https://explorer-api.mayan.finance/v3/submit/jito-bundle",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({bundleId:e})})}catch{}}function ra(e){if(e){if(!e.programId.equals(new h.PublicKey(d.TOKEN_PROGRAM_ID))&&!e.programId.equals(new h.PublicKey(d.TOKEN_2022_PROGRAM_ID)))throw new Error("Invalid cleanup instruction:: programId");if(Uint8Array.from(e.data).length!==1)throw new Error("Invalid cleanup instruction:: data");if(Uint8Array.from(e.data)[0]!==9)throw new Error("Invalid cleanup instruction:: data")}}function ia(e,t){if(!(e.length<1)){if(e.length>6)throw new Error("Invalid setup instruction:: too many instructions");e.forEach(n=>{if(!n.programId.equals(new h.PublicKey(d.ASSOCIATED_TOKEN_PROGRAM_ID))&&!n.programId.equals(h.SystemProgram.programId)&&!n.programId.equals(new h.PublicKey(d.TOKEN_PROGRAM_ID))&&!n.programId.equals(new h.PublicKey(d.TOKEN_2022_PROGRAM_ID)))throw new Error("Invalid setup instruction:: programId");if(n.programId.equals(new h.PublicKey(d.ASSOCIATED_TOKEN_PROGRAM_ID))){if(Uint8Array.from(n.data).length===1){if(Uint8Array.from(n.data)[0]!==1)throw new Error("Invalid setup instruction:: data")}else if(Uint8Array.from(n.data).length!==0)throw new Error("Invalid setup instruction:: data")}else if(n.programId.equals(h.SystemProgram.programId)){if(!t)throw new Error("Invalid setup instruction:: unknown transfer");let r=x(ce,t,!0);if(n.data.readUint32LE()!==2)throw new Error("Invalid setup instruction:: invalid system program instruction");if(!n.keys[1].pubkey.equals(r))throw new Error("Invalid setup instruction:: invalid wrap transfer dest")}else if(n.data.toString("base64")!=="EQ==")throw new Error("Invalid setup instruction:: invalid token program instruction")})}}function sa(e,t){if(!e.programId.equals(new h.PublicKey("JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4")))throw new Error("Invalid swap instruction:: programId");if(e.data.subarray(0,8).toString("hex")===te("shared_accounts_route").toString("hex")){if(!e.keys[6].pubkey.equals(t))throw new Error("Invalid swap instruction shared_accounts_route:: dest account")}else if(e.data.subarray(0,8).toString("hex")===te("route").toString("hex")){if(!e.keys[4].pubkey.equals(t))throw new Error("Invalid swap instruction route:: dest account")}else throw new Error("Invalid swap instruction:: ix id")}function oa(e){e.forEach(t=>{if(!t.programId.equals(h.ComputeBudgetProgram.programId))throw new Error("Invalid compute budget instruction:: programId");if(Uint8Array.from(t.data)[0]===3&&t.data.readBigUInt64LE(1)>100000000n)throw new Error("Invalid compute budget instruction:: to high tx fee")})}function _e(e,t,n){oa(e.computeBudgetInstructions),ia(e.setupInstructions,n),sa(e.swapInstruction,t),ra(e.cleanupInstruction)}function Ke(e,t,n,r,i,u=new h.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA")){return new h.TransactionInstruction({keys:[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1}],programId:new h.PublicKey("B96dV3Luxzo6SokJx3xt8i5y8Mb7HRR6Eec8hCjJDT69"),data:te("transfer_all_and_close")})}var P=require("@solana/web3.js"),H=require("@solana/buffer-layout");var be=require("buffer");var $e=require("ethers");var w=require("@solana/web3.js"),R=require("@solana/buffer-layout");var $=require("buffer");var he=require("@solana/web3.js");var Le=require("buffer");function Jt(e){let t=new he.PublicKey(d.WORMHOLE_PROGRAM_ID),n=new he.PublicKey(e),[r]=he.PublicKey.findProgramAddressSync([Le.Buffer.from("Bridge")],t),[i]=he.PublicKey.findProgramAddressSync([Le.Buffer.from("emitter")],n),[u]=he.PublicKey.findProgramAddressSync([Le.Buffer.from("Sequence"),i.toBuffer()],t),[s]=he.PublicKey.findProgramAddressSync([Le.Buffer.from("fee_collector")],t);return{bridgeConfig:r,sequenceKey:u,feeCollector:s,emitter:i}}var Zt=(0,R.struct)([(0,R.blob)(8,"instruction")]);function Xt(e,t,n,r,i){let u=new w.PublicKey(d.WORMHOLE_PROGRAM_ID),s=new w.PublicKey(d.TOKEN_PROGRAM_ID),a=new w.PublicKey(d.CCTP_CORE_PROGRAM_ID),p=new w.PublicKey(d.CCTP_TOKEN_PROGRAM_ID),o=new w.PublicKey(d.MCTP_PROGRAM_ID),c=new w.PublicKey(r),l=new w.PublicKey(n),m=x(l,e,!0),y;i&&i>BigInt(0)?y=x(l,c,!1):y=new w.PublicKey(d.MCTP_PROGRAM_ID);let f=Ve(l,t),b=Jt(d.MCTP_PROGRAM_ID),T=w.Keypair.generate(),C=w.Keypair.generate(),A=[{pubkey:e,isWritable:!0,isSigner:!1},{pubkey:m,isWritable:!0,isSigner:!1},{pubkey:c,isWritable:!0,isSigner:!0},{pubkey:y,isWritable:!0,isSigner:!1},{pubkey:l,isWritable:!0,isSigner:!1},{pubkey:f.senderAuthority,isWritable:!1,isSigner:!1},{pubkey:f.tokenMessenger,isWritable:!1,isSigner:!1},{pubkey:f.remoteTokenMessengerKey,isWritable:!1,isSigner:!1},{pubkey:f.tokenMinter,isWritable:!1,isSigner:!1},{pubkey:f.localToken,isWritable:!0,isSigner:!1},{pubkey:f.eventAuthToken,isWritable:!1,isSigner:!1},{pubkey:f.messageTransmitter,isWritable:!0,isSigner:!1},{pubkey:T.publicKey,isWritable:!0,isSigner:!0},{pubkey:p,isWritable:!1,isSigner:!1},{pubkey:a,isWritable:!1,isSigner:!1},{pubkey:b.emitter,isWritable:!1,isSigner:!1},{pubkey:b.bridgeConfig,isWritable:!0,isSigner:!1},{pubkey:b.sequenceKey,isWritable:!0,isSigner:!1},{pubkey:b.feeCollector,isWritable:!0,isSigner:!1},{pubkey:C.publicKey,isWritable:!0,isSigner:!0},{pubkey:u,isWritable:!1,isSigner:!1},{pubkey:w.SYSVAR_CLOCK_PUBKEY,isWritable:!1,isSigner:!1},{pubkey:w.SYSVAR_RENT_PUBKEY,isWritable:!1,isSigner:!1},{pubkey:s,isWritable:!1,isSigner:!1},{pubkey:w.SystemProgram.programId,isWritable:!1,isSigner:!1}],M=$.Buffer.alloc(Zt.span);return Zt.encode({instruction:te("bridge_with_fee")},M),{instruction:new w.TransactionInstruction({keys:A,data:M,programId:o}),signers:[T,C]}}var qt=(0,R.struct)([(0,R.blob)(8,"instruction")]);function en(e,t,n,r,i){let u=[],s=new w.PublicKey(d.TOKEN_PROGRAM_ID),a=new w.PublicKey(d.ASSOCIATED_TOKEN_PROGRAM_ID),p=new w.PublicKey(d.CCTP_CORE_PROGRAM_ID),o=new w.PublicKey(d.CCTP_TOKEN_PROGRAM_ID),c=new w.PublicKey(d.MCTP_PROGRAM_ID),l=new w.PublicKey(r),m=new w.PublicKey(n),y=x(m,e,!0),f=Ve(m,t),b=w.Keypair.generate(),[T]=w.PublicKey.findProgramAddressSync([$.Buffer.from("LOCKED_FEE"),m.toBuffer(),b.publicKey.toBytes()],c),C;i&&i>BigInt(0)?C=x(m,l,!1):C=new w.PublicKey(d.MCTP_PROGRAM_ID);let A=x(m,T,!0);u.push(q(l,A,T,m));let M=[{pubkey:e,isWritable:!0,isSigner:!1},{pubkey:y,isWritable:!0,isSigner:!1},{pubkey:l,isWritable:!0,isSigner:!0},{pubkey:C,isWritable:!0,isSigner:!1},{pubkey:T,isWritable:!0,isSigner:!1},{pubkey:A,isWritable:!0,isSigner:!1},{pubkey:m,isWritable:!0,isSigner:!1},{pubkey:f.senderAuthority,isWritable:!1,isSigner:!1},{pubkey:f.tokenMessenger,isWritable:!1,isSigner:!1},{pubkey:f.remoteTokenMessengerKey,isWritable:!1,isSigner:!1},{pubkey:f.tokenMinter,isWritable:!1,isSigner:!1},{pubkey:f.localToken,isWritable:!0,isSigner:!1},{pubkey:f.eventAuthToken,isWritable:!1,isSigner:!1},{pubkey:f.messageTransmitter,isWritable:!0,isSigner:!1},{pubkey:b.publicKey,isWritable:!0,isSigner:!0},{pubkey:o,isWritable:!1,isSigner:!1},{pubkey:p,isWritable:!1,isSigner:!1},{pubkey:s,isWritable:!1,isSigner:!1},{pubkey:a,isWritable:!1,isSigner:!1},{pubkey:w.SystemProgram.programId,isWritable:!1,isSigner:!1}],O=$.Buffer.alloc(qt.span);qt.encode({instruction:te("bridge_locked_fee")},O);let k=new w.TransactionInstruction({keys:M,data:O,programId:c});return u.push(k),{instructions:u,signer:b}}var tn=(0,R.struct)([(0,R.blob)(8,"instruction")]);function nn(e,t,n,r,i){let u=new w.PublicKey(d.TOKEN_PROGRAM_ID),s=new w.PublicKey(d.CCTP_CORE_PROGRAM_ID),a=new w.PublicKey(d.CCTP_TOKEN_PROGRAM_ID),p=new w.PublicKey(d.MCTP_PROGRAM_ID),o=new w.PublicKey(r),c=new w.PublicKey(n),l=x(c,e,!0),m=Ve(c,t),y=w.Keypair.generate(),[f]=w.PublicKey.findProgramAddressSync([$.Buffer.from("ORDER_SOLANA_SOURCE"),e.toBuffer()],p),b;i&&i>BigInt(0)?b=x(c,o,!1):b=new w.PublicKey(d.MCTP_PROGRAM_ID);let T=[{pubkey:e,isWritable:!1,isSigner:!1},{pubkey:l,isWritable:!0,isSigner:!1},{pubkey:o,isWritable:!0,isSigner:!0},{pubkey:b,isWritable:!0,isSigner:!1},{pubkey:c,isWritable:!0,isSigner:!1},{pubkey:f,isWritable:!0,isSigner:!1},{pubkey:m.senderAuthority,isWritable:!1,isSigner:!1},{pubkey:m.tokenMessenger,isWritable:!1,isSigner:!1},{pubkey:m.remoteTokenMessengerKey,isWritable:!1,isSigner:!1},{pubkey:m.tokenMinter,isWritable:!1,isSigner:!1},{pubkey:m.localToken,isWritable:!0,isSigner:!1},{pubkey:m.eventAuthToken,isWritable:!1,isSigner:!1},{pubkey:m.messageTransmitter,isWritable:!0,isSigner:!1},{pubkey:y.publicKey,isWritable:!0,isSigner:!0},{pubkey:a,isWritable:!1,isSigner:!1},{pubkey:s,isWritable:!1,isSigner:!1},{pubkey:new w.PublicKey(d.FEE_MANAGER_PROGRAM_ID),isWritable:!1,isSigner:!1},{pubkey:u,isWritable:!1,isSigner:!1},{pubkey:w.SystemProgram.programId,isWritable:!1,isSigner:!1}],C=$.Buffer.alloc(tn.span);return tn.encode({instruction:te("create_order")},C),{instruction:new w.TransactionInstruction({keys:T,data:C,programId:p}),signer:y}}var an=(0,R.struct)([(0,R.blob)(8,"instruction"),(0,R.blob)(32,"destAddress"),(0,R.blob)(8,"amountInMin"),(0,R.blob)(8,"gasDrop"),(0,R.blob)(8,"feeRedeem"),(0,R.blob)(8,"feeSolana"),(0,R.u16)("destinationChain"),(0,R.blob)(32,"keyRnd"),(0,R.u8)("mode")]);function rn(e){if(e.mode!=="WITH_FEE"&&e.mode!=="LOCK_FEE")throw new Error("Invalid mode: "+e.mode);let t=new w.PublicKey(e.swapperAddress),n=new w.PublicKey(e.mintAddress),r=x(n,e.ledger,!0),i=_(e.toChain),u=$.Buffer.from(U(I(e.destinationAddress,i))),s=F(e.amountInMin64),a=F(g(e.gasDrop,Math.min(B(e.toChain),8))),p=F(g(e.feeRedeem,K)),o=F(e.feeSolana),c=e.referrerAddress?$.Buffer.from(U(I(e.referrerAddress,i))):w.SystemProgram.programId.toBuffer(),l=[{pubkey:t,isWritable:!0,isSigner:!0},{pubkey:e.ledger,isWritable:!0,isSigner:!1},{pubkey:r,isWritable:!1,isSigner:!1},{pubkey:e.customPayload||new w.PublicKey(d.MCTP_PROGRAM_ID),isWritable:!1,isSigner:!1},{pubkey:n,isWritable:!1,isSigner:!1},{pubkey:w.SystemProgram.programId,isWritable:!1,isSigner:!1},{pubkey:new w.PublicKey(c),isWritable:!1,isSigner:!1}],m=$.Buffer.alloc(an.span);return an.encode({instruction:te("init_bridge_ledger"),destAddress:u,amountInMin:s,gasDrop:a,feeRedeem:p,feeSolana:o,destinationChain:i,keyRnd:e.randomKey.toBuffer(),mode:e.mode==="WITH_FEE"?1:2},m),new w.TransactionInstruction({keys:l,data:m,programId:new w.PublicKey(d.MCTP_PROGRAM_ID)})}var sn=(0,R.struct)([(0,R.blob)(8,"instruction"),(0,R.blob)(32,"destAddress"),(0,R.blob)(8,"amountInMin"),(0,R.blob)(8,"gasDrop"),(0,R.blob)(8,"feeRedeem"),(0,R.blob)(8,"feeSolana"),(0,R.u16)("destinationChain"),(0,R.blob)(32,"keyRnd"),(0,R.u8)("mode"),(0,R.blob)(32,"tokenOut"),(0,R.blob)(8,"amountOutMin"),(0,R.blob)(8,"deadline"),(0,R.blob)(32,"refAddress"),(0,R.u8)("feeRateRef")]);function on(e){let t=new w.PublicKey(e.swapperAddress),n=new w.PublicKey(e.mintAddress),r=x(n,e.ledger,!0),i=_(e.toChain),u=$.Buffer.from(U(I(e.destinationAddress,i))),s=F(e.amountInMin64),a=F(g(e.gasDrop,Math.min(B(e.toChain),8))),p=F(g(e.feeRedeem,K)),o=F(e.feeSolana),c=$.Buffer.from(U(I(e.tokenOut,i))),l=e.referrerAddress?$.Buffer.from(U(I(e.referrerAddress,i))):w.SystemProgram.programId.toBuffer(),m=F(g(e.amountOutMin,Math.min(8,e.tokenOutDecimals))),y=F(e.deadline),f=[{pubkey:t,isWritable:!0,isSigner:!0},{pubkey:e.ledger,isWritable:!0,isSigner:!1},{pubkey:r,isWritable:!1,isSigner:!1},{pubkey:n,isWritable:!1,isSigner:!1},{pubkey:w.SystemProgram.programId,isWritable:!1,isSigner:!1}],b=$.Buffer.alloc(sn.span);return sn.encode({instruction:te("init_order_ledger"),destAddress:u,amountInMin:s,gasDrop:a,feeRedeem:p,feeSolana:o,destinationChain:i,keyRnd:e.randomKey.toBuffer(),mode:3,tokenOut:c,refAddress:l,amountOutMin:m,deadline:y,feeRateRef:e.feeRateRef},b),new w.TransactionInstruction({keys:f,data:b,programId:new w.PublicKey(d.MCTP_PROGRAM_ID)})}async function Mt(e,t,n,r,i,u={}){let s=u?.forceSkipCctpInstructions||!1,a=u?.allowSwapperOffCurve||!1;if(e.toChain==="solana")throw new Error("Unsupported destination chain: "+e.toChain);let p=[],o=[],c=[],l=[],m=[],y=[],f=[],b=w.Keypair.generate(),T=null;p.push(d.LOOKUP_TABLE);let C=new w.PublicKey(d.MCTP_PROGRAM_ID),A=new w.PublicKey(t),M=w.Keypair.generate(),O=e.deadline64?BigInt(e.deadline64):BigInt(0);if(e.hasAuction&&!Number(e.deadline64))throw new Error("Swap mode requires a timeout");let k=e.hasAuction?"LEDGER_ORDER":"LEDGER_BRIDGE",[S]=w.PublicKey.findProgramAddressSync([$.Buffer.from(k),A.toBytes(),M.publicKey.toBytes()],C),D=x(new w.PublicKey(e.mctpInputContract),S,!0),N=e.cheaperChain==="solana"?"LOCK_FEE":"WITH_FEE",V=e.toChain==="sui"?e.toToken.verifiedAddress:e.toToken.contract;if(e.fromToken.contract===e.mctpInputContract){let E=BigInt(s?e.solanaRelayerFee64:0);if(e.suggestedPriorityFee>0&&o.push(w.ComputeBudgetProgram.setComputeUnitPrice({microLamports:e.suggestedPriorityFee})),o.push(q(A,D,S,new w.PublicKey(e.mctpInputContract))),o.push(Me(x(new w.PublicKey(e.mctpInputContract),A,a),D,A,BigInt(e.effectiveAmountIn64))),e.hasAuction){if(o.push(on({ledger:S,swapperAddress:t,mintAddress:e.mctpInputContract,randomKey:M.publicKey,toChain:e.toChain,destinationAddress:n,feeSolana:E,feeRedeem:e.redeemRelayerFee,gasDrop:e.gasDrop,amountInMin64:BigInt(e.effectiveAmountIn64),tokenOut:V,tokenOutDecimals:e.toToken.decimals,referrerAddress:r,amountOutMin:e.minAmountOut,deadline:O,feeRateRef:e.referrerBps})),!s){let{instruction:v,signer:J}=nn(S,e.toChain,e.mctpInputContract,t,E);o.push(v),c.push(J)}}else if(o.push(rn({ledger:S,swapperAddress:t,mintAddress:e.mctpInputContract,randomKey:M.publicKey,toChain:e.toChain,destinationAddress:n,feeSolana:E,feeRedeem:e.redeemRelayerFee,gasDrop:e.gasDrop,amountInMin64:BigInt(e.effectiveAmountIn64),mode:N,referrerAddress:r})),!s)if(N==="WITH_FEE"){let{instruction:v,signers:J}=Xt(S,e.toChain,e.mctpInputContract,t,E);o.push(v),c.push(...J)}else{let{instructions:v,signer:J}=en(S,e.toChain,e.mctpInputContract,t,E);o.push(...v),c.push(J)}}else{let E=await De({minMiddleAmount:e.minMiddleAmount,middleToken:e.mctpInputContract,userWallet:t,userLedger:S.toString(),slippageBps:e.slippageBps,fromToken:e.fromToken.contract,amountIn64:e.effectiveAmountIn64,depositMode:e.hasAuction?"SWAP":N,fillMaxAccounts:u?.separateSwapTx||!1,tpmTokenAccount:u?.separateSwapTx?b.publicKey.toString():null}),v=We(E,i);u?.separateSwapTx&&E.maxAccountsFilled?(_e(v,b.publicKey,A),f=await Be(i,A,new w.PublicKey(e.mctpInputContract),A,b),y.push(...v.computeBudgetInstructions),v.setupInstructions&&y.push(...v.setupInstructions),y.push(v.swapInstruction),v.cleanupInstruction&&y.push(v.cleanupInstruction),m.push(...v.addressLookupTableAddresses),o.push(q(A,D,S,new w.PublicKey(e.mctpInputContract))),o.push(Ke(A,new w.PublicKey(e.mctpInputContract),b.publicKey,D,A))):(_e(v,D,A),o.push(...v.computeBudgetInstructions),v.setupInstructions&&o.push(...v.setupInstructions),o.push(v.swapInstruction),v.cleanupInstruction&&o.push(v.cleanupInstruction),p.push(...v.addressLookupTableAddresses));let J=y.length>0?BigInt(0):BigInt(e.solanaRelayerFee64);if(e.hasAuction){if(o.push(on({ledger:S,swapperAddress:t,mintAddress:e.mctpInputContract,randomKey:M.publicKey,toChain:e.toChain,destinationAddress:n,feeSolana:J,feeRedeem:e.redeemRelayerFee,gasDrop:e.gasDrop,amountInMin64:g(e.minMiddleAmount,K),tokenOut:V,tokenOutDecimals:e.toToken.decimals,referrerAddress:r,amountOutMin:e.minAmountOut,deadline:O,feeRateRef:e.referrerBps})),y.length>0){let{instruction:ge,signer:ae}=nn(S,e.toChain,e.mctpInputContract,t,J);o.push(ge),c.push(ae)}}else if(o.push(rn({ledger:S,swapperAddress:t,mintAddress:e.mctpInputContract,randomKey:M.publicKey,toChain:e.toChain,destinationAddress:n,feeSolana:J,feeRedeem:e.redeemRelayerFee,gasDrop:e.gasDrop,amountInMin64:g(e.minMiddleAmount,K),mode:N,referrerAddress:r})),y.length>0)if(N==="WITH_FEE"){let{instruction:ge,signers:ae}=Xt(S,e.toChain,e.mctpInputContract,t,J);o.push(ge),c.push(...ae)}else{let{instructions:ge,signer:ae}=en(S,e.toChain,e.mctpInputContract,t,J);o.push(...ge),c.push(ae)}}let Q=await Ne(p.concat(m),i);if(l=Q.slice(0,p.length),y.length>0){let E=Q.slice(p.length);T={messageV0:{payerKey:A,instructions:y,addressLookupTableAccounts:E},createTmpTokenAccountIxs:f,tmpTokenAccount:b}}return{instructions:o,signers:c,lookupTables:l,swapMessageV0Params:T}}var W=require("@solana/web3.js"),L=require("@solana/buffer-layout");var z=require("buffer");var fe=require("ethers");function Ye(e,t,n,r,i){let s=z.Buffer.alloc(239),a=0,p=_(e.fromChain),o=z.Buffer.from(U(I(t,p)));s.set(o,0),a+=32,s.writeUInt16BE(p,a),a+=2;let c=e.swiftInputContract===fe.ZeroAddress?I(W.SystemProgram.programId.toString(),_("solana")):I(e.swiftInputContract,p),l=z.Buffer.from(U(c));s.set(l,a),a+=32;let m=_(e.toChain),y=z.Buffer.from(U(I(n,m)));s.set(y,a),a+=32,s.writeUInt16BE(m,a),a+=2;let f=e.toToken.contract===fe.ZeroAddress?I(W.SystemProgram.programId.toString(),_("solana")):I(e.toToken.contract,m),b=z.Buffer.from(U(f));s.set(b,a),a+=32,s.writeBigUInt64BE(g(e.minAmountOut,Math.min(e.toToken.decimals,8)),a),a+=8,s.writeBigUInt64BE(g(e.gasDrop,Math.min(B(e.toChain),8)),a),a+=8,s.writeBigUInt64BE(BigInt(e.cancelRelayerFee64),a),a+=8,s.writeBigUInt64BE(BigInt(e.refundRelayerFee64),a),a+=8,s.writeBigUInt64BE(BigInt(e.deadline64),a),a+=8;let T=r?z.Buffer.from(U(I(r,m))):W.SystemProgram.programId.toBuffer();s.set(T,a),a+=32,s.writeUInt8(e.referrerBps,a),a+=1;let C=e.protocolBps;s.writeUInt8(C,a),a+=1,s.writeUInt8(e.swiftAuctionMode,a),a+=1;let A=z.Buffer.from(U(i));if(s.set(A,a),a+=32,a!==239)throw new Error(`Invalid order data size: ${a}`);let M=fe.ethers.keccak256(s);return z.Buffer.from(U(M))}var un=(0,L.struct)([(0,L.blob)(8,"instruction"),(0,L.blob)(8,"amountInMin"),(0,L.u8)("nativeInput"),(0,L.blob)(8,"feeSubmit"),(0,L.blob)(32,"destAddress"),(0,L.u16)("destinationChain"),(0,L.blob)(32,"tokenOut"),(0,L.blob)(8,"amountOutMin"),(0,L.blob)(8,"gasDrop"),(0,L.blob)(8,"feeCancel"),(0,L.blob)(8,"feeRefund"),(0,L.blob)(8,"deadline"),(0,L.blob)(32,"refAddress"),(0,L.u8)("feeRateRef"),(0,L.u8)("feeRateMayan"),(0,L.u8)("auctionMode"),(0,L.blob)(32,"randomKey")]);function ua(e){let{quote:t}=e,n=t.swiftInputContract===fe.ZeroAddress?ce:new W.PublicKey(t.swiftInputContract),r=_(t.toChain);if(r!==t.toToken.wChainId)throw new Error(`Destination chain ID mismatch: ${r} != ${t.toToken.wChainId}`);let i=[{pubkey:e.trader,isWritable:!1,isSigner:!0},{pubkey:e.relayer,isWritable:!0,isSigner:!0},{pubkey:e.state,isWritable:!0,isSigner:!1},{pubkey:e.stateAccount,isWritable:!0,isSigner:!1},{pubkey:e.relayerAccount,isWritable:!0,isSigner:!1},{pubkey:n,isWritable:!1,isSigner:!1},{pubkey:new W.PublicKey(d.FEE_MANAGER_PROGRAM_ID),isWritable:!1,isSigner:!1},{pubkey:new W.PublicKey(d.TOKEN_PROGRAM_ID),isWritable:!1,isSigner:!1},{pubkey:W.SystemProgram.programId,isWritable:!1,isSigner:!1}],u=z.Buffer.alloc(un.span),s=e.referrerAddress?z.Buffer.from(U(I(e.referrerAddress,r))):W.SystemProgram.programId.toBuffer(),a=t.fromToken.contract===t.swiftInputContract?BigInt(t.effectiveAmountIn64):g(t.minMiddleAmount,t.swiftInputDecimals);return un.encode({instruction:te("init_order"),amountInMin:F(a),nativeInput:t.swiftInputContract===fe.ZeroAddress?1:0,feeSubmit:F(BigInt(t.submitRelayerFee64)),destAddress:z.Buffer.from(U(I(e.destinationAddress,r))),destinationChain:r,tokenOut:z.Buffer.from(U(I(t.toToken.contract,r))),amountOutMin:F(g(t.minAmountOut,Math.min(t.toToken.decimals,8))),gasDrop:F(g(t.gasDrop,Math.min(B(t.toChain),8))),feeCancel:F(BigInt(t.cancelRelayerFee64)),feeRefund:F(BigInt(t.refundRelayerFee64)),deadline:F(e.deadline),refAddress:s,feeRateRef:t.referrerBps,feeRateMayan:t.protocolBps,auctionMode:t.swiftAuctionMode,randomKey:e.randomKey.toBuffer()},u),new W.TransactionInstruction({keys:i,data:u,programId:new W.PublicKey(d.SWIFT_PROGRAM_ID)})}async function _t(e,t,n,r,i,u={}){if(e.type!=="SWIFT")throw new Error("Unsupported quote type for Swift: "+e.type);if(e.toChain==="solana")throw new Error("Unsupported destination chain: "+e.toChain);let s=u.allowSwapperOffCurve||!1,a=[],p=[],o=[];o.push(d.LOOKUP_TABLE);let c=[],l=[],m=[],y=W.Keypair.generate(),f=null,b=new W.PublicKey(d.SWIFT_PROGRAM_ID),T=new W.PublicKey(t),C=W.Keypair.generate();if(!Number(e.deadline64))throw new Error("Swift mode requires a timeout");let A=BigInt(e.deadline64),M=Ye(e,t,n,r,C.publicKey.toBuffer().toString("hex")),[O]=W.PublicKey.findProgramAddressSync([z.Buffer.from("STATE_SOURCE"),M],b),k=e.swiftInputContract===fe.ZeroAddress?ce:new W.PublicKey(e.swiftInputContract),S=x(k,O,!0),D=e.gasless?new W.PublicKey(e.relayer):T,N=x(k,D,!1);if(e.fromToken.contract===e.swiftInputContract)e.suggestedPriorityFee>0&&a.push(W.ComputeBudgetProgram.setComputeUnitPrice({microLamports:e.suggestedPriorityFee})),a.push(q(D,S,O,k)),e.swiftInputContract===fe.ZeroAddress?a.push(W.SystemProgram.transfer({fromPubkey:T,toPubkey:S,lamports:BigInt(e.effectiveAmountIn64)}),Se(S)):a.push(Me(x(k,T,s),S,T,BigInt(e.effectiveAmountIn64)));else{let Q=await De({minMiddleAmount:e.minMiddleAmount,middleToken:e.swiftInputContract,userWallet:t,slippageBps:e.slippageBps,fromToken:e.fromToken.contract,amountIn64:e.effectiveAmountIn64,depositMode:e.gasless?"SWIFT_GASLESS":"SWIFT",orderHash:`0x${M.toString("hex")}`,fillMaxAccounts:u?.separateSwapTx||!1,tpmTokenAccount:u?.separateSwapTx?y.publicKey.toString():null}),E=We(Q,i);u?.separateSwapTx&&Q.maxAccountsFilled?(_e(E,y.publicKey,T),m=await Be(i,D,k,T,y),l.push(...E.computeBudgetInstructions),E.setupInstructions&&l.push(...E.setupInstructions),l.push(E.swapInstruction),E.cleanupInstruction&&l.push(E.cleanupInstruction),c.push(...E.addressLookupTableAddresses),a.push(q(D,S,O,k)),a.push(Ke(T,k,y.publicKey,S,D))):(a.push(...E.computeBudgetInstructions),E.setupInstructions&&a.push(...E.setupInstructions),a.push(E.swapInstruction),E.cleanupInstruction&&a.push(E.cleanupInstruction),o.push(...E.addressLookupTableAddresses))}a.push(ua({quote:e,state:O,trader:T,stateAccount:S,randomKey:C.publicKey,relayerAccount:N,relayer:D,destinationAddress:n,deadline:A,referrerAddress:r}));let V=await Ne(o.concat(c),i);if(p=V.slice(0,o.length),l.length>0){let Q=V.slice(o.length);f={messageV0:{payerKey:D,instructions:l,addressLookupTableAccounts:Q},createTmpTokenAccountIxs:m,tmpTokenAccount:y}}return{instructions:a,signers:[],lookupTables:p,swapMessageV0Params:f}}var Pt=He(require("bs58")),pa=420,pn=(0,H.struct)([(0,H.u8)("instruction"),(0,H.u8)("stateNonce"),(0,H.blob)(8,"amount"),(0,H.blob)(8,"minAmountOut"),(0,H.blob)(8,"deadline"),(0,H.blob)(8,"feeSwap"),(0,H.blob)(8,"feeReturn"),(0,H.blob)(8,"feeCancel"),(0,H.blob)(8,"gasDrop"),(0,H.u16)("destinationChain"),(0,H.blob)(32,"destinationAddress"),(0,H.u8)("unwrapRedeem"),(0,H.u8)("unwrapRefund"),(0,H.u8)("mayanFeeNonce"),(0,H.u8)("referrerFeeNonce")]);async function cn(e,t,n,r,i,u={}){let s=Ae(e,r);if(e.type==="MCTP")return Mt(e,t,n,s,i,u);if(e.type==="SWIFT")return _t(e,t,n,s,i,u);let a=[],p=i??new P.Connection("https://rpc.ankr.com/solana"),o=new P.PublicKey(d.MAYAN_PROGRAM_ID),c=new P.PublicKey(d.TOKEN_PROGRAM_ID),l=new P.PublicKey(t),m=new P.PublicKey(d.AUCTION_PROGRAM_ID);e.suggestedPriorityFee>0&&a.push(P.ComputeBudgetProgram.setComputeUnitPrice({microLamports:e.suggestedPriorityFee}));let y;s?y=new P.PublicKey(s):y=P.SystemProgram.programId;let[f,b]=P.PublicKey.findProgramAddressSync([be.Buffer.from("MAYANFEE")],o),[T,C]=P.PublicKey.findProgramAddressSync([be.Buffer.from("REFERRERFEE"),y.toBuffer()],o),A=P.Keypair.generate(),M=P.Keypair.generate(),[O,k]=P.PublicKey.findProgramAddressSync([be.Buffer.from("V2STATE"),be.Buffer.from(A.publicKey.toBytes()),be.Buffer.from(M.publicKey.toBytes())],o),S=new P.PublicKey(e.fromToken.mint),D=new P.PublicKey(e.toToken.mint),N=x(S,l),V=x(S,O,!0),[[Q,E],v,J]=await Promise.all([p.getMultipleAccountsInfo([N,V],"finalized"),p.getMinimumBalanceForRentExemption(pa),It()]);(!Q||Q.data.length===0)&&a.push(q(l,N,l,S)),(!E||E.data.length===0)&&a.push(q(l,V,O,S)),e.fromToken.contract===$e.ZeroAddress&&(a.push(P.SystemProgram.transfer({fromPubkey:l,toPubkey:N,lamports:BigInt(e.effectiveAmountIn64)})),a.push(Se(N)));let ge=BigInt(e.effectiveAmountIn64),ae=P.Keypair.generate();a.push(At(N,ae.publicKey,l,ge)),a.push(P.SystemProgram.transfer({fromPubkey:l,toPubkey:ae.publicKey,lamports:v}));let Mn=[{pubkey:ae.publicKey,isWritable:!1,isSigner:!0},{pubkey:A.publicKey,isWritable:!1,isSigner:!0},{pubkey:M.publicKey,isWritable:!1,isSigner:!0},{pubkey:O,isWritable:!0,isSigner:!1},{pubkey:N,isWritable:!0,isSigner:!1},{pubkey:l,isWritable:!1,isSigner:!1},{pubkey:V,isWritable:!0,isSigner:!1},{pubkey:S,isWritable:!1,isSigner:!1},{pubkey:D,isWritable:!1,isSigner:!1},{pubkey:m,isWritable:!1,isSigner:!1},{pubkey:y,isWritable:!1,isSigner:!1},{pubkey:f,isWritable:!1,isSigner:!1},{pubkey:T,isWritable:!1,isSigner:!1},{pubkey:ae.publicKey,isWritable:!0,isSigner:!0},{pubkey:J,isWritable:!1,isSigner:!1},{pubkey:P.SYSVAR_CLOCK_PUBKEY,isWritable:!1,isSigner:!1},{pubkey:P.SYSVAR_RENT_PUBKEY,isWritable:!1,isSigner:!1},{pubkey:c,isWritable:!1,isSigner:!1},{pubkey:P.SystemProgram.programId,isWritable:!1,isSigner:!1}],nt=_(e.toChain);if(nt===1){let at=await p.getAccountInfo(new P.PublicKey(n));if(at&&at.owner&&at.owner.equals(c))throw new Error("Destination address is not about token account. It should be a owner address")}let _n=be.Buffer.from(U(I(n,nt))),Pn=g(e.minAmountOut,e.mintDecimals.to),kn=g(e.swapRelayerFee,e.mintDecimals.from),En=g(e.redeemRelayerFee,e.mintDecimals.to),Rn=g(e.refundRelayerFee,e.mintDecimals.from),On=g(e.gasDrop,ot(e.toChain)),Fn=e.toToken.contract===$e.ZeroAddress,Dn=e.fromToken.contract===$e.ZeroAddress;if(!Number(e.deadline64))throw new Error("Deadline is not valid");let vn=BigInt(e.deadline64),Ft=be.Buffer.alloc(pn.span),xn={instruction:101,stateNonce:k,amount:F(ge),minAmountOut:F(Pn),deadline:F(vn),feeSwap:F(kn),feeReturn:F(En),feeCancel:F(Rn),gasDrop:F(On),destinationChain:nt,destinationAddress:_n,unwrapRedeem:Fn?1:0,unwrapRefund:Dn?1:0,mayanFeeNonce:b,referrerFeeNonce:C};pn.encode(xn,Ft);let Bn=new P.TransactionInstruction({keys:Mn,data:Ft,programId:o});return a.push(Bn),{instructions:a,signers:[ae,A,M],lookupTables:[],swapMessageV0Params:null}}async function ca(e,t,n,r,i,u,s,a,p,o){let c=u??new P.Connection("https://rpc.ankr.com/solana"),l=!!(!e.gasless&&p&&p.tipLamports>0&&p.signAllTransactions),{instructions:m,signers:y,lookupTables:f,swapMessageV0Params:b}=await cn(e,t,n,r,u,{allowSwapperOffCurve:o?.allowSwapperOffCurve,forceSkipCctpInstructions:o?.forceSkipCctpInstructions,separateSwapTx:l&&p?.separateSwapTx}),T=new P.PublicKey(t),C=e.gasless?new P.PublicKey(e.relayer):T,{blockhash:A,lastValidBlockHeight:M}=await u.getLatestBlockhash(),O=P.MessageV0.compile({instructions:m,payerKey:C,recentBlockhash:A,addressLookupTableAccounts:f}),k=new P.VersionedTransaction(O);k.sign(y);let S;if(l){let D=[];if(b){let E=new P.Transaction({feePayer:T,blockhash:A,lastValidBlockHeight:M}).add(...b.createTmpTokenAccountIxs);E.partialSign(b.tmpTokenAccount),D.push(E);let v=P.MessageV0.compile({...b.messageV0,recentBlockhash:A});D.push(new P.VersionedTransaction(v))}let N=ht(t,A,M,p);D.push(k),D.push(N);let V=await p.signAllTransactions(D);S=V[V.length-2];let Q=null;if(S instanceof P.Transaction&&S?.signatures[0]?.publicKey?Q=Pt.default.encode(Uint8Array.from(S.signatures[0].signature)):S instanceof P.VersionedTransaction&&S?.signatures[0]&&(Q=Pt.default.encode(Uint8Array.from(S.signatures[0]))),Q===null)throw new Error("Failed to get mayan tx hash");if(b){let E=await je(V,p,!0);return await Ct(E,p,M,Q,u),St(E),{signature:Q,serializedTrx:null}}else je(V,p).then(()=>{console.log("Jito bundle sent")}).catch(()=>{})}else S=await i(k);if(e.gasless){let D=be.Buffer.from(S.serialize()).toString("base64"),{orderHash:N}=await bt(D);return{signature:N,serializedTrx:null}}return await xe({trx:S.serialize(),connection:c,extraRpcs:s??[],errorChance:2,options:a})}function ln(e,t,n,r,i){let u=Y(Number(i)),s=_(e.fromChain),a=_(e.toChain);if(s!==u)throw new Error(`Signer chain id(${Number(i)}) and quote from chain are not same! ${s} !== ${u}`);if(!e.swiftMayanContract)throw new Error("SWIFT contract address is missing");if(e.toToken.wChainId!==a)throw new Error(`Destination chain ID mismatch: ${a} != ${e.toToken.wChainId}`);let p=e.swiftMayanContract;if(!Number(e.deadline64))throw new Error("Swift order requires timeout");let o=BigInt(e.deadline64),c=e.swiftInputContract,l=BigInt(e.effectiveAmountIn64),m;r?m=I(r,a):m=I(Ue.SystemProgram.programId.toString(),1);let y=I(Ue.Keypair.generate().publicKey.toString(),1),f=e.toToken.contract===ee.ZeroAddress?I(Ue.SystemProgram.programId.toString(),1):I(e.toToken.contract,a),b=g(e.minAmountOut,Math.min(8,e.toToken.decimals)),T=g(e.gasDrop,Math.min(8,B(e.toChain))),C=I(n,a),A={trader:I(t,s),tokenOut:f,minAmountOut:b,gasDrop:T,cancelFee:BigInt(e.cancelRelayerFee64),refundFee:BigInt(e.refundRelayerFee64),deadline:o,destAddr:C,destChainId:a,referrerAddr:m,referrerBps:e.referrerBps||0,auctionMode:e.swiftAuctionMode,random:y};return{contractAddress:p,tokenIn:c,amountIn:l,order:A}}function dn(e,t,n,r,i,u){if(e.type!=="SWIFT")throw new Error("Quote type is not SWIFT");if(!Number.isFinite(Number(i)))throw new Error("Invalid signer chain id");if(!Number(e.deadline64))throw new Error("Swift order requires timeout");i=Number(i);let s=u||re,a=new ee.Contract(d.MAYAN_FORWARDER_CONTRACT,oe.abi),{tokenIn:p,amountIn:o,order:c,contractAddress:l}=ln(e,t,n,r,i),m,y=new ee.Contract(l,Ut.abi);e.swiftInputContract===ee.ZeroAddress?m=y.interface.encodeFunctionData("createOrderWithEth",[c]):m=y.interface.encodeFunctionData("createOrderWithToken",[p,o,c]);let f,b,T;if(e.fromToken.contract===e.swiftInputContract)e.fromToken.contract===ee.ZeroAddress?(f="forwardEth",b=[l,m],T=(0,ee.toBeHex)(o)):(f="forwardERC20",b=[p,o,s,l,m],T=(0,ee.toBeHex)(0));else{let{evmSwapRouterAddress:A,evmSwapRouterCalldata:M}=e;if(!e.minMiddleAmount||!A||!M)throw new Error("Swift swap requires middle amount, router address and calldata");let O=e.fromToken.contract,k=g(e.minMiddleAmount,e.swiftInputDecimals);e.fromToken.contract===ee.ZeroAddress?(f="swapAndForwardEth",b=[o,A,M,e.swiftInputContract,k,l,m],T=(0,ee.toBeHex)(o)):(f="swapAndForwardERC20",b=[O,o,s,A,M,e.swiftInputContract,k,l,m],T=(0,ee.toBeHex)(0))}return{data:a.interface.encodeFunctionData(f,b),to:d.MAYAN_FORWARDER_CONTRACT,value:T,chainId:i,_forwarder:{method:f,params:b}}}function la(e,t,n){if(!Number.isFinite(Number(n)))throw new Error("Invalid signer chain id");let r=BigInt(e.effectiveAmountIn64),i=BigInt(e.submitRelayerFee64);return{domain:{name:"Mayan Swift",chainId:Number(n),verifyingContract:e.swiftMayanContract},types:{CreateOrder:[{name:"OrderId",type:"bytes32"},{name:"InputAmount",type:"uint256"},{name:"SubmissionFee",type:"uint256"}]},value:{OrderId:t,InputAmount:r-i,SubmissionFee:i}}}function mn(e,t,n,r,i,u){if(e.type!=="SWIFT")throw new Error("Quote type is not SWIFT");if(!e.gasless)throw new Error("Quote does not support gasless");if(!Number.isFinite(Number(i)))throw new Error("Invalid signer chain id");if(!Number(e.deadline64))throw new Error("Swift order requires timeout");if(e.fromToken.contract!==e.swiftInputContract)throw new Error("Swift gasless order creation does not support source swap");let{tokenIn:s,amountIn:a,order:p}=ln(e,t,n,r,Number(i)),o=_(e.fromChain),l=`0x${Ye(e,t,n,r,p.random).toString("hex")}`,m=la(e,l,i);return{permitParams:u,orderParams:{...p,sourceChainId:o,amountIn:a,tokenIn:s,submissionFee:BigInt(e.submitRelayerFee64)},orderHash:l,orderTypedData:m}}var le=require("ethers");var ne=require("buffer");var yn={abi:[{type:"function",name:"batchMaxApprove",inputs:[{name:"approvals",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"initiate",inputs:[{name:"recipient",type:"bytes32",internalType:"bytes32"},{name:"overrideAmountIn",type:"uint256",internalType:"uint256"},{name:"targetChain",type:"uint16",internalType:"uint16"},{name:"params",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"bytes",internalType:"bytes"}],stateMutability:"payable"},{type:"error",name:"ChainNotSupported",inputs:[{name:"chain",type:"uint16",internalType:"uint16"}]},{type:"error",name:"DeadlineExpired",inputs:[{name:"blocktime",type:"uint256",internalType:"uint256"},{name:"deadline",type:"uint256",internalType:"uint256"}]},{type:"error",name:"EthTransferFailed",inputs:[]},{type:"error",name:"ExceedsMaxGasDropoff",inputs:[{name:"requested",type:"uint256",internalType:"uint256"},{name:"maximum",type:"uint256",internalType:"uint256"}]},{type:"error",name:"ExceedsMaxRelayingFee",inputs:[{name:"fee",type:"uint256",internalType:"uint256"},{name:"maximum",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InsufficientInputAmount",inputs:[{name:"input",type:"uint256",internalType:"uint256"},{name:"minimum",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidAddress",inputs:[{name:"addr",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InvalidBoolVal",inputs:[{name:"val",type:"uint8",internalType:"uint8"}]},{type:"error",name:"InvalidOverrideAmount",inputs:[{name:"received",type:"uint256",internalType:"uint256"},{name:"maximum",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidSwapType",inputs:[{name:"swapType",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidSwapTypeForChain",inputs:[{name:"chain",type:"uint16",internalType:"uint16"},{name:"swapType",type:"uint256",internalType:"uint256"}]},{type:"error",name:"LengthMismatch",inputs:[{name:"encodedLength",type:"uint256",internalType:"uint256"},{name:"expectedLength",type:"uint256",internalType:"uint256"}]},{type:"error",name:"RelayingDisabledForChain",inputs:[]}]};var Ie={FAST_MODE_FLAG:1,RELAY_REDEEM_MODE:2,EXACT_IN_FLAG:1,USDC_INPUT_TOKEN_TYPE:0,PRE_APPROVED_ACQUIRE_MODE:0,OUTPUT_USDC_MODE:0,OUTPUT_NATIVE_MODE:1,OUTPUT_OTHER_MODE:2};function da(e){let t=(1n<<128n)-1n;if(e<0n||e>t)throw new RangeError("Value must fit in an unsigned 128-bit integer (0 <= value < 2^128)");let n=ne.Buffer.alloc(16);for(let r=15;r>=0;r--)n[r]=Number(e&0xFFn),e>>=8n;return n}function ma(e,t,n){let{shuttleParams:r}=e;if(!r)throw new Error("Swap layer params are missing in quote response");let i=Y(Number(n)),u=_(e.fromChain),s=_(e.toChain);if(u!==i)throw new Error(`Signer chain id(${Number(n)}) and quote from chain are not same! ${u} !== ${i}`);let a=[];a.push(Ie.FAST_MODE_FLAG);let p=ne.Buffer.alloc(8);p.writeBigUInt64BE(BigInt(r.maxLLFee));let o=p.subarray(2);a.push(...o);let c=ne.Buffer.alloc(4);c.writeUInt32BE(r.fastTransferDeadline),a.push(...c),a.push(Ie.RELAY_REDEEM_MODE);let l=g(e.gasDrop,Math.min(6,B(e.toChain))),m=ne.Buffer.alloc(8);m.writeBigUInt64BE(l);let y=m.subarray(4);a.push(...y);let f=ne.Buffer.alloc(8);f.writeBigUInt64BE(BigInt(r.maxRelayingFee));let b=f.subarray(2);a.push(...b),a.push(Ie.EXACT_IN_FLAG),a.push(Ie.USDC_INPUT_TOKEN_TYPE);let T=BigInt(e.effectiveAmountIn64);if(e.fromToken.contract===e.shuttleInputContract){a.push(...Array(8).fill(0));let A=ne.Buffer.alloc(8);A.writeBigUInt64BE(T),a.push(...A)}else a.push(...Array(16).fill(0));if(a.push(Ie.PRE_APPROVED_ACQUIRE_MODE),r.hasDestSwap){if(e.toToken.contract===le.ZeroAddress)a.push(Ie.OUTPUT_NATIVE_MODE);else{a.push(Ie.OUTPUT_OTHER_MODE);let k=ne.Buffer.from(I(e.toToken.contract,s).slice(2),"hex");a.push(...k)}let A=ne.Buffer.alloc(4);A.writeUInt32BE(Number(BigInt(e.deadline64))),a.push(...A);let M=g(e.minAmountOut,e.toToken.decimals);if(e.toChain==="solana"){a.push(...Array(8).fill(0));let k=ne.Buffer.alloc(8);k.writeBigUInt64BE(M),a.push(...k)}else{let k=da(M);a.push(...k)}let O=ne.Buffer.from(r.path.slice(2),"hex");a.push(...O)}else a.push(Ie.OUTPUT_USDC_MODE);return{destAddr:I(t,s),destChainId:s,serializedParams:`0x${ne.Buffer.from(a).toString("hex")}`,contractAddress:e.shuttleContract,amountIn:T,bridgeFee:g(e.bridgeFee,B(e.fromChain))}}function fn(e,t,n,r){if(e.type!=="SHUTTLE")throw new Error("Quote type is not SHUTTLE");if(!Number.isFinite(Number(n)))throw new Error("Invalid signer chain id");n=Number(n);let i=r||re,u=new le.Contract(d.MAYAN_FORWARDER_CONTRACT,oe.abi),{destAddr:s,destChainId:a,serializedParams:p,contractAddress:o,amountIn:c,bridgeFee:l}=ma(e,t,n),m;m=new le.Contract(o,yn.abi).interface.encodeFunctionData("initiate",[s,c,a,p]);let f,b,T;if(e.fromToken.contract===e.shuttleInputContract)f="forwardERC20",b=[e.shuttleInputContract,c,i,o,m],T=(0,le.toBeHex)(l);else{let{evmSwapRouterAddress:A,evmSwapRouterCalldata:M}=e;if(!e.minMiddleAmount||!A||!M)throw new Error("Shuttle source chain swap requires middle amount, router address and calldata");let O=e.fromToken.contract,k=g(e.minMiddleAmount,e.shuttleInputDecimals);e.fromToken.contract===le.ZeroAddress?(f="swapAndForwardEth",b=[c,A,M,e.shuttleInputContract,k,o,m],T=(0,le.toBeHex)(c)):(f="swapAndForwardERC20",b=[O,c,i,A,M,e.shuttleInputContract,k,o,m],T=(0,le.toBeHex)(l))}return{data:u.interface.encodeFunctionData(f,b),to:d.MAYAN_FORWARDER_CONTRACT,value:T,chainId:n,_forwarder:{method:f,params:b}}}var j=require("ethers"),ze=require("@solana/web3.js");var kt={abi:[{type:"constructor",inputs:[{name:"_cctpTokenMessengerV2",type:"address",internalType:"address"},{name:"_feeManager",type:"address",internalType:"address"}],stateMutability:"nonpayable"},{type:"receive",stateMutability:"payable"},{type:"function",name:"bridge",inputs:[{name:"tokenIn",type:"address",internalType:"address"},{name:"amountIn",type:"uint256",internalType:"uint256"},{name:"redeemFee",type:"uint64",internalType:"uint64"},{name:"circleMaxFee",type:"uint256",internalType:"uint256"},{name:"gasDrop",type:"uint64",internalType:"uint64"},{name:"destAddr",type:"bytes32",internalType:"bytes32"},{name:"destDomain",type:"uint32",internalType:"uint32"},{name:"referrerAddress",type:"bytes32",internalType:"bytes32"},{name:"referrerBps",type:"uint8",internalType:"uint8"},{name:"payloadType",type:"uint8",internalType:"uint8"},{name:"minFinalityThreshold",type:"uint32",internalType:"uint32"},{name:"customPayload",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"cctpTokenMessengerV2",inputs:[],outputs:[{name:"",type:"address",internalType:"contract ITokenMessengerV2"}],stateMutability:"view"},{type:"function",name:"changeGuardian",inputs:[{name:"newGuardian",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"claimGuardian",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"createOrder",inputs:[{name:"tokenIn",type:"address",internalType:"address"},{name:"amountIn",type:"uint256",internalType:"uint256"},{name:"circleMaxFee",type:"uint256",internalType:"uint256"},{name:"destDomain",type:"uint32",internalType:"uint32"},{name:"minFinalityThreshold",type:"uint32",internalType:"uint32"},{name:"orderPayload",type:"tuple",internalType:"struct FastMCTP.OrderPayload",components:[{name:"payloadType",type:"uint8",internalType:"uint8"},{name:"destAddr",type:"bytes32",internalType:"bytes32"},{name:"tokenOut",type:"bytes32",internalType:"bytes32"},{name:"amountOutMin",type:"uint64",internalType:"uint64"},{name:"gasDrop",type:"uint64",internalType:"uint64"},{name:"redeemFee",type:"uint64",internalType:"uint64"},{name:"refundFee",type:"uint64",internalType:"uint64"},{name:"deadline",type:"uint64",internalType:"uint64"},{name:"referrerAddr",type:"bytes32",internalType:"bytes32"},{name:"referrerBps",type:"uint8",internalType:"uint8"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"domainToCaller",inputs:[{name:"",type:"uint32",internalType:"uint32"}],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"feeManager",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"fulfillOrder",inputs:[{name:"cctpMsg",type:"bytes",internalType:"bytes"},{name:"cctpSigs",type:"bytes",internalType:"bytes"},{name:"swapProtocol",type:"address",internalType:"address"},{name:"swapData",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"payable"},{type:"function",name:"guardian",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"keyToMintRecipient",inputs:[{name:"",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"nextGuardian",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"paused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"redeem",inputs:[{name:"cctpMsg",type:"bytes",internalType:"bytes"},{name:"cctpSigs",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"payable"},{type:"function",name:"refund",inputs:[{name:"cctpMsg",type:"bytes",internalType:"bytes"},{name:"cctpSigs",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"payable"},{type:"function",name:"rescueEth",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"to",type:"address",internalType:"address payable"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"rescueRedeem",inputs:[{name:"cctpMsg",type:"bytes",internalType:"bytes"},{name:"cctpSigs",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"rescueToken",inputs:[{name:"token",type:"address",internalType:"address"},{name:"amount",type:"uint256",internalType:"uint256"},{name:"to",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setDomainCallers",inputs:[{name:"domain",type:"uint32",internalType:"uint32"},{name:"caller",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setFeeManager",inputs:[{name:"_feeManager",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setMintRecipient",inputs:[{name:"destDomain",type:"uint32",internalType:"uint32"},{name:"tokenIn",type:"address",internalType:"address"},{name:"mintRecipient",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setPause",inputs:[{name:"_pause",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setWhitelistedMsgSenders",inputs:[{name:"sender",type:"address",internalType:"address"},{name:"isWhitelisted",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setWhitelistedSwapProtocols",inputs:[{name:"protocol",type:"address",internalType:"address"},{name:"isWhitelisted",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"whitelistedMsgSenders",inputs:[{name:"",type:"address",internalType:"address"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"whitelistedSwapProtocols",inputs:[{name:"",type:"address",internalType:"address"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"event",name:"OrderFulfilled",inputs:[{name:"sourceDomain",type:"uint32",indexed:!1,internalType:"uint32"},{name:"sourceNonce",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OrderRefunded",inputs:[{name:"sourceDomain",type:"uint32",indexed:!1,internalType:"uint32"},{name:"sourceNonce",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"error",name:"AlreadySet",inputs:[]},{type:"error",name:"CallerNotSet",inputs:[]},{type:"error",name:"CctpReceiveFailed",inputs:[]},{type:"error",name:"DeadlineViolation",inputs:[]},{type:"error",name:"EthTransferFailed",inputs:[]},{type:"error",name:"InvalidAddress",inputs:[]},{type:"error",name:"InvalidAmountOut",inputs:[]},{type:"error",name:"InvalidGasDrop",inputs:[]},{type:"error",name:"InvalidMintRecipient",inputs:[]},{type:"error",name:"InvalidPayload",inputs:[]},{type:"error",name:"InvalidPayloadType",inputs:[]},{type:"error",name:"InvalidRedeemFee",inputs:[]},{type:"error",name:"InvalidRefundFee",inputs:[]},{type:"error",name:"MintRecipientNotSet",inputs:[]},{type:"error",name:"Paused",inputs:[]},{type:"error",name:"Unauthorized",inputs:[]},{type:"error",name:"UnauthorizedMsgSender",inputs:[]},{type:"error",name:"UnauthorizedSwapProtocol",inputs:[]}]};var gn=require("buffer");function ya(e,t,n,r,i){let u=Y(Number(r)),s=_(e.fromChain),a=_(e.toChain);if(s!==u)throw new Error(`Signer chain id(${Number(r)}) and quote from chain are not same! ${s} !== ${u}`);let p=I(t,a),o=g(e.redeemRelayerFee,K),c=g(e.gasDrop,Math.min(B(e.toChain),8)),l=BigInt(e.circleMaxFee64),m=BigInt(e.effectiveAmountIn64),y=pe(e.toChain),f;if(n?f=I(n,a):f=I(ze.SystemProgram.programId.toString(),_("solana")),!e.fastMctpMayanContract)throw new Error("FastMctp contract address is missing");let b=e.fastMctpMayanContract;return{tokenIn:e.fastMctpInputContract,amountIn:m,redeemFee:o,gasDrop:c,destAddr:p,destDomain:y,referrerAddr:f,referrerBps:e.referrerBps,payloadType:i?ct:pt,customPayload:i?`0x${gn.Buffer.from(i).toString("hex")}`:"0x",minFinalityThreshold:Number(e.fastMctpMinFinality),circleMaxFee:l,contractAddress:b}}function bn(e,t,n,r,i){let u=ya(e,t,n,r,i),{contractAddress:s,tokenIn:a,amountIn:p,destAddr:o,redeemFee:c,gasDrop:l,circleMaxFee:m,referrerAddr:y,referrerBps:f,destDomain:b,customPayload:T,minFinalityThreshold:C,payloadType:A}=u,M=new j.Contract(s,kt.abi),O,k;return O=M.interface.encodeFunctionData("bridge",[a,p,c,m,l,o,b,y,f,A,C,T]),k=(0,j.toBeHex)(0),{to:s,data:O,value:k,_params:u}}function fa(e,t,n,r){let i=Y(Number(r)),u=_(e.fromChain),s=_(e.toChain);if(u!==i)throw new Error(`Signer chain id(${Number(r)}) and quote from chain are not same! ${u} !== ${i}`);if(!e.fastMctpMayanContract)throw new Error("MCTP contract address is missing");let a=e.fastMctpMayanContract,p=I(t,s),o;n?o=I(n,s):o=I(ze.SystemProgram.programId.toString(),_("solana"));let c=g(e.redeemRelayerFee,K),l=BigInt(e.refundRelayerFee64),m=BigInt(e.circleMaxFee64),y=g(e.gasDrop,Math.min(B(e.toChain),8)),f=pe(e.toChain),b=BigInt(e.effectiveAmountIn64),T=g(e.minAmountOut,Math.min(8,e.toToken.decimals)),C=BigInt(e.deadline64),A=e.toToken.contract===j.ZeroAddress?I(ze.SystemProgram.programId.toString(),_("solana")):I(e.toChain==="sui"?e.toToken.verifiedAddress:e.toToken.contract,e.toToken.wChainId);return{tokenIn:e.fastMctpInputContract,amountIn:b,circleMaxFee:m,destDomain:f,minFinalityThreshold:Number(e.fastMctpMinFinality),orderPayload:{payloadType:lt,destAddr:p,tokenOut:A,amountOutMin:T,gasDrop:y,redeemFee:c,refundFee:l,deadline:C,referrerAddr:o,referrerBps:e.referrerBps||0},contractAddress:a}}function Tn(e,t,n,r){let i=fa(e,t,n,r),{contractAddress:u,orderPayload:s,tokenIn:a,amountIn:p,circleMaxFee:o,destDomain:c,minFinalityThreshold:l}=i,y=new j.Contract(u,kt.abi).interface.encodeFunctionData("createOrder",[a,p,o,c,l,s]),f=(0,j.toBeHex)(0);return{to:u,data:y,value:f,_params:i}}function wn(e,t,n,r,i,u){if(e.type!=="FAST_MCTP")throw new Error("Quote type is not FAST_MCTP");if(!Number.isFinite(Number(r)))throw new Error("Invalid signer chain id");r=Number(r);let s=i||re,a=new j.Contract(d.MAYAN_FORWARDER_CONTRACT,oe.abi);if(e.fromToken.contract===e.fastMctpInputContract)if(e.hasAuction){if(!Number(e.deadline64))throw new Error("Fast Mctp order requires timeout");let p=Tn(e,t,n,r),o="forwardERC20",c=[e.fromToken.contract,p._params.amountIn,s,p._params.contractAddress,p.data];return{data:a.interface.encodeFunctionData(o,c),to:d.MAYAN_FORWARDER_CONTRACT,value:(0,j.toBeHex)(0),chainId:r,_forwarder:{method:o,params:c}}}else{let p=bn(e,t,n,r,u),o="forwardERC20",c=[e.fromToken.contract,p._params.amountIn,s,p._params.contractAddress,p.data];return{data:a.interface.encodeFunctionData(o,c),to:d.MAYAN_FORWARDER_CONTRACT,value:(0,j.toBeHex)(0),chainId:r,_forwarder:{method:o,params:c}}}else{let{minMiddleAmount:p,evmSwapRouterAddress:o,evmSwapRouterCalldata:c}=e;if(!p||!o||!c)throw new Error("Fast Mctp swap requires middle amount, router address and calldata");if(e.hasAuction){if(!Number(e.deadline64))throw new Error("Fast Mctp order requires timeout");let l=Tn(e,t,n,r),m=g(e.minMiddleAmount,K);if(e.fromToken.contract===j.ZeroAddress){let y="swapAndForwardEth",f=[l._params.amountIn,o,c,e.fastMctpInputContract,m,l._params.contractAddress,l.data];return{data:a.interface.encodeFunctionData(y,f),to:d.MAYAN_FORWARDER_CONTRACT,value:(0,j.toBeHex)(l._params.amountIn),chainId:r,_forwarder:{method:y,params:f}}}else{let y="swapAndForwardERC20",f=[e.fromToken.contract,l._params.amountIn,s,o,c,e.fastMctpInputContract,m,l._params.contractAddress,l.data];return{data:a.interface.encodeFunctionData(y,f),to:d.MAYAN_FORWARDER_CONTRACT,value:(0,j.toBeHex)(0),chainId:r,_forwarder:{method:y,params:f}}}}else{let l=bn(e,t,n,r,u),m=g(e.minMiddleAmount,K);if(e.fromToken.contract===j.ZeroAddress){let y="swapAndForwardEth",f=[l._params.amountIn,o,c,e.fastMctpInputContract,m,l._params.contractAddress,l.data];return{data:a.interface.encodeFunctionData(y,f),to:d.MAYAN_FORWARDER_CONTRACT,value:(0,j.toBeHex)(l._params.amountIn),chainId:r,_forwarder:{method:y,params:f}}}else{let y="swapAndForwardERC20",f=[e.fromToken.contract,l._params.amountIn,s,o,c,e.fastMctpInputContract,m,l._params.contractAddress,l.data];return{data:a.interface.encodeFunctionData(y,f),to:d.MAYAN_FORWARDER_CONTRACT,value:(0,j.toBeHex)(0),chainId:r,_forwarder:{method:y,params:f}}}}}}function ba(e,t,n,r,i,u){let s=new Pe.PublicKey(d.MAYAN_PROGRAM_ID),[a]=Pe.PublicKey.findProgramAddressSync([Et.Buffer.from("MAIN")],s),p=x(new Pe.PublicKey(e.fromToken.mint),a,!0),o=BigInt(e.effectiveAmountIn64),c=I(p.toString(),1),l=I(d.AUCTION_PROGRAM_ID,1),m;n?m=I(n,1):m=I(Pe.SystemProgram.programId.toString(),1);let y=Y(Number(i)),f=_(e.fromChain),b=_(e.toChain);if(f!==y)throw new Error(`Signer chain id(${Number(i)}) and quote from chain are not same! ${f} !== ${y}`);let T=e.whMayanContract,C={mayanAddr:c,mayanChainId:1,destAddr:I(t,b),destChainId:b,auctionAddr:l,referrer:m,refundAddr:I(r,y)},A=e.toToken.contract===Te.ZeroAddress,M={transferDeadline:BigInt(e.deadline64),swapDeadline:BigInt(e.deadline64),amountOutMin:g(e.minAmountOut,Math.min(8,e.toToken.decimals)),gasDrop:g(e.gasDrop,Math.min(8,B(e.toChain))),unwrap:A,customPayload:u?`0x${Et.Buffer.from(u).toString("hex")}`:"0x"},O={swapFee:g(e.swapRelayerFee,Math.min(8,e.fromToken.decimals)),redeemFee:g(e.redeemRelayerFee,Math.min(8,e.toToken.decimals)),refundFee:g(e.refundRelayerFee,Math.min(8,e.fromToken.decimals))},k=I(e.toToken.realOriginContractAddress,e.toToken.realOriginChainId),S=g(e.bridgeFee,18);return{amountIn:o,tokenIn:e.fromToken.contract,tokenOut:k,tokenOutWChainId:e.toToken.realOriginChainId,criteria:M,recipient:C,relayerFees:O,contractAddress:T,bridgeFee:S}}function Je(e,t,n,r,i,u,s,a){let p=Y(Number(u)),o=_(e.fromChain);if(o!==p)throw new Error(`Signer chain id(${Number(u)}) and quote from chain are not same! ${o} !== ${p}`);let c=Ae(e,r);if(e.type==="MCTP")return wt(e,n,c,u,a,s);if(e.type==="SWIFT")return dn(e,t,n,c,u,a);if(e.type==="SHUTTLE")return fn(e,n,u,a);if(e.type==="FAST_MCTP")return wn(e,n,c,u,a,s);if(e.type!="WH")throw new Error("Unsupported quote type");if(!Number(e.deadline64))throw new Error("WH mode requires a timeout");let{relayerFees:l,recipient:m,tokenOut:y,tokenOutWChainId:f,criteria:b,tokenIn:T,amountIn:C,contractAddress:A,bridgeFee:M}=ba(e,n,c,i,u,s),O=new Te.Contract(d.MAYAN_FORWARDER_CONTRACT,oe.abi),k=new Te.Contract(A,Nt.abi),S,D,N,V=a||re;if(T===Te.ZeroAddress){let E=k.interface.encodeFunctionData("wrapAndSwapETH",[l,m,y,f,b]);S="forwardEth",D=[A,E],N=(0,Te.toBeHex)(C)}else{let E=k.interface.encodeFunctionData("swap",[l,m,y,f,b,T,C]);S="forwardERC20",D=[T,C,V,A,E],N=(0,Te.toBeHex)(M)}let Q=O.interface.encodeFunctionData(S,D);return{to:d.MAYAN_FORWARDER_CONTRACT,data:Q,value:N,chainId:u,_forwarder:{method:S,params:D}}}async function Ta(e,t,n,r,i,u,s,a){if(!i.provider)throw new Error("No provider found for signer");let p=await i.getAddress();if(p.toLowerCase()!==t.toLowerCase())throw new Error("Signer address does not match swapper address");let o=Number((await i.provider.getNetwork()).chainId);if(e.type==="SWIFT"&&e.gasless){let l=Ae(e,r),m=mn(e,t,n,l,o,u),y=await i.signTypedData(m.orderTypedData.domain,m.orderTypedData.types,m.orderTypedData.value);return await ft(m,y),m.orderHash}let c=Je(e,t,n,r,p,o,a,u);if(delete c._forwarder,s?.gasPrice&&(c.gasPrice=s.gasPrice),s?.maxFeePerGas&&(c.maxFeePerGas=s.maxFeePerGas),s?.maxPriorityFeePerGas&&(c.maxPriorityFeePerGas=s.maxPriorityFeePerGas),s?.gasLimit)c.gasLimit=s.gasLimit;else{let l=await i.estimateGas(c);c.gasLimit=String(BigInt(String(l))*BigInt(110)/BigInt(100))}return c.chainId=it(e.fromChain),i.sendTransaction(c)}async function ga(e,t,n,r,i){let u=await n.getAddress(),s=e.toChain==="solana"?"ENsytooJVSZyNHbxvueUeX8Am8gcNqPivVVE8USCBiy5":"0x1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a",a=Number((await n.provider.getNetwork()).chainId);if(e.type==="SWIFT"&&e.gasless)return BigInt(0);let p=Je(e,t,s,null,u,a,i,r);delete p._forwarder;let o=await n.estimateGas(p);return o=BigInt(String(o)),e.type==="MCTP"||e.type==="SWIFT"?o*BigInt(110)/BigInt(100):o}async function wa(e,t,n,r){let i="0x1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a",u=e.toChain==="solana"?"ENsytooJVSZyNHbxvueUeX8Am8gcNqPivVVE8USCBiy5":"0x1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a",s=e?.fromToken?.chainId;if(e.type==="SWIFT"&&e.gasless)return BigInt(0);let a=Je(e,i,u,null,i,s,r,n);return delete a._forwarder,t.estimateGas(a)}async function Rt(e,t){let n;try{n=await t.getMoveFunctionArgTypes({package:e.package,module:e.module,function:e.function})}catch{throw new Error(`Failed to fetch ${e.package}::${e.module}::${e.function} ArgTypes`)}if(n){if(n[e.argumentIndex]!=="Pure"&&n[e.argumentIndex]?.Object!=="ByImmutableReference")throw new Error(`Argument ${e.argumentIndex} of ${e.module}::${e.function} is not immutable`)}else throw new Error(`Failed to fetch package::${e.module}::${e.function} ArgTypes`)}async function Ze(e,t){let n=[],r=BigInt(0),i;do{let u=await t.getCoins({...e,owner:e.walletAddress,cursor:i}),s=u.data.filter(a=>BigInt(a.balance)>BigInt(0));if(n=[...n,...s],s.forEach(a=>{r+=BigInt(a.balance)}),u.data.length===0||!u.hasNextPage||!u.nextCursor||r>=e.coinAmount)return{coins:n.sort((a,p)=>Number(BigInt(a.coinObjectId)-BigInt(p.coinObjectId))),sum:r};i=u.nextCursor}while(!0)}async function Xe(e,t){let n;try{n=await t.getObject({id:e,options:{showContent:!0}})}catch(r){throw new Error(`Failed to fetch Mayan Sui package ID:
${r}`)}if(n.data?.content?.fields?.latest_package_id)return n.data.content.fields.latest_package_id;throw new Error("latest_package_id not found in Mayan Sui state object")}var ke=require("@mysten/sui/transactions"),et=require("@mysten/sui/utils");var qe=require("@solana/web3.js");var An=require("ethers");async function Ot(e,t,n,r,i,u,s){let[a,p]=await Promise.all([Xe(d.SUI_MCTP_STATE,u),e.hasAuction?Xe(d.SUI_MCTP_FEE_MANAGER_STATE,u):null]),o=g(e.minMiddleAmount,K),c,l,m;if(e.fromToken.contract===e.mctpInputContract)c=s?.builtTransaction??new ke.Transaction,l=await tt(o,t,e.mctpInputContract,u,c,s?.inputCoin);else{let{tx:b,outCoin:T,whFeeCoin:C}=await yt({amountIn64:e.effectiveAmountIn64,inputCoinType:e.fromToken.contract,middleCoinType:e.mctpInputContract,userWallet:t,withWhFee:e.hasAuction||e.cheaperChain!=="sui",referrerAddress:r,inputCoin:s?.inputCoin,transaction:s?.builtTransaction?await s.builtTransaction.toJSON():void 0});c=ke.Transaction.from(b),l=T,m=C?{result:C}:null}e.hasAuction?await Cn(e,t,n,r,a,p,u,{inputCoin:{result:l},whFeeCoin:m,builtTransaction:c}):e.cheaperChain==="sui"?await hn(e,t,n,a,u,{inputCoin:{result:l},whFeeCoin:m,builtTransaction:c}):await In(e,t,n,a,i,u,{inputCoin:{result:l},whFeeCoin:m,builtTransaction:c});let y=BigInt(e.effectiveAmountIn64),f=i?Uint8Array.from(i):Uint8Array.from([]);c.moveCall({package:a,module:"init_order",function:"log_initialize_mctp",typeArguments:[e.fromToken.contract],arguments:[c.pure.u64(y),c.object(e.fromToken.verifiedAddress),c.pure.vector("u8",f)]});try{let b;r?b=I(r,_(e.toChain)):b=I(qe.SystemProgram.programId.toString(),_("solana")),c.moveCall({package:d.SUI_LOGGER_PACKAGE_ID,module:"referrer_logger",function:"log_referrer",arguments:[c.pure.address(b),c.pure.u8(e.referrerBps||0)]})}catch(b){console.error("Failed to log referrer",b)}return c}async function In(e,t,n,r,i,u,s){let a=_(e.toChain),p=s?.builtTransaction??new ke.Transaction,o=g(e.minMiddleAmount,K),c=await tt(o,t,e.mctpInputContract,u,p,s?.inputCoin),l=i?Fe:Oe,m=I(n,a),y=pe(e.toChain),f=g(e.gasDrop,Math.min(B(e.toChain),8)),b=g(e.redeemRelayerFee,K),T=i?Uint8Array.from(i):Uint8Array.from([]),[C]=p.moveCall({package:r,module:"bridge_with_fee",function:"prepare_bridge_with_fee",typeArguments:[e.mctpInputContract],arguments:[p.pure.u8(l),c,p.pure.u64(o),p.pure.address(m),p.pure.u32(y),p.pure.u64(f),p.pure.u64(b),p.pure.vector("u8",T)]}),[A,M]=p.moveCall({package:r,module:"bridge_with_fee",function:"bridge_with_fee",typeArguments:[e.mctpInputContract],arguments:[p.object(d.SUI_MCTP_STATE),p.object(d.SUI_CCTP_CORE_STATE),p.object(e.mctpVerifiedInputAddress),C]}),[O,k]=p.moveCall({package:d.SUI_CCTP_TOKEN_PACKAGE_ID,module:"deposit_for_burn",function:"deposit_for_burn_with_caller_with_package_auth",typeArguments:[e.mctpInputContract,`${r}::bridge_with_fee::CircleAuth`],arguments:[M,p.object(d.SUI_CCTP_TOKEN_STATE),p.object(d.SUI_CCTP_CORE_STATE),p.object("0x403"),p.object(e.mctpInputTreasury)]}),[S]=p.moveCall({package:r,module:"bridge_with_fee",function:"publish_bridge_with_fee",arguments:[p.object(d.SUI_MCTP_STATE),A,k]});return await Sn(p,S,u,BigInt(e.bridgeFee),t,s?.whFeeCoin),p}async function hn(e,t,n,r,i,u){let s=_(e.toChain),a=u?.builtTransaction??new ke.Transaction,p=g(e.minMiddleAmount,K),o=await tt(p,t,e.mctpInputContract,i,a,u?.inputCoin),c=I(n,s),l=pe(e.toChain),m=g(e.gasDrop,Math.min(B(e.toChain),8)),y=g(e.redeemRelayerFee,K),[f]=a.moveCall({package:r,module:"bridge_locked_fee",function:"prepare_bridge_locked_fee",typeArguments:[e.mctpInputContract],arguments:[o,a.pure.u64(p),a.pure.address(c),a.pure.u32(l),a.pure.u64(m),a.pure.u64(y)]}),[b,T]=a.moveCall({package:r,module:"bridge_locked_fee",function:"bridge_locked_fee",typeArguments:[e.mctpInputContract],arguments:[a.object(d.SUI_MCTP_STATE),a.object(d.SUI_CCTP_CORE_STATE),a.object(e.mctpVerifiedInputAddress),f]}),[C,A]=a.moveCall({package:d.SUI_CCTP_TOKEN_PACKAGE_ID,module:"deposit_for_burn",function:"deposit_for_burn_with_caller_with_package_auth",typeArguments:[e.mctpInputContract,`${r}::bridge_locked_fee::CircleAuth`],arguments:[T,a.object(d.SUI_CCTP_TOKEN_STATE),a.object(d.SUI_CCTP_CORE_STATE),a.object("0x403"),a.object(e.mctpInputTreasury)]});return a.moveCall({package:r,module:"bridge_locked_fee",function:"store_bridge_locked_fee",typeArguments:[e.mctpInputContract],arguments:[a.object(d.SUI_MCTP_STATE),a.object(e.mctpVerifiedInputAddress),b,A]}),a}async function Cn(e,t,n,r,i,u,s,a){let p=_(e.toChain),o=a?.builtTransaction??new ke.Transaction,c=g(e.minMiddleAmount,K),[l]=await Promise.all([tt(c,t,e.mctpInputContract,s,o,a?.inputCoin),Rt({package:u,module:"calculate_mctp_fee",function:"prepare_calc_mctp_fee",argumentIndex:3},s)]),m=e.toToken.contract===An.ZeroAddress?I(qe.SystemProgram.programId.toString(),_("solana")):I(e.toToken.contract,e.toToken.wChainId),y=g(e.minAmountOut,Math.min(8,e.toToken.decimals)),f=I(n,p),b=pe(e.toChain),T=g(e.gasDrop,Math.min(B(e.toChain),8)),C=g(e.redeemRelayerFee,K),A=BigInt(e.deadline64),M;r?M=I(r,p):M=I(qe.SystemProgram.programId.toString(),_("solana"));let O=[o.object(e.mctpVerifiedInputAddress),o.pure.u8(ut),o.pure.address(t),l,o.pure.address(f),o.pure.u16(p),o.pure.address(m),o.pure.u64(y),o.pure.u64(T),o.pure.u64(C),o.pure.u64(A),o.pure.address(M),o.pure.u8(e.referrerBps)],[k]=o.moveCall({package:u,module:"calculate_mctp_fee",function:"prepare_calc_mctp_fee",typeArguments:[e.mctpInputContract],arguments:O}),[S]=o.moveCall({package:u,module:"calculate_mctp_fee",function:"calculate_mctp_fee",arguments:[o.object(d.SUI_MCTP_FEE_MANAGER_STATE),k]}),[D]=o.moveCall({package:i,module:"init_order",function:"prepare_initialize_order",typeArguments:[e.mctpInputContract],arguments:[...O.slice(1),o.pure.u32(b),o.pure.u64(c)]}),[N,V]=o.moveCall({package:i,module:"init_order",function:"initialize_order",typeArguments:[e.mctpInputContract],arguments:[o.object(d.SUI_MCTP_STATE),o.object(d.SUI_CCTP_CORE_STATE),o.object(e.mctpVerifiedInputAddress),D,S]}),[Q,E]=o.moveCall({package:d.SUI_CCTP_TOKEN_PACKAGE_ID,module:"deposit_for_burn",function:"deposit_for_burn_with_caller_with_package_auth",typeArguments:[e.mctpInputContract,`${i}::init_order::CircleAuth`],arguments:[V,o.object(d.SUI_CCTP_TOKEN_STATE),o.object(d.SUI_CCTP_CORE_STATE),o.object("0x403"),o.object(e.mctpInputTreasury)]}),[v]=o.moveCall({package:i,module:"init_order",function:"publish_init_order",arguments:[o.object(d.SUI_MCTP_STATE),N,E]});return await Sn(o,v,s,BigInt(e.bridgeFee),t,a?.whFeeCoin),o}async function Sn(e,t,n,r,i,u){let s;if(u?.result)s=u.result;else if(u?.objectId)s=e.object(u.objectId);else if(r>BigInt(0)){let{coins:a,sum:p}=await Ze({walletAddress:i,coinType:et.SUI_TYPE_ARG,coinAmount:r},n);if(p<r)throw new Error("Insufficient funds to pay Wormhole message fee");a.length>1&&e.mergeCoins(a[0].coinObjectId,a.slice(1).map(c=>c.coinObjectId));let[o]=e.splitCoins(a[0].coinObjectId,[r]);s=o}else{let[a]=e.splitCoins(e.gas,[e.pure.u64(0)]);s=a}return e.moveCall({package:d.SUI_WORMHOLE_PACKAGE_ID,module:"publish_message",function:"publish_message",arguments:[e.object(d.SUI_WORMHOLE_STATE),s,t,e.object(et.SUI_CLOCK_OBJECT_ID)]}),e}async function tt(e,t,n,r,i,u){let s;if(u?.result)s=u.result;else if(u?.objectId)s=i.object(u.objectId);else{let{coins:a,sum:p}=await Ze({walletAddress:t,coinType:n,coinAmount:e},r);if(p<e)throw new Error(`Insufficient funds to create Coin ${n} with amount ${e}`);a.length>1&&i.mergeCoins(a[0].coinObjectId,a.slice(1).map(c=>c.coinObjectId));let[o]=i.splitCoins(a[0].coinObjectId,[e]);s=o}return s}async function Aa(e,t,n,r,i,u,s){let a=Ae(e,r);if(e.type==="MCTP")return Ot(e,t,n,a,i,u,s);throw new Error("Unsupported quote type from Sui chain")}0&&(module.exports={FAST_MCTP_PAYLOAD_TYPE_CUSTOM_PAYLOAD,FAST_MCTP_PAYLOAD_TYPE_DEFAULT,FAST_MCTP_PAYLOAD_TYPE_ORDER,MCTP_INIT_ORDER_PAYLOAD_ID,MCTP_PAYLOAD_TYPE_CUSTOM_PAYLOAD,MCTP_PAYLOAD_TYPE_DEFAULT,ZeroPermit,addBridgeLockedFeeMoveCalls,addBridgeWithFeeMoveCalls,addInitOrderMoveCalls,addresses,assertArgumentIsImmutable,broadcastJitoBundleId,checkSdkVersionSupport,confirmJitoBundleId,createApproveInstruction,createAssociatedTokenAccountInstruction,createCloseAccountInstruction,createInitializeRandomTokenAccountInstructions,createMctpFromSolanaInstructions,createMctpFromSuiMoveCalls,createSplTransferInstruction,createSwapFromSolanaInstructions,createSwapFromSuiMoveCalls,createSwiftFromSolanaInstructions,createSwiftOrderHash,createSyncNativeInstruction,createTransferAllAndCloseInstruction,decentralizeClientSwapInstructions,decideRelayer,deserializeInstructionInfo,estimateQuoteRequiredGas,estimateQuoteRequiredGasAprox,fetchAllCoins,fetchAllTokenList,fetchMayanSuiPackageId,fetchQuote,fetchTokenList,generateFetchQuoteUrl,getAddressLookupTableAccounts,getAmountOfFractionalAmount,getAnchorInstructionData,getAssociatedTokenAddress,getCurrentChainTime,getDisplayAmount,getEvmChainIdByName,getGasDecimal,getGasDecimalsInSolana,getJitoTipTransfer,getMctpFromEvmTxPayload,getQuoteSuitableReferrerAddress,getSafeU64Blob,getSdkVersion,getSuggestedRelayer,getSwapFromEvmTxPayload,getSwapSolana,getSwapSui,getWormholeChainIdById,getWormholeChainIdByName,hexToUint8Array,isValidAptosType,nativeAddressToHexString,sendJitoBundle,solMint,submitSwiftEvmSwap,submitSwiftSolanaSwap,submitTransactionWithRetry,swapFromEvm,swapFromSolana,unwrapSol,validateJupSwap,wait,wrapSol});