@testnet-mayan/swap-sdk
Version:
A SDK to bridge with Mayan on testnets
1 lines • 130 kB
JavaScript
var xn=Object.create;var Ge=Object.defineProperty;var Bn=Object.getOwnPropertyDescriptor;var Nn=Object.getOwnPropertyNames;var Wn=Object.getPrototypeOf,Kn=Object.prototype.hasOwnProperty;var Ln=(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 Nn(t))!Kn.call(e,i)&&i!==n&&Ge(e,i,{get:()=>t[i],enumerable:!(r=Bn(t,i))||r.enumerable});return e};var He=(e,t,n)=>(n=e!=null?xn(Wn(e)):{},Dt(t||!e||!e.__esModule?Ge(n,"default",{value:e,enumerable:!0}):n,e)),Un=e=>Dt(Ge({},"__esModule",{value:!0}),e);var Aa={};Ln(Aa,{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:()=>ae,addBridgeLockedFeeMoveCalls:()=>An,addBridgeWithFeeMoveCalls:()=>wn,addInitOrderMoveCalls:()=>In,addresses:()=>d,assertArgumentIsImmutable:()=>Rt,broadcastJitoBundleId:()=>St,checkSdkVersionSupport:()=>st,confirmJitoBundleId:()=>Ct,createApproveInstruction:()=>At,createAssociatedTokenAccountInstruction:()=>X,createCloseAccountInstruction:()=>Yt,createInitializeRandomTokenAccountInstructions:()=>Be,createMctpFromSolanaInstructions:()=>Mt,createMctpFromSuiMoveCalls:()=>Ot,createSplTransferInstruction:()=>Se,createSwapFromSolanaInstructions:()=>un,createSwapFromSuiMoveCalls:()=>wa,createSwiftFromSolanaInstructions:()=>_t,createSwiftOrderHash:()=>Ve,createSyncNativeInstruction:()=>Ce,createTransferAllAndCloseInstruction:()=>Ke,decentralizeClientSwapInstructions:()=>We,decideRelayer:()=>It,deserializeInstructionInfo:()=>ve,estimateQuoteRequiredGas:()=>Ta,estimateQuoteRequiredGasAprox:()=>ga,fetchAllCoins:()=>Je,fetchAllTokenList:()=>Vn,fetchMayanSuiPackageId:()=>Ze,fetchQuote:()=>$n,fetchTokenList:()=>Yn,generateFetchQuoteUrl:()=>vt,getAddressLookupTableAccounts:()=>Ne,getAmountOfFractionalAmount:()=>g,getAnchorInstructionData:()=>ee,getAssociatedTokenAddress:()=>x,getCurrentChainTime:()=>zn,getDisplayAmount:()=>jn,getEvmChainIdByName:()=>it,getGasDecimal:()=>B,getGasDecimalsInSolana:()=>ot,getJitoTipTransfer:()=>ht,getMctpFromEvmTxPayload:()=>wt,getQuoteSuitableReferrerAddress:()=>ge,getSafeU64Blob:()=>F,getSdkVersion:()=>Ee,getSuggestedRelayer:()=>mt,getSwapFromEvmTxPayload:()=>ze,getSwapSolana:()=>De,getSwapSui:()=>yt,getWormholeChainIdById:()=>Y,getWormholeChainIdByName:()=>_,hexToUint8Array:()=>U,isValidAptosType:()=>Hn,nativeAddressToHexString:()=>I,sendJitoBundle:()=>Qe,solMint:()=>pe,submitSwiftEvmSwap:()=>ft,submitSwiftSolanaSwap:()=>bt,submitTransactionWithRetry:()=>xe,swapFromEvm:()=>ba,swapFromSolana:()=>pa,unwrapSol:()=>ta,validateJupSwap:()=>Me,wait:()=>Re,wrapSol:()=>ea});module.exports=Un(Aa);var ie=He(require("cross-fetch"));var d={MAYAN_FORWARDER_CONTRACT:"0x076baB2Bf1aa0a06F47BD32245527f6D84d62Fd1",MAYAN_PROGRAM_ID:"FC4eXxkyrMPTjiYUpp4EAnkmwMbQyZ6NDCh1kfLn6vsf",AUCTION_PROGRAM_ID:"8QJmxZcEzwuYmCPy6XqgN2sHcYCcFq6AEfBMJZZuLo5a",MCTP_PROGRAM_ID:"dkpZqrxHFrhziEMQ931GLtfy11nFkCsfMftH9u6QwBU",SWIFT_PROGRAM_ID:"92peaC8g5ANAxpK2aCfLTC12JgPncRKCGULQNB2DMvRH",FEE_MANAGER_PROGRAM_ID:"EyQnmCoLDaFDuNdGYJuYNjFPorohwPuvUzhewg9nGej1",WORMHOLE_PROGRAM_ID:"3u8hJUVTA4jH1wYAyUur7FFZVQ8H635K3tSHHF4ssjQ5",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:"8fVCtaFqfEAtGtqcoVyawy1Mytj461T4Ti4YjHZqfF47",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://testnet-explorer-api.mayan.finance/v3",PRICE_URL:"https://testnet-price-api.mayan.finance/v3",RELAYER_URL:"https://testnet-relayer-api.mayan.finance/v3"};var Ae=require("ethers"),le=require("@solana/web3.js"),rt=require("buffer");var Gn=He(require("js-sha3"));var Hn=e=>/^(0x)?[0-9a-fA-F]+::\w+::\w+$/.test(e);function I(e,t){if(t===1)return(0,Ae.zeroPadValue)(new le.PublicKey(e).toBytes(),32);if(t===ke.ethereum||t===ke.base||t===ke.monad)return(0,Ae.zeroPadValue)(e,32);throw console.log(`Unsupported chain id: ${t}`,e),new Error("Unsupported token chain")}function U(e){return new Uint8Array(rt.Buffer.from(e.startsWith("0x")?e.substring(2):e,"hex"))}function x(e,t,n=!1,r=new le.PublicKey(d.TOKEN_PROGRAM_ID),i=new le.PublicKey(d.ASSOCIATED_TOKEN_PROGRAM_ID)){if(!n&&!le.PublicKey.isOnCurve(t.toBuffer()))throw new Error("TokenOwnerOffCurveError");let[u]=le.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,Ae.parseUnits)(s,Number(t))}function jn(e,t){return Number((0,Ae.formatUnits)(e,t))}var ke={solana:1,ethereum:10002,base:10004,monad:48,sui:21};function _(e){return ke[e]}var at={[11155111]:10002,[84532]:10004,[10143]:48};function it(e){let t=ke[e],n=Object.keys(at);for(let r of n)if(at[r]===t)return Number(r);throw new Error(`Unsupported chain: ${e}`)}function Y(e){return at[e]}var he=[10,5,0];function Ee(){return he.join("_")}function st(e){return he[0]<e[0]?!1:he[0]>e[0]?!0:he[1]<e[1]?!1:he[1]>e[1]||he[2]>=e[2]}function B(e){return e==="solana"?9:18}function ot(e){return e==="solana"?9:8}var Qn=BigInt(2)**BigInt(64)-BigInt(1);function F(e){if(e<BigInt(0)||e>Qn)throw new Error(`Invalid u64: ${e}`);let t=rt.Buffer.alloc(8);return t.writeBigUInt64LE(e),t}var ae={value:BigInt(0),deadline:0,v:0,r:`0x${le.SystemProgram.programId.toBuffer().toString("hex")}`,s:`0x${le.SystemProgram.programId.toBuffer().toString("hex")}`};function Re(e){return new Promise(t=>{setTimeout(()=>{t()},e)})}function ge(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: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 de(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 Vn(e){let t=e?`?standard=${e.join(",")}`:"",n=await(0,ie.default)(`${d.PRICE_URL}/tokens${t}`,{method:"GET",redirect:"follow"});if(await de(n),n.status===200)return await n.json();throw new Error("Cannot fetch Mayan tokens!")}async function Yn(e,t=!1,n){let r={chain:e,nonPortal:t,standard:n?n?.join(","):void 0},i=await(0,ie.default)(`${d.PRICE_URL}/tokens?${dt(r)}`);if(await de(i),i.status===200)return(await i.json())[e];throw new Error("Cannot fetch Mayan tokens!")}function vt(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 $n(e,t={swift:!0,mctp:!0,gasless:!1,onlyDirect:!1}){let n=vt(e,t),r=await(0,ie.default)(n,{method:"GET",redirect:"follow"});await de(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 zn(e){let t=await(0,ie.default)(`${d.PRICE_URL}/clock/${e}`,{method:"GET",redirect:"follow"});await de(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,ie.default)(`${d.RELAYER_URL}/active-relayers?solanaProgram=${d.MAYAN_PROGRAM_ID}`,{method:"GET",redirect:"follow"});await de(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,ie.default)(`${d.PRICE_URL}/get-swap/solana?${t}`,{method:"GET",redirect:"follow"});await de(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,ie.default)(n,{method:"POST",redirect:"follow",body:t,headers:{"Content-Type":"application/json"}});await de(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,ie.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 de(n)}async function bt(e){let t=await(0,ie.default)(`${d.EXPLORER_URL}/submit/solana`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({signedTx:e})});await de(t);let n=await t.json();if(t.status!==200&&t.status!==201)throw n;return n}var be=require("ethers"),_e=require("@solana/web3.js");var xt={_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 se={_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 Wt=require("buffer");var re=require("@solana/web3.js");var oe=require("buffer"),K=6;function ue(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 je(e,t){let n=new re.PublicKey(d.CCTP_CORE_PROGRAM_ID),r=new re.PublicKey(d.CCTP_TOKEN_PROGRAM_ID),[i]=re.PublicKey.findProgramAddressSync([oe.Buffer.from("message_transmitter")],n),[u]=re.PublicKey.findProgramAddressSync([oe.Buffer.from("sender_authority")],r),[s]=re.PublicKey.findProgramAddressSync([oe.Buffer.from("local_token"),e.toBytes()],r),[a]=re.PublicKey.findProgramAddressSync([oe.Buffer.from("token_messenger")],r),[p]=re.PublicKey.findProgramAddressSync([oe.Buffer.from("token_minter")],r),o=ue(t),[c]=re.PublicKey.findProgramAddressSync([oe.Buffer.from("remote_token_messenger"),oe.Buffer.from(o.toString())],r),[l]=re.PublicKey.findProgramAddressSync([oe.Buffer.from("__event_authority")],n),[m]=re.PublicKey.findProgramAddressSync([oe.Buffer.from("__event_authority")],r);return{messageTransmitter:i,senderAuthority:u,remoteTokenMessengerKey:c,tokenMessenger:a,tokenMinter:p,eventAuthToken:m,eventAuthCore:l,localToken:s}}function Jn(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=ue(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 b=g(e.bridgeFee,B(e.fromChain));return a&&(b=BigInt(0)),{lockFee:a,tokenIn:e.mctpInputContract,amountIn:l,redeemFee:o,gasDrop:c,destAddr:p,destDomain:m,payloadType:r?Fe:Oe,customPayload:r?`0x${Wt.Buffer.from(r).toString("hex")}`:"0x",bridgeFee:b,contractAddress:y}}function Bt(e,t,n,r){let i=Jn(e,t,n,r),{contractAddress:u,tokenIn:s,amountIn:a,destAddr:p,lockFee:o,redeemFee:c,gasDrop:l,destDomain:m,customPayload:y,payloadType:b,bridgeFee:f}=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,b,y]),A=(0,G.toBeHex)(f),{to:u,data:C,value:A,_params:i}}function Zn(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)),b=BigInt(e.deadline64),f=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:f,minAmountOut:y,deadline:b,redeemFee:c,referrerAddr:o,referrerBps:e.referrerBps||0},bridgeFee:g(e.bridgeFee,B(e.fromChain)),contractAddress:a}}function Nt(e,t,n,r){let i=Zn(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||ae,a=new G.Contract(d.MAYAN_FORWARDER_CONTRACT,se.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=Nt(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=Bt(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=Nt(e,t,n,r),b=g(e.minMiddleAmount,K);if(e.fromToken.contract===G.ZeroAddress){let f=y._params.params.amountIn;if(f<=p)throw new Error("Amount in is less than bridge fee");p!==BigInt(0)&&(f-=p),o=(0,G.toBeHex)(y._params.params.amountIn);let T="swapAndForwardEth",C=[f,l,m,e.mctpInputContract,b,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 f="swapAndForwardERC20",T=[e.fromToken.contract,y._params.params.amountIn,s,l,m,e.mctpInputContract,b,y._params.contractAddress,y.data];return{data:a.interface.encodeFunctionData(f,T),to:d.MAYAN_FORWARDER_CONTRACT,value:(0,G.toBeHex)(o),chainId:r,_forwarder:{method:f,params:T}}}}else{let y=Bt(e,t,r,u),b=g(e.minMiddleAmount,K);if(e.fromToken.contract===G.ZeroAddress){let f=y._params.amountIn;if(f<=p)throw new Error("Amount in is less than bridge fee");p!==BigInt(0)&&(f-=p),o=(0,G.toBeHex)(y._params.amountIn);let T="swapAndForwardEth",C=[f,l,m,e.mctpInputContract,b,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 f="swapAndForwardERC20",T=[e.fromToken.contract,y._params.amountIn,s,l,m,e.mctpInputContract,b,y._params.contractAddress,y.data];return{data:a.interface.encodeFunctionData(f,T),to:d.MAYAN_FORWARDER_CONTRACT,value:(0,G.toBeHex)(o),chainId:r,_forwarder:{method:f,params:T}}}}}}var q=require("ethers"),Ue=require("@solana/web3.js");var Kt={_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"},{internalT