UNPKG

@dontuseit/swap-sdk

Version:
1 lines 168 kB
import oe from"cross-fetch";var l={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:"Ff3yi1meWQQ19VPZMzGg6H8JQQeRudiV7QtVtyzJyoht",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",HC_ARBITRUM_BRIDGE:"0x2df1c51e09aecf9cacb7bc98cb1742757f163df7",HC_ARBITRUM_DEPOSIT_PROCESSOR:"0xdDd77e62C848C3334f1148d4F1457FC59ede4E4B",ARBITRUM_USDC_CONTRACT:"0xaf88d065e77c8cC2239327C5EDb3A432268e5831",PAYLOAD_WRITER_PROGRAM_ID:"DwMLtdtJqJQkHzNcrdTBuWHJByJfgpKBnvFvzyKdy3cU",CPI_PROXY_PROGRAM_ID:"6u55Hqo1AsGMuJQ31VgNBfVhnpeszxXC4b6KzFaRU2JM"};import{ethers as jt,zeroPadValue as gt,parseUnits as va,formatUnits as xa,TypedDataEncoder as Ba}from"ethers";import{PublicKey as Ue,SystemProgram as Qt}from"@solana/web3.js";import{Buffer as Ee}from"buffer";var bt={_format:"hh-sol-artifact-1",contractName:"ERC20Permit",sourceName:"contracts/token/ERC20/extensions/ERC20Permit.sol",abi:[{inputs:[],name:"ECDSAInvalidSignature",type:"error"},{inputs:[{internalType:"uint256",name:"length",type:"uint256"}],name:"ECDSAInvalidSignatureLength",type:"error"},{inputs:[{internalType:"bytes32",name:"s",type:"bytes32"}],name:"ECDSAInvalidSignatureS",type:"error"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"allowance",type:"uint256"},{internalType:"uint256",name:"needed",type:"uint256"}],name:"ERC20InsufficientAllowance",type:"error"},{inputs:[{internalType:"address",name:"sender",type:"address"},{internalType:"uint256",name:"balance",type:"uint256"},{internalType:"uint256",name:"needed",type:"uint256"}],name:"ERC20InsufficientBalance",type:"error"},{inputs:[{internalType:"address",name:"approver",type:"address"}],name:"ERC20InvalidApprover",type:"error"},{inputs:[{internalType:"address",name:"receiver",type:"address"}],name:"ERC20InvalidReceiver",type:"error"},{inputs:[{internalType:"address",name:"sender",type:"address"}],name:"ERC20InvalidSender",type:"error"},{inputs:[{internalType:"address",name:"spender",type:"address"}],name:"ERC20InvalidSpender",type:"error"},{inputs:[{internalType:"uint256",name:"deadline",type:"uint256"}],name:"ERC2612ExpiredSignature",type:"error"},{inputs:[{internalType:"address",name:"signer",type:"address"},{internalType:"address",name:"owner",type:"address"}],name:"ERC2612InvalidSigner",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"uint256",name:"currentNonce",type:"uint256"}],name:"InvalidAccountNonce",type:"error"},{inputs:[],name:"InvalidShortString",type:"error"},{inputs:[{internalType:"string",name:"str",type:"string"}],name:"StringTooLong",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[],name:"EIP712DomainChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"},{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"}],name:"permit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],bytecode:"0x",deployedBytecode:"0x",linkReferences:{},deployedLinkReferences:{}};import*as Yt from"js-sha3";var Na=Yt.sha3_256,Wa=e=>/^(0x)?[0-9a-fA-F]+::\w+::\w+$/.test(e);function I(e,t){if(t===1)return gt(new Ue(e).toBytes(),32);if(t===j.ethereum||t===j.bsc||t===j.polygon||t===j.avalanche||t===j.arbitrum||t===j.optimism||t===j.base||t===j.unichain||t===j.linea||t===j.sonic||t===j.hyperevm)return gt(e,32);if(t===j.aptos&&Wa(e))return`0x${Na(e)}`;if(t===j.sui){let n=e.startsWith("0x")?e.substring(2):e;if(Ee.from(n,"hex").length!==32)throw new Error("Invalid sui address: "+e);return gt(e,32)}else throw console.log(`Unsupported chain id: ${t}`,e),new Error("Unsupported token chain")}function U(e){return new Uint8Array(Ee.from(e.startsWith("0x")?e.substring(2):e,"hex"))}function D(e,t,n=!1,a=new Ue(l.TOKEN_PROGRAM_ID),i=new Ue(l.ASSOCIATED_TOKEN_PROGRAM_ID)){if(!n&&!Ue.isOnCurve(t.toBuffer()))throw new Error("TokenOwnerOffCurveError");let[s]=Ue.findProgramAddressSync([t.toBuffer(),a.toBuffer(),e.toBuffer()],i);return s}function Ua(e){return(typeof e=="string"||typeof e=="number")&&e!==""&&e!==null&&!isNaN(Number(e))&&Number.isFinite(Number(e))}function T(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");if(!Ua(t))throw new Error("getAmountOfFractionalAmount: decimals is not a number");let n=Math.min(8,Number(t)),a=Number(e).toFixed(n+1),i=new RegExp(`^-?\\d+(?:\\.\\d{0,${n}})?`),s=a.match(i);if(!s)throw new Error("getAmountOfFractionalAmount: fixedAmount is null");let o=s[0];return va(o,Number(t))}function $t(e,t){return Number(xa(e,t))}var j={solana:1,ethereum:2,bsc:4,polygon:5,avalanche:6,arbitrum:23,optimism:24,base:30,aptos:22,sui:21,unichain:44,linea:38,hypercore:65e3,sonic:52,hyperevm:47};function S(e){return j[e]}var Tt={[1]:2,[56]:4,[137]:5,[43114]:6,[42161]:23,[10]:24,[8453]:30,[130]:44,[59144]:38,[146]:52,[999]:47};function Jt(e){let t=j[e],n=Object.keys(Tt);for(let a of n)if(Tt[a]===t)return Number(a);throw new Error(`Unsupported chain: ${e}`)}function H(e){return Tt[e]}var Re=[10,9,3];function Le(){return Re.join("_")}function zt(e){return Re[0]<e[0]?!1:Re[0]>e[0]?!0:Re[1]<e[1]?!1:Re[1]>e[1]||Re[2]>=e[2]}function N(e){return e==="solana"?9:18}function Zt(e){return e==="solana"?9:8}var La=BigInt(2)**BigInt(64)-BigInt(1);function v(e){if(e<BigInt(0)||e>La)throw new Error(`Invalid u64: ${e}`);let t=Ee.alloc(8);return t.writeBigUInt64LE(e),t}var $={value:BigInt(0),deadline:0,v:0,r:`0x${Qt.programId.toBuffer().toString("hex")}`,s:`0x${Qt.programId.toBuffer().toString("hex")}`};function ze(e){return new Promise(t=>{setTimeout(()=>{t()},e)})}function Se(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:e.type==="MONO_CHAIN"?e.fromChain==="solana"?t?.solana||null:e.fromChain==="sui"?t?.sui||null:t?.evm||null:null}var Ze=1,Xe=2,Xt=1,qt=1,en=2,tn=3;async function Ka(e,t){let n=new jt.Contract(e.contract,bt.abi,t),a,i;try{let[o,r]=await Promise.all([n.DOMAIN_SEPARATOR(),n.name()]);a=o,i=r}catch{throw{mayanError:{permitIssue:!0}}}let s={name:i,version:"1",chainId:e.chainId,verifyingContract:e.contract};for(let o=1;o<11;o++)if(s.version=String(o),Ba.hashDomain(s).toLowerCase()===a.toLowerCase())return s;throw{mayanError:{permitIssue:!0}}}var Ga={Permit:[{name:"owner",type:"address"},{name:"spender",type:"address"},{name:"value",type:"uint256"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]};async function Ha(e,t,n,a,i,s){if(e.standard!=="erc20"&&e.standard!=="hypertoken")throw new Error("Token is not ERC20");if(!e.supportsPermit)throw new Error("Token does not support permit");let o=new jt.Contract(e.contract,bt.abi,i),[r,u]=await Promise.all([Ka(e,i),o.nonces(t)]);return{domain:r,types:Ga,value:{owner:t,spender:n,nonce:String(u),value:String(a),deadline:String(s)}}}async function ii(e,t,n){if(!e.hyperCoreParams)throw new Error("Quote does not have hyperCoreParams");if(e.toChain!=="hypercore")throw new Error("Quote toChain is not hypercore");if(e.toToken.contract.toLowerCase()!==l.ARBITRUM_USDC_CONTRACT.toLowerCase())throw new Error("Quote toToken is not USDC on Arbitrum");let a={name:"USDC",standard:"erc20",symbol:"USDC",mint:"CR4xnGrhsu1fWNPoX4KbTUUtqGMF3mzRLfj4S6YEs1Yo",verified:!0,contract:"0xaf88d065e77c8cc2239327c5edb3a432268e5831",chainId:42161,wChainId:23,decimals:6,logoURI:"http://assets.coingecko.com/coins/images/6319/small/usdc.png?1696506694",coingeckoId:"usd-coin",realOriginContractAddress:"0xaf88d065e77c8cc2239327c5edb3a432268e5831",realOriginChainId:23,supportsPermit:!0,verifiedAddress:"0xaf88d065e77c8cc2239327c5edb3a432268e5831"},[i,s]=await Promise.all([Ha(a,t,l.HC_ARBITRUM_BRIDGE,BigInt(e.hyperCoreParams.depositAmountUSDC64),n,BigInt(e.deadline64)),nn(t,e.toToken.contract)]);if(!s)throw new Error("Because of concurrency, deposit is not possible at the moment, please try again later");return i}function qe(e,t,n){let a=Ee.alloc(109),i=Ee.from(U(t));if(i.length!==20)throw new Error("Invalid destination address length, expected 20 bytes");let s=Ee.from(U(n));if(s.length!==65)throw new Error("Invalid USDC permit signature length, expected 65 bytes");return a.writeBigUInt64BE(BigInt(e.redeemRelayerFee64),0),a.set(i,8),a.writeBigUInt64BE(BigInt(e.hyperCoreParams.depositAmountUSDC64),28),a.writeBigUInt64BE(BigInt(e.deadline64),36),a.set(s,44),a}function et(e){return Object.entries(e).filter(([t,n])=>n!=null&&!Array.isArray(n)).map(([t,n])=>`${encodeURIComponent(t)}=${encodeURIComponent(n)}`).join("&")}async function pe(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 ci(e){let t=e?`?standard=${e.join(",")}`:"",n=await oe(`${l.PRICE_URL}/tokens${t}`,{method:"GET",redirect:"follow"});if(await pe(n),n.status===200)return await n.json();throw new Error("Cannot fetch Mayan tokens!")}async function mi(e,t=!1,n){let a={chain:e,nonPortal:t,standard:n?n?.join(","):void 0},i=await oe(`${l.PRICE_URL}/tokens?${et(a)}`);if(await pe(i),i.status===200)return(await i.json())[e];throw new Error("Cannot fetch Mayan tokens!")}function Va(e,t={wormhole:!0,swift:!0,mctp:!0,shuttle:!0,gasless:!1,onlyDirect:!1,fastMctp:!0,fullList:!1,payload:void 0,monoChain:!0}){let{gasDrop:n,referrerBps:a}=e,i=e.slippageBps;i!=="auto"&&!Number.isFinite(i)&&(i=e.slippage*100);let o={...{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,fullList:t.fullList===!0,payload:typeof t.payload=="string"?t.payload:void 0,monoChain:t.monoChain!==!1},solanaProgram:l.MAYAN_PROGRAM_ID,forwarderAddress:l.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(a)?a:void 0,gasDrop:Number.isFinite(n)?n:void 0,sdkVersion:Le()},r=`${l.PRICE_URL}/quote?`,u=et(o);return r+u}async function di(e,t={swift:!0,mctp:!0,gasless:!1,onlyDirect:!1}){let n=Va(e,t),a=await oe(n,{method:"GET",redirect:"follow"});await pe(a);let i=await a.json();if(a.status!==200&&a.status!==201)throw{code:i?.code||0,message:i?.msg||i?.message||"Route not found",data:i?.data};if(!zt(i.minimumSdkVersion))throw{code:9999,message:"Swap SDK is outdated!"};return i.quotes}async function li(e){let t=await oe(`${l.PRICE_URL}/clock/${e}`,{method:"GET",redirect:"follow"});await pe(t);let n=await t.json();if(t.status!==200&&t.status!==201)throw n;return n.clock}async function an(){let e=await oe(`${l.RELAYER_URL}/active-relayers?solanaProgram=${l.MAYAN_PROGRAM_ID}`,{method:"GET",redirect:"follow"});await pe(e);let t=await e.json();if(e.status!==200&&e.status!==201)throw t;return t.suggested}async function ye(e){let t=et({...e,sdkVersion:Le()}),n=await oe(`${l.PRICE_URL}/get-swap/solana?${t}`,{method:"GET",redirect:"follow"});await pe(n);let a=await n.json();if(n.status!==200&&n.status!==201)throw a;return a}async function tt(e){let t=JSON.stringify({...e,sdkVersion:Le()}),n=`${l.PRICE_URL}/get-swap/sui`,a=await oe(n,{method:"POST",redirect:"follow",body:t,headers:{"Content-Type":"application/json"}});await pe(a);let i=await a.json();if(a.status!==200&&a.status!==201)throw i;return i}async function rn(e,t){let n=await oe(`${l.EXPLORER_URL}/submit/evm`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...e,signature:t},(a,i)=>typeof i=="bigint"?i.toString():i)});await pe(n)}async function sn(e){let t=await oe(`${l.EXPLORER_URL}/submit/solana`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({signedTx:e})});await pe(t);let n=await t.json();if(t.status!==200&&t.status!==201)throw n;return n}async function nn(e,t){let n=et({destWallet:e,destToken:t,sdkVersion:Le()}),a=await oe(`${l.EXPLORER_URL}/hypercore/is-allowed?${n}`,{method:"GET",redirect:"follow"});await pe(a);let i=await a.json();if(a.status!==200&&a.status!==201)throw i;return i.allowed===!0}import{Contract as ya,toBeHex as fa,ZeroAddress as ga}from"ethers";import{PublicKey as Ut,SystemProgram as Kr}from"@solana/web3.js";var on={_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 J={_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:{}};import{Buffer as ba}from"buffer";import{Contract as It,toBeHex as ne,ZeroAddress as ht}from"ethers";import{SystemProgram as pn}from"@solana/web3.js";var wt={_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:{}};import{Buffer as Qa}from"buffer";import{PublicKey as ue}from"@solana/web3.js";import{Buffer as de}from"buffer";var x=6;function ce(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;case"sonic":return 13;default:throw new Error("unsupported chain for cctp")}}function nt(e,t){let n=new ue(l.CCTP_CORE_PROGRAM_ID),a=new ue(l.CCTP_TOKEN_PROGRAM_ID),[i]=ue.findProgramAddressSync([de.from("message_transmitter")],n),[s]=ue.findProgramAddressSync([de.from("sender_authority")],a),[o]=ue.findProgramAddressSync([de.from("local_token"),e.toBytes()],a),[r]=ue.findProgramAddressSync([de.from("token_messenger")],a),[u]=ue.findProgramAddressSync([de.from("token_minter")],a),p=ce(t),[c]=ue.findProgramAddressSync([de.from("remote_token_messenger"),de.from(p.toString())],a),[m]=ue.findProgramAddressSync([de.from("__event_authority")],n),[d]=ue.findProgramAddressSync([de.from("__event_authority")],a);return{messageTransmitter:i,senderAuthority:s,remoteTokenMessengerKey:c,tokenMessenger:r,tokenMinter:u,eventAuthToken:d,eventAuthCore:m,localToken:o}}function ja(e,t,n,a){let i=H(Number(n)),s=S(e.fromChain),o=S(e.toChain);if(s!==i)throw new Error(`Signer chain id(${Number(n)}) and quote from chain are not same! ${s} !== ${i}`);let r=e.cheaperChain===e.fromChain;if(r&&a)throw new Error("Bridge lock fee cannot have custom payload");let u=I(t,o),p=T(e.redeemRelayerFee,x),c=T(e.gasDrop,Math.min(N(e.toChain),8)),m=BigInt(e.effectiveAmountIn64),d=ce(e.toChain);if(!e.mctpMayanContract)throw new Error("MCTP contract address is missing");let y=e.mctpMayanContract;if(e.toChain==="solana"&&r)throw new Error("Cannot lock fee for transfer to solana");let f=T(e.bridgeFee,N(e.fromChain));return r&&(f=BigInt(0)),{lockFee:r,tokenIn:e.mctpInputContract,amountIn:m,redeemFee:p,gasDrop:c,destAddr:u,destDomain:d,payloadType:a?Xe:Ze,customPayload:a?`0x${Qa.from(a).toString("hex")}`:"0x",bridgeFee:f,contractAddress:y}}function un(e,t,n,a){let i=ja(e,t,n,a),{contractAddress:s,tokenIn:o,amountIn:r,destAddr:u,lockFee:p,redeemFee:c,gasDrop:m,destDomain:d,customPayload:y,payloadType:f,bridgeFee:b}=i,g=new It(s,wt.abi),h,w;return p?h=g.interface.encodeFunctionData("bridgeWithLockedFee",[o,r,m,c,d,u]):h=g.interface.encodeFunctionData("bridgeWithFee",[o,r,c,m,u,d,f,y]),w=ne(b),{to:s,data:h,value:w,_params:i}}function Ya(e,t,n,a){let i=H(Number(a)),s=S(e.fromChain),o=S(e.toChain);if(s!==i)throw new Error(`Signer chain id(${Number(a)}) and quote from chain are not same! ${s} !== ${i}`);if(!e.mctpMayanContract)throw new Error("MCTP contract address is missing");let r=e.mctpMayanContract,u=I(t,o),p;n?p=I(n,o):p=I(pn.programId.toString(),S("solana"));let c=T(e.redeemRelayerFee,x),m=T(e.gasDrop,Math.min(N(e.toChain),8)),d=BigInt(e.effectiveAmountIn64),y=T(e.minAmountOut,Math.min(8,e.toToken.decimals)),f=BigInt(e.deadline64),b=e.toToken.contract===ht?I(pn.programId.toString(),S("solana")):I(e.toChain==="sui"?e.toToken.verifiedAddress:e.toToken.contract,e.toToken.wChainId);return{params:{tokenIn:e.mctpInputContract,amountIn:d,gasDrop:m,destAddr:u,destChain:o,tokenOut:b,minAmountOut:y,deadline:f,redeemFee:c,referrerAddr:p,referrerBps:e.referrerBps||0},bridgeFee:T(e.bridgeFee,N(e.fromChain)),contractAddress:r}}function cn(e,t,n,a){let i=Ya(e,t,n,a),{contractAddress:s,params:o,bridgeFee:r}=i,p=new It(s,wt.abi).interface.encodeFunctionData("createOrder",[o]),c=ne(r);return{to:s,data:p,value:c,_params:i}}function mn(e,t,n,a,i,s){if(e.type!=="MCTP")throw new Error("Quote type is not MCTP");if(!Number.isFinite(Number(a)))throw new Error("Invalid signer chain id");a=Number(a);let o=i||$,r=new It(l.MAYAN_FORWARDER_CONTRACT,J.abi),u=T(e.bridgeFee,N(e.fromChain)),p=ne(u);if(e.fromToken.contract===e.mctpInputContract)if(e.hasAuction){if(!Number(e.deadline64))throw new Error("MCTP order requires timeout");let c=cn(e,t,n,a),m="forwardERC20",d=[e.fromToken.contract,c._params.params.amountIn,o,c._params.contractAddress,c.data];return{data:r.interface.encodeFunctionData(m,d),to:l.MAYAN_FORWARDER_CONTRACT,value:ne(p),chainId:a,_forwarder:{method:m,params:d}}}else{let c=un(e,t,a,s),m="forwardERC20",d=[e.fromToken.contract,c._params.amountIn,o,c._params.contractAddress,c.data];return{data:r.interface.encodeFunctionData(m,d),to:l.MAYAN_FORWARDER_CONTRACT,value:ne(p),chainId:a,_forwarder:{method:m,params:d}}}else{let{minMiddleAmount:c,evmSwapRouterAddress:m,evmSwapRouterCalldata:d}=e;if(!c||!m||!d)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=cn(e,t,n,a),f=T(e.minMiddleAmount,x);if(e.fromToken.contract===ht){let b=y._params.params.amountIn;if(b<=u)throw new Error("Amount in is less than bridge fee");u!==BigInt(0)&&(b-=u),p=ne(y._params.params.amountIn);let g="swapAndForwardEth",h=[b,m,d,e.mctpInputContract,f,y._params.contractAddress,y.data];return{data:r.interface.encodeFunctionData(g,h),to:l.MAYAN_FORWARDER_CONTRACT,value:ne(p),chainId:a,_forwarder:{method:g,params:h}}}else{let b="swapAndForwardERC20",g=[e.fromToken.contract,y._params.params.amountIn,o,m,d,e.mctpInputContract,f,y._params.contractAddress,y.data];return{data:r.interface.encodeFunctionData(b,g),to:l.MAYAN_FORWARDER_CONTRACT,value:ne(p),chainId:a,_forwarder:{method:b,params:g}}}}else{let y=un(e,t,a,s),f=T(e.minMiddleAmount,x);if(e.fromToken.contract===ht){let b=y._params.amountIn;if(b<=u)throw new Error("Amount in is less than bridge fee");u!==BigInt(0)&&(b-=u),p=ne(y._params.amountIn);let g="swapAndForwardEth",h=[b,m,d,e.mctpInputContract,f,y._params.contractAddress,y.data];re