UNPKG

@cowprotocol/cow-sdk

Version:

## 📚 [Docs website](https://docs.cow.fi/)

1 lines 495 kB
import"cross-fetch/polyfill";import{RateLimiter as e}from"limiter";import{backOff as t}from"exponential-backoff";import{utils as n,Contract as r,ethers as i,constants as s,BigNumber as a}from"ethers";import{Signer as o,VoidSigner as u}from"@ethersproject/abstract-signer";import{MetadataApi as l,stringifyDeterministic as c}from"@cowprotocol/app-data";import{keccak256 as d,toUtf8Bytes as h,solidityKeccak256 as p,Interface as f,defaultAbiCoder as m,getCreate2Address as y,arrayify as g,joinSignature as b,splitSignature as v,formatBytes32String as w}from"ethers/lib/utils";import A from"deepmerge";import{ORDER_TYPE_FIELDS as T,OrderKind as E,SigningScheme as S,hashTypedData as I,isTypedDataSigner as k,OrderBalance as C}from"@cowprotocol/contracts";import{Planner as N,Contract as x}from"@weiroll/weiroll.js";import{gql as _,request as R}from"graphql-request";import{StandardMerkleTree as M}from"@openzeppelin/merkle-tree";var P,O,B,D;!function(e){e.IN_PROGRESS="in_progress",e.EXECUTED="executed",e.EXPIRED="expired",e.REFUND="refund",e.UNKNOWN="unknown"}(P||(P={})),function(e){e.NO_INTERMEDIATE_TOKENS="NO_INTERMEDIATE_TOKENS",e.API_ERROR="API_ERROR",e.INVALID_API_JSON_RESPONSE="INVALID_API_JSON_RESPONSE",e.ONLY_SELL_ORDER_SUPPORTED="ONLY_SELL_ORDER_SUPPORTED",e.TX_BUILD_ERROR="TX_BUILD_ERROR",e.QUOTE_ERROR="QUOTE_ERROR",e.NO_ROUTES="NO_ROUTES",e.INVALID_BRIDGE="INVALID_BRIDGE"}(O||(O={}));class F extends Error{constructor(e,t){super(e),this.context=t,this.name="BridgeProviderQuoteError"}}class L extends Error{constructor(e,t){super(e),this.context=t,this.name="BridgeProviderError"}}class U extends Error{constructor(e,t){super(e),this.context=t,this.name="BridgeOrderParsingError"}}function G(e){return"bridge"in e}function H(e){return!G(e)}function q(e){if(!G(e))throw new Error("Quote result is not of type BridgeQuoteAndPost. Are you sure the sell and buy chains different?")}function V(e){if(!H(e))throw new Error("Quote result is not of type QuoteAndPost. Are you sure the sell and buy chains are the same?")}function z(e){if(!e)return[];const t=JSON.parse(e);return j(t)&&t.metadata.hooks&&t.metadata.hooks.post||[]}function j(e){return"object"==typeof e&&null!==e&&"version"in e&&"metadata"in e}function K(){return K=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},K.apply(this,arguments)}function W(e,t){if(null==e)return{};var n,r,i={},s=Object.keys(e);for(r=0;r<s.length;r++)t.indexOf(n=s[r])>=0||(i[n]=e[n]);return i}!function(e){e[e.MAINNET=1]="MAINNET",e[e.GNOSIS_CHAIN=100]="GNOSIS_CHAIN",e[e.ARBITRUM_ONE=42161]="ARBITRUM_ONE",e[e.BASE=8453]="BASE",e[e.POLYGON=137]="POLYGON",e[e.AVALANCHE=43114]="AVALANCHE",e[e.SEPOLIA=11155111]="SEPOLIA"}(B||(B={})),function(e){e[e.OPTIMISM=10]="OPTIMISM"}(D||(D={}));class J extends Error{constructor(e,t){super(e),this.error_code=t}}class Q extends Error{constructor(e,t){super("string"==typeof t?t:e.statusText),this.response=e,this.body=t}}const Y=[408,425,429,500,502,503,504],X={numOfAttempts:10,maxDelay:Infinity,jitter:"none",retry:e=>!(e instanceof Q)||Y.includes(e.response.status)},Z={tokensPerInterval:5,interval:"second"},$=async e=>{if(204!==e.status)try{const t=e.headers.get("Content-Type");if(t)return t.toLowerCase().startsWith("application/json")?await e.json():await e.text()}catch(e){console.error(e)}};async function ee(e,{path:n,query:r,method:i,body:s},a,o){const u=`${e}${n}${r?"?"+r:""}`,l={method:i,body:(()=>{if(s)return"string"==typeof s?s:JSON.stringify(s)})(),headers:{Accept:"application/json","Content-Type":"application/json"}};return t(async()=>{await a.removeTokens(1);const e=await fetch(u,l),t=await $(e);return e.status>=200&&e.status<300?t:Promise.reject(new Q(e,t))},o)}const te="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",ne="https://raw.githubusercontent.com/cowprotocol/token-lists/main/src/public/images",re={decimals:18,name:"Wrapped Ether",symbol:"WETH",logoUrl:`${ne}/1/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2/logo.png`},ie={[B.MAINNET]:K({},re,{chainId:B.MAINNET,address:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"}),[B.GNOSIS_CHAIN]:{chainId:B.GNOSIS_CHAIN,address:"0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d",decimals:18,name:"Wrapped XDAI",symbol:"WXDAI",logoUrl:`${ne}/100/0xe91d153e0b41518a2ce8dd3d7944fa863463a97d/logo.png`},[B.ARBITRUM_ONE]:K({},re,{chainId:B.ARBITRUM_ONE,address:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"}),[B.BASE]:K({},re,{chainId:B.BASE,address:"0x4200000000000000000000000000000000000006"}),[B.SEPOLIA]:K({},re,{chainId:B.SEPOLIA,address:"0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14"}),[B.POLYGON]:{chainId:B.POLYGON,address:"0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270",decimals:18,name:"Wrapped POL",symbol:"WPOL",logoUrl:`${ne}/137/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270/logo.png`},[B.AVALANCHE]:{chainId:B.AVALANCHE,address:"0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7",decimals:18,name:"Wrapped AVAX",symbol:"WAVAX",logoUrl:`${ne}/43114/0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7/logo.png`}},se={address:te,decimals:18,name:"Ether",symbol:"ETH",logoUrl:`${ne}/1/${te}/logo.png`},ae="https://raw.githubusercontent.com/cowprotocol/cow-sdk/refs/heads/main",oe=`${ae}/src/chains`,ue=`${oe}/images/mainnet-logo.svg`,le={id:B.MAINNET,label:"Ethereum",eip155Label:"Ethereum Mainnet",nativeCurrency:K({},se,{chainId:B.MAINNET}),addressPrefix:"eth",isTestnet:!1,contracts:{ensRegistry:{address:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"},ensUniversalResolver:{address:"0xce01f8eee7E479C928F8919abD53E553a36CeF67",blockCreated:19258213},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:14353601}},rpcUrls:{default:{http:["https://eth.merkle.io"]}},color:"#62688F",logo:{light:ue,dark:ue},website:{name:"Ethereum",url:"https://ethereum.org"},docs:{name:"Ethereum Docs",url:"https://ethereum.org/en/developers/docs"},blockExplorer:{name:"Etherscan",url:"https://etherscan.io"}},ce=`${oe}/images/gnosis-logo.svg`,de={id:B.GNOSIS_CHAIN,label:"Gnosis",eip155Label:"Gnosis",nativeCurrency:K({},se,{chainId:B.GNOSIS_CHAIN,name:"xDAI",symbol:"xDAI",logoUrl:`${ne}/100/${te}/logo.png`}),addressPrefix:"gno",isTestnet:!1,contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:21022491}},rpcUrls:{default:{http:["https://rpc.gnosischain.com"],webSocket:["wss://rpc.gnosischain.com/wss"]}},color:"#07795B",logo:{light:ce,dark:ce},website:{name:"Gnosis Chain",url:"https://www.gnosischain.com"},docs:{name:"Gnosis Chain Docs",url:"https://docs.gnosischain.com"},blockExplorer:{name:"Gnosisscan",url:"https://gnosisscan.io"},bridges:[{name:"Gnosis Chain Bridge",url:"https://bridge.gnosischain.com"}]},he=`${oe}/images/arbitrum-logo-light.svg`,pe=`${oe}/images/arbitrum-logo-dark.svg`,fe={id:B.ARBITRUM_ONE,label:"Arbitrum",eip155Label:"Arbitrum One",nativeCurrency:K({},se,{chainId:B.ARBITRUM_ONE}),addressPrefix:"arb1",isTestnet:!1,contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:7654707}},rpcUrls:{default:{http:["https://arb1.arbitrum.io/rpc"]}},color:"#1B4ADD",logo:{light:he,dark:pe},website:{name:"Arbitrum",url:"https://arbitrum.io"},docs:{name:"Arbitrum Docs",url:"https://docs.arbitrum.io"},blockExplorer:{name:"Arbiscan",url:"https://arbiscan.io"},bridges:[{name:"Arbitrum Bridge",url:"https://bridge.arbitrum.io"}]},me=`${oe}/images/base-logo.svg`,ye={id:B.BASE,label:"Base",eip155Label:"Base",nativeCurrency:K({},se,{chainId:B.BASE}),addressPrefix:"base",isTestnet:!1,contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:5022}},rpcUrls:{default:{http:["https://mainnet.base.org"]}},color:"#0052FF",logo:{light:me,dark:me},website:{name:"Base",url:"https://base.org"},docs:{name:"Base Docs",url:"https://docs.base.org"},blockExplorer:{name:"Basescan",url:"https://basescan.org"},bridges:[{name:"Superchain Bridges",url:"https://bridge.base.org/deposit"}]},ge=`${oe}/images/sepolia-logo.svg`,be={id:B.SEPOLIA,label:"Sepolia",eip155Label:"Ethereum Sepolia",nativeCurrency:K({},se,{chainId:B.SEPOLIA}),addressPrefix:"sep",isTestnet:!0,contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:751532},ensRegistry:{address:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"},ensUniversalResolver:{address:"0xc8Af999e38273D658BE1b921b88A9Ddf005769cC",blockCreated:5317080}},rpcUrls:{default:{http:["https://sepolia.drpc.org"]}},color:"#C12FF2",logo:{light:ge,dark:ge},website:{name:"Ethereum",url:"https://sepolia.dev"},docs:{name:"Sepolia Docs",url:"https://ethereum.org/en/developers/docs/networks/#sepolia"},blockExplorer:{name:"Etherscan",url:"https://sepolia.etherscan.io"}},ve=`${oe}/images/avax-logo.svg`,we={id:B.AVALANCHE,label:"Avalanche",eip155Label:"Avalanche C-Chain",logo:{light:ve,dark:ve},nativeCurrency:K({},se,{chainId:B.AVALANCHE,name:"Avalanche",symbol:"AVAX",logoUrl:ve}),addressPrefix:"avax",isTestnet:!1,contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:11907934}},rpcUrls:{default:{http:["https://api.avax.network/ext/bc/C/rpc"]}},color:"#ff3944",website:{name:"Avalanche",url:"https://www.avax.network/"},docs:{name:"Avalanche Docs",url:"https://build.avax.network/docs"},blockExplorer:{name:"Snowscan",url:"https://snowscan.xyz"}},Ae=`${oe}/images/optimism-logo.svg`,Te={id:10,label:"Optimism",eip155Label:"OP Mainnet",logo:{light:Ae,dark:Ae},nativeCurrency:K({},se,{chainId:10}),addressPrefix:"op",isTestnet:!1,contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:4286263}},rpcUrls:{default:{http:["https://mainnet.optimism.io"]}},color:"#ff0420",website:{name:"Optimism",url:"https://optimism.io"},docs:{name:"Optimism Docs",url:"https://docs.optimism.io"},blockExplorer:{name:"Etherscan",url:"https://optimistic.etherscan.io"}},Ee=`${oe}/images/polygon-logo.svg`,Se={id:B.POLYGON,label:"Polygon",eip155Label:"Polygon Mainnet",logo:{light:Ee,dark:Ee},nativeCurrency:K({},se,{chainId:B.POLYGON,name:"POL",symbol:"POL",logoUrl:Ee}),addressPrefix:"matic",isTestnet:!1,contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:25770160}},rpcUrls:{default:{http:["https://polygon-rpc.com"]}},color:"#8247e5",website:{name:"Polygon",url:"https://polygon.technology"},docs:{name:"Polygon Docs",url:"https://docs.polygon.technology"},blockExplorer:{name:"Polygonscan",url:"https://polygonscan.com"}},Ie={[B.MAINNET]:le,[B.GNOSIS_CHAIN]:de,[B.ARBITRUM_ONE]:fe,[B.BASE]:ye,[B.AVALANCHE]:we,[B.POLYGON]:Se,[B.SEPOLIA]:be},ke=Object.values(Ie),Ce=ke.map(e=>e.id),Ne={[D.OPTIMISM]:Te},xe=ke.concat(Object.values(Ne)),_e=xe.map(e=>e.id);function Re(e){return Ce.reduce((t,n)=>K({},t,{[n]:"function"==typeof e?e(n):e}),{})}function Me(e){return Re(e)}const Pe="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",Oe="0x2f55e8b20D0B9FEFA187AA7d00B6Cbe563605bF5",Be="0xfdaFc9d1902f4e0b84f65F49f244b32b31013b74",De="1.0.0",Fe="1.0.1",Le=Fe,Ue={[De]:"0x00E989b87700514118Fa55326CD1cCE82faebEF6",[Fe]:"0x312f92fe5f1710408B20D52A374fa29e099cFA86"},Ge={[De]:"0x2CFFA8cf11B90C9F437567b86352169dF4009F73",[Fe]:"0xa2704cf562ad418bf0453f4b662ebf6a2489ed88"},He={[De]:"0x60a034608e57601f61037138819003918201601f19168301916001600160401b038311848410176093578084926040948552833981010312608e57604b602060458360a9565b920160a9565b6080527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc556040516102b490816100bd8239608051818181608f01526101720152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203608e5756fe60806040526004361015610018575b3661019457610194565b6000803560e01c908163025b22bc1461003b575063f851a4400361000e5761010d565b3461010a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010a5773ffffffffffffffffffffffffffffffffffffffff60043581811691828203610106577f0000000000000000000000000000000000000000000000000000000000000000163314600014610101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8280a280f35b61023d565b8380fd5b80fd5b346101645760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610164576020610146610169565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b600080fd5b333003610101577f000000000000000000000000000000000000000000000000000000000000000090565b60ff7f68df44b1011761f481358c0f49a711192727fb02c377d697bcb0ea8ff8393ac0541615806101ef575b1561023d5760046040517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b507f400ada75000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000006000351614156101c0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546000808092368280378136915af43d82803e1561027a573d90f35b3d90fdfea2646970667358221220c7c26ff3040b96a28e96d6d27b743972943aeaef81cc821544c5fe1e24f9b17264736f6c63430008190033",[Fe]:"0x60a03461009557601f61033d38819003918201601f19168301916001600160401b0383118484101761009957808492604094855283398101031261009557610052602061004b836100ad565b92016100ad565b6080527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5560405161027b90816100c28239608051818181608b01526101750152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036100955756fe60806040526004361015610018575b3661019757610197565b5f3560e01c8063025b22bc146100375763f851a4400361000e57610116565b346101125760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101125760043573ffffffffffffffffffffffffffffffffffffffff81169081810361011257337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff160361010d577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2005b61023d565b5f80fd5b34610112575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011257602061014e61016c565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b33300361010d577f000000000000000000000000000000000000000000000000000000000000000090565b60ff7f68df44b1011761f481358c0f49a711192727fb02c377d697bcb0ea8ff8393ac0541615806101f0575b1561023d577ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b507f400ada75000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000005f351614156101c3565b5f807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54368280378136915af43d5f803e15610277573d5ff35b3d5ffd"},qe=Me("0x9008D19f58AAbD9eD0D60971565AA8510560ab41"),Ve=Me("0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"),ze=Me(Oe),je=Me(Be),Ke="0xba3cb449bd2b4adddbc894d8697f5170800eadec",We="0x04501b9b1d52e67f6862d157e00d13419d2d6e95",Je=Me(Ke),Qe=Me(We),Ye=4294967295;function Xe(e){return function(e){const{ethflowData:t}=e;if(!t)return e;const{userValidTo:n}=t;return K({},e,{validTo:n,owner:e.onchainUser||e.owner,sellToken:Pe})}(function(e){const{executedFeeAmount:t,executedFee:n}=e,r=BigInt(t||"0"),i=BigInt(n||"0");return K({},e,{totalFee:String(r+i)})}(e))}let Ze=!1;function $e(e){Ze&&console.log(`[COW TRADING SDK] ${e}`)}function et(e){Ze=e}const tt=["prod","staging"],nt={env:"prod",chainId:B.MAINNET},rt="https://gnosis.mypinata.cloud/ipfs",it="https://api.pinata.cloud",st=(e,t)=>"bigint"==typeof t||"object"==typeof t&&null!==t&&"_isBigNumber"in t?t.toString():t,at={[B.MAINNET]:"https://api.cow.fi/mainnet",[B.GNOSIS_CHAIN]:"https://api.cow.fi/xdai",[B.ARBITRUM_ONE]:"https://api.cow.fi/arbitrum_one",[B.BASE]:"https://api.cow.fi/base",[B.SEPOLIA]:"https://api.cow.fi/sepolia",[B.POLYGON]:"https://api.cow.fi/polygon",[B.AVALANCHE]:"https://api.cow.fi/avalanche"},ot={[B.MAINNET]:"https://barn.api.cow.fi/mainnet",[B.GNOSIS_CHAIN]:"https://barn.api.cow.fi/xdai",[B.ARBITRUM_ONE]:"https://barn.api.cow.fi/arbitrum_one",[B.BASE]:"https://barn.api.cow.fi/base",[B.SEPOLIA]:"https://barn.api.cow.fi/sepolia",[B.POLYGON]:"https://barn.api.cow.fi/polygon",[B.AVALANCHE]:"https://barn.api.cow.fi/avalanche"};function ut(e){return Object.keys(e).reduce((t,n)=>{const r=e[n];return void 0!==r&&(t[n]=r),t},{})}class lt{constructor(t={}){this.context=K({},nt,t),this.rateLimiter=new e(t.limiterOpts||Z)}getVersion(e={}){return this.fetch({path:"/api/v1/version",method:"GET"},e)}getTrades(e,t={}){if(e.owner&&e.orderUid)return Promise.reject(new J("Cannot specify both owner and orderId"));if(!e.owner&&!e.orderUid)return Promise.reject(new J("Must specify either owner or orderId"));const n=new URLSearchParams(ut(e));return this.fetch({path:"/api/v1/trades",method:"GET",query:n},t)}getOrders({owner:e,offset:t=0,limit:n=1e3},r={}){const i=new URLSearchParams(ut({offset:t.toString(),limit:n.toString()}));return this.fetch({path:`/api/v1/account/${e}/orders`,method:"GET",query:i},r).then(e=>e.map(Xe))}getTxOrders(e,t={}){return this.fetch({path:`/api/v1/transactions/${e}/orders`,method:"GET"},t).then(e=>e.map(Xe))}getOrder(e,t={}){return this.fetch({path:`/api/v1/orders/${e}`,method:"GET"},t).then(e=>Xe(e))}getOrderCompetitionStatus(e,t={}){return this.fetch({path:`/api/v1/orders/${e}/status`,method:"GET"},t)}getOrderMultiEnv(e,t={}){const{env:n}=this.getContextWithOverride(t),r=tt.filter(e=>e!==n);let i=0;const s=n=>{const a=r[i];return n instanceof Q&&404===n.response.status&&a?(i++,this.getOrder(e,K({},t,{env:a})).catch(s)):Promise.reject(n)};return this.getOrder(e,K({},t,{env:n})).catch(s)}getQuote(e,t={}){return this.fetch({path:"/api/v1/quote",method:"POST",body:e},t)}sendSignedOrderCancellations(e,t={}){return this.fetch({path:"/api/v1/orders",method:"DELETE",body:e},t)}sendOrder(e,t={}){return this.fetch({path:"/api/v1/orders",method:"POST",body:e},t)}getNativePrice(e,t={}){return this.fetch({path:`/api/v1/token/${e}/native_price`,method:"GET"},t)}getTotalSurplus(e,t={}){return this.fetch({path:`/api/v1/users/${e}/total_surplus`,method:"GET"},t)}getAppData(e,t={}){return this.fetch({path:`/api/v1/app_data/${e}`,method:"GET"},t)}uploadAppData(e,t,n={}){return this.fetch({path:`/api/v1/app_data/${e}`,method:"PUT",body:{fullAppData:t}},n)}getSolverCompetition(e,t={}){return this.fetch({path:`/api/v1/solver_competition${"string"==typeof e?"/by_tx_hash":""}/${e}`,method:"GET"},t)}getOrderLink(e,t){const{chainId:n,env:r}=this.getContextWithOverride(t);return this.getApiBaseUrls(r)[n]+`/api/v1/orders/${e}`}getContextWithOverride(e={}){return K({},this.context,e)}getApiBaseUrls(e){return this.context.baseUrls?this.context.baseUrls:"prod"===e?at:ot}fetch(t,n={}){const{chainId:r,env:i,backoffOpts:s}=this.getContextWithOverride(n),a=this.getApiBaseUrls(i)[r],o=s||X,u=n.limiterOpts?new e(n.limiterOpts):this.rateLimiter;return $e(`Fetching OrderBook API: ${a}${t.path}. Params: ${JSON.stringify(t,st)}`),ee(a,t,u,o)}}var ct,dt,ht,pt,ft,mt,yt,gt,bt,vt,wt,At,Tt,Et,St;!function(e){e.ERC20="erc20",e.INTERNAL="internal"}(ct||(ct={})),function(e){var t;(t=e.type||(e.type={})).OPEN="open",t.SCHEDULED="scheduled",t.ACTIVE="active",t.SOLVED="solved",t.EXECUTING="executing",t.TRADED="traded",t.CANCELLED="cancelled"}(dt||(dt={})),function(e){e.EIP712="eip712",e.ETHSIGN="ethsign"}(ht||(ht={})),function(e){var t;(t=e.placementError||(e.placementError={})).QUOTE_NOT_FOUND="QuoteNotFound",t.VALID_TO_TOO_FAR_IN_FUTURE="ValidToTooFarInFuture",t.PRE_VALIDATION_ERROR="PreValidationError"}(pt||(pt={})),function(e){var t;(t=e.errorType||(e.errorType={})).INVALID_SIGNATURE="InvalidSignature",t.WRONG_OWNER="WrongOwner",t.ORDER_NOT_FOUND="OrderNotFound",t.ALREADY_CANCELLED="AlreadyCancelled",t.ORDER_FULLY_EXECUTED="OrderFullyExecuted",t.ORDER_EXPIRED="OrderExpired",t.ON_CHAIN_ORDER="OnChainOrder"}(ft||(ft={})),function(e){e.MARKET="market",e.LIMIT="limit",e.LIQUIDITY="liquidity"}(mt||(mt={})),function(e){e.BUY="buy",e.SELL="sell"}(yt||(yt={})),function(e){var t;(t=e.errorType||(e.errorType={})).DUPLICATED_ORDER="DuplicatedOrder",t.QUOTE_NOT_FOUND="QuoteNotFound",t.QUOTE_NOT_VERIFIED="QuoteNotVerified",t.INVALID_QUOTE="InvalidQuote",t.MISSING_FROM="MissingFrom",t.WRONG_OWNER="WrongOwner",t.INVALID_EIP1271SIGNATURE="InvalidEip1271Signature",t.INSUFFICIENT_BALANCE="InsufficientBalance",t.INSUFFICIENT_ALLOWANCE="InsufficientAllowance",t.INVALID_SIGNATURE="InvalidSignature",t.SELL_AMOUNT_OVERFLOW="SellAmountOverflow",t.TRANSFER_SIMULATION_FAILED="TransferSimulationFailed",t.ZERO_AMOUNT="ZeroAmount",t.INCOMPATIBLE_SIGNING_SCHEME="IncompatibleSigningScheme",t.TOO_MANY_LIMIT_ORDERS="TooManyLimitOrders",t.TOO_MUCH_GAS="TooMuchGas",t.UNSUPPORTED_BUY_TOKEN_DESTINATION="UnsupportedBuyTokenDestination",t.UNSUPPORTED_SELL_TOKEN_SOURCE="UnsupportedSellTokenSource",t.UNSUPPORTED_ORDER_TYPE="UnsupportedOrderType",t.INSUFFICIENT_VALID_TO="InsufficientValidTo",t.EXCESSIVE_VALID_TO="ExcessiveValidTo",t.INVALID_NATIVE_SELL_TOKEN="InvalidNativeSellToken",t.SAME_BUY_AND_SELL_TOKEN="SameBuyAndSellToken",t.UNSUPPORTED_TOKEN="UnsupportedToken",t.INVALID_APP_DATA="InvalidAppData",t.APP_DATA_HASH_MISMATCH="AppDataHashMismatch",t.APPDATA_FROM_MISMATCH="AppdataFromMismatch"}(gt||(gt={})),function(e){e.BUY="buy"}(bt||(bt={})),function(e){e.SELL="sell"}(vt||(vt={})),function(e){e.PRESIGNATURE_PENDING="presignaturePending",e.OPEN="open",e.FULFILLED="fulfilled",e.CANCELLED="cancelled",e.EXPIRED="expired"}(wt||(wt={})),function(e){var t;(t=e.errorType||(e.errorType={})).QUOTE_NOT_VERIFIED="QuoteNotVerified",t.UNSUPPORTED_TOKEN="UnsupportedToken",t.ZERO_AMOUNT="ZeroAmount",t.UNSUPPORTED_ORDER_TYPE="UnsupportedOrderType"}(At||(At={})),function(e){e.FAST="fast",e.OPTIMAL="optimal",e.VERIFIED="verified"}(Tt||(Tt={})),function(e){e.ERC20="erc20",e.INTERNAL="internal",e.EXTERNAL="external"}(Et||(Et={})),function(e){e.EIP712="eip712",e.ETHSIGN="ethsign",e.PRESIGN="presign",e.EIP1271="eip1271"}(St||(St={}));const It=BigInt(1e4);function kt(e){const{sellDecimals:t,buyDecimals:n,orderParams:r}=e,{sellAmountAfterNetworkCosts:i,buyAmountAfterNetworkCosts:s,buyAmountBeforeNetworkCosts:a,isSell:o,networkCostAmount:u,quotePrice:l,sellAmountBeforeNetworkCosts:c}=Ct({sellDecimals:t,buyDecimals:n,orderParams:r});return{isSell:o,quotePrice:l,sellAmountAfterNetworkCosts:i.big,buyAmountAfterNetworkCosts:s.big,buyAmountBeforeNetworkCosts:a.big,networkCostAmount:u.big,sellAmountBeforeNetworkCosts:c.big}}function Ct(e){const{sellDecimals:t,buyDecimals:n,orderParams:r}=e,i=r.kind===yt.SELL,s=xt(r.feeAmount,t),a=xt(r.sellAmount,t),o=xt(r.buyAmount,n),u=o.num/a.num,l=xt(a.big+s.big,t);return{isSell:i,quotePrice:u,networkCostAmount:s,sellAmountBeforeNetworkCosts:a,buyAmountAfterNetworkCosts:o,sellAmountAfterNetworkCosts:l,buyAmountBeforeNetworkCosts:xt(u*l.num,n)}}function Nt(e){var t;const{orderParams:n,sellDecimals:r,buyDecimals:i,slippagePercentBps:s}=e,a=null!==(t=e.partnerFeeBps)&&void 0!==t?t:0,{isSell:o,networkCostAmount:u,sellAmountBeforeNetworkCosts:l,buyAmountAfterNetworkCosts:c,sellAmountAfterNetworkCosts:d,buyAmountBeforeNetworkCosts:h,quotePrice:p}=Ct({sellDecimals:r,buyDecimals:i,orderParams:n}),{afterPartnerFees:f,partnerFeeAmount:m}=function(e){const{sellAmountAfterNetworkCosts:t,buyAmountAfterNetworkCosts:n,buyAmountBeforeNetworkCosts:r,sellAmountBeforeNetworkCosts:i,isSell:s,partnerFeeBps:a}=e,o=a>0?(s?r.big:i.big)*BigInt(a)/It:BigInt(0);return{partnerFeeAmount:o,afterPartnerFees:s?{sellAmount:t.big,buyAmount:n.big-o}:{sellAmount:t.big+o,buyAmount:n.big}}}({sellAmountAfterNetworkCosts:d,buyAmountAfterNetworkCosts:c,buyAmountBeforeNetworkCosts:h,sellAmountBeforeNetworkCosts:l,isSell:o,partnerFeeBps:a}),{afterSlippage:y}=function(e){const{afterPartnerFees:t,isSell:n,slippagePercentBps:r}=e,i=e=>e*BigInt(r)/It;return{afterSlippage:n?{sellAmount:t.sellAmount,buyAmount:t.buyAmount-i(t.buyAmount)}:{sellAmount:t.sellAmount+i(t.sellAmount),buyAmount:t.buyAmount}}}({afterPartnerFees:f,isSell:o,slippagePercentBps:s});return{isSell:o,costs:{networkFee:{amountInSellCurrency:u.big,amountInBuyCurrency:xt(p*u.num,i).big},partnerFee:{amount:m,bps:a}},beforeNetworkCosts:{sellAmount:l.big,buyAmount:h.big},afterNetworkCosts:{sellAmount:d.big,buyAmount:c.big},afterPartnerFees:f,afterSlippage:y}}function xt(e,t){if("number"==typeof e){const n=e*10**t,r=n.toFixed();return{big:BigInt(r.includes("e")?n:r),num:e}}const n=BigInt(e);return{big:n,num:Number(n)/10**t}}const _t={[ht.EIP712]:St.EIP712,[ht.ETHSIGN]:St.ETHSIGN},Rt=BigInt(15e4),Mt=()=>import("./utils-6e8340a0.js");class Pt{static async signOrder(e,t,n){const{signOrder:r}=await Mt();return r(e,t,n)}static async signOrderCancellation(e,t,n){const{signOrderCancellation:r}=await Mt();return r(e,t,n)}static async signOrderCancellations(e,t,n){const{signOrderCancellations:r}=await Mt();return r(e,t,n)}static async getDomain(e){const{getDomain:t}=await Mt();return t(e)}static async generateOrderId(e,t,n){const{generateOrderId:r}=await Mt();return r(e,t,n)}static async getDomainSeparator(e){const{getDomain:t}=await Mt(),{_TypedDataEncoder:n}=await import("ethers/lib/utils");return n.hashDomain(t(e))}static getEIP712Types(){return{Order:[{name:"sellToken",type:"address"},{name:"buyToken",type:"address"},{name:"receiver",type:"address"},{name:"sellAmount",type:"uint256"},{name:"buyAmount",type:"uint256"},{name:"validTo",type:"uint32"},{name:"appData",type:"bytes32"},{name:"feeAmount",type:"uint256"},{name:"kind",type:"string"},{name:"partiallyFillable",type:"bool"},{name:"sellTokenBalance",type:"string"},{name:"buyTokenBalance",type:"string"}]}}}function Ot(e){if(e){if("volumeBps"in e)return e.volumeBps;if(Array.isArray(e))for(const t of e)if("volumeBps"in t)return t.volumeBps}}function Bt(e){return Dt(e)?Ie[e]:Ft(e)?Ne[e]:void 0}function Dt(e){return e in Ie}function Ft(e){return e in Ne}function Lt(e){return Dt(e)||Ft(e)}const Ut=10n**6n,Gt=50,Ht={[B.MAINNET]:200,[B.ARBITRUM_ONE]:50,[B.BASE]:50,[B.GNOSIS_CHAIN]:50,[B.SEPOLIA]:50,[B.POLYGON]:50,[B.AVALANCHE]:50};function qt(e,t){return t?Ht[e]:Gt}const Vt=1800;function zt({chainId:e,from:t,networkCostsAmount:n="0",isEthFlow:r},i,s){const{sellAmount:a,buyAmount:o,sellToken:u,sellTokenDecimals:l,buyToken:c,buyTokenDecimals:d,kind:h,partiallyFillable:p=!1,slippageBps:f=qt(e,r),partnerFee:m,validFor:y=Vt}=i,g=i.receiver||t,b=i.validTo||Number(function(e){return BigInt(Math.floor(Date.now()/1e3)+e)}(y)),v={sellToken:u,buyToken:c,sellAmount:a,buyAmount:o,receiver:g,validTo:b,kind:h,feeAmount:n,appData:s,partiallyFillable:p},{afterSlippage:w}=Nt({orderParams:v,slippagePercentBps:f,partnerFeeBps:Ot(m),sellDecimals:l,buyDecimals:d});return{sellToken:u,buyToken:c,sellAmount:w.sellAmount.toString(),buyAmount:w.buyAmount.toString(),validTo:b,kind:h,partiallyFillable:p,appData:s,receiver:g,feeAmount:"0",sellTokenBalance:Et.ERC20,buyTokenBalance:ct.ERC20}}async function jt(e,t,n,r){const{orderDigest:i,orderId:s}=await Pt.generateOrderId(e,K({},function(e){return K({},e,{sellTokenBalance:e.sellTokenBalance,buyTokenBalance:e.buyTokenBalance})}(t),{validTo:Ye,sellToken:ie[e].address}),{owner:"staging"===r?We:Ke});return n&&await n(s,i)?(console.error("ETH FLOW","[calculateUniqueOrderId] ❌ Collision detected: "+s,{sellAmount:t.sellAmount,fee:t.feeAmount}),jt(e,function(e){return K({},e,{buyAmount:(BigInt(e.buyAmount)-BigInt(1)).toString()})}(t),n)):s}const Kt=[{inputs:[{internalType:"address",name:"impl",type:"address"},{internalType:"bytes32",name:"bName",type:"bytes32"},{internalType:"bytes32",name:"bNode",type:"bytes32"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"InvalidSignature",type:"error"},{inputs:[],name:"NonceAlreadyUsed",type:"error"},{inputs:[],name:"SettingEnsRecordsFailed",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"address",name:"shed",type:"address"}],name:"COWShedBuilt",type:"event"},{inputs:[{internalType:"bytes32",name:"node",type:"bytes32"}],name:"addr",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"baseName",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"baseNode",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"address",name:"target",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"bytes",name:"callData",type:"bytes"},{internalType:"bool",name:"allowFailure",type:"bool"},{internalType:"bool",name:"isDelegateCall",type:"bool"}],internalType:"struct Call[]",name:"calls",type:"tuple[]"},{internalType:"bytes32",name:"nonce",type:"bytes32"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"address",name:"user",type:"address"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"executeHooks",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"forwardResolutionNodeToAddress",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"initializeEns",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"bool",name:"withEns",type:"bool"}],name:"initializeProxy",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"node",type:"bytes32"}],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"ownerOf",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"who",type:"address"}],name:"proxyOf",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"reverseResolutionNodeToAddress",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"pure",type:"function"}];class Wt{static createInterface(){return new n.Interface(Kt)}static connect(e,t){return new r(e,Kt,t)}}Wt.abi=Kt;const Jt=[{inputs:[{internalType:"address",name:"_settlement",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"InterfaceNotSupported",type:"error"},{inputs:[],name:"InvalidHandler",type:"error"},{inputs:[],name:"ProofNotAuthed",type:"error"},{inputs:[],name:"SingleOrderNotAuthed",type:"error"},{inputs:[],name:"SwapGuardRestricted",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{components:[{internalType:"contract IConditionalOrder",name:"handler",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"bytes",name:"staticInput",type:"bytes"}],indexed:!1,internalType:"struct IConditionalOrder.ConditionalOrderParams",name:"params",type:"tuple"}],name:"ConditionalOrderCreated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!1,internalType:"bytes32",name:"root",type:"bytes32"},{components:[{internalType:"uint256",name:"location",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],indexed:!1,internalType:"struct ComposableCoW.Proof",name:"proof",type:"tuple"}],name:"MerkleRootSet",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!1,internalType:"contract ISwapGuard",name:"swapGuard",type:"address"}],name:"SwapGuardSet",type:"event"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"bytes32",name:"",type:"bytes32"}],name:"cabinet",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"contract IConditionalOrder",name:"handler",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"bytes",name:"staticInput",type:"bytes"}],internalType:"struct IConditionalOrder.ConditionalOrderParams",name:"params",type:"tuple"},{internalType:"bool",name:"dispatch",type:"bool"}],name:"create",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"contract IConditionalOrder",name:"handler",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"bytes",name:"staticInput",type:"bytes"}],internalType:"struct IConditionalOrder.ConditionalOrderParams",name:"params",type:"tuple"},{internalType:"contract IValueFactory",name:"factory",type:"address"},{internalType:"bytes",name:"data",type:"bytes"},{internalType:"bool",name:"dispatch",type:"bool"}],name:"createWithContext",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"domainSeparator",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{components:[{internalType:"contract IConditionalOrder",name:"handler",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"bytes",name:"staticInput",type:"bytes"}],internalType:"struct IConditionalOrder.ConditionalOrderParams",name:"params",type:"tuple"},{internalType:"bytes",name:"offchainInput",type:"bytes"},{internalType:"bytes32[]",name:"proof",type:"bytes32[]"}],name:"getTradeableOrderWithSignature",outputs:[{components:[{internalType:"contract IERC20",name:"sellToken",type:"address"},{internalType:"contract IERC20",name:"buyToken",type:"address"},{internalType:"address",name:"receiver",type:"address"},{internalType:"uint256",name:"sellAmount",type:"uint256"},{internalType:"uint256",name:"buyAmount",type:"uint256"},{internalType:"uint32",name:"validTo",type:"uint32"},{internalType:"bytes32",name:"appData",type:"bytes32"},{internalType:"uint256",name:"feeAmount",type:"uint256"},{internalType:"bytes32",name:"kind",type:"bytes32"},{internalType:"bool",name:"partiallyFillable",type:"bool"},{internalType:"bytes32",name:"sellTokenBalance",type:"bytes32"},{internalType:"bytes32",name:"buyTokenBalance",type:"bytes32"}],internalType:"struct GPv2Order.Data",name:"order",type:"tuple"},{internalType:"bytes",name:"signature",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"contract IConditionalOrder",name:"handler",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"bytes",name:"staticInput",type:"bytes"}],internalType:"struct IConditionalOrder.ConditionalOrderParams",name:"params",type:"tuple"}],name:"hash",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"contract Safe",name:"safe",type:"address"},{internalType:"address",name:"sender",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes32",name:"_domainSeparator",type:"bytes32"},{internalType:"bytes32",name:"",type:"bytes32"},{internalType:"bytes",name:"encodeData",type:"bytes"},{internalType:"bytes",name:"payload",type:"bytes"}],name:"isValidSafeSignature",outputs:[{internalType:"bytes4",name:"magic",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"singleOrderHash",type:"bytes32"}],name:"remove",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"roots",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"root",type:"bytes32"},{components:[{internalType:"uint256",name:"location",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],internalType:"struct ComposableCoW.Proof",name:"proof",type:"tuple"}],name:"setRoot",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"root",type:"bytes32"},{components:[{internalType:"uint256",name:"location",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],internalType:"struct ComposableCoW.Proof",name:"proof",type:"tuple"},{internalType:"contract IValueFactory",name:"factory",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"setRootWithContext",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract ISwapGuard",name:"swapGuard",type:"address"}],name:"setSwapGuard",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"bytes32",name:"",type:"bytes32"}],name:"singleOrders",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"swapGuards",outputs:[{internalType:"contract ISwapGuard",name:"",type:"address"}],stateMutability:"view",type:"function"}];class Qt{static createInterface(){return new n.Interface(Jt)}static connect(e,t){return new r(e,Jt,t)}}Qt.abi=Jt;const Yt=[{inputs:[{components:[{internalType:"contract IERC20",name:"buyToken",type:"address"},{internalType:"address",name:"receiver",type:"address"},{internalType:"uint256",name:"sellAmount",type:"uint256"},{internalType:"uint256",name:"buyAmount",type:"uint256"},{internalType:"bytes32",name:"appData",type:"bytes32"},{internalType:"uint256",name:"feeAmount",type:"uint256"},{internalType:"uint32",name:"validTo",type:"uint32"},{internalType:"bool",name:"partiallyFillable",type:"bool"},{internalType:"int64",name:"quoteId",type:"int64"}],internalType:"struct EthFlowOrder.Data",name:"order",type:"tuple"}],name:"createOrder",outputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"contract IERC20",name:"buyToken",type:"address"},{internalType:"address",name:"receiver",type:"address"},{internalType:"uint256",name:"sellAmount",type:"uint256"},{internalType:"uint256",name:"buyAmount",type:"uint256"},{internalType:"bytes32",name:"appData",type:"bytes32"},{internalType:"uint256",name:"feeAmount",type:"uint256"},{internalType:"uint32",name:"validTo",type:"uint32"},{internalType:"bool",name:"partiallyFillable",type:"bool"},{internalType:"int64",name:"quoteId",type:"int64"}],internalType:"struct EthFlowOrder.Data",name:"order",type:"tuple"}],name:"invalidateOrder",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"orders",outputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"uint32",name:"validTo",type:"uint32"}],stateMutability:"view",type:"function"}];class Xt{static createInterface(){return new n.Interface(Yt)}static connect(e,t){return new r(e,Yt,t)}}Xt.abi=Yt;const Zt=[{anonymous:!1,inputs:[{indexed:!0,internalType:"contract Safe",name:"safe",type:"address"},{indexed:!1,internalType:"bytes32",name:"domainSeparator",type:"bytes32"},{indexed:!1,internalType:"contract ISafeSignatureVerifier",name:"verifier",type:"address"}],name:"AddedDomainVerifier",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"contract Safe",name:"safe",type:"address"},{indexed:!1,internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"AddedInterface",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"contract Safe",name:"safe",type:"address"},{indexed:!1,internalType:"bytes4",name:"selector",type:"bytes4"},{indexed:!1,internalType:"bytes32",name:"method",type:"bytes32"}],name:"AddedSafeMethod",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"contract Safe",name:"safe",type:"address"},{indexed:!1,internalType:"bytes32",name:"domainSeparator",type:"bytes32"},{indexed:!1,internalType:"contract ISafeSignatureVerifier",name:"oldVerifier",type:"address"},{indexed:!1,internalType:"contract ISafeSignatureVerifier",name:"newVerifier",type:"address"}],name:"ChangedDomainVerifier",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"contract Safe",name:"safe",type:"address"},{indexed:!1,internalType:"bytes4",name:"selector",type:"bytes4"},{indexed:!1,internalType:"bytes32",name:"oldMethod",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"newMethod",type:"bytes32"}],name:"ChangedSafeMethod",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"contract Safe",name:"safe",type:"address"},{indexed:!1,internalType:"bytes32",name:"domainSeparator",type:"bytes32"}],name:"RemovedDomainVerifier",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"contract Safe",name:"safe",type:"address"},{indexed:!1,internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"RemovedInterface",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"contract Safe",name:"safe",type:"address"},{indexed:!1,internalType:"bytes4",name:"selector",type:"bytes4"}],name:"RemovedSafeMethod",type:"event"},{stateMutability:"nonpayable",type:"fallback"},{inputs:[{internalType:"contract Safe",name:"",type:"address"},{internalType:"bytes32",name:"",type:"bytes32"}],name:"domainVerifiers",outputs:[{internalType:"contract ISafeSignatureVerifier",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"isValidSignature",outputs:[{internalType:"bytes4",name:"magic",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155BatchReceived",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155Received",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC721Received",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"contract Safe",name:"",type:"address"},{internalType:"bytes4",name:"",type:"bytes4"}],name:"safeInterfaces",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Safe",name:"",type:"address"},{internalType:"bytes4",name:"",type:"bytes4"}],name:"safeMethods",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"domainSeparator",type:"bytes32"},{internalType:"contract ISafeSignatureVerifier",name:"newVerifier",type:"address"}],name:"setDomainVerifier",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"selector",type:"bytes4"},{internalType:"bytes32",name:"newMethod",type:"bytes32"}],name:"setSafeMethod",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"},{internalType:"bool",name:"supported",type:"bool"}],name:"setSupportedInterface",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"_interfaceId",type:"bytes4"},{internalType:"bytes32[]",name:"handlerWithSelectors",type:"bytes32[]"}],name:"setSupportedInterfaceBatch",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"}];class $t{static createInterface(){return new n.Interface(Zt)}static connect(e,t){return new r(e,Zt,t)}}$t.abi=Zt;const en=[{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!1,internalType:"contract IERC20",name:"sellToken",type:"address"},{indexed:!1,internalType:"contract IERC20",name:"buyToken",type:"address"},{indexed:!1,internalType:"uint256",name:"sellAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"buyAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"feeAmount",type:"uint256"},{indexed:!1,internalType:"bytes",name:"orderUid",type:"bytes"}],name:"Trade",type:"event"},{inputs:[{internalType:"bytes",name:"orderUid",type:"bytes"},{internalType:"bool",name:"signed",type:"bool"}],name:"setPreSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"orderUid",type:"bytes"}],name:"invalidateOrder",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"domainSeparator",outputs:[{name:"",type:"bytes32"}],stateMutability:"nonpayable",type:"function"}];class tn{static createInterface(){return new n.Interface(en)}static connect(e,t){return new r(e,en,t)}}function nn(e,t){return K({},e,{quoteId:t.id,sellAmount:t.quote.sellAmount,buyAmount:t.quote.buyAmount})}function rn(e){return e.sellToken.toLowerCase()===Pe.toLowerCase()}function sn(e){return e+e*BigInt(20)/BigInt(100)}function an(e,t){const{costs:{networkFee:n,partnerFee:r}}=e;function i(e){return{sellAmount:t(e.sellAmount),buyAmount:t(e.buyAmount)}}return K({},e,{costs:K({},e.costs,{networkFee:K({},n,{amountInSellCurrency:t(n.amountInSellCurrency),amountInBuyCurrency:t(n.amountInBuyCurrency)}),partnerFee:K({},r,{amount:t(r.amount)})}),beforeNetworkCosts:i(e.beforeNetworkCosts),afterNetworkCosts:i(e.afterNetworkCosts),afterPartnerFees:i(e.afterPartnerFees),afterSlippage:i(e.afterSlippage)})}function on({quoteParameters:e,sellToken:t}){return K({},e,{sellToken:t})}function un(e,t){return K({},t,{sellToken:ie[e].address})}async function ln(e,t,n,r,i={}){var s;const{networkCostsAmount:a="0",checkEthFlowOrderExists:o}=i,u=await e.getAddress(),l=null!==(s=n.slippageBps)&&void 0!==s?s:qt(r,!0),c=K({},un(r,n),{slippageBps:l}),{quoteId:d}=c,h=function(e,t){return Xt.connect("staging"===t?We:Ke,e)}(e,c.env),p=zt({chainId:r,isEthFlow:!0,from:u,networkCostsAmount:a},c,t),f=await jt(r,p,o,c.env),m={buyToken:p.buyToken,receiver:p.receiver,sellAmount:p.sellAmount,buyAmount:p.buyAmount,feeAmount:p.feeAmount,partiallyFillable:p.partiallyFillable,quoteId:d,appData:t,validTo:p.validTo.toString()},y=await h.estimateGas.createOrder(m,{value:p.sellAmount}).then(e=>BigInt(e.toHexString())).catch(e=>(console.error(e),Rt));return{orderId:f,orderToSign:p,transaction:{data:h.interface.encodeFunctionData("createOrder",[m]),gasLimit:"0x"+sn(y).toString(16),to:h.address,value:"0x"+BigInt(p.sellAmount).toString(16)}}}async function cn(e,t,n,r,i={}){const{appDataKeccak256:s,fullAppData:a}=n,{orderId:o,transaction:u,orderToSign:l}=await ln(t,s,r,e.context.chainId,i);$e("Uploading app-data"),await e.uploadAppData(s,a),$e("Sending on-chain order transaction");const c=await t.sendTransaction(u);return $e(`On-chain order transaction sent, txHash: ${c.hash}, order: ${o}`),{txHash:c.hash,orderId:o,orderToSign:l,signature:"",signingScheme:St.EIP1271}}async function dn(e,t,n,r,i={}){const{networkCostsAmount:s="0",signingScheme:a=St.EIP712}=i,o=rn(r);if(o){const s=r.quoteId;if("number"==typeof s)return cn(e,t,n,K({},r,{quoteId:s}),i);throw new Error("quoteId is required for EthFlow orders")}const{quoteId:u=null,owner:l}=r,{appDataKeccak256:c,fullAppData:d}=n,h=e.context.chainId,p=l||await t.getAddress(),f=zt({chainId:h,from:p,networkCostsAmount:s,isEthFlow:o},r,n.appDataKeccak256);$e("Signing order...");const{signature:m,signingScheme:y}=await(async()=>{if(a===St.PRESIGN)return{signature:p,signingScheme:St.PRESIGN};{const e=await Pt.signOrder(f,h,t);return{signature:e.signature,signingScheme:_t[e.signingScheme]}}})(),g=K({},f,{from:p,signature:m,signingScheme:y,quoteId:u,appData:d,appDataHash:c});$e("Posting order...");const b=await e.sendOrder(g);return $e(`Order created, id: ${b}`),{orderId:b,signature:m,signingScheme:y,orderToSign:f}}tn.abi=en;var hn="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function pn(e){var t={exports:{}};return e(t,t.exports),t.exports}var fn={__proto__:null,default:{}},mn=pn(function(e){!function(e,t){function n(e,t){if(!e)throw new Error(t||"Assertion failed")}function r(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}function i(e,t,n){if(i.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==t&&"be"!==t||(n=t,t=10),this._init(e||0,t||10,n||"be"))}var s;"object"==typeof e?e.exports=i:t.BN=i,i.BN=i,i.wordSize=26;try{s="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:fn.Buffer}catch(e){}function a(e,t){var r=e.charCodeAt(t);return r>=48&&r<=57?r-48:r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:void n(!1,"Invalid character in "+e)}function o(e,t,n){var r=a(e,n);return n-1>=t&&(r|=a(e,n-1)<<4),r}function u(e,t,r,i){for(var s=0,a=0,o=Math.min(e.length,r),u=t;u<o;u++){var l=e.charCodeAt(u)-48;s*=i,a=l>=49?l-49+10:l>=17?l-17+10:l,n(l>=0&&a<i,"Invalid character"),s+=a}return s}function l(e,t){e.words=t.words,e.length=t.length,e.negative=t.negative,e.red=t.red}if(i.isBN=function(e){return e instanceof i||null!==e&&"object"==typeof e&&e.constructor.wordSize===i.wordSize&&Array.isArray(e.words)},i.max=function