@cowprotocol/cow-sdk
Version:
## 📚 [Docs website](https://docs.cow.fi/)
1 lines • 515 kB
JavaScript
require("cross-fetch/polyfill");var e=require("limiter"),t=require("exponential-backoff"),r=require("ethers"),n=require("@ethersproject/abstract-signer"),i=require("@cowprotocol/app-data"),o=require("ethers/lib/utils"),s=require("deepmerge"),a=require("@cowprotocol/contracts"),u=require("@weiroll/weiroll.js"),l=require("graphql-request"),c=require("@openzeppelin/merkle-tree");function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function h(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach(function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}}),t.default=e,t}var p,f,m,y,g=/*#__PURE__*/d(s);exports.BridgeStatus=void 0,(p=exports.BridgeStatus||(exports.BridgeStatus={})).IN_PROGRESS="in_progress",p.EXECUTED="executed",p.EXPIRED="expired",p.REFUND="refund",p.UNKNOWN="unknown",exports.BridgeQuoteErrors=void 0,(f=exports.BridgeQuoteErrors||(exports.BridgeQuoteErrors={})).NO_INTERMEDIATE_TOKENS="NO_INTERMEDIATE_TOKENS",f.API_ERROR="API_ERROR",f.INVALID_API_JSON_RESPONSE="INVALID_API_JSON_RESPONSE",f.ONLY_SELL_ORDER_SUPPORTED="ONLY_SELL_ORDER_SUPPORTED",f.TX_BUILD_ERROR="TX_BUILD_ERROR",f.QUOTE_ERROR="QUOTE_ERROR",f.NO_ROUTES="NO_ROUTES",f.INVALID_BRIDGE="INVALID_BRIDGE";class b extends Error{constructor(e,t){super(e),this.context=void 0,this.context=t,this.name="BridgeProviderQuoteError"}}class v extends Error{constructor(e,t){super(e),this.context=void 0,this.context=t,this.name="BridgeProviderError"}}class A extends Error{constructor(e,t){super(e),this.context=void 0,this.context=t,this.name="BridgeOrderParsingError"}}function w(e){return"bridge"in e}function T(e){return!w(e)}function E(e){if(!e)return[];const t=JSON.parse(e);return S(t)&&t.metadata.hooks&&t.metadata.hooks.post||[]}function S(e){return"object"==typeof e&&null!==e&&"version"in e&&"metadata"in e}exports.SupportedChainId=void 0,(m=exports.SupportedChainId||(exports.SupportedChainId={}))[m.MAINNET=1]="MAINNET",m[m.GNOSIS_CHAIN=100]="GNOSIS_CHAIN",m[m.ARBITRUM_ONE=42161]="ARBITRUM_ONE",m[m.BASE=8453]="BASE",m[m.POLYGON=137]="POLYGON",m[m.AVALANCHE=43114]="AVALANCHE",m[m.SEPOLIA=11155111]="SEPOLIA",exports.AdditionalTargetChainId=void 0,(y=exports.AdditionalTargetChainId||(exports.AdditionalTargetChainId={}))[y.OPTIMISM=10]="OPTIMISM";class I extends Error{constructor(e,t){super(e),this.error_code=void 0,this.error_code=t}}const x=function(e,{path:r,query:n,method:i,body:o},s,a){try{const u={Accept:"application/json","Content-Type":"application/json"},l=`${e}${r}${n?"?"+n:""}`,c={method:i,body:(()=>{if(o)return"string"==typeof o?o:JSON.stringify(o)})(),headers:u};return Promise.resolve(t.backOff(function(){try{return Promise.resolve(s.removeTokens(1)).then(function(){return Promise.resolve(fetch(l,c)).then(function(e){return Promise.resolve(N(e)).then(function(t){return e.status>=200&&e.status<300?t:Promise.reject(new C(e,t))})})})}catch(e){return Promise.reject(e)}},a))}catch(e){return Promise.reject(e)}};class C extends Error{constructor(e,t){super("string"==typeof t?t:e.statusText),this.response=void 0,this.body=void 0,this.response=e,this.body=t}}const P=[408,425,429,500,502,503,504],k={numOfAttempts:10,maxDelay:Infinity,jitter:"none",retry:e=>!(e instanceof C)||P.includes(e.response.status)},_={tokensPerInterval:5,interval:"second"},N=function(e){try{let t;const r=function(){if(204!==e.status)return function(r,n){try{var i=function(){const r=e.headers.get("Content-Type");return function(){if(r)return r.toLowerCase().startsWith("application/json")?Promise.resolve(e.json()).then(function(e){return t=1,e}):Promise.resolve(e.text()).then(function(e){return t=1,e})}()}()}catch(e){return n(e)}return i&&i.then?i.then(void 0,n):i}(0,function(e){console.error(e)})}();return Promise.resolve(r&&r.then?r.then(function(e){return t?e:void 0}):t?r:void 0)}catch(e){return Promise.reject(e)}},R="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",O="https://raw.githubusercontent.com/cowprotocol/token-lists/main/src/public/images",M={decimals:18,name:"Wrapped Ether",symbol:"WETH",logoUrl:`${O}/1/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2/logo.png`},B={[exports.SupportedChainId.MAINNET]:{...M,chainId:exports.SupportedChainId.MAINNET,address:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"},[exports.SupportedChainId.GNOSIS_CHAIN]:{chainId:exports.SupportedChainId.GNOSIS_CHAIN,address:"0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d",decimals:18,name:"Wrapped XDAI",symbol:"WXDAI",logoUrl:`${O}/100/0xe91d153e0b41518a2ce8dd3d7944fa863463a97d/logo.png`},[exports.SupportedChainId.ARBITRUM_ONE]:{...M,chainId:exports.SupportedChainId.ARBITRUM_ONE,address:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"},[exports.SupportedChainId.BASE]:{...M,chainId:exports.SupportedChainId.BASE,address:"0x4200000000000000000000000000000000000006"},[exports.SupportedChainId.SEPOLIA]:{...M,chainId:exports.SupportedChainId.SEPOLIA,address:"0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14"},[exports.SupportedChainId.POLYGON]:{chainId:exports.SupportedChainId.POLYGON,address:"0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270",decimals:18,name:"Wrapped POL",symbol:"WPOL",logoUrl:`${O}/137/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270/logo.png`},[exports.SupportedChainId.AVALANCHE]:{chainId:exports.SupportedChainId.AVALANCHE,address:"0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7",decimals:18,name:"Wrapped AVAX",symbol:"WAVAX",logoUrl:`${O}/43114/0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7/logo.png`}},D={address:R,decimals:18,name:"Ether",symbol:"ETH",logoUrl:`${O}/1/${R}/logo.png`},L="https://raw.githubusercontent.com/cowprotocol/cow-sdk/refs/heads/main",F=`${L}/src/chains`,U=`${F}/images/mainnet-logo.svg`,G={id:exports.SupportedChainId.MAINNET,label:"Ethereum",eip155Label:"Ethereum Mainnet",nativeCurrency:{...D,chainId:exports.SupportedChainId.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:U,dark:U},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"}},H=`${F}/images/gnosis-logo.svg`,q={id:exports.SupportedChainId.GNOSIS_CHAIN,label:"Gnosis",eip155Label:"Gnosis",nativeCurrency:{...D,chainId:exports.SupportedChainId.GNOSIS_CHAIN,name:"xDAI",symbol:"xDAI",logoUrl:`${O}/100/${R}/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:H,dark:H},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"}]},j=`${F}/images/arbitrum-logo-light.svg`,V=`${F}/images/arbitrum-logo-dark.svg`,K={id:exports.SupportedChainId.ARBITRUM_ONE,label:"Arbitrum",eip155Label:"Arbitrum One",nativeCurrency:{...D,chainId:exports.SupportedChainId.ARBITRUM_ONE},addressPrefix:"arb1",isTestnet:!1,contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:7654707}},rpcUrls:{default:{http:["https://arb1.arbitrum.io/rpc"]}},color:"#1B4ADD",logo:{light:j,dark:V},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"}]},z=`${F}/images/base-logo.svg`,W={id:exports.SupportedChainId.BASE,label:"Base",eip155Label:"Base",nativeCurrency:{...D,chainId:exports.SupportedChainId.BASE},addressPrefix:"base",isTestnet:!1,contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:5022}},rpcUrls:{default:{http:["https://mainnet.base.org"]}},color:"#0052FF",logo:{light:z,dark:z},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"}]},Q=`${F}/images/sepolia-logo.svg`,J={id:exports.SupportedChainId.SEPOLIA,label:"Sepolia",eip155Label:"Ethereum Sepolia",nativeCurrency:{...D,chainId:exports.SupportedChainId.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:Q,dark:Q},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"}},Y=`${F}/images/avax-logo.svg`,X={id:exports.SupportedChainId.AVALANCHE,label:"Avalanche",eip155Label:"Avalanche C-Chain",logo:{light:Y,dark:Y},nativeCurrency:{...D,chainId:exports.SupportedChainId.AVALANCHE,name:"Avalanche",symbol:"AVAX",logoUrl:Y},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"}},Z=`${F}/images/optimism-logo.svg`,$={id:10,label:"Optimism",eip155Label:"OP Mainnet",logo:{light:Z,dark:Z},nativeCurrency:{...D,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=`${F}/images/polygon-logo.svg`,te={id:exports.SupportedChainId.POLYGON,label:"Polygon",eip155Label:"Polygon Mainnet",logo:{light:ee,dark:ee},nativeCurrency:{...D,chainId:exports.SupportedChainId.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"}},re={[exports.SupportedChainId.MAINNET]:G,[exports.SupportedChainId.GNOSIS_CHAIN]:q,[exports.SupportedChainId.ARBITRUM_ONE]:K,[exports.SupportedChainId.BASE]:W,[exports.SupportedChainId.AVALANCHE]:X,[exports.SupportedChainId.POLYGON]:te,[exports.SupportedChainId.SEPOLIA]:J},ne=Object.values(re),ie=ne.map(e=>e.id),oe={[exports.AdditionalTargetChainId.OPTIMISM]:$},se=ne.concat(Object.values(oe)),ae=se.map(e=>e.id);function ue(e){return ie.reduce((t,r)=>({...t,[r]:"function"==typeof e?e(r):e}),{})}function le(e){return ue(e)}const ce="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",de="0x2f55e8b20D0B9FEFA187AA7d00B6Cbe563605bF5",he="0xfdaFc9d1902f4e0b84f65F49f244b32b31013b74",pe="1.0.0",fe="1.0.1",me=fe,ye={[pe]:"0x00E989b87700514118Fa55326CD1cCE82faebEF6",[fe]:"0x312f92fe5f1710408B20D52A374fa29e099cFA86"},ge={[pe]:"0x2CFFA8cf11B90C9F437567b86352169dF4009F73",[fe]:"0xa2704cf562ad418bf0453f4b662ebf6a2489ed88"},be={[pe]:"0x60a034608e57601f61037138819003918201601f19168301916001600160401b038311848410176093578084926040948552833981010312608e57604b602060458360a9565b920160a9565b6080527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc556040516102b490816100bd8239608051818181608f01526101720152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203608e5756fe60806040526004361015610018575b3661019457610194565b6000803560e01c908163025b22bc1461003b575063f851a4400361000e5761010d565b3461010a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010a5773ffffffffffffffffffffffffffffffffffffffff60043581811691828203610106577f0000000000000000000000000000000000000000000000000000000000000000163314600014610101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8280a280f35b61023d565b8380fd5b80fd5b346101645760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610164576020610146610169565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b600080fd5b333003610101577f000000000000000000000000000000000000000000000000000000000000000090565b60ff7f68df44b1011761f481358c0f49a711192727fb02c377d697bcb0ea8ff8393ac0541615806101ef575b1561023d5760046040517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b507f400ada75000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000006000351614156101c0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546000808092368280378136915af43d82803e1561027a573d90f35b3d90fdfea2646970667358221220c7c26ff3040b96a28e96d6d27b743972943aeaef81cc821544c5fe1e24f9b17264736f6c63430008190033",[fe]:"0x60a03461009557601f61033d38819003918201601f19168301916001600160401b0383118484101761009957808492604094855283398101031261009557610052602061004b836100ad565b92016100ad565b6080527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5560405161027b90816100c28239608051818181608b01526101750152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036100955756fe60806040526004361015610018575b3661019757610197565b5f3560e01c8063025b22bc146100375763f851a4400361000e57610116565b346101125760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101125760043573ffffffffffffffffffffffffffffffffffffffff81169081810361011257337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff160361010d577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2005b61023d565b5f80fd5b34610112575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011257602061014e61016c565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b33300361010d577f000000000000000000000000000000000000000000000000000000000000000090565b60ff7f68df44b1011761f481358c0f49a711192727fb02c377d697bcb0ea8ff8393ac0541615806101f0575b1561023d577ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b507f400ada75000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000005f351614156101c3565b5f807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54368280378136915af43d5f803e15610277573d5ff35b3d5ffd"},ve=le("0x9008D19f58AAbD9eD0D60971565AA8510560ab41"),Ae=le("0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"),we=le(de),Te=le(he),Ee="0xba3cb449bd2b4adddbc894d8697f5170800eadec",Se="0x04501b9b1d52e67f6862d157e00d13419d2d6e95",Ie=le(Ee),xe=le(Se),Ce=4294967295;function Pe(e){return function(e){const{ethflowData:t}=e;if(!t)return e;const{userValidTo:r}=t,n=e.onchainUser||e.owner,i=ce;return{...e,validTo:r,owner:n,sellToken:i}}(function(e){const{executedFeeAmount:t,executedFee:r}=e,n=BigInt(t||"0"),i=BigInt(r||"0"),o=String(n+i);return{...e,totalFee:o}}(e))}let ke=!1;function _e(e){ke&&console.log(`[COW TRADING SDK] ${e}`)}function Ne(e){ke=e}const Re=["prod","staging"],Oe={env:"prod",chainId:exports.SupportedChainId.MAINNET},Me=(e,t)=>"bigint"==typeof t||"object"==typeof t&&null!==t&&"_isBigNumber"in t?t.toString():t,Be={[exports.SupportedChainId.MAINNET]:"https://api.cow.fi/mainnet",[exports.SupportedChainId.GNOSIS_CHAIN]:"https://api.cow.fi/xdai",[exports.SupportedChainId.ARBITRUM_ONE]:"https://api.cow.fi/arbitrum_one",[exports.SupportedChainId.BASE]:"https://api.cow.fi/base",[exports.SupportedChainId.SEPOLIA]:"https://api.cow.fi/sepolia",[exports.SupportedChainId.POLYGON]:"https://api.cow.fi/polygon",[exports.SupportedChainId.AVALANCHE]:"https://api.cow.fi/avalanche"},De={[exports.SupportedChainId.MAINNET]:"https://barn.api.cow.fi/mainnet",[exports.SupportedChainId.GNOSIS_CHAIN]:"https://barn.api.cow.fi/xdai",[exports.SupportedChainId.ARBITRUM_ONE]:"https://barn.api.cow.fi/arbitrum_one",[exports.SupportedChainId.BASE]:"https://barn.api.cow.fi/base",[exports.SupportedChainId.SEPOLIA]:"https://barn.api.cow.fi/sepolia",[exports.SupportedChainId.POLYGON]:"https://barn.api.cow.fi/polygon",[exports.SupportedChainId.AVALANCHE]:"https://barn.api.cow.fi/avalanche"};function Le(e){return Object.keys(e).reduce((t,r)=>{const n=e[r];return void 0!==n&&(t[r]=n),t},{})}class Fe{constructor(t={}){this.context=void 0,this.rateLimiter=void 0,this.context={...Oe,...t},this.rateLimiter=new e.RateLimiter(t.limiterOpts||_)}getVersion(e={}){return this.fetch({path:"/api/v1/version",method:"GET"},e)}getTrades(e,t={}){if(e.owner&&e.orderUid)return Promise.reject(new I("Cannot specify both owner and orderId"));if(!e.owner&&!e.orderUid)return Promise.reject(new I("Must specify either owner or orderId"));const r=new URLSearchParams(Le(e));return this.fetch({path:"/api/v1/trades",method:"GET",query:r},t)}getOrders({owner:e,offset:t=0,limit:r=1e3},n={}){const i=new URLSearchParams(Le({offset:t.toString(),limit:r.toString()}));return this.fetch({path:`/api/v1/account/${e}/orders`,method:"GET",query:i},n).then(e=>e.map(Pe))}getTxOrders(e,t={}){return this.fetch({path:`/api/v1/transactions/${e}/orders`,method:"GET"},t).then(e=>e.map(Pe))}getOrder(e,t={}){return this.fetch({path:`/api/v1/orders/${e}`,method:"GET"},t).then(e=>Pe(e))}getOrderCompetitionStatus(e,t={}){return this.fetch({path:`/api/v1/orders/${e}/status`,method:"GET"},t)}getOrderMultiEnv(e,t={}){const{env:r}=this.getContextWithOverride(t),n=Re.filter(e=>e!==r);let i=0;const o=r=>{const s=n[i];return r instanceof C&&404===r.response.status&&s?(i++,this.getOrder(e,{...t,env:s}).catch(o)):Promise.reject(r)};return this.getOrder(e,{...t,env:r}).catch(o)}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,r={}){return this.fetch({path:`/api/v1/app_data/${e}`,method:"PUT",body:{fullAppData:t}},r)}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:r,env:n}=this.getContextWithOverride(t);return this.getApiBaseUrls(n)[r]+`/api/v1/orders/${e}`}getContextWithOverride(e={}){return{...this.context,...e}}getApiBaseUrls(e){return this.context.baseUrls?this.context.baseUrls:"prod"===e?Be:De}fetch(t,r={}){const{chainId:n,env:i,backoffOpts:o}=this.getContextWithOverride(r),s=this.getApiBaseUrls(i)[n],a=o||k,u=r.limiterOpts?new e.RateLimiter(r.limiterOpts):this.rateLimiter;return _e(`Fetching OrderBook API: ${s}${t.path}. Params: ${JSON.stringify(t,Me)}`),x(s,t,u,a)}}var Ue,Ge,He,qe,je,Ve,Ke,ze,We,Qe,Je,Ye,Xe,Ze,$e,et;exports.BuyTokenDestination=void 0,(Ue=exports.BuyTokenDestination||(exports.BuyTokenDestination={})).ERC20="erc20",Ue.INTERNAL="internal",exports.CompetitionOrderStatus=void 0,(He=(Ge=exports.CompetitionOrderStatus||(exports.CompetitionOrderStatus={})).type||(Ge.type={})).OPEN="open",He.SCHEDULED="scheduled",He.ACTIVE="active",He.SOLVED="solved",He.EXECUTING="executing",He.TRADED="traded",He.CANCELLED="cancelled",exports.EcdsaSigningScheme=void 0,(qe=exports.EcdsaSigningScheme||(exports.EcdsaSigningScheme={})).EIP712="eip712",qe.ETHSIGN="ethsign",exports.OnchainOrderData=void 0,(Ve=(je=exports.OnchainOrderData||(exports.OnchainOrderData={})).placementError||(je.placementError={})).QUOTE_NOT_FOUND="QuoteNotFound",Ve.VALID_TO_TOO_FAR_IN_FUTURE="ValidToTooFarInFuture",Ve.PRE_VALIDATION_ERROR="PreValidationError",exports.OrderCancellationError=void 0,(ze=(Ke=exports.OrderCancellationError||(exports.OrderCancellationError={})).errorType||(Ke.errorType={})).INVALID_SIGNATURE="InvalidSignature",ze.WRONG_OWNER="WrongOwner",ze.ORDER_NOT_FOUND="OrderNotFound",ze.ALREADY_CANCELLED="AlreadyCancelled",ze.ORDER_FULLY_EXECUTED="OrderFullyExecuted",ze.ORDER_EXPIRED="OrderExpired",ze.ON_CHAIN_ORDER="OnChainOrder",exports.OrderClass=void 0,(We=exports.OrderClass||(exports.OrderClass={})).MARKET="market",We.LIMIT="limit",We.LIQUIDITY="liquidity",exports.OrderKind=void 0,(Qe=exports.OrderKind||(exports.OrderKind={})).BUY="buy",Qe.SELL="sell",exports.OrderPostError=void 0,function(e){e.DUPLICATED_ORDER="DuplicatedOrder",e.QUOTE_NOT_FOUND="QuoteNotFound",e.QUOTE_NOT_VERIFIED="QuoteNotVerified",e.INVALID_QUOTE="InvalidQuote",e.MISSING_FROM="MissingFrom",e.WRONG_OWNER="WrongOwner",e.INVALID_EIP1271SIGNATURE="InvalidEip1271Signature",e.INSUFFICIENT_BALANCE="InsufficientBalance",e.INSUFFICIENT_ALLOWANCE="InsufficientAllowance",e.INVALID_SIGNATURE="InvalidSignature",e.SELL_AMOUNT_OVERFLOW="SellAmountOverflow",e.TRANSFER_SIMULATION_FAILED="TransferSimulationFailed",e.ZERO_AMOUNT="ZeroAmount",e.INCOMPATIBLE_SIGNING_SCHEME="IncompatibleSigningScheme",e.TOO_MANY_LIMIT_ORDERS="TooManyLimitOrders",e.TOO_MUCH_GAS="TooMuchGas",e.UNSUPPORTED_BUY_TOKEN_DESTINATION="UnsupportedBuyTokenDestination",e.UNSUPPORTED_SELL_TOKEN_SOURCE="UnsupportedSellTokenSource",e.UNSUPPORTED_ORDER_TYPE="UnsupportedOrderType",e.INSUFFICIENT_VALID_TO="InsufficientValidTo",e.EXCESSIVE_VALID_TO="ExcessiveValidTo",e.INVALID_NATIVE_SELL_TOKEN="InvalidNativeSellToken",e.SAME_BUY_AND_SELL_TOKEN="SameBuyAndSellToken",e.UNSUPPORTED_TOKEN="UnsupportedToken",e.INVALID_APP_DATA="InvalidAppData",e.APP_DATA_HASH_MISMATCH="AppDataHashMismatch",e.APPDATA_FROM_MISMATCH="AppdataFromMismatch"}((Je=exports.OrderPostError||(exports.OrderPostError={})).errorType||(Je.errorType={})),exports.OrderQuoteSideKindBuy=void 0,(exports.OrderQuoteSideKindBuy||(exports.OrderQuoteSideKindBuy={})).BUY="buy",exports.OrderQuoteSideKindSell=void 0,(exports.OrderQuoteSideKindSell||(exports.OrderQuoteSideKindSell={})).SELL="sell",exports.OrderStatus=void 0,(Ye=exports.OrderStatus||(exports.OrderStatus={})).PRESIGNATURE_PENDING="presignaturePending",Ye.OPEN="open",Ye.FULFILLED="fulfilled",Ye.CANCELLED="cancelled",Ye.EXPIRED="expired",exports.PriceEstimationError=void 0,function(e){e.QUOTE_NOT_VERIFIED="QuoteNotVerified",e.UNSUPPORTED_TOKEN="UnsupportedToken",e.ZERO_AMOUNT="ZeroAmount",e.UNSUPPORTED_ORDER_TYPE="UnsupportedOrderType"}((Xe=exports.PriceEstimationError||(exports.PriceEstimationError={})).errorType||(Xe.errorType={})),exports.PriceQuality=void 0,(Ze=exports.PriceQuality||(exports.PriceQuality={})).FAST="fast",Ze.OPTIMAL="optimal",Ze.VERIFIED="verified",exports.SellTokenSource=void 0,($e=exports.SellTokenSource||(exports.SellTokenSource={})).ERC20="erc20",$e.INTERNAL="internal",$e.EXTERNAL="external",exports.SigningScheme=void 0,(et=exports.SigningScheme||(exports.SigningScheme={})).EIP712="eip712",et.ETHSIGN="ethsign",et.PRESIGN="presign",et.EIP1271="eip1271";const tt=BigInt(1e4);function rt(e){const{sellDecimals:t,buyDecimals:r,orderParams:n}=e,{sellAmountAfterNetworkCosts:i,buyAmountAfterNetworkCosts:o,buyAmountBeforeNetworkCosts:s,isSell:a,networkCostAmount:u,quotePrice:l,sellAmountBeforeNetworkCosts:c}=nt({sellDecimals:t,buyDecimals:r,orderParams:n});return{isSell:a,quotePrice:l,sellAmountAfterNetworkCosts:i.big,buyAmountAfterNetworkCosts:o.big,buyAmountBeforeNetworkCosts:s.big,networkCostAmount:u.big,sellAmountBeforeNetworkCosts:c.big}}function nt(e){const{sellDecimals:t,buyDecimals:r,orderParams:n}=e,i=n.kind===exports.OrderKind.SELL,o=ot(n.feeAmount,t),s=ot(n.sellAmount,t),a=ot(n.buyAmount,r),u=a.num/s.num,l=ot(s.big+o.big,t);return{isSell:i,quotePrice:u,networkCostAmount:o,sellAmountBeforeNetworkCosts:s,buyAmountAfterNetworkCosts:a,sellAmountAfterNetworkCosts:l,buyAmountBeforeNetworkCosts:ot(u*l.num,r)}}function it(e){var t;const{orderParams:r,sellDecimals:n,buyDecimals:i,slippagePercentBps:o}=e,s=null!==(t=e.partnerFeeBps)&&void 0!==t?t:0,{isSell:a,networkCostAmount:u,sellAmountBeforeNetworkCosts:l,buyAmountAfterNetworkCosts:c,sellAmountAfterNetworkCosts:d,buyAmountBeforeNetworkCosts:h,quotePrice:p}=nt({sellDecimals:n,buyDecimals:i,orderParams:r}),{afterPartnerFees:f,partnerFeeAmount:m}=function(e){const{sellAmountAfterNetworkCosts:t,buyAmountAfterNetworkCosts:r,buyAmountBeforeNetworkCosts:n,sellAmountBeforeNetworkCosts:i,isSell:o,partnerFeeBps:s}=e,a=s>0?(o?n.big:i.big)*BigInt(s)/tt:BigInt(0);return{partnerFeeAmount:a,afterPartnerFees:o?{sellAmount:t.big,buyAmount:r.big-a}:{sellAmount:t.big+a,buyAmount:r.big}}}({sellAmountAfterNetworkCosts:d,buyAmountAfterNetworkCosts:c,buyAmountBeforeNetworkCosts:h,sellAmountBeforeNetworkCosts:l,isSell:a,partnerFeeBps:s}),{afterSlippage:y}=function(e){const{afterPartnerFees:t,isSell:r,slippagePercentBps:n}=e,i=e=>e*BigInt(n)/tt;return{afterSlippage:r?{sellAmount:t.sellAmount,buyAmount:t.buyAmount-i(t.buyAmount)}:{sellAmount:t.sellAmount+i(t.sellAmount),buyAmount:t.buyAmount}}}({afterPartnerFees:f,isSell:a,slippagePercentBps:o});return{isSell:a,costs:{networkFee:{amountInSellCurrency:u.big,amountInBuyCurrency:ot(p*u.num,i).big},partnerFee:{amount:m,bps:s}},beforeNetworkCosts:{sellAmount:l.big,buyAmount:h.big},afterNetworkCosts:{sellAmount:d.big,buyAmount:c.big},afterPartnerFees:f,afterSlippage:y}}function ot(e,t){if("number"==typeof e){const r=e*10**t,n=r.toFixed();return{big:BigInt(n.includes("e")?r:n),num:e}}const r=BigInt(e);return{big:r,num:Number(r)/10**t}}const st={[exports.EcdsaSigningScheme.EIP712]:exports.SigningScheme.EIP712,[exports.EcdsaSigningScheme.ETHSIGN]:exports.SigningScheme.ETHSIGN},at=BigInt(15e4),ut=()=>Promise.resolve().then(function(){return require("./utils-ce940a22.js")});class lt{static signOrder(e,t,r){try{return Promise.resolve(ut()).then(function({signOrder:n}){return n(e,t,r)})}catch(e){return Promise.reject(e)}}static signOrderCancellation(e,t,r){try{return Promise.resolve(ut()).then(function({signOrderCancellation:n}){return n(e,t,r)})}catch(e){return Promise.reject(e)}}static signOrderCancellations(e,t,r){try{return Promise.resolve(ut()).then(function({signOrderCancellations:n}){return n(e,t,r)})}catch(e){return Promise.reject(e)}}static getDomain(e){try{return Promise.resolve(ut()).then(function({getDomain:t}){return t(e)})}catch(e){return Promise.reject(e)}}static generateOrderId(e,t,r){try{return Promise.resolve(ut()).then(function({generateOrderId:n}){return n(e,t,r)})}catch(e){return Promise.reject(e)}}static getDomainSeparator(e){try{return Promise.resolve(ut()).then(function({getDomain:t}){return Promise.resolve(Promise.resolve().then(function(){/*#__PURE__*/return h(require("ethers/lib/utils"))})).then(function({_TypedDataEncoder:r}){return r.hashDomain(t(e))})})}catch(e){return Promise.reject(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 ct(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 dt(e){return e in re}function ht(e){return e in oe}const pt=10n**6n,ft=50,mt={[exports.SupportedChainId.MAINNET]:200,[exports.SupportedChainId.ARBITRUM_ONE]:50,[exports.SupportedChainId.BASE]:50,[exports.SupportedChainId.GNOSIS_CHAIN]:50,[exports.SupportedChainId.SEPOLIA]:50,[exports.SupportedChainId.POLYGON]:50,[exports.SupportedChainId.AVALANCHE]:50};function yt(e,t){return t?mt[e]:ft}function gt(e){return{...e,sellTokenBalance:e.sellTokenBalance,buyTokenBalance:e.buyTokenBalance}}const bt=1800;function vt({chainId:e,from:t,networkCostsAmount:r="0",isEthFlow:n},i,o){const{sellAmount:s,buyAmount:a,sellToken:u,sellTokenDecimals:l,buyToken:c,buyTokenDecimals:d,kind:h,partiallyFillable:p=!1,slippageBps:f=yt(e,n),partnerFee:m,validFor:y=bt}=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:s,buyAmount:a,receiver:g,validTo:b,kind:h,feeAmount:r,appData:o,partiallyFillable:p},{afterSlippage:A}=it({orderParams:v,slippagePercentBps:f,partnerFeeBps:ct(m),sellDecimals:l,buyDecimals:d});return{sellToken:u,buyToken:c,sellAmount:A.sellAmount.toString(),buyAmount:A.buyAmount.toString(),validTo:b,kind:h,partiallyFillable:p,appData:o,receiver:g,feeAmount:"0",sellTokenBalance:exports.SellTokenSource.ERC20,buyTokenBalance:exports.BuyTokenDestination.ERC20}}const At=function(e,t,r,n){try{return Promise.resolve(lt.generateOrderId(e,{...gt(t),validTo:Ce,sellToken:B[e].address},{owner:"staging"===n?Se:Ee})).then(function({orderDigest:n,orderId:i}){let o;function s(n){if(n){console.error("ETH FLOW","[calculateUniqueOrderId] ❌ Collision detected: "+i,{sellAmount:t.sellAmount,fee:t.feeAmount});const n=At(e,function(e){const t=BigInt(e.buyAmount);return{...e,buyAmount:(t-BigInt(1)).toString()}}(t),r);return o=1,n}return i}return r?Promise.resolve(r(i,n)).then(s):s(r)})}catch(e){return Promise.reject(e)}},wt=[{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 Tt{static createInterface(){return new r.utils.Interface(wt)}static connect(e,t){return new r.Contract(e,wt,t)}}Tt.abi=wt;const Et=[{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 St{static createInterface(){return new r.utils.Interface(Et)}static connect(e,t){return new r.Contract(e,Et,t)}}St.abi=Et;const It=[{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 r.utils.Interface(It)}static connect(e,t){return new r.Contract(e,It,t)}}xt.abi=It;const Ct=[{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 Pt{static createInterface(){return new r.utils.Interface(Ct)}static connect(e,t){return new r.Contract(e,Ct,t)}}Pt.abi=Ct;const kt=[{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 _t{static createInterface(){return new r.utils.Interface(kt)}static connect(e,t){return new r.Contract(e,kt,t)}}function Nt(e,t){return{...e,quoteId:t.id,sellAmount:t.quote.sellAmount,buyAmount:t.quote.buyAmount}}function Rt(e){return e.sellToken.toLowerCase()===ce.toLowerCase()}function Ot(e){return e+e*BigInt(20)/BigInt(100)}function Mt({quoteParameters:e,sellToken:t}){return{...e,sellToken:t}}function Bt(e,t){return{...t,sellToken:B[e].address}}_t.abi=kt;const Dt=function(e,t,r,n,i={}){try{const{networkCostsAmount:o="0",checkEthFlowOrderExists:s}=i;return Promise.resolve(e.getAddress()).then(function(i){var a;const u=null!==(a=r.slippageBps)&&void 0!==a?a:yt(n,!0),l={...Bt(n,r),slippageBps:u},{quoteId:c}=l,d=function(e,t){return xt.connect("staging"===t?Se:Ee,e)}(e,l.env),h=vt({chainId:n,isEthFlow:!0,from:i,networkCostsAmount:o},l,t);return Promise.resolve(At(n,h,s,l.env)).then(function(e){const r={buyToken:h.buyToken,receiver:h.receiver,sellAmount:h.sellAmount,buyAmount:h.buyAmount,feeAmount:h.feeAmount,partiallyFillable:h.partiallyFillable,quoteId:c,appData:t,validTo:h.validTo.toString()};return Promise.resolve(d.estimateGas.createOrder(r,{value:h.sellAmount}).then(e=>BigInt(e.toHexString())).catch(e=>(console.error(e),at))).then(function(t){const n=d.interface.encodeFunctionData("createOrder",[r]);return{orderId:e,orderToSign:h,transaction:{data:n,gasLimit:"0x"+Ot(t).toString