@cowprotocol/cow-sdk 2.0.5 → 2.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import"cross-fetch/polyfill";import{RateLimiter as e}from"limiter";import{backOff as t}from"exponential-backoff";import{gql as n,request as a}from"graphql-request";var r;!function(e){e[e.MAINNET=1]="MAINNET",e[e.GOERLI=5]="GOERLI",e[e.GNOSIS_CHAIN=100]="GNOSIS_CHAIN"}(r||(r={}));const s=["prod","staging"],o={env:"prod",chainId:r.MAINNET};class i extends Error{constructor(e,t){super(e),this.error_code=void 0,this.error_code=t}}const c="cow-sdk:",d="https://gnosis.mypinata.cloud/ipfs",E="https://api.pinata.cloud";function f(){return f=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},f.apply(this,arguments)}const{GPv2Settlement:u}=JSON.parse('{\n "GPv2AllowListAuthentication_Implementation": {\n "1": {\n "address": "0x9E7Ae8Bdba9AA346739792d219a808884996Db67",\n "transactionHash": "0x58340aa44119c74e48635fab0ac344170c6d6e8b42e5714baa4ba4e1651f63ad"\n },\n "4": {\n "address": "0x9E7Ae8Bdba9AA346739792d219a808884996Db67"\n },\n "5": {\n "address": "0x9E7Ae8Bdba9AA346739792d219a808884996Db67",\n "transactionHash": "0x24f4f80b46a17345011065f9ea2af823f582db56be81098b3b66cc2db9659ea7"\n },\n "100": {\n "address": "0x9E7Ae8Bdba9AA346739792d219a808884996Db67",\n "transactionHash": "0xe52d425fe34d6d5215ccfc9ddfa485d490b3018f0ee5bbed708f2d172044d60d"\n }\n },\n "GPv2AllowListAuthentication_Proxy": {\n "1": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0xb84bf720364f94c749f1ec1cdf0d4c44c70411b716459aaccfd24fc677013375"\n },\n "4": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0x57b2278fd3a13ab1b132031024475ba1a4e28d7d4d37f556134c84512b742c1f"\n },\n "5": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0x39dcf30baf887a5db54551a84de8bfdb6cf418bb284b09680d13aed17d5fa0c1"\n },\n "100": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0x1a2d87a05a94bc6680a4faee31bbafbd74e9ddb63dd3941c717b5c609c08b957"\n }\n },\n "GPv2AllowListAuthentication": {\n "1": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0xb84bf720364f94c749f1ec1cdf0d4c44c70411b716459aaccfd24fc677013375"\n },\n "4": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0x57b2278fd3a13ab1b132031024475ba1a4e28d7d4d37f556134c84512b742c1f"\n },\n "5": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0x39dcf30baf887a5db54551a84de8bfdb6cf418bb284b09680d13aed17d5fa0c1"\n },\n "100": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0x1a2d87a05a94bc6680a4faee31bbafbd74e9ddb63dd3941c717b5c609c08b957"\n }\n },\n "GPv2Settlement": {\n "1": {\n "address": "0x9008D19f58AAbD9eD0D60971565AA8510560ab41",\n "transactionHash": "0xf49f90aa5a268c40001d1227b76bb4dd8247f18361fcad9fffd4a7a44f1320d3"\n },\n "4": {\n "address": "0x9008D19f58AAbD9eD0D60971565AA8510560ab41",\n "transactionHash": "0x609fa2e8f32c73c1f5dc21ff60a26238dacb50d4674d336c90d6950bdda17a21"\n },\n "5": {\n "address": "0x9008D19f58AAbD9eD0D60971565AA8510560ab41",\n "transactionHash": "0x982f089060ff66e19d0683ef1cc6a637297331a9ba95b65d8eb84b9f8dc64b04"\n },\n "100": {\n "address": "0x9008D19f58AAbD9eD0D60971565AA8510560ab41",\n "transactionHash": "0x9ddc538f89cd8433f4a19bc4de0de27e7c68a1d04a14b327185e4bba9af87133"\n }\n },\n "GPv2VaultRelayer": {\n "1": {\n "address": "0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",\n "transactionHash": "0xf49f90aa5a268c40001d1227b76bb4dd8247f18361fcad9fffd4a7a44f1320d3"\n },\n "4": {\n "address": "0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",\n "transactionHash": "0x609fa2e8f32c73c1f5dc21ff60a26238dacb50d4674d336c90d6950bdda17a21"\n },\n "5": {\n "address": "0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",\n "transactionHash": "0x982f089060ff66e19d0683ef1cc6a637297331a9ba95b65d8eb84b9f8dc64b04"\n },\n "100": {\n "address": "0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",\n "transactionHash": "0x9ddc538f89cd8433f4a19bc4de0de27e7c68a1d04a14b327185e4bba9af87133"\n }\n }\n}'),h=[r.MAINNET,r.GOERLI,r.GNOSIS_CHAIN],p=h.reduce((e,t)=>f({},e,{[t]:u[t].address}),{}),b="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";function l(e){return function(e){const{ethflowData:t}=e;if(!t)return e;const{userValidTo:n}=t;return f({},e,{validTo:n,owner:e.onchainUser||e.owner,sellToken:b})}(function(e){const{executedFeeAmount:t,executedSurplusFee:n}=e;return f({},e,{totalFee:null!=n?n:t})}(e))}class A 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 T=[408,425,429,500,502,503,504],O={numOfAttempts:10,maxDelay:Infinity,jitter:"none",retry:e=>!(e instanceof A)||T.includes(e.response.status)},I={tokensPerInterval:5,interval:"second"},N=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 D(e,{path:n,query:a,method:r,body:s},o,i){const c=`${e}${n}${a?"?"+a:""}`,d={method:r,body:s?JSON.stringify(s):void 0,headers:{Accept:"application/json","Content-Type":"application/json"}};return t(async()=>{await o.removeTokens(1);const e=await fetch(c,d),t=await N(e);return e.status>=200&&e.status<300?t:Promise.reject(new A(e,t))},i)}const _={[r.MAINNET]:"https://api.cow.fi/mainnet",[r.GNOSIS_CHAIN]:"https://api.cow.fi/xdai",[r.GOERLI]:"https://api.cow.fi/goerli"},S={[r.MAINNET]:"https://barn.api.cow.fi/mainnet",[r.GNOSIS_CHAIN]:"https://barn.api.cow.fi/xdai",[r.GOERLI]:"https://barn.api.cow.fi/goerli"};class R{constructor(t={}){this.context=void 0,this.rateLimiter=void 0,this.context=f({},o,t),this.rateLimiter=new e(t.limiterOpts||I)}getTrades(e,t={}){if(e.owner&&e.orderUid)return Promise.reject(new i("Cannot specify both owner and orderId"));const n=new URLSearchParams(e);return this.fetch({path:"/api/v1/trades",method:"GET",query:n},t)}getOrders({owner:e,offset:t=0,limit:n=1e3},a={}){const r=new URLSearchParams({offset:t.toString(),limit:n.toString()});return this.fetch({path:`/api/v1/account/${e}/orders`,method:"GET",query:r},a).then(e=>e.map(l))}getTxOrders(e,t={}){return this.fetch({path:`/api/v1/transactions/${e}/orders`,method:"GET"},t).then(e=>e.map(l))}getOrder(e,t={}){return this.fetch({path:`/api/v1/orders/${e}`,method:"GET"},t).then(e=>l(e))}getOrderMultiEnv(e,t={}){const{env:n}=this.getContextWithOverride(t),a=s.filter(e=>e!==n);let r=0;const o=n=>{const s=a[r];return n instanceof A&&404===n.response.status&&s?(r++,this.getOrder(e,f({},t,{env:s})).catch(o)):Promise.reject(n)};return this.getOrder(e,f({},t,{env:n})).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)}getOrderLink(e,t){const{chainId:n,env:a}=this.getContextWithOverride(t);return this.getApiBaseUrls(a)[n]+`/api/v1/orders/${e}`}getContextWithOverride(e={}){return f({},this.context,e)}getApiBaseUrls(e){return this.context.baseUrls?this.context.baseUrls:"prod"===e?_:S}fetch(e,t={}){const{chainId:n,env:a}=this.getContextWithOverride(t);return D(this.getApiBaseUrls(a)[n],e,this.rateLimiter,this.context.backoffOpts||O)}}var m,U,C,g,L,x,y,v,F,P,w,G,B,H;!function(e){e.ERC20="erc20",e.INTERNAL="internal"}(m||(m={})),function(e){e.EIP712="eip712",e.ETHSIGN="ethsign"}(U||(U={})),function(e){var t;(t=e.errorType||(e.errorType={})).NO_LIQUIDITY="NoLiquidity",t.UNSUPPORTED_TOKEN="UnsupportedToken",t.AMOUNT_IS_ZERO="AmountIsZero",t.SELL_AMOUNT_DOES_NOT_COVER_FEE="SellAmountDoesNotCoverFee"}(C||(C={})),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"}(g||(g={})),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"}(L||(L={})),function(e){e.MARKET="market",e.LIMIT="limit",e.LIQUIDITY="liquidity"}(x||(x={})),function(e){e.BUY="buy",e.SELL="sell"}(y||(y={})),function(e){var t;(t=e.errorType||(e.errorType={})).DUPLICATE_ORDER="DuplicateOrder",t.INSUFFICIENT_FEE="InsufficientFee",t.INSUFFICIENT_ALLOWANCE="InsufficientAllowance",t.INSUFFICIENT_BALANCE="InsufficientBalance",t.INSUFFICIENT_VALID_TO="InsufficientValidTo",t.EXCESSIVE_VALID_TO="ExcessiveValidTo",t.INVALID_SIGNATURE="InvalidSignature",t.TRANSFER_ETH_TO_CONTRACT="TransferEthToContract",t.TRANSFER_SIMULATION_FAILED="TransferSimulationFailed",t.UNSUPPORTED_TOKEN="UnsupportedToken",t.WRONG_OWNER="WrongOwner",t.MISSING_FROM="MissingFrom",t.SAME_BUY_AND_SELL_TOKEN="SameBuyAndSellToken",t.ZERO_AMOUNT="ZeroAmount",t.UNSUPPORTED_BUY_TOKEN_DESTINATION="UnsupportedBuyTokenDestination",t.UNSUPPORTED_SELL_TOKEN_SOURCE="UnsupportedSellTokenSource",t.UNSUPPORTED_ORDER_TYPE="UnsupportedOrderType",t.UNSUPPORTED_SIGNATURE="UnsupportedSignature",t.TOO_MANY_LIMIT_ORDERS="TooManyLimitOrders"}(v||(v={})),function(e){(e.kind||(e.kind={})).SELL="sell"}(F||(F={})),function(e){e.PRESIGNATURE_PENDING="presignaturePending",e.OPEN="open",e.FULFILLED="fulfilled",e.CANCELLED="cancelled",e.EXPIRED="expired"}(P||(P={})),function(e){e.FAST="fast",e.OPTIMAL="optimal"}(w||(w={})),function(e){var t;(t=e.errorType||(e.errorType={})).ALREADY_CANCELLED="AlreadyCancelled",t.ORDER_FULLY_EXECUTED="OrderFullyExecuted",t.ORDER_EXPIRED="OrderExpired",t.ON_CHAIN_ORDER="OnChainOrder",t.DUPLICATE_ORDER="DuplicateOrder",t.INSUFFICIENT_FEE="InsufficientFee",t.INSUFFICIENT_ALLOWANCE="InsufficientAllowance",t.INSUFFICIENT_BALANCE="InsufficientBalance",t.INSUFFICIENT_VALID_TO="InsufficientValidTo",t.EXCESSIVE_VALID_TO="ExcessiveValidTo",t.INVALID_SIGNATURE="InvalidSignature",t.TRANSFER_ETH_TO_CONTRACT="TransferEthToContract",t.TRANSFER_SIMULATION_FAILED="TransferSimulationFailed",t.UNSUPPORTED_TOKEN="UnsupportedToken",t.WRONG_OWNER="WrongOwner",t.SAME_BUY_AND_SELL_TOKEN="SameBuyAndSellToken",t.ZERO_AMOUNT="ZeroAmount",t.UNSUPPORTED_BUY_TOKEN_DESTINATION="UnsupportedBuyTokenDestination",t.UNSUPPORTED_SELL_TOKEN_SOURCE="UnsupportedSellTokenSource",t.UNSUPPORTED_ORDER_TYPE="UnsupportedOrderType",t.UNSUPPORTED_SIGNATURE="UnsupportedSignature"}(G||(G={})),function(e){e.ERC20="erc20",e.INTERNAL="internal",e.EXTERNAL="external"}(B||(B={})),function(e){e.EIP712="eip712",e.ETHSIGN="ethsign",e.PRESIGN="presign",e.EIP1271="eip1271"}(H||(H={}));let M,V,k,W=e=>e;const $=n(M||(M=W`
1
+ import"cross-fetch/polyfill";import{RateLimiter as e}from"limiter";import{backOff as t}from"exponential-backoff";import{gql as n,request as a}from"graphql-request";var r;!function(e){e[e.MAINNET=1]="MAINNET",e[e.GOERLI=5]="GOERLI",e[e.GNOSIS_CHAIN=100]="GNOSIS_CHAIN"}(r||(r={}));const s=["prod","staging"],o={env:"prod",chainId:r.MAINNET};class i extends Error{constructor(e,t){super(e),this.error_code=void 0,this.error_code=t}}const c="cow-sdk:",d="https://gnosis.mypinata.cloud/ipfs",E="https://api.pinata.cloud";function f(){return f=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},f.apply(this,arguments)}const{GPv2Settlement:u}=JSON.parse('{\n "GPv2AllowListAuthentication_Implementation": {\n "1": {\n "address": "0x9E7Ae8Bdba9AA346739792d219a808884996Db67",\n "transactionHash": "0x58340aa44119c74e48635fab0ac344170c6d6e8b42e5714baa4ba4e1651f63ad"\n },\n "4": {\n "address": "0x9E7Ae8Bdba9AA346739792d219a808884996Db67"\n },\n "5": {\n "address": "0x9E7Ae8Bdba9AA346739792d219a808884996Db67",\n "transactionHash": "0x24f4f80b46a17345011065f9ea2af823f582db56be81098b3b66cc2db9659ea7"\n },\n "100": {\n "address": "0x9E7Ae8Bdba9AA346739792d219a808884996Db67",\n "transactionHash": "0xe52d425fe34d6d5215ccfc9ddfa485d490b3018f0ee5bbed708f2d172044d60d"\n }\n },\n "GPv2AllowListAuthentication_Proxy": {\n "1": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0xb84bf720364f94c749f1ec1cdf0d4c44c70411b716459aaccfd24fc677013375"\n },\n "4": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0x57b2278fd3a13ab1b132031024475ba1a4e28d7d4d37f556134c84512b742c1f"\n },\n "5": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0x39dcf30baf887a5db54551a84de8bfdb6cf418bb284b09680d13aed17d5fa0c1"\n },\n "100": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0x1a2d87a05a94bc6680a4faee31bbafbd74e9ddb63dd3941c717b5c609c08b957"\n }\n },\n "GPv2AllowListAuthentication": {\n "1": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0xb84bf720364f94c749f1ec1cdf0d4c44c70411b716459aaccfd24fc677013375"\n },\n "4": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0x57b2278fd3a13ab1b132031024475ba1a4e28d7d4d37f556134c84512b742c1f"\n },\n "5": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0x39dcf30baf887a5db54551a84de8bfdb6cf418bb284b09680d13aed17d5fa0c1"\n },\n "100": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0x1a2d87a05a94bc6680a4faee31bbafbd74e9ddb63dd3941c717b5c609c08b957"\n }\n },\n "GPv2Settlement": {\n "1": {\n "address": "0x9008D19f58AAbD9eD0D60971565AA8510560ab41",\n "transactionHash": "0xf49f90aa5a268c40001d1227b76bb4dd8247f18361fcad9fffd4a7a44f1320d3"\n },\n "4": {\n "address": "0x9008D19f58AAbD9eD0D60971565AA8510560ab41",\n "transactionHash": "0x609fa2e8f32c73c1f5dc21ff60a26238dacb50d4674d336c90d6950bdda17a21"\n },\n "5": {\n "address": "0x9008D19f58AAbD9eD0D60971565AA8510560ab41",\n "transactionHash": "0x982f089060ff66e19d0683ef1cc6a637297331a9ba95b65d8eb84b9f8dc64b04"\n },\n "100": {\n "address": "0x9008D19f58AAbD9eD0D60971565AA8510560ab41",\n "transactionHash": "0x9ddc538f89cd8433f4a19bc4de0de27e7c68a1d04a14b327185e4bba9af87133"\n }\n },\n "GPv2VaultRelayer": {\n "1": {\n "address": "0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",\n "transactionHash": "0xf49f90aa5a268c40001d1227b76bb4dd8247f18361fcad9fffd4a7a44f1320d3"\n },\n "4": {\n "address": "0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",\n "transactionHash": "0x609fa2e8f32c73c1f5dc21ff60a26238dacb50d4674d336c90d6950bdda17a21"\n },\n "5": {\n "address": "0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",\n "transactionHash": "0x982f089060ff66e19d0683ef1cc6a637297331a9ba95b65d8eb84b9f8dc64b04"\n },\n "100": {\n "address": "0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",\n "transactionHash": "0x9ddc538f89cd8433f4a19bc4de0de27e7c68a1d04a14b327185e4bba9af87133"\n }\n }\n}'),h=[r.MAINNET,r.GOERLI,r.GNOSIS_CHAIN],b=h.reduce((e,t)=>f({},e,{[t]:u[t].address}),{}),p="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";function l(e){return function(e){const{ethflowData:t}=e;if(!t)return e;const{userValidTo:n}=t;return f({},e,{validTo:n,owner:e.onchainUser||e.owner,sellToken:p})}(function(e){const{executedFeeAmount:t,executedSurplusFee:n}=e;return f({},e,{totalFee:null!=n?n:t})}(e))}class A 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 O=[408,425,429,500,502,503,504],T={numOfAttempts:10,maxDelay:Infinity,jitter:"none",retry:e=>!(e instanceof A)||O.includes(e.response.status)},I={tokensPerInterval:5,interval:"second"},N=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 D(e,{path:n,query:a,method:r,body:s},o,i){const c=`${e}${n}${a?"?"+a:""}`,d={method:r,body:s?JSON.stringify(s):void 0,headers:{Accept:"application/json","Content-Type":"application/json"}};return t(async()=>{await o.removeTokens(1);const e=await fetch(c,d),t=await N(e);return e.status>=200&&e.status<300?t:Promise.reject(new A(e,t))},i)}const _={[r.MAINNET]:"https://api.cow.fi/mainnet",[r.GNOSIS_CHAIN]:"https://api.cow.fi/xdai",[r.GOERLI]:"https://api.cow.fi/goerli"},S={[r.MAINNET]:"https://barn.api.cow.fi/mainnet",[r.GNOSIS_CHAIN]:"https://barn.api.cow.fi/xdai",[r.GOERLI]:"https://barn.api.cow.fi/goerli"};function R(e){return Object.keys(e).reduce((t,n)=>{const a=e[n];return void 0!==a&&(t[n]=a),t},{})}class m{constructor(t={}){this.context=void 0,this.rateLimiter=void 0,this.context=f({},o,t),this.rateLimiter=new e(t.limiterOpts||I)}getTrades(e,t={}){if(e.owner&&e.orderUid)return Promise.reject(new i("Cannot specify both owner and orderId"));const n=new URLSearchParams(R(e));return this.fetch({path:"/api/v1/trades",method:"GET",query:n},t)}getOrders({owner:e,offset:t=0,limit:n=1e3},a={}){const r=new URLSearchParams(R({offset:t.toString(),limit:n.toString()}));return this.fetch({path:`/api/v1/account/${e}/orders`,method:"GET",query:r},a).then(e=>e.map(l))}getTxOrders(e,t={}){return this.fetch({path:`/api/v1/transactions/${e}/orders`,method:"GET"},t).then(e=>e.map(l))}getOrder(e,t={}){return this.fetch({path:`/api/v1/orders/${e}`,method:"GET"},t).then(e=>l(e))}getOrderMultiEnv(e,t={}){const{env:n}=this.getContextWithOverride(t),a=s.filter(e=>e!==n);let r=0;const o=n=>{const s=a[r];return n instanceof A&&404===n.response.status&&s?(r++,this.getOrder(e,f({},t,{env:s})).catch(o)):Promise.reject(n)};return this.getOrder(e,f({},t,{env:n})).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)}getOrderLink(e,t){const{chainId:n,env:a}=this.getContextWithOverride(t);return this.getApiBaseUrls(a)[n]+`/api/v1/orders/${e}`}getContextWithOverride(e={}){return f({},this.context,e)}getApiBaseUrls(e){return this.context.baseUrls?this.context.baseUrls:"prod"===e?_:S}fetch(e,t={}){const{chainId:n,env:a}=this.getContextWithOverride(t);return D(this.getApiBaseUrls(a)[n],e,this.rateLimiter,this.context.backoffOpts||T)}}var U,C,g,L,x,y,v,F,P,w,G,B,H,M;!function(e){e.ERC20="erc20",e.INTERNAL="internal"}(U||(U={})),function(e){e.EIP712="eip712",e.ETHSIGN="ethsign"}(C||(C={})),function(e){var t;(t=e.errorType||(e.errorType={})).NO_LIQUIDITY="NoLiquidity",t.UNSUPPORTED_TOKEN="UnsupportedToken",t.AMOUNT_IS_ZERO="AmountIsZero",t.SELL_AMOUNT_DOES_NOT_COVER_FEE="SellAmountDoesNotCoverFee"}(g||(g={})),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"}(L||(L={})),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"}(x||(x={})),function(e){e.MARKET="market",e.LIMIT="limit",e.LIQUIDITY="liquidity"}(y||(y={})),function(e){e.BUY="buy",e.SELL="sell"}(v||(v={})),function(e){var t;(t=e.errorType||(e.errorType={})).DUPLICATE_ORDER="DuplicateOrder",t.INSUFFICIENT_FEE="InsufficientFee",t.INSUFFICIENT_ALLOWANCE="InsufficientAllowance",t.INSUFFICIENT_BALANCE="InsufficientBalance",t.INSUFFICIENT_VALID_TO="InsufficientValidTo",t.EXCESSIVE_VALID_TO="ExcessiveValidTo",t.INVALID_SIGNATURE="InvalidSignature",t.TRANSFER_ETH_TO_CONTRACT="TransferEthToContract",t.TRANSFER_SIMULATION_FAILED="TransferSimulationFailed",t.UNSUPPORTED_TOKEN="UnsupportedToken",t.WRONG_OWNER="WrongOwner",t.MISSING_FROM="MissingFrom",t.SAME_BUY_AND_SELL_TOKEN="SameBuyAndSellToken",t.ZERO_AMOUNT="ZeroAmount",t.UNSUPPORTED_BUY_TOKEN_DESTINATION="UnsupportedBuyTokenDestination",t.UNSUPPORTED_SELL_TOKEN_SOURCE="UnsupportedSellTokenSource",t.UNSUPPORTED_ORDER_TYPE="UnsupportedOrderType",t.UNSUPPORTED_SIGNATURE="UnsupportedSignature",t.TOO_MANY_LIMIT_ORDERS="TooManyLimitOrders"}(F||(F={})),function(e){(e.kind||(e.kind={})).SELL="sell"}(P||(P={})),function(e){e.PRESIGNATURE_PENDING="presignaturePending",e.OPEN="open",e.FULFILLED="fulfilled",e.CANCELLED="cancelled",e.EXPIRED="expired"}(w||(w={})),function(e){e.FAST="fast",e.OPTIMAL="optimal"}(G||(G={})),function(e){var t;(t=e.errorType||(e.errorType={})).ALREADY_CANCELLED="AlreadyCancelled",t.ORDER_FULLY_EXECUTED="OrderFullyExecuted",t.ORDER_EXPIRED="OrderExpired",t.ON_CHAIN_ORDER="OnChainOrder",t.DUPLICATE_ORDER="DuplicateOrder",t.INSUFFICIENT_FEE="InsufficientFee",t.INSUFFICIENT_ALLOWANCE="InsufficientAllowance",t.INSUFFICIENT_BALANCE="InsufficientBalance",t.INSUFFICIENT_VALID_TO="InsufficientValidTo",t.EXCESSIVE_VALID_TO="ExcessiveValidTo",t.INVALID_SIGNATURE="InvalidSignature",t.TRANSFER_ETH_TO_CONTRACT="TransferEthToContract",t.TRANSFER_SIMULATION_FAILED="TransferSimulationFailed",t.UNSUPPORTED_TOKEN="UnsupportedToken",t.WRONG_OWNER="WrongOwner",t.SAME_BUY_AND_SELL_TOKEN="SameBuyAndSellToken",t.ZERO_AMOUNT="ZeroAmount",t.UNSUPPORTED_BUY_TOKEN_DESTINATION="UnsupportedBuyTokenDestination",t.UNSUPPORTED_SELL_TOKEN_SOURCE="UnsupportedSellTokenSource",t.UNSUPPORTED_ORDER_TYPE="UnsupportedOrderType",t.UNSUPPORTED_SIGNATURE="UnsupportedSignature"}(B||(B={})),function(e){e.ERC20="erc20",e.INTERNAL="internal",e.EXTERNAL="external"}(H||(H={})),function(e){e.EIP712="eip712",e.ETHSIGN="ethsign",e.PRESIGN="presign",e.EIP1271="eip1271"}(M||(M={}));let V,k,W,$=e=>e;const j=n(V||(V=$`
2
2
  query Totals {
3
3
  totals {
4
4
  tokens
@@ -11,19 +11,19 @@ import"cross-fetch/polyfill";import{RateLimiter as e}from"limiter";import{backOf
11
11
  feesEth
12
12
  }
13
13
  }
14
- `)),q=n(V||(V=W`
14
+ `)),q=n(k||(k=$`
15
15
  query LastDaysVolume($days: Int!) {
16
16
  dailyTotals(orderBy: timestamp, orderDirection: desc, first: $days) {
17
17
  timestamp
18
18
  volumeUsd
19
19
  }
20
20
  }
21
- `)),Y=n(k||(k=W`
21
+ `)),Y=n(W||(W=$`
22
22
  query LastHoursVolume($hours: Int!) {
23
23
  hourlyTotals(orderBy: timestamp, orderDirection: desc, first: $hours) {
24
24
  timestamp
25
25
  volumeUsd
26
26
  }
27
27
  }
28
- `)),j={[r.MAINNET]:"https://api.thegraph.com/subgraphs/name/cowprotocol/cow",[r.GNOSIS_CHAIN]:"https://api.thegraph.com/subgraphs/name/cowprotocol/cow-gc",[r.GOERLI]:"https://api.thegraph.com/subgraphs/name/cowprotocol/cow-goerli"},K={[r.MAINNET]:"https://api.thegraph.com/subgraphs/name/cowprotocol/cow-staging",[r.GNOSIS_CHAIN]:"https://api.thegraph.com/subgraphs/name/cowprotocol/cow-gc-staging",[r.GOERLI]:""};class Q{constructor(e={}){this.API_NAME="CoW Protocol Subgraph",this.context=void 0,this.context=f({},o,e)}async getTotals(e={}){return(await this.runQuery($,void 0,e)).totals[0]}async getLastDaysVolume(e,t={}){return this.runQuery(q,{days:e},t)}async getLastHoursVolume(e,t={}){return this.runQuery(Y,{hours:e},t)}async runQuery(e,t=undefined,n={}){const{chainId:r,env:s}=this.getContextWithOverride(n),o=this.getEnvConfigs(s)[r];try{return await a(o,e,t)}catch(n){throw console.error(`[subgraph:${this.API_NAME}]`,n),new i(`Error running query: ${e}. Variables: ${JSON.stringify(t)}. API: ${o}. Inner Error: ${n}`)}}getContextWithOverride(e={}){return f({},this.context,e)}getEnvConfigs(e){return this.context.baseUrls?this.context.baseUrls:"prod"===e?j:K}}const X=()=>import("./utils-471122e4.js");class Z{static async signOrder(e,t,n){const{signOrder:a}=await X();return a(e,t,n)}static async signOrderCancellation(e,t,n){const{signOrderCancellation:a}=await X();return a(e,t,n)}static async signOrderCancellations(e,t,n){const{signOrderCancellations:a}=await X();return a(e,t,n)}static async getDomain(e){const{getDomain:t}=await X();return t(e)}}export{h as A,m as B,i as C,o as D,U as E,C as F,_ as O,w as P,G as R,r as S,f as _,p as a,s as b,d as c,E as d,S as e,R as f,g,L as h,x as i,y as j,v as k,c as l,F as m,P as n,B as o,H as p,A as q,O as r,I as s,D as t,j as u,K as v,Q as w,Z as x};
29
- //# sourceMappingURL=index-c1597896.js.map
28
+ `)),K={[r.MAINNET]:"https://api.thegraph.com/subgraphs/name/cowprotocol/cow",[r.GNOSIS_CHAIN]:"https://api.thegraph.com/subgraphs/name/cowprotocol/cow-gc",[r.GOERLI]:"https://api.thegraph.com/subgraphs/name/cowprotocol/cow-goerli"},Q={[r.MAINNET]:"https://api.thegraph.com/subgraphs/name/cowprotocol/cow-staging",[r.GNOSIS_CHAIN]:"https://api.thegraph.com/subgraphs/name/cowprotocol/cow-gc-staging",[r.GOERLI]:""};class X{constructor(e={}){this.API_NAME="CoW Protocol Subgraph",this.context=void 0,this.context=f({},o,e)}async getTotals(e={}){return(await this.runQuery(j,void 0,e)).totals[0]}async getLastDaysVolume(e,t={}){return this.runQuery(q,{days:e},t)}async getLastHoursVolume(e,t={}){return this.runQuery(Y,{hours:e},t)}async runQuery(e,t=undefined,n={}){const{chainId:r,env:s}=this.getContextWithOverride(n),o=this.getEnvConfigs(s)[r];try{return await a(o,e,t)}catch(n){throw console.error(`[subgraph:${this.API_NAME}]`,n),new i(`Error running query: ${e}. Variables: ${JSON.stringify(t)}. API: ${o}. Inner Error: ${n}`)}}getContextWithOverride(e={}){return f({},this.context,e)}getEnvConfigs(e){return this.context.baseUrls?this.context.baseUrls:"prod"===e?K:Q}}const Z=()=>import("./utils-7b0a629b.js");class J{static async signOrder(e,t,n){const{signOrder:a}=await Z();return a(e,t,n)}static async signOrderCancellation(e,t,n){const{signOrderCancellation:a}=await Z();return a(e,t,n)}static async signOrderCancellations(e,t,n){const{signOrderCancellations:a}=await Z();return a(e,t,n)}static async getDomain(e){const{getDomain:t}=await Z();return t(e)}}export{h as A,U as B,i as C,o as D,C as E,g as F,_ as O,G as P,B as R,r as S,f as _,b as a,s as b,d as c,E as d,S as e,m as f,L as g,x as h,y as i,v as j,F as k,c as l,P as m,w as n,H as o,M as p,A as q,T as r,I as s,D as t,K as u,Q as v,X as w,J as x};
29
+ //# sourceMappingURL=index-ed2b18ee.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-ed2b18ee.js","sources":["../src/common/chains.ts","../src/common/configs.ts","../src/common/cow-error.ts","../src/common/ipfs.ts","../src/common/consts.ts","../src/order-book/transformOrder.ts","../src/order-book/request.ts","../src/order-book/api.ts","../src/order-book/generated/models/BuyTokenDestination.ts","../src/order-book/generated/models/EcdsaSigningScheme.ts","../src/order-book/generated/models/FeeAndQuoteError.ts","../src/order-book/generated/models/OnchainOrderData.ts","../src/order-book/generated/models/OrderCancellationError.ts","../src/order-book/generated/models/OrderClass.ts","../src/order-book/generated/models/OrderKind.ts","../src/order-book/generated/models/OrderPostError.ts","../src/order-book/generated/models/OrderQuoteSide.ts","../src/order-book/generated/models/OrderStatus.ts","../src/order-book/generated/models/PriceQuality.ts","../src/order-book/generated/models/ReplaceOrderError.ts","../src/order-book/generated/models/SellTokenSource.ts","../src/order-book/generated/models/SigningScheme.ts","../src/subgraph/queries.ts","../src/subgraph/api.ts","../src/order-signing/orderSigningUtils.ts"],"sourcesContent":["export enum SupportedChainId {\n MAINNET = 1,\n GOERLI = 5,\n GNOSIS_CHAIN = 100,\n}\n","import { SupportedChainId } from './chains'\nimport { BackoffOptions } from 'exponential-backoff'\nimport { RateLimiterOpts } from 'limiter/dist/esm'\n\nexport interface IpfsConfig {\n uri?: string\n writeUri?: string\n readUri?: string\n pinataApiKey?: string\n pinataApiSecret?: string\n}\n\nexport interface RequestOptions {\n limiterOpts?: RateLimiterOpts\n backoffOpts?: BackoffOptions\n}\n\nexport type CowEnv = 'prod' | 'staging'\n\nexport type PartialApiContext = Partial<ApiContext>\n\nexport type ApiBaseUrls = Record<SupportedChainId, string>\n\nexport interface ApiContext {\n chainId: SupportedChainId\n env: CowEnv\n baseUrls?: ApiBaseUrls\n}\n\nexport const ENVS_LIST: CowEnv[] = ['prod', 'staging']\n\nexport const DEFAULT_COW_API_CONTEXT: ApiContext = {\n env: 'prod',\n chainId: SupportedChainId.MAINNET,\n}\n","export class CowError extends Error {\n error_code?: string\n\n constructor(message: string, error_code?: string) {\n super(message)\n this.error_code = error_code\n }\n}\n\nexport const logPrefix = 'cow-sdk:'\n","export const DEFAULT_IPFS_READ_URI = 'https://gnosis.mypinata.cloud/ipfs'\nexport const DEFAULT_IPFS_WRITE_URI = 'https://api.pinata.cloud'\n","import { SupportedChainId } from './chains'\nimport contractNetworks from '@cowprotocol/contracts/networks.json'\n\nconst { GPv2Settlement } = JSON.parse(contractNetworks as unknown as string) as typeof contractNetworks\n\nexport const ALL_SUPPORTED_CHAIN_IDS: SupportedChainId[] = [\n SupportedChainId.MAINNET,\n SupportedChainId.GOERLI,\n SupportedChainId.GNOSIS_CHAIN,\n]\n\nexport const COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS = ALL_SUPPORTED_CHAIN_IDS.reduce<Record<number, string>>(\n (acc, chainId) => ({\n ...acc,\n [chainId]: GPv2Settlement[chainId].address,\n }),\n {}\n)\n","import { Order } from './generated'\nimport { EnrichedOrder } from './types'\n\nexport const BUY_ETH_ADDRESS = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE'\n\nexport function transformOrder(order: Order): EnrichedOrder {\n return transformEthFlowOrder(addTotalFeeToOrder(order))\n}\n\n/**\n * The executedSurplusFee represents exactly the fee that was charged (regardless of the fee signed with the order).\n * So, while the protocol currently does not allow placing a limit order with any other fee than 0 - the backend is designed to support these kinds of orders for the future.\n */\nfunction addTotalFeeToOrder(dto: Order): EnrichedOrder {\n const { executedFeeAmount, executedSurplusFee } = dto\n const totalFee = executedSurplusFee ?? executedFeeAmount\n\n return {\n ...dto,\n totalFee,\n }\n}\n\n/**\n * Transform order field for Native EthFlow orders\n *\n * A no-op for regular orders\n * For Native EthFlow, due to how the contract is setup:\n * - sellToken set to Native token address\n * - owner set to `onchainUser`\n * - validTo set to `ethflowData.userValidTo`\n */\nfunction transformEthFlowOrder(order: EnrichedOrder): EnrichedOrder {\n const { ethflowData } = order\n\n if (!ethflowData) {\n return order\n }\n\n const { userValidTo: validTo } = ethflowData\n const owner = order.onchainUser || order.owner\n const sellToken = BUY_ETH_ADDRESS\n\n return { ...order, validTo, owner, sellToken }\n}\n","import { backOff, BackoffOptions } from 'exponential-backoff'\nimport { RateLimiter, RateLimiterOpts } from 'limiter'\n\nexport class OrderBookApiError<T = unknown> extends Error {\n constructor(public readonly response: Response, public readonly body: T) {\n super(typeof body === 'string' ? body : response.statusText)\n }\n}\n\nconst REQUEST_TIMEOUT = 408\nconst TOO_EARLY = 425\nconst TOO_MANY_REQUESTS = 429\nconst INTERNAL_SERVER_ERROR = 500\nconst BAD_GATEWAY = 502\nconst SERVICE_UNAVAILABLE = 503\nconst GATEWAY_TIMEOUT = 504\n\nconst STATUS_CODES_TO_RETRY = [\n REQUEST_TIMEOUT,\n TOO_EARLY,\n TOO_MANY_REQUESTS,\n INTERNAL_SERVER_ERROR,\n BAD_GATEWAY,\n SERVICE_UNAVAILABLE,\n GATEWAY_TIMEOUT,\n]\n\n// See config in https://www.npmjs.com/package/@insertish/exponential-backoff\nexport const DEFAULT_BACKOFF_OPTIONS: BackoffOptions = {\n numOfAttempts: 10,\n maxDelay: Infinity,\n jitter: 'none',\n retry: (error: Error | OrderBookApiError) => {\n if (error instanceof OrderBookApiError) {\n return STATUS_CODES_TO_RETRY.includes(error.response.status)\n }\n\n return true\n },\n}\n\n// CowSwap order-book API is limited by 5 requests per second from one IP\nexport const DEFAULT_LIMITER_OPTIONS: RateLimiterOpts = {\n tokensPerInterval: 5,\n interval: 'second',\n}\n\nexport interface FetchParams {\n path: string\n method: 'GET' | 'POST' | 'DELETE' | 'PUT'\n body?: unknown\n query?: URLSearchParams\n}\n\nconst getResponseBody = async (response: Response): Promise<unknown> => {\n if (response.status !== 204) {\n try {\n const contentType = response.headers.get('Content-Type')\n if (contentType) {\n if (contentType.toLowerCase().startsWith('application/json')) {\n return await response.json()\n } else {\n return await response.text()\n }\n }\n } catch (error) {\n console.error(error)\n }\n }\n return undefined\n}\n\nexport async function request<T>(\n baseUrl: string,\n { path, query, method, body }: FetchParams,\n rateLimiter: RateLimiter,\n backoffOpts: BackoffOptions\n): Promise<T> {\n const queryString = query ? '?' + query : ''\n const headers = {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n }\n\n const url = `${baseUrl}${path}${queryString}`\n const init: RequestInit = { method, body: body ? JSON.stringify(body) : undefined, headers }\n\n return backOff<T>(async () => {\n await rateLimiter.removeTokens(1)\n\n const response = await fetch(url, init)\n const responseBody = (await getResponseBody(response)) as T\n\n // Successful response\n if (response.status >= 200 && response.status < 300) {\n return responseBody\n }\n\n return Promise.reject(new OrderBookApiError(response, responseBody))\n }, backoffOpts)\n}\n","import 'cross-fetch/polyfill'\nimport {\n Address,\n NativePriceResponse,\n Order,\n OrderCancellations,\n OrderCreation,\n OrderQuoteRequest,\n OrderQuoteResponse,\n Trade,\n TransactionHash,\n UID,\n} from './generated'\nimport { CowError } from '../common/cow-error'\nimport {\n ApiContext,\n CowEnv,\n DEFAULT_COW_API_CONTEXT,\n ApiBaseUrls,\n ENVS_LIST,\n PartialApiContext,\n RequestOptions,\n} from '../common/configs'\nimport { transformOrder } from './transformOrder'\nimport { EnrichedOrder } from './types'\nimport { SupportedChainId } from '../common/chains'\nimport { RateLimiter } from 'limiter'\nimport { DEFAULT_BACKOFF_OPTIONS, DEFAULT_LIMITER_OPTIONS, FetchParams, OrderBookApiError, request } from './request'\n\nexport const ORDER_BOOK_PROD_CONFIG: ApiBaseUrls = {\n [SupportedChainId.MAINNET]: 'https://api.cow.fi/mainnet',\n [SupportedChainId.GNOSIS_CHAIN]: 'https://api.cow.fi/xdai',\n [SupportedChainId.GOERLI]: 'https://api.cow.fi/goerli',\n}\n\nexport const ORDER_BOOK_STAGING_CONFIG: ApiBaseUrls = {\n [SupportedChainId.MAINNET]: 'https://barn.api.cow.fi/mainnet',\n [SupportedChainId.GNOSIS_CHAIN]: 'https://barn.api.cow.fi/xdai',\n [SupportedChainId.GOERLI]: 'https://barn.api.cow.fi/goerli',\n}\n\nfunction cleanObjectFromUndefinedValues(obj: Record<string, string>): typeof obj {\n return Object.keys(obj).reduce((acc, key) => {\n const val = obj[key]\n if (typeof val !== 'undefined') acc[key] = val\n return acc\n }, {} as typeof obj)\n}\n\nexport class OrderBookApi {\n public context: ApiContext & RequestOptions\n\n private rateLimiter: RateLimiter\n\n constructor(context: PartialApiContext & RequestOptions = {}) {\n this.context = { ...DEFAULT_COW_API_CONTEXT, ...context }\n this.rateLimiter = new RateLimiter(context.limiterOpts || DEFAULT_LIMITER_OPTIONS)\n }\n\n getTrades(\n request: { owner?: Address; orderUid?: UID },\n contextOverride: PartialApiContext = {}\n ): Promise<Array<Trade>> {\n if (request.owner && request.orderUid) {\n return Promise.reject(new CowError('Cannot specify both owner and orderId'))\n }\n\n const query = new URLSearchParams(cleanObjectFromUndefinedValues(request))\n\n return this.fetch({ path: '/api/v1/trades', method: 'GET', query }, contextOverride)\n }\n\n getOrders(\n {\n owner,\n offset = 0,\n limit = 1000,\n }: {\n owner: Address\n offset?: number\n limit?: number\n },\n contextOverride: PartialApiContext = {}\n ): Promise<Array<EnrichedOrder>> {\n const query = new URLSearchParams(\n cleanObjectFromUndefinedValues({ offset: offset.toString(), limit: limit.toString() })\n )\n\n return this.fetch<Array<EnrichedOrder>>(\n { path: `/api/v1/account/${owner}/orders`, method: 'GET', query },\n contextOverride\n ).then((orders) => {\n return orders.map(transformOrder)\n })\n }\n\n getTxOrders(txHash: TransactionHash, contextOverride: PartialApiContext = {}): Promise<Array<EnrichedOrder>> {\n return this.fetch<Array<EnrichedOrder>>(\n { path: `/api/v1/transactions/${txHash}/orders`, method: 'GET' },\n contextOverride\n ).then((orders) => {\n return orders.map(transformOrder)\n })\n }\n\n getOrder(uid: UID, contextOverride: PartialApiContext = {}): Promise<EnrichedOrder> {\n return this.fetch<Order>({ path: `/api/v1/orders/${uid}`, method: 'GET' }, contextOverride).then((order) => {\n return transformOrder(order)\n })\n }\n\n getOrderMultiEnv(uid: UID, contextOverride: PartialApiContext = {}): Promise<EnrichedOrder> {\n const { env } = this.getContextWithOverride(contextOverride)\n const otherEnvs = ENVS_LIST.filter((i) => i !== env)\n\n let attemptsCount = 0\n\n const fallback = (error: Error | OrderBookApiError): Promise<EnrichedOrder> => {\n const nextEnv = otherEnvs[attemptsCount]\n\n if (error instanceof OrderBookApiError && error.response.status === 404 && nextEnv) {\n attemptsCount++\n\n return this.getOrder(uid, { ...contextOverride, env: nextEnv }).catch(fallback)\n }\n\n return Promise.reject(error)\n }\n\n return this.getOrder(uid, { ...contextOverride, env }).catch(fallback)\n }\n\n getQuote(requestBody: OrderQuoteRequest, contextOverride: PartialApiContext = {}): Promise<OrderQuoteResponse> {\n return this.fetch({ path: '/api/v1/quote', method: 'POST', body: requestBody }, contextOverride)\n }\n\n sendSignedOrderCancellations(\n requestBody: OrderCancellations,\n contextOverride: PartialApiContext = {}\n ): Promise<void> {\n return this.fetch({ path: '/api/v1/orders', method: 'DELETE', body: requestBody }, contextOverride)\n }\n\n sendOrder(requestBody: OrderCreation, contextOverride: PartialApiContext = {}): Promise<UID> {\n return this.fetch({ path: '/api/v1/orders', method: 'POST', body: requestBody }, contextOverride)\n }\n\n getNativePrice(tokenAddress: Address, contextOverride: PartialApiContext = {}): Promise<NativePriceResponse> {\n return this.fetch({ path: `/api/v1/token/${tokenAddress}/native_price`, method: 'GET' }, contextOverride)\n }\n\n getOrderLink(uid: UID, contextOverride?: PartialApiContext): string {\n const { chainId, env } = this.getContextWithOverride(contextOverride)\n return this.getApiBaseUrls(env)[chainId] + `/api/v1/orders/${uid}`\n }\n\n private getContextWithOverride(contextOverride: PartialApiContext = {}): ApiContext & RequestOptions {\n return { ...this.context, ...contextOverride }\n }\n\n private getApiBaseUrls(env: CowEnv): ApiBaseUrls {\n if (this.context.baseUrls) return this.context.baseUrls\n\n return env === 'prod' ? ORDER_BOOK_PROD_CONFIG : ORDER_BOOK_STAGING_CONFIG\n }\n\n private fetch<T>(params: FetchParams, contextOverride: PartialApiContext = {}): Promise<T> {\n const { chainId, env } = this.getContextWithOverride(contextOverride)\n const baseUrl = this.getApiBaseUrls(env)[chainId]\n const backoffOpts = this.context.backoffOpts || DEFAULT_BACKOFF_OPTIONS\n\n return request(baseUrl, params, this.rateLimiter, backoffOpts)\n }\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Where should the buy token be transfered to?\n */\nexport enum BuyTokenDestination {\n ERC20 = 'erc20',\n INTERNAL = 'internal',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * How was the order signed?\n */\nexport enum EcdsaSigningScheme {\n EIP712 = 'eip712',\n ETHSIGN = 'ethsign',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport type FeeAndQuoteError = {\n errorType: FeeAndQuoteError.errorType;\n description: string;\n};\n\nexport namespace FeeAndQuoteError {\n\n export enum errorType {\n NO_LIQUIDITY = 'NoLiquidity',\n UNSUPPORTED_TOKEN = 'UnsupportedToken',\n AMOUNT_IS_ZERO = 'AmountIsZero',\n SELL_AMOUNT_DOES_NOT_COVER_FEE = 'SellAmountDoesNotCoverFee',\n }\n\n\n}\n\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nimport type { Address } from './Address';\n\nexport type OnchainOrderData = {\n /**\n * If orders are placed as onchain orders, the owner of the order might\n * be a smart contract, but not the user placing the order. The\n * actual user will be provided in this field\n *\n */\n sender: Address;\n /**\n * Describes the error, if the order placement was not\n * successful. This could happen, for example, if the\n * valid_to is too high, or no valid quote was found or generated\n *\n */\n placementError?: OnchainOrderData.placementError;\n};\n\nexport namespace OnchainOrderData {\n\n /**\n * Describes the error, if the order placement was not\n * successful. This could happen, for example, if the\n * valid_to is too high, or no valid quote was found or generated\n *\n */\n export enum placementError {\n QUOTE_NOT_FOUND = 'QuoteNotFound',\n VALID_TO_TOO_FAR_IN_FUTURE = 'ValidToTooFarInFuture',\n PRE_VALIDATION_ERROR = 'PreValidationError',\n }\n\n\n}\n\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport type OrderCancellationError = {\n errorType: OrderCancellationError.errorType;\n description: string;\n};\n\nexport namespace OrderCancellationError {\n\n export enum errorType {\n INVALID_SIGNATURE = 'InvalidSignature',\n WRONG_OWNER = 'WrongOwner',\n ORDER_NOT_FOUND = 'OrderNotFound',\n ALREADY_CANCELLED = 'AlreadyCancelled',\n ORDER_FULLY_EXECUTED = 'OrderFullyExecuted',\n ORDER_EXPIRED = 'OrderExpired',\n ON_CHAIN_ORDER = 'OnChainOrder',\n }\n\n\n}\n\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Order class\n */\nexport enum OrderClass {\n MARKET = 'market',\n LIMIT = 'limit',\n LIQUIDITY = 'liquidity',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Is this a buy order or sell order?\n */\nexport enum OrderKind {\n BUY = 'buy',\n SELL = 'sell',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport type OrderPostError = {\n errorType: OrderPostError.errorType;\n description: string;\n};\n\nexport namespace OrderPostError {\n\n export enum errorType {\n DUPLICATE_ORDER = 'DuplicateOrder',\n INSUFFICIENT_FEE = 'InsufficientFee',\n INSUFFICIENT_ALLOWANCE = 'InsufficientAllowance',\n INSUFFICIENT_BALANCE = 'InsufficientBalance',\n INSUFFICIENT_VALID_TO = 'InsufficientValidTo',\n EXCESSIVE_VALID_TO = 'ExcessiveValidTo',\n INVALID_SIGNATURE = 'InvalidSignature',\n TRANSFER_ETH_TO_CONTRACT = 'TransferEthToContract',\n TRANSFER_SIMULATION_FAILED = 'TransferSimulationFailed',\n UNSUPPORTED_TOKEN = 'UnsupportedToken',\n WRONG_OWNER = 'WrongOwner',\n MISSING_FROM = 'MissingFrom',\n SAME_BUY_AND_SELL_TOKEN = 'SameBuyAndSellToken',\n ZERO_AMOUNT = 'ZeroAmount',\n UNSUPPORTED_BUY_TOKEN_DESTINATION = 'UnsupportedBuyTokenDestination',\n UNSUPPORTED_SELL_TOKEN_SOURCE = 'UnsupportedSellTokenSource',\n UNSUPPORTED_ORDER_TYPE = 'UnsupportedOrderType',\n UNSUPPORTED_SIGNATURE = 'UnsupportedSignature',\n TOO_MANY_LIMIT_ORDERS = 'TooManyLimitOrders',\n }\n\n\n}\n\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nimport type { TokenAmount } from './TokenAmount';\n\n/**\n * The buy or sell side when quoting an order.\n */\nexport type OrderQuoteSide = ({\n kind: OrderQuoteSide.kind;\n /**\n * The total amount that is available for the order. From this value, the fee\n * is deducted and the buy amount is calculated.\n *\n */\n sellAmountBeforeFee: TokenAmount;\n} | {\n kind: OrderQuoteSide.kind;\n /**\n * The sell amount for the order.\n */\n sellAmountAfterFee: TokenAmount;\n} | {\n kind: OrderQuoteSide.kind;\n /**\n * The buy amount for the order.\n */\n buyAmountAfterFee: TokenAmount;\n});\n\nexport namespace OrderQuoteSide {\n\n export enum kind {\n SELL = 'sell',\n }\n\n\n}\n\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * The current order status\n */\nexport enum OrderStatus {\n PRESIGNATURE_PENDING = 'presignaturePending',\n OPEN = 'open',\n FULFILLED = 'fulfilled',\n CANCELLED = 'cancelled',\n EXPIRED = 'expired',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * How good should the price estimate be?\n * Note that orders are supposed to be created from \"optimal\" price estimates.\n *\n */\nexport enum PriceQuality {\n FAST = 'fast',\n OPTIMAL = 'optimal',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport type ReplaceOrderError = {\n errorType: ReplaceOrderError.errorType;\n description: string;\n};\n\nexport namespace ReplaceOrderError {\n\n export enum errorType {\n ALREADY_CANCELLED = 'AlreadyCancelled',\n ORDER_FULLY_EXECUTED = 'OrderFullyExecuted',\n ORDER_EXPIRED = 'OrderExpired',\n ON_CHAIN_ORDER = 'OnChainOrder',\n DUPLICATE_ORDER = 'DuplicateOrder',\n INSUFFICIENT_FEE = 'InsufficientFee',\n INSUFFICIENT_ALLOWANCE = 'InsufficientAllowance',\n INSUFFICIENT_BALANCE = 'InsufficientBalance',\n INSUFFICIENT_VALID_TO = 'InsufficientValidTo',\n EXCESSIVE_VALID_TO = 'ExcessiveValidTo',\n INVALID_SIGNATURE = 'InvalidSignature',\n TRANSFER_ETH_TO_CONTRACT = 'TransferEthToContract',\n TRANSFER_SIMULATION_FAILED = 'TransferSimulationFailed',\n UNSUPPORTED_TOKEN = 'UnsupportedToken',\n WRONG_OWNER = 'WrongOwner',\n SAME_BUY_AND_SELL_TOKEN = 'SameBuyAndSellToken',\n ZERO_AMOUNT = 'ZeroAmount',\n UNSUPPORTED_BUY_TOKEN_DESTINATION = 'UnsupportedBuyTokenDestination',\n UNSUPPORTED_SELL_TOKEN_SOURCE = 'UnsupportedSellTokenSource',\n UNSUPPORTED_ORDER_TYPE = 'UnsupportedOrderType',\n UNSUPPORTED_SIGNATURE = 'UnsupportedSignature',\n }\n\n\n}\n\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Where should the sell token be drawn from?\n */\nexport enum SellTokenSource {\n ERC20 = 'erc20',\n INTERNAL = 'internal',\n EXTERNAL = 'external',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * How was the order signed?\n */\nexport enum SigningScheme {\n EIP712 = 'eip712',\n ETHSIGN = 'ethsign',\n PRESIGN = 'presign',\n EIP1271 = 'eip1271',\n}\n","import { gql } from 'graphql-request'\n\nexport const TOTALS_QUERY = gql`\n query Totals {\n totals {\n tokens\n orders\n traders\n settlements\n volumeUsd\n volumeEth\n feesUsd\n feesEth\n }\n }\n`\n\nexport const LAST_DAYS_VOLUME_QUERY = gql`\n query LastDaysVolume($days: Int!) {\n dailyTotals(orderBy: timestamp, orderDirection: desc, first: $days) {\n timestamp\n volumeUsd\n }\n }\n`\n\nexport const LAST_HOURS_VOLUME_QUERY = gql`\n query LastHoursVolume($hours: Int!) {\n hourlyTotals(orderBy: timestamp, orderDirection: desc, first: $hours) {\n timestamp\n volumeUsd\n }\n }\n`\n","import { CowError } from '../common/cow-error'\nimport { LastDaysVolumeQuery, LastHoursVolumeQuery, TotalsQuery } from './graphql'\nimport { LAST_DAYS_VOLUME_QUERY, LAST_HOURS_VOLUME_QUERY, TOTALS_QUERY } from './queries'\nimport { DocumentNode } from 'graphql/index'\nimport { request, Variables } from 'graphql-request'\nimport { ApiContext, CowEnv, DEFAULT_COW_API_CONTEXT, ApiBaseUrls, PartialApiContext } from '../common/configs'\nimport { SupportedChainId } from '../common/chains'\n\nexport const SUBGRAPH_PROD_CONFIG: ApiBaseUrls = {\n [SupportedChainId.MAINNET]: 'https://api.thegraph.com/subgraphs/name/cowprotocol/cow',\n [SupportedChainId.GNOSIS_CHAIN]: 'https://api.thegraph.com/subgraphs/name/cowprotocol/cow-gc',\n [SupportedChainId.GOERLI]: 'https://api.thegraph.com/subgraphs/name/cowprotocol/cow-goerli',\n}\n\nexport const SUBGRAPH_STAGING_CONFIG: ApiBaseUrls = {\n [SupportedChainId.MAINNET]: 'https://api.thegraph.com/subgraphs/name/cowprotocol/cow-staging',\n [SupportedChainId.GNOSIS_CHAIN]: 'https://api.thegraph.com/subgraphs/name/cowprotocol/cow-gc-staging',\n [SupportedChainId.GOERLI]: '',\n}\n\nexport class SubgraphApi {\n API_NAME = 'CoW Protocol Subgraph'\n\n public context: ApiContext\n\n constructor(context: PartialApiContext = {}) {\n this.context = {\n ...DEFAULT_COW_API_CONTEXT,\n ...context,\n }\n }\n\n async getTotals(contextOverride: PartialApiContext = {}): Promise<TotalsQuery['totals'][0]> {\n const response = await this.runQuery<TotalsQuery>(TOTALS_QUERY, undefined, contextOverride)\n return response.totals[0]\n }\n\n async getLastDaysVolume(days: number, contextOverride: PartialApiContext = {}): Promise<LastDaysVolumeQuery> {\n return this.runQuery<LastDaysVolumeQuery>(LAST_DAYS_VOLUME_QUERY, { days }, contextOverride)\n }\n\n async getLastHoursVolume(hours: number, contextOverride: PartialApiContext = {}): Promise<LastHoursVolumeQuery> {\n return this.runQuery<LastHoursVolumeQuery>(LAST_HOURS_VOLUME_QUERY, { hours }, contextOverride)\n }\n\n async runQuery<T>(\n query: string | DocumentNode,\n variables: Variables | undefined = undefined,\n contextOverride: PartialApiContext = {}\n ): Promise<T> {\n const { chainId, env } = this.getContextWithOverride(contextOverride)\n const baseUrl = this.getEnvConfigs(env)[chainId]\n\n try {\n return await request(baseUrl, query, variables)\n } catch (error) {\n console.error(`[subgraph:${this.API_NAME}]`, error)\n throw new CowError(\n `Error running query: ${query}. Variables: ${JSON.stringify(variables)}. API: ${baseUrl}. Inner Error: ${error}`\n )\n }\n }\n\n private getContextWithOverride(contextOverride: PartialApiContext = {}): ApiContext {\n return { ...this.context, ...contextOverride }\n }\n\n private getEnvConfigs(env: CowEnv): ApiBaseUrls {\n if (this.context.baseUrls) return this.context.baseUrls\n\n return env === 'prod' ? SUBGRAPH_PROD_CONFIG : SUBGRAPH_STAGING_CONFIG\n }\n}\n","import type { SupportedChainId } from '../common'\nimport type { Signer } from '@ethersproject/abstract-signer'\nimport type { TypedDataDomain } from '@cowprotocol/contracts'\nimport type { SigningResult, UnsignedOrder } from './types'\n\nconst getSignUtils = () => import('./utils')\n\nexport class OrderSigningUtils {\n static async signOrder(order: UnsignedOrder, chainId: SupportedChainId, signer: Signer): Promise<SigningResult> {\n const { signOrder } = await getSignUtils()\n return signOrder(order, chainId, signer)\n }\n\n static async signOrderCancellation(\n orderId: string,\n chainId: SupportedChainId,\n signer: Signer\n ): Promise<SigningResult> {\n const { signOrderCancellation } = await getSignUtils()\n return signOrderCancellation(orderId, chainId, signer)\n }\n\n static async signOrderCancellations(\n orderUid: string[],\n chainId: SupportedChainId,\n signer: Signer\n ): Promise<SigningResult> {\n const { signOrderCancellations } = await getSignUtils()\n return signOrderCancellations(orderUid, chainId, signer)\n }\n\n static async getDomain(chainId: SupportedChainId): Promise<TypedDataDomain> {\n const { getDomain } = await getSignUtils()\n return getDomain(chainId)\n }\n}\n"],"names":["SupportedChainId","ENVS_LIST","DEFAULT_COW_API_CONTEXT","env","chainId","MAINNET","CowError","Error","constructor","message","error_code","super","this","logPrefix","DEFAULT_IPFS_READ_URI","DEFAULT_IPFS_WRITE_URI","GPv2Settlement","JSON","parse","ALL_SUPPORTED_CHAIN_IDS","GOERLI","GNOSIS_CHAIN","COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS","reduce","acc","_extends","address","BUY_ETH_ADDRESS","transformOrder","order","ethflowData","userValidTo","validTo","owner","onchainUser","sellToken","transformEthFlowOrder","dto","executedFeeAmount","executedSurplusFee","totalFee","addTotalFeeToOrder","OrderBookApiError","response","body","statusText","STATUS_CODES_TO_RETRY","DEFAULT_BACKOFF_OPTIONS","numOfAttempts","maxDelay","Infinity","jitter","retry","error","includes","status","DEFAULT_LIMITER_OPTIONS","tokensPerInterval","interval","getResponseBody","async","contentType","headers","get","toLowerCase","startsWith","json","text","console","undefined","request","baseUrl","path","query","method","rateLimiter","backoffOpts","url","init","stringify","Accept","backOff","removeTokens","fetch","responseBody","Promise","reject","ORDER_BOOK_PROD_CONFIG","ORDER_BOOK_STAGING_CONFIG","cleanObjectFromUndefinedValues","obj","Object","keys","key","val","OrderBookApi","context","RateLimiter","limiterOpts","getTrades","contextOverride","orderUid","URLSearchParams","getOrders","offset","limit","toString","then","orders","map","getTxOrders","txHash","getOrder","uid","getOrderMultiEnv","getContextWithOverride","otherEnvs","filter","i","attemptsCount","fallback","nextEnv","catch","getQuote","requestBody","sendSignedOrderCancellations","sendOrder","getNativePrice","tokenAddress","getOrderLink","getApiBaseUrls","baseUrls","params","BuyTokenDestination","EcdsaSigningScheme","FeeAndQuoteError","OnchainOrderData","OrderCancellationError","OrderClass","OrderKind","OrderPostError","OrderQuoteSide","OrderStatus","PriceQuality","ReplaceOrderError","SellTokenSource","SigningScheme","errorType","placementError","kind","_t","_t2","_t3","_","t","TOTALS_QUERY","gql","LAST_DAYS_VOLUME_QUERY","LAST_HOURS_VOLUME_QUERY","SUBGRAPH_PROD_CONFIG","SUBGRAPH_STAGING_CONFIG","SubgraphApi","API_NAME","runQuery","totals","days","hours","variables","getEnvConfigs","getSignUtils","import","OrderSigningUtils","static","signer","signOrder","orderId","signOrderCancellation","signOrderCancellations","getDomain"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- require("cross-fetch/polyfill");var e,r=require("limiter"),t=require("exponential-backoff"),n=require("graphql-request");exports.SupportedChainId=void 0,(e=exports.SupportedChainId||(exports.SupportedChainId={}))[e.MAINNET=1]="MAINNET",e[e.GOERLI=5]="GOERLI",e[e.GNOSIS_CHAIN=100]="GNOSIS_CHAIN";const o=["prod","staging"],s={env:"prod",chainId:exports.SupportedChainId.MAINNET};class a extends Error{constructor(e,r){super(e),this.error_code=void 0,this.error_code=r}}const{GPv2Settlement:i}=JSON.parse('{\n "GPv2AllowListAuthentication_Implementation": {\n "1": {\n "address": "0x9E7Ae8Bdba9AA346739792d219a808884996Db67",\n "transactionHash": "0x58340aa44119c74e48635fab0ac344170c6d6e8b42e5714baa4ba4e1651f63ad"\n },\n "4": {\n "address": "0x9E7Ae8Bdba9AA346739792d219a808884996Db67"\n },\n "5": {\n "address": "0x9E7Ae8Bdba9AA346739792d219a808884996Db67",\n "transactionHash": "0x24f4f80b46a17345011065f9ea2af823f582db56be81098b3b66cc2db9659ea7"\n },\n "100": {\n "address": "0x9E7Ae8Bdba9AA346739792d219a808884996Db67",\n "transactionHash": "0xe52d425fe34d6d5215ccfc9ddfa485d490b3018f0ee5bbed708f2d172044d60d"\n }\n },\n "GPv2AllowListAuthentication_Proxy": {\n "1": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0xb84bf720364f94c749f1ec1cdf0d4c44c70411b716459aaccfd24fc677013375"\n },\n "4": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0x57b2278fd3a13ab1b132031024475ba1a4e28d7d4d37f556134c84512b742c1f"\n },\n "5": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0x39dcf30baf887a5db54551a84de8bfdb6cf418bb284b09680d13aed17d5fa0c1"\n },\n "100": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0x1a2d87a05a94bc6680a4faee31bbafbd74e9ddb63dd3941c717b5c609c08b957"\n }\n },\n "GPv2AllowListAuthentication": {\n "1": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0xb84bf720364f94c749f1ec1cdf0d4c44c70411b716459aaccfd24fc677013375"\n },\n "4": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0x57b2278fd3a13ab1b132031024475ba1a4e28d7d4d37f556134c84512b742c1f"\n },\n "5": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0x39dcf30baf887a5db54551a84de8bfdb6cf418bb284b09680d13aed17d5fa0c1"\n },\n "100": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0x1a2d87a05a94bc6680a4faee31bbafbd74e9ddb63dd3941c717b5c609c08b957"\n }\n },\n "GPv2Settlement": {\n "1": {\n "address": "0x9008D19f58AAbD9eD0D60971565AA8510560ab41",\n "transactionHash": "0xf49f90aa5a268c40001d1227b76bb4dd8247f18361fcad9fffd4a7a44f1320d3"\n },\n "4": {\n "address": "0x9008D19f58AAbD9eD0D60971565AA8510560ab41",\n "transactionHash": "0x609fa2e8f32c73c1f5dc21ff60a26238dacb50d4674d336c90d6950bdda17a21"\n },\n "5": {\n "address": "0x9008D19f58AAbD9eD0D60971565AA8510560ab41",\n "transactionHash": "0x982f089060ff66e19d0683ef1cc6a637297331a9ba95b65d8eb84b9f8dc64b04"\n },\n "100": {\n "address": "0x9008D19f58AAbD9eD0D60971565AA8510560ab41",\n "transactionHash": "0x9ddc538f89cd8433f4a19bc4de0de27e7c68a1d04a14b327185e4bba9af87133"\n }\n },\n "GPv2VaultRelayer": {\n "1": {\n "address": "0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",\n "transactionHash": "0xf49f90aa5a268c40001d1227b76bb4dd8247f18361fcad9fffd4a7a44f1320d3"\n },\n "4": {\n "address": "0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",\n "transactionHash": "0x609fa2e8f32c73c1f5dc21ff60a26238dacb50d4674d336c90d6950bdda17a21"\n },\n "5": {\n "address": "0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",\n "transactionHash": "0x982f089060ff66e19d0683ef1cc6a637297331a9ba95b65d8eb84b9f8dc64b04"\n },\n "100": {\n "address": "0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",\n "transactionHash": "0x9ddc538f89cd8433f4a19bc4de0de27e7c68a1d04a14b327185e4bba9af87133"\n }\n }\n}'),d=[exports.SupportedChainId.MAINNET,exports.SupportedChainId.GOERLI,exports.SupportedChainId.GNOSIS_CHAIN],c=d.reduce((e,r)=>({...e,[r]:i[r].address}),{}),p="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";function u(e){return function(e){const{ethflowData:r}=e;if(!r)return e;const{userValidTo:t}=r,n=e.onchainUser||e.owner,o=p;return{...e,validTo:t,owner:n,sellToken:o}}(function(e){const{executedFeeAmount:r,executedSurplusFee:t}=e,n=null!=t?t:r;return{...e,totalFee:n}}(e))}const E=function(e,{path:r,query:n,method:o,body:s},a,i){try{const d={Accept:"application/json","Content-Type":"application/json"},c=`${e}${r}${n?"?"+n:""}`,p={method:o,body:s?JSON.stringify(s):void 0,headers:d};return Promise.resolve(t.backOff(function(){try{return Promise.resolve(a.removeTokens(1)).then(function(){return Promise.resolve(fetch(c,p)).then(function(e){return Promise.resolve(I(e)).then(function(r){return e.status>=200&&e.status<300?r:Promise.reject(new h(e,r))})})})}catch(e){return Promise.reject(e)}},i))}catch(e){return Promise.reject(e)}};class h extends Error{constructor(e,r){super("string"==typeof r?r:e.statusText),this.response=void 0,this.body=void 0,this.response=e,this.body=r}}const f=[408,425,429,500,502,503,504],O={numOfAttempts:10,maxDelay:Infinity,jitter:"none",retry:e=>!(e instanceof h)||f.includes(e.response.status)},l={tokensPerInterval:5,interval:"second"},I=function(e){try{let r;const t=function(){if(204!==e.status)return function(t,n){try{var o=function(){const t=e.headers.get("Content-Type");return function(){if(t)return t.toLowerCase().startsWith("application/json")?Promise.resolve(e.json()).then(function(e){return r=1,e}):Promise.resolve(e.text()).then(function(e){return r=1,e})}()}()}catch(e){return n(e)}return o&&o.then?o.then(void 0,n):o}(0,function(e){console.error(e)})}();return Promise.resolve(t&&t.then?t.then(function(e){return r?e:void 0}):r?t:void 0)}catch(e){return Promise.reject(e)}},T={[exports.SupportedChainId.MAINNET]:"https://api.cow.fi/mainnet",[exports.SupportedChainId.GNOSIS_CHAIN]:"https://api.cow.fi/xdai",[exports.SupportedChainId.GOERLI]:"https://api.cow.fi/goerli"},A={[exports.SupportedChainId.MAINNET]:"https://barn.api.cow.fi/mainnet",[exports.SupportedChainId.GNOSIS_CHAIN]:"https://barn.api.cow.fi/xdai",[exports.SupportedChainId.GOERLI]:"https://barn.api.cow.fi/goerli"};var S,x,b,N,_,D,C,m,R,P,g,U,v,L,y,F;exports.BuyTokenDestination=void 0,(S=exports.BuyTokenDestination||(exports.BuyTokenDestination={})).ERC20="erc20",S.INTERNAL="internal",exports.EcdsaSigningScheme=void 0,(x=exports.EcdsaSigningScheme||(exports.EcdsaSigningScheme={})).EIP712="eip712",x.ETHSIGN="ethsign",exports.FeeAndQuoteError=void 0,(N=(b=exports.FeeAndQuoteError||(exports.FeeAndQuoteError={})).errorType||(b.errorType={})).NO_LIQUIDITY="NoLiquidity",N.UNSUPPORTED_TOKEN="UnsupportedToken",N.AMOUNT_IS_ZERO="AmountIsZero",N.SELL_AMOUNT_DOES_NOT_COVER_FEE="SellAmountDoesNotCoverFee",exports.OnchainOrderData=void 0,(D=(_=exports.OnchainOrderData||(exports.OnchainOrderData={})).placementError||(_.placementError={})).QUOTE_NOT_FOUND="QuoteNotFound",D.VALID_TO_TOO_FAR_IN_FUTURE="ValidToTooFarInFuture",D.PRE_VALIDATION_ERROR="PreValidationError",exports.OrderCancellationError=void 0,function(e){e.INVALID_SIGNATURE="InvalidSignature",e.WRONG_OWNER="WrongOwner",e.ORDER_NOT_FOUND="OrderNotFound",e.ALREADY_CANCELLED="AlreadyCancelled",e.ORDER_FULLY_EXECUTED="OrderFullyExecuted",e.ORDER_EXPIRED="OrderExpired",e.ON_CHAIN_ORDER="OnChainOrder"}((C=exports.OrderCancellationError||(exports.OrderCancellationError={})).errorType||(C.errorType={})),exports.OrderClass=void 0,(m=exports.OrderClass||(exports.OrderClass={})).MARKET="market",m.LIMIT="limit",m.LIQUIDITY="liquidity",exports.OrderKind=void 0,(R=exports.OrderKind||(exports.OrderKind={})).BUY="buy",R.SELL="sell",exports.OrderPostError=void 0,function(e){e.DUPLICATE_ORDER="DuplicateOrder",e.INSUFFICIENT_FEE="InsufficientFee",e.INSUFFICIENT_ALLOWANCE="InsufficientAllowance",e.INSUFFICIENT_BALANCE="InsufficientBalance",e.INSUFFICIENT_VALID_TO="InsufficientValidTo",e.EXCESSIVE_VALID_TO="ExcessiveValidTo",e.INVALID_SIGNATURE="InvalidSignature",e.TRANSFER_ETH_TO_CONTRACT="TransferEthToContract",e.TRANSFER_SIMULATION_FAILED="TransferSimulationFailed",e.UNSUPPORTED_TOKEN="UnsupportedToken",e.WRONG_OWNER="WrongOwner",e.MISSING_FROM="MissingFrom",e.SAME_BUY_AND_SELL_TOKEN="SameBuyAndSellToken",e.ZERO_AMOUNT="ZeroAmount",e.UNSUPPORTED_BUY_TOKEN_DESTINATION="UnsupportedBuyTokenDestination",e.UNSUPPORTED_SELL_TOKEN_SOURCE="UnsupportedSellTokenSource",e.UNSUPPORTED_ORDER_TYPE="UnsupportedOrderType",e.UNSUPPORTED_SIGNATURE="UnsupportedSignature",e.TOO_MANY_LIMIT_ORDERS="TooManyLimitOrders"}((P=exports.OrderPostError||(exports.OrderPostError={})).errorType||(P.errorType={})),exports.OrderQuoteSide=void 0,((g=exports.OrderQuoteSide||(exports.OrderQuoteSide={})).kind||(g.kind={})).SELL="sell",exports.OrderStatus=void 0,(U=exports.OrderStatus||(exports.OrderStatus={})).PRESIGNATURE_PENDING="presignaturePending",U.OPEN="open",U.FULFILLED="fulfilled",U.CANCELLED="cancelled",U.EXPIRED="expired",exports.PriceQuality=void 0,(v=exports.PriceQuality||(exports.PriceQuality={})).FAST="fast",v.OPTIMAL="optimal",exports.ReplaceOrderError=void 0,function(e){e.ALREADY_CANCELLED="AlreadyCancelled",e.ORDER_FULLY_EXECUTED="OrderFullyExecuted",e.ORDER_EXPIRED="OrderExpired",e.ON_CHAIN_ORDER="OnChainOrder",e.DUPLICATE_ORDER="DuplicateOrder",e.INSUFFICIENT_FEE="InsufficientFee",e.INSUFFICIENT_ALLOWANCE="InsufficientAllowance",e.INSUFFICIENT_BALANCE="InsufficientBalance",e.INSUFFICIENT_VALID_TO="InsufficientValidTo",e.EXCESSIVE_VALID_TO="ExcessiveValidTo",e.INVALID_SIGNATURE="InvalidSignature",e.TRANSFER_ETH_TO_CONTRACT="TransferEthToContract",e.TRANSFER_SIMULATION_FAILED="TransferSimulationFailed",e.UNSUPPORTED_TOKEN="UnsupportedToken",e.WRONG_OWNER="WrongOwner",e.SAME_BUY_AND_SELL_TOKEN="SameBuyAndSellToken",e.ZERO_AMOUNT="ZeroAmount",e.UNSUPPORTED_BUY_TOKEN_DESTINATION="UnsupportedBuyTokenDestination",e.UNSUPPORTED_SELL_TOKEN_SOURCE="UnsupportedSellTokenSource",e.UNSUPPORTED_ORDER_TYPE="UnsupportedOrderType",e.UNSUPPORTED_SIGNATURE="UnsupportedSignature"}((L=exports.ReplaceOrderError||(exports.ReplaceOrderError={})).errorType||(L.errorType={})),exports.SellTokenSource=void 0,(y=exports.SellTokenSource||(exports.SellTokenSource={})).ERC20="erc20",y.INTERNAL="internal",y.EXTERNAL="external",exports.SigningScheme=void 0,(F=exports.SigningScheme||(exports.SigningScheme={})).EIP712="eip712",F.ETHSIGN="ethsign",F.PRESIGN="presign",F.EIP1271="eip1271";const G=n.gql`
1
+ require("cross-fetch/polyfill");var e,r=require("limiter"),t=require("exponential-backoff"),n=require("graphql-request");exports.SupportedChainId=void 0,(e=exports.SupportedChainId||(exports.SupportedChainId={}))[e.MAINNET=1]="MAINNET",e[e.GOERLI=5]="GOERLI",e[e.GNOSIS_CHAIN=100]="GNOSIS_CHAIN";const o=["prod","staging"],s={env:"prod",chainId:exports.SupportedChainId.MAINNET};class a extends Error{constructor(e,r){super(e),this.error_code=void 0,this.error_code=r}}const{GPv2Settlement:i}=JSON.parse('{\n "GPv2AllowListAuthentication_Implementation": {\n "1": {\n "address": "0x9E7Ae8Bdba9AA346739792d219a808884996Db67",\n "transactionHash": "0x58340aa44119c74e48635fab0ac344170c6d6e8b42e5714baa4ba4e1651f63ad"\n },\n "4": {\n "address": "0x9E7Ae8Bdba9AA346739792d219a808884996Db67"\n },\n "5": {\n "address": "0x9E7Ae8Bdba9AA346739792d219a808884996Db67",\n "transactionHash": "0x24f4f80b46a17345011065f9ea2af823f582db56be81098b3b66cc2db9659ea7"\n },\n "100": {\n "address": "0x9E7Ae8Bdba9AA346739792d219a808884996Db67",\n "transactionHash": "0xe52d425fe34d6d5215ccfc9ddfa485d490b3018f0ee5bbed708f2d172044d60d"\n }\n },\n "GPv2AllowListAuthentication_Proxy": {\n "1": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0xb84bf720364f94c749f1ec1cdf0d4c44c70411b716459aaccfd24fc677013375"\n },\n "4": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0x57b2278fd3a13ab1b132031024475ba1a4e28d7d4d37f556134c84512b742c1f"\n },\n "5": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0x39dcf30baf887a5db54551a84de8bfdb6cf418bb284b09680d13aed17d5fa0c1"\n },\n "100": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0x1a2d87a05a94bc6680a4faee31bbafbd74e9ddb63dd3941c717b5c609c08b957"\n }\n },\n "GPv2AllowListAuthentication": {\n "1": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0xb84bf720364f94c749f1ec1cdf0d4c44c70411b716459aaccfd24fc677013375"\n },\n "4": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0x57b2278fd3a13ab1b132031024475ba1a4e28d7d4d37f556134c84512b742c1f"\n },\n "5": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0x39dcf30baf887a5db54551a84de8bfdb6cf418bb284b09680d13aed17d5fa0c1"\n },\n "100": {\n "address": "0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE",\n "transactionHash": "0x1a2d87a05a94bc6680a4faee31bbafbd74e9ddb63dd3941c717b5c609c08b957"\n }\n },\n "GPv2Settlement": {\n "1": {\n "address": "0x9008D19f58AAbD9eD0D60971565AA8510560ab41",\n "transactionHash": "0xf49f90aa5a268c40001d1227b76bb4dd8247f18361fcad9fffd4a7a44f1320d3"\n },\n "4": {\n "address": "0x9008D19f58AAbD9eD0D60971565AA8510560ab41",\n "transactionHash": "0x609fa2e8f32c73c1f5dc21ff60a26238dacb50d4674d336c90d6950bdda17a21"\n },\n "5": {\n "address": "0x9008D19f58AAbD9eD0D60971565AA8510560ab41",\n "transactionHash": "0x982f089060ff66e19d0683ef1cc6a637297331a9ba95b65d8eb84b9f8dc64b04"\n },\n "100": {\n "address": "0x9008D19f58AAbD9eD0D60971565AA8510560ab41",\n "transactionHash": "0x9ddc538f89cd8433f4a19bc4de0de27e7c68a1d04a14b327185e4bba9af87133"\n }\n },\n "GPv2VaultRelayer": {\n "1": {\n "address": "0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",\n "transactionHash": "0xf49f90aa5a268c40001d1227b76bb4dd8247f18361fcad9fffd4a7a44f1320d3"\n },\n "4": {\n "address": "0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",\n "transactionHash": "0x609fa2e8f32c73c1f5dc21ff60a26238dacb50d4674d336c90d6950bdda17a21"\n },\n "5": {\n "address": "0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",\n "transactionHash": "0x982f089060ff66e19d0683ef1cc6a637297331a9ba95b65d8eb84b9f8dc64b04"\n },\n "100": {\n "address": "0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",\n "transactionHash": "0x9ddc538f89cd8433f4a19bc4de0de27e7c68a1d04a14b327185e4bba9af87133"\n }\n }\n}'),d=[exports.SupportedChainId.MAINNET,exports.SupportedChainId.GOERLI,exports.SupportedChainId.GNOSIS_CHAIN],c=d.reduce((e,r)=>({...e,[r]:i[r].address}),{}),p="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";function u(e){return function(e){const{ethflowData:r}=e;if(!r)return e;const{userValidTo:t}=r,n=e.onchainUser||e.owner,o=p;return{...e,validTo:t,owner:n,sellToken:o}}(function(e){const{executedFeeAmount:r,executedSurplusFee:t}=e,n=null!=t?t:r;return{...e,totalFee:n}}(e))}const E=function(e,{path:r,query:n,method:o,body:s},a,i){try{const d={Accept:"application/json","Content-Type":"application/json"},c=`${e}${r}${n?"?"+n:""}`,p={method:o,body:s?JSON.stringify(s):void 0,headers:d};return Promise.resolve(t.backOff(function(){try{return Promise.resolve(a.removeTokens(1)).then(function(){return Promise.resolve(fetch(c,p)).then(function(e){return Promise.resolve(I(e)).then(function(r){return e.status>=200&&e.status<300?r:Promise.reject(new h(e,r))})})})}catch(e){return Promise.reject(e)}},i))}catch(e){return Promise.reject(e)}};class h extends Error{constructor(e,r){super("string"==typeof r?r:e.statusText),this.response=void 0,this.body=void 0,this.response=e,this.body=r}}const f=[408,425,429,500,502,503,504],O={numOfAttempts:10,maxDelay:Infinity,jitter:"none",retry:e=>!(e instanceof h)||f.includes(e.response.status)},l={tokensPerInterval:5,interval:"second"},I=function(e){try{let r;const t=function(){if(204!==e.status)return function(t,n){try{var o=function(){const t=e.headers.get("Content-Type");return function(){if(t)return t.toLowerCase().startsWith("application/json")?Promise.resolve(e.json()).then(function(e){return r=1,e}):Promise.resolve(e.text()).then(function(e){return r=1,e})}()}()}catch(e){return n(e)}return o&&o.then?o.then(void 0,n):o}(0,function(e){console.error(e)})}();return Promise.resolve(t&&t.then?t.then(function(e){return r?e:void 0}):r?t:void 0)}catch(e){return Promise.reject(e)}},T={[exports.SupportedChainId.MAINNET]:"https://api.cow.fi/mainnet",[exports.SupportedChainId.GNOSIS_CHAIN]:"https://api.cow.fi/xdai",[exports.SupportedChainId.GOERLI]:"https://api.cow.fi/goerli"},A={[exports.SupportedChainId.MAINNET]:"https://barn.api.cow.fi/mainnet",[exports.SupportedChainId.GNOSIS_CHAIN]:"https://barn.api.cow.fi/xdai",[exports.SupportedChainId.GOERLI]:"https://barn.api.cow.fi/goerli"};function S(e){return Object.keys(e).reduce((r,t)=>{const n=e[t];return void 0!==n&&(r[t]=n),r},{})}var b,x,N,_,D,C,m,R,P,g,U,v,L,y,F,G;exports.BuyTokenDestination=void 0,(b=exports.BuyTokenDestination||(exports.BuyTokenDestination={})).ERC20="erc20",b.INTERNAL="internal",exports.EcdsaSigningScheme=void 0,(x=exports.EcdsaSigningScheme||(exports.EcdsaSigningScheme={})).EIP712="eip712",x.ETHSIGN="ethsign",exports.FeeAndQuoteError=void 0,(_=(N=exports.FeeAndQuoteError||(exports.FeeAndQuoteError={})).errorType||(N.errorType={})).NO_LIQUIDITY="NoLiquidity",_.UNSUPPORTED_TOKEN="UnsupportedToken",_.AMOUNT_IS_ZERO="AmountIsZero",_.SELL_AMOUNT_DOES_NOT_COVER_FEE="SellAmountDoesNotCoverFee",exports.OnchainOrderData=void 0,(C=(D=exports.OnchainOrderData||(exports.OnchainOrderData={})).placementError||(D.placementError={})).QUOTE_NOT_FOUND="QuoteNotFound",C.VALID_TO_TOO_FAR_IN_FUTURE="ValidToTooFarInFuture",C.PRE_VALIDATION_ERROR="PreValidationError",exports.OrderCancellationError=void 0,function(e){e.INVALID_SIGNATURE="InvalidSignature",e.WRONG_OWNER="WrongOwner",e.ORDER_NOT_FOUND="OrderNotFound",e.ALREADY_CANCELLED="AlreadyCancelled",e.ORDER_FULLY_EXECUTED="OrderFullyExecuted",e.ORDER_EXPIRED="OrderExpired",e.ON_CHAIN_ORDER="OnChainOrder"}((m=exports.OrderCancellationError||(exports.OrderCancellationError={})).errorType||(m.errorType={})),exports.OrderClass=void 0,(R=exports.OrderClass||(exports.OrderClass={})).MARKET="market",R.LIMIT="limit",R.LIQUIDITY="liquidity",exports.OrderKind=void 0,(P=exports.OrderKind||(exports.OrderKind={})).BUY="buy",P.SELL="sell",exports.OrderPostError=void 0,function(e){e.DUPLICATE_ORDER="DuplicateOrder",e.INSUFFICIENT_FEE="InsufficientFee",e.INSUFFICIENT_ALLOWANCE="InsufficientAllowance",e.INSUFFICIENT_BALANCE="InsufficientBalance",e.INSUFFICIENT_VALID_TO="InsufficientValidTo",e.EXCESSIVE_VALID_TO="ExcessiveValidTo",e.INVALID_SIGNATURE="InvalidSignature",e.TRANSFER_ETH_TO_CONTRACT="TransferEthToContract",e.TRANSFER_SIMULATION_FAILED="TransferSimulationFailed",e.UNSUPPORTED_TOKEN="UnsupportedToken",e.WRONG_OWNER="WrongOwner",e.MISSING_FROM="MissingFrom",e.SAME_BUY_AND_SELL_TOKEN="SameBuyAndSellToken",e.ZERO_AMOUNT="ZeroAmount",e.UNSUPPORTED_BUY_TOKEN_DESTINATION="UnsupportedBuyTokenDestination",e.UNSUPPORTED_SELL_TOKEN_SOURCE="UnsupportedSellTokenSource",e.UNSUPPORTED_ORDER_TYPE="UnsupportedOrderType",e.UNSUPPORTED_SIGNATURE="UnsupportedSignature",e.TOO_MANY_LIMIT_ORDERS="TooManyLimitOrders"}((g=exports.OrderPostError||(exports.OrderPostError={})).errorType||(g.errorType={})),exports.OrderQuoteSide=void 0,((U=exports.OrderQuoteSide||(exports.OrderQuoteSide={})).kind||(U.kind={})).SELL="sell",exports.OrderStatus=void 0,(v=exports.OrderStatus||(exports.OrderStatus={})).PRESIGNATURE_PENDING="presignaturePending",v.OPEN="open",v.FULFILLED="fulfilled",v.CANCELLED="cancelled",v.EXPIRED="expired",exports.PriceQuality=void 0,(L=exports.PriceQuality||(exports.PriceQuality={})).FAST="fast",L.OPTIMAL="optimal",exports.ReplaceOrderError=void 0,function(e){e.ALREADY_CANCELLED="AlreadyCancelled",e.ORDER_FULLY_EXECUTED="OrderFullyExecuted",e.ORDER_EXPIRED="OrderExpired",e.ON_CHAIN_ORDER="OnChainOrder",e.DUPLICATE_ORDER="DuplicateOrder",e.INSUFFICIENT_FEE="InsufficientFee",e.INSUFFICIENT_ALLOWANCE="InsufficientAllowance",e.INSUFFICIENT_BALANCE="InsufficientBalance",e.INSUFFICIENT_VALID_TO="InsufficientValidTo",e.EXCESSIVE_VALID_TO="ExcessiveValidTo",e.INVALID_SIGNATURE="InvalidSignature",e.TRANSFER_ETH_TO_CONTRACT="TransferEthToContract",e.TRANSFER_SIMULATION_FAILED="TransferSimulationFailed",e.UNSUPPORTED_TOKEN="UnsupportedToken",e.WRONG_OWNER="WrongOwner",e.SAME_BUY_AND_SELL_TOKEN="SameBuyAndSellToken",e.ZERO_AMOUNT="ZeroAmount",e.UNSUPPORTED_BUY_TOKEN_DESTINATION="UnsupportedBuyTokenDestination",e.UNSUPPORTED_SELL_TOKEN_SOURCE="UnsupportedSellTokenSource",e.UNSUPPORTED_ORDER_TYPE="UnsupportedOrderType",e.UNSUPPORTED_SIGNATURE="UnsupportedSignature"}((y=exports.ReplaceOrderError||(exports.ReplaceOrderError={})).errorType||(y.errorType={})),exports.SellTokenSource=void 0,(F=exports.SellTokenSource||(exports.SellTokenSource={})).ERC20="erc20",F.INTERNAL="internal",F.EXTERNAL="external",exports.SigningScheme=void 0,(G=exports.SigningScheme||(exports.SigningScheme={})).EIP712="eip712",G.ETHSIGN="ethsign",G.PRESIGN="presign",G.EIP1271="eip1271";const B=n.gql`
2
2
  query Totals {
3
3
  totals {
4
4
  tokens
@@ -11,19 +11,19 @@ require("cross-fetch/polyfill");var e,r=require("limiter"),t=require("exponentia
11
11
  feesEth
12
12
  }
13
13
  }
14
- `,B=n.gql`
14
+ `,w=n.gql`
15
15
  query LastDaysVolume($days: Int!) {
16
16
  dailyTotals(orderBy: timestamp, orderDirection: desc, first: $days) {
17
17
  timestamp
18
18
  volumeUsd
19
19
  }
20
20
  }
21
- `,w=n.gql`
21
+ `,H=n.gql`
22
22
  query LastHoursVolume($hours: Int!) {
23
23
  hourlyTotals(orderBy: timestamp, orderDirection: desc, first: $hours) {
24
24
  timestamp
25
25
  volumeUsd
26
26
  }
27
27
  }
28
- `,H={[exports.SupportedChainId.MAINNET]:"https://api.thegraph.com/subgraphs/name/cowprotocol/cow",[exports.SupportedChainId.GNOSIS_CHAIN]:"https://api.thegraph.com/subgraphs/name/cowprotocol/cow-gc",[exports.SupportedChainId.GOERLI]:"https://api.thegraph.com/subgraphs/name/cowprotocol/cow-goerli"},k={[exports.SupportedChainId.MAINNET]:"https://api.thegraph.com/subgraphs/name/cowprotocol/cow-staging",[exports.SupportedChainId.GNOSIS_CHAIN]:"https://api.thegraph.com/subgraphs/name/cowprotocol/cow-gc-staging",[exports.SupportedChainId.GOERLI]:""},M=()=>Promise.resolve().then(function(){return require("./utils-18730a84.js")});exports.ALL_SUPPORTED_CHAIN_IDS=d,exports.COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS=c,exports.CowError=a,exports.DEFAULT_BACKOFF_OPTIONS=O,exports.DEFAULT_COW_API_CONTEXT=s,exports.DEFAULT_IPFS_READ_URI="https://gnosis.mypinata.cloud/ipfs",exports.DEFAULT_IPFS_WRITE_URI="https://api.pinata.cloud",exports.DEFAULT_LIMITER_OPTIONS=l,exports.ENVS_LIST=o,exports.ORDER_BOOK_PROD_CONFIG=T,exports.ORDER_BOOK_STAGING_CONFIG=A,exports.OrderBookApi=class{constructor(e={}){this.context=void 0,this.rateLimiter=void 0,this.context={...s,...e},this.rateLimiter=new r.RateLimiter(e.limiterOpts||l)}getTrades(e,r={}){if(e.owner&&e.orderUid)return Promise.reject(new a("Cannot specify both owner and orderId"));const t=new URLSearchParams(e);return this.fetch({path:"/api/v1/trades",method:"GET",query:t},r)}getOrders({owner:e,offset:r=0,limit:t=1e3},n={}){const o=new URLSearchParams({offset:r.toString(),limit:t.toString()});return this.fetch({path:`/api/v1/account/${e}/orders`,method:"GET",query:o},n).then(e=>e.map(u))}getTxOrders(e,r={}){return this.fetch({path:`/api/v1/transactions/${e}/orders`,method:"GET"},r).then(e=>e.map(u))}getOrder(e,r={}){return this.fetch({path:`/api/v1/orders/${e}`,method:"GET"},r).then(e=>u(e))}getOrderMultiEnv(e,r={}){const{env:t}=this.getContextWithOverride(r),n=o.filter(e=>e!==t);let s=0;const a=t=>{const o=n[s];return t instanceof h&&404===t.response.status&&o?(s++,this.getOrder(e,{...r,env:o}).catch(a)):Promise.reject(t)};return this.getOrder(e,{...r,env:t}).catch(a)}getQuote(e,r={}){return this.fetch({path:"/api/v1/quote",method:"POST",body:e},r)}sendSignedOrderCancellations(e,r={}){return this.fetch({path:"/api/v1/orders",method:"DELETE",body:e},r)}sendOrder(e,r={}){return this.fetch({path:"/api/v1/orders",method:"POST",body:e},r)}getNativePrice(e,r={}){return this.fetch({path:`/api/v1/token/${e}/native_price`,method:"GET"},r)}getOrderLink(e,r){const{chainId:t,env:n}=this.getContextWithOverride(r);return this.getApiBaseUrls(n)[t]+`/api/v1/orders/${e}`}getContextWithOverride(e={}){return{...this.context,...e}}getApiBaseUrls(e){return this.context.baseUrls?this.context.baseUrls:"prod"===e?T:A}fetch(e,r={}){const{chainId:t,env:n}=this.getContextWithOverride(r),o=this.getApiBaseUrls(n)[t];return E(o,e,this.rateLimiter,this.context.backoffOpts||O)}},exports.OrderBookApiError=h,exports.OrderSigningUtils=class{static signOrder(e,r,t){try{return Promise.resolve(M()).then(function({signOrder:n}){return n(e,r,t)})}catch(e){return Promise.reject(e)}}static signOrderCancellation(e,r,t){try{return Promise.resolve(M()).then(function({signOrderCancellation:n}){return n(e,r,t)})}catch(e){return Promise.reject(e)}}static signOrderCancellations(e,r,t){try{return Promise.resolve(M()).then(function({signOrderCancellations:n}){return n(e,r,t)})}catch(e){return Promise.reject(e)}}static getDomain(e){try{return Promise.resolve(M()).then(function({getDomain:r}){return r(e)})}catch(e){return Promise.reject(e)}}},exports.SUBGRAPH_PROD_CONFIG=H,exports.SUBGRAPH_STAGING_CONFIG=k,exports.SubgraphApi=class{constructor(e={}){this.API_NAME="CoW Protocol Subgraph",this.context=void 0,this.context={...s,...e}}getTotals(e={}){try{return Promise.resolve(this.runQuery(G,void 0,e)).then(function(e){return e.totals[0]})}catch(e){return Promise.reject(e)}}getLastDaysVolume(e,r={}){try{return Promise.resolve(this.runQuery(B,{days:e},r))}catch(e){return Promise.reject(e)}}getLastHoursVolume(e,r={}){try{return Promise.resolve(this.runQuery(w,{hours:e},r))}catch(e){return Promise.reject(e)}}runQuery(e,r=undefined,t={}){try{const o=this,{chainId:s,env:i}=o.getContextWithOverride(t),d=o.getEnvConfigs(i)[s];return Promise.resolve(function(t,o){try{var s=Promise.resolve(n.request(d,e,r))}catch(e){return o(e)}return s&&s.then?s.then(void 0,o):s}(0,function(t){throw console.error(`[subgraph:${o.API_NAME}]`,t),new a(`Error running query: ${e}. Variables: ${JSON.stringify(r)}. API: ${d}. Inner Error: ${t}`)}))}catch(e){return Promise.reject(e)}}getContextWithOverride(e={}){return{...this.context,...e}}getEnvConfigs(e){return this.context.baseUrls?this.context.baseUrls:"prod"===e?H:k}},exports.logPrefix="cow-sdk:",exports.request=E;
28
+ `,k={[exports.SupportedChainId.MAINNET]:"https://api.thegraph.com/subgraphs/name/cowprotocol/cow",[exports.SupportedChainId.GNOSIS_CHAIN]:"https://api.thegraph.com/subgraphs/name/cowprotocol/cow-gc",[exports.SupportedChainId.GOERLI]:"https://api.thegraph.com/subgraphs/name/cowprotocol/cow-goerli"},M={[exports.SupportedChainId.MAINNET]:"https://api.thegraph.com/subgraphs/name/cowprotocol/cow-staging",[exports.SupportedChainId.GNOSIS_CHAIN]:"https://api.thegraph.com/subgraphs/name/cowprotocol/cow-gc-staging",[exports.SupportedChainId.GOERLI]:""},V=()=>Promise.resolve().then(function(){return require("./utils-b35881cd.js")});exports.ALL_SUPPORTED_CHAIN_IDS=d,exports.COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS=c,exports.CowError=a,exports.DEFAULT_BACKOFF_OPTIONS=O,exports.DEFAULT_COW_API_CONTEXT=s,exports.DEFAULT_IPFS_READ_URI="https://gnosis.mypinata.cloud/ipfs",exports.DEFAULT_IPFS_WRITE_URI="https://api.pinata.cloud",exports.DEFAULT_LIMITER_OPTIONS=l,exports.ENVS_LIST=o,exports.ORDER_BOOK_PROD_CONFIG=T,exports.ORDER_BOOK_STAGING_CONFIG=A,exports.OrderBookApi=class{constructor(e={}){this.context=void 0,this.rateLimiter=void 0,this.context={...s,...e},this.rateLimiter=new r.RateLimiter(e.limiterOpts||l)}getTrades(e,r={}){if(e.owner&&e.orderUid)return Promise.reject(new a("Cannot specify both owner and orderId"));const t=new URLSearchParams(S(e));return this.fetch({path:"/api/v1/trades",method:"GET",query:t},r)}getOrders({owner:e,offset:r=0,limit:t=1e3},n={}){const o=new URLSearchParams(S({offset:r.toString(),limit:t.toString()}));return this.fetch({path:`/api/v1/account/${e}/orders`,method:"GET",query:o},n).then(e=>e.map(u))}getTxOrders(e,r={}){return this.fetch({path:`/api/v1/transactions/${e}/orders`,method:"GET"},r).then(e=>e.map(u))}getOrder(e,r={}){return this.fetch({path:`/api/v1/orders/${e}`,method:"GET"},r).then(e=>u(e))}getOrderMultiEnv(e,r={}){const{env:t}=this.getContextWithOverride(r),n=o.filter(e=>e!==t);let s=0;const a=t=>{const o=n[s];return t instanceof h&&404===t.response.status&&o?(s++,this.getOrder(e,{...r,env:o}).catch(a)):Promise.reject(t)};return this.getOrder(e,{...r,env:t}).catch(a)}getQuote(e,r={}){return this.fetch({path:"/api/v1/quote",method:"POST",body:e},r)}sendSignedOrderCancellations(e,r={}){return this.fetch({path:"/api/v1/orders",method:"DELETE",body:e},r)}sendOrder(e,r={}){return this.fetch({path:"/api/v1/orders",method:"POST",body:e},r)}getNativePrice(e,r={}){return this.fetch({path:`/api/v1/token/${e}/native_price`,method:"GET"},r)}getOrderLink(e,r){const{chainId:t,env:n}=this.getContextWithOverride(r);return this.getApiBaseUrls(n)[t]+`/api/v1/orders/${e}`}getContextWithOverride(e={}){return{...this.context,...e}}getApiBaseUrls(e){return this.context.baseUrls?this.context.baseUrls:"prod"===e?T:A}fetch(e,r={}){const{chainId:t,env:n}=this.getContextWithOverride(r),o=this.getApiBaseUrls(n)[t];return E(o,e,this.rateLimiter,this.context.backoffOpts||O)}},exports.OrderBookApiError=h,exports.OrderSigningUtils=class{static signOrder(e,r,t){try{return Promise.resolve(V()).then(function({signOrder:n}){return n(e,r,t)})}catch(e){return Promise.reject(e)}}static signOrderCancellation(e,r,t){try{return Promise.resolve(V()).then(function({signOrderCancellation:n}){return n(e,r,t)})}catch(e){return Promise.reject(e)}}static signOrderCancellations(e,r,t){try{return Promise.resolve(V()).then(function({signOrderCancellations:n}){return n(e,r,t)})}catch(e){return Promise.reject(e)}}static getDomain(e){try{return Promise.resolve(V()).then(function({getDomain:r}){return r(e)})}catch(e){return Promise.reject(e)}}},exports.SUBGRAPH_PROD_CONFIG=k,exports.SUBGRAPH_STAGING_CONFIG=M,exports.SubgraphApi=class{constructor(e={}){this.API_NAME="CoW Protocol Subgraph",this.context=void 0,this.context={...s,...e}}getTotals(e={}){try{return Promise.resolve(this.runQuery(B,void 0,e)).then(function(e){return e.totals[0]})}catch(e){return Promise.reject(e)}}getLastDaysVolume(e,r={}){try{return Promise.resolve(this.runQuery(w,{days:e},r))}catch(e){return Promise.reject(e)}}getLastHoursVolume(e,r={}){try{return Promise.resolve(this.runQuery(H,{hours:e},r))}catch(e){return Promise.reject(e)}}runQuery(e,r=undefined,t={}){try{const o=this,{chainId:s,env:i}=o.getContextWithOverride(t),d=o.getEnvConfigs(i)[s];return Promise.resolve(function(t,o){try{var s=Promise.resolve(n.request(d,e,r))}catch(e){return o(e)}return s&&s.then?s.then(void 0,o):s}(0,function(t){throw console.error(`[subgraph:${o.API_NAME}]`,t),new a(`Error running query: ${e}. Variables: ${JSON.stringify(r)}. API: ${d}. Inner Error: ${t}`)}))}catch(e){return Promise.reject(e)}}getContextWithOverride(e={}){return{...this.context,...e}}getEnvConfigs(e){return this.context.baseUrls?this.context.baseUrls:"prod"===e?k:M}},exports.logPrefix="cow-sdk:",exports.request=E;
29
29
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/common/chains.ts","../src/common/configs.ts","../src/common/cow-error.ts","../src/common/consts.ts","../src/order-book/transformOrder.ts","../src/order-book/request.ts","../src/order-book/api.ts","../src/order-book/generated/models/BuyTokenDestination.ts","../src/order-book/generated/models/EcdsaSigningScheme.ts","../src/order-book/generated/models/FeeAndQuoteError.ts","../src/order-book/generated/models/OnchainOrderData.ts","../src/order-book/generated/models/OrderCancellationError.ts","../src/order-book/generated/models/OrderClass.ts","../src/order-book/generated/models/OrderKind.ts","../src/order-book/generated/models/OrderPostError.ts","../src/order-book/generated/models/OrderQuoteSide.ts","../src/order-book/generated/models/OrderStatus.ts","../src/order-book/generated/models/PriceQuality.ts","../src/order-book/generated/models/ReplaceOrderError.ts","../src/order-book/generated/models/SellTokenSource.ts","../src/order-book/generated/models/SigningScheme.ts","../src/subgraph/queries.ts","../src/subgraph/api.ts","../src/order-signing/orderSigningUtils.ts","../src/common/ipfs.ts"],"sourcesContent":["export enum SupportedChainId {\n MAINNET = 1,\n GOERLI = 5,\n GNOSIS_CHAIN = 100,\n}\n","import { SupportedChainId } from './chains'\nimport { BackoffOptions } from 'exponential-backoff'\nimport { RateLimiterOpts } from 'limiter/dist/esm'\n\nexport interface IpfsConfig {\n uri?: string\n writeUri?: string\n readUri?: string\n pinataApiKey?: string\n pinataApiSecret?: string\n}\n\nexport interface RequestOptions {\n limiterOpts?: RateLimiterOpts\n backoffOpts?: BackoffOptions\n}\n\nexport type CowEnv = 'prod' | 'staging'\n\nexport type PartialApiContext = Partial<ApiContext>\n\nexport type ApiBaseUrls = Record<SupportedChainId, string>\n\nexport interface ApiContext {\n chainId: SupportedChainId\n env: CowEnv\n baseUrls?: ApiBaseUrls\n}\n\nexport const ENVS_LIST: CowEnv[] = ['prod', 'staging']\n\nexport const DEFAULT_COW_API_CONTEXT: ApiContext = {\n env: 'prod',\n chainId: SupportedChainId.MAINNET,\n}\n","export class CowError extends Error {\n error_code?: string\n\n constructor(message: string, error_code?: string) {\n super(message)\n this.error_code = error_code\n }\n}\n\nexport const logPrefix = 'cow-sdk:'\n","import { SupportedChainId } from './chains'\nimport contractNetworks from '@cowprotocol/contracts/networks.json'\n\nconst { GPv2Settlement } = JSON.parse(contractNetworks as unknown as string) as typeof contractNetworks\n\nexport const ALL_SUPPORTED_CHAIN_IDS: SupportedChainId[] = [\n SupportedChainId.MAINNET,\n SupportedChainId.GOERLI,\n SupportedChainId.GNOSIS_CHAIN,\n]\n\nexport const COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS = ALL_SUPPORTED_CHAIN_IDS.reduce<Record<number, string>>(\n (acc, chainId) => ({\n ...acc,\n [chainId]: GPv2Settlement[chainId].address,\n }),\n {}\n)\n","import { Order } from './generated'\nimport { EnrichedOrder } from './types'\n\nexport const BUY_ETH_ADDRESS = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE'\n\nexport function transformOrder(order: Order): EnrichedOrder {\n return transformEthFlowOrder(addTotalFeeToOrder(order))\n}\n\n/**\n * The executedSurplusFee represents exactly the fee that was charged (regardless of the fee signed with the order).\n * So, while the protocol currently does not allow placing a limit order with any other fee than 0 - the backend is designed to support these kinds of orders for the future.\n */\nfunction addTotalFeeToOrder(dto: Order): EnrichedOrder {\n const { executedFeeAmount, executedSurplusFee } = dto\n const totalFee = executedSurplusFee ?? executedFeeAmount\n\n return {\n ...dto,\n totalFee,\n }\n}\n\n/**\n * Transform order field for Native EthFlow orders\n *\n * A no-op for regular orders\n * For Native EthFlow, due to how the contract is setup:\n * - sellToken set to Native token address\n * - owner set to `onchainUser`\n * - validTo set to `ethflowData.userValidTo`\n */\nfunction transformEthFlowOrder(order: EnrichedOrder): EnrichedOrder {\n const { ethflowData } = order\n\n if (!ethflowData) {\n return order\n }\n\n const { userValidTo: validTo } = ethflowData\n const owner = order.onchainUser || order.owner\n const sellToken = BUY_ETH_ADDRESS\n\n return { ...order, validTo, owner, sellToken }\n}\n","import { backOff, BackoffOptions } from 'exponential-backoff'\nimport { RateLimiter, RateLimiterOpts } from 'limiter'\n\nexport class OrderBookApiError<T = unknown> extends Error {\n constructor(public readonly response: Response, public readonly body: T) {\n super(typeof body === 'string' ? body : response.statusText)\n }\n}\n\nconst REQUEST_TIMEOUT = 408\nconst TOO_EARLY = 425\nconst TOO_MANY_REQUESTS = 429\nconst INTERNAL_SERVER_ERROR = 500\nconst BAD_GATEWAY = 502\nconst SERVICE_UNAVAILABLE = 503\nconst GATEWAY_TIMEOUT = 504\n\nconst STATUS_CODES_TO_RETRY = [\n REQUEST_TIMEOUT,\n TOO_EARLY,\n TOO_MANY_REQUESTS,\n INTERNAL_SERVER_ERROR,\n BAD_GATEWAY,\n SERVICE_UNAVAILABLE,\n GATEWAY_TIMEOUT,\n]\n\n// See config in https://www.npmjs.com/package/@insertish/exponential-backoff\nexport const DEFAULT_BACKOFF_OPTIONS: BackoffOptions = {\n numOfAttempts: 10,\n maxDelay: Infinity,\n jitter: 'none',\n retry: (error: Error | OrderBookApiError) => {\n if (error instanceof OrderBookApiError) {\n return STATUS_CODES_TO_RETRY.includes(error.response.status)\n }\n\n return true\n },\n}\n\n// CowSwap order-book API is limited by 5 requests per second from one IP\nexport const DEFAULT_LIMITER_OPTIONS: RateLimiterOpts = {\n tokensPerInterval: 5,\n interval: 'second',\n}\n\nexport interface FetchParams {\n path: string\n method: 'GET' | 'POST' | 'DELETE' | 'PUT'\n body?: unknown\n query?: URLSearchParams\n}\n\nconst getResponseBody = async (response: Response): Promise<unknown> => {\n if (response.status !== 204) {\n try {\n const contentType = response.headers.get('Content-Type')\n if (contentType) {\n if (contentType.toLowerCase().startsWith('application/json')) {\n return await response.json()\n } else {\n return await response.text()\n }\n }\n } catch (error) {\n console.error(error)\n }\n }\n return undefined\n}\n\nexport async function request<T>(\n baseUrl: string,\n { path, query, method, body }: FetchParams,\n rateLimiter: RateLimiter,\n backoffOpts: BackoffOptions\n): Promise<T> {\n const queryString = query ? '?' + query : ''\n const headers = {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n }\n\n const url = `${baseUrl}${path}${queryString}`\n const init: RequestInit = { method, body: body ? JSON.stringify(body) : undefined, headers }\n\n return backOff<T>(async () => {\n await rateLimiter.removeTokens(1)\n\n const response = await fetch(url, init)\n const responseBody = (await getResponseBody(response)) as T\n\n // Successful response\n if (response.status >= 200 && response.status < 300) {\n return responseBody\n }\n\n return Promise.reject(new OrderBookApiError(response, responseBody))\n }, backoffOpts)\n}\n","import 'cross-fetch/polyfill'\nimport {\n Address,\n NativePriceResponse,\n Order,\n OrderCancellations,\n OrderCreation,\n OrderQuoteRequest,\n OrderQuoteResponse,\n Trade,\n TransactionHash,\n UID,\n} from './generated'\nimport { CowError } from '../common/cow-error'\nimport {\n ApiContext,\n CowEnv,\n DEFAULT_COW_API_CONTEXT,\n ApiBaseUrls,\n ENVS_LIST,\n PartialApiContext,\n RequestOptions,\n} from '../common/configs'\nimport { transformOrder } from './transformOrder'\nimport { EnrichedOrder } from './types'\nimport { SupportedChainId } from '../common/chains'\nimport { RateLimiter } from 'limiter'\nimport { DEFAULT_BACKOFF_OPTIONS, DEFAULT_LIMITER_OPTIONS, FetchParams, OrderBookApiError, request } from './request'\n\nexport const ORDER_BOOK_PROD_CONFIG: ApiBaseUrls = {\n [SupportedChainId.MAINNET]: 'https://api.cow.fi/mainnet',\n [SupportedChainId.GNOSIS_CHAIN]: 'https://api.cow.fi/xdai',\n [SupportedChainId.GOERLI]: 'https://api.cow.fi/goerli',\n}\n\nexport const ORDER_BOOK_STAGING_CONFIG: ApiBaseUrls = {\n [SupportedChainId.MAINNET]: 'https://barn.api.cow.fi/mainnet',\n [SupportedChainId.GNOSIS_CHAIN]: 'https://barn.api.cow.fi/xdai',\n [SupportedChainId.GOERLI]: 'https://barn.api.cow.fi/goerli',\n}\n\nexport class OrderBookApi {\n public context: ApiContext & RequestOptions\n\n private rateLimiter: RateLimiter\n\n constructor(context: PartialApiContext & RequestOptions = {}) {\n this.context = { ...DEFAULT_COW_API_CONTEXT, ...context }\n this.rateLimiter = new RateLimiter(context.limiterOpts || DEFAULT_LIMITER_OPTIONS)\n }\n\n getTrades(\n request: { owner?: Address; orderUid?: UID },\n contextOverride: PartialApiContext = {}\n ): Promise<Array<Trade>> {\n if (request.owner && request.orderUid) {\n return Promise.reject(new CowError('Cannot specify both owner and orderId'))\n }\n\n const query = new URLSearchParams(request)\n\n return this.fetch({ path: '/api/v1/trades', method: 'GET', query }, contextOverride)\n }\n\n getOrders(\n {\n owner,\n offset = 0,\n limit = 1000,\n }: {\n owner: Address\n offset?: number\n limit?: number\n },\n contextOverride: PartialApiContext = {}\n ): Promise<Array<EnrichedOrder>> {\n const query = new URLSearchParams({ offset: offset.toString(), limit: limit.toString() })\n\n return this.fetch<Array<EnrichedOrder>>(\n { path: `/api/v1/account/${owner}/orders`, method: 'GET', query },\n contextOverride\n ).then((orders) => {\n return orders.map(transformOrder)\n })\n }\n\n getTxOrders(txHash: TransactionHash, contextOverride: PartialApiContext = {}): Promise<Array<EnrichedOrder>> {\n return this.fetch<Array<EnrichedOrder>>(\n { path: `/api/v1/transactions/${txHash}/orders`, method: 'GET' },\n contextOverride\n ).then((orders) => {\n return orders.map(transformOrder)\n })\n }\n\n getOrder(uid: UID, contextOverride: PartialApiContext = {}): Promise<EnrichedOrder> {\n return this.fetch<Order>({ path: `/api/v1/orders/${uid}`, method: 'GET' }, contextOverride).then((order) => {\n return transformOrder(order)\n })\n }\n\n getOrderMultiEnv(uid: UID, contextOverride: PartialApiContext = {}): Promise<EnrichedOrder> {\n const { env } = this.getContextWithOverride(contextOverride)\n const otherEnvs = ENVS_LIST.filter((i) => i !== env)\n\n let attemptsCount = 0\n\n const fallback = (error: Error | OrderBookApiError): Promise<EnrichedOrder> => {\n const nextEnv = otherEnvs[attemptsCount]\n\n if (error instanceof OrderBookApiError && error.response.status === 404 && nextEnv) {\n attemptsCount++\n\n return this.getOrder(uid, { ...contextOverride, env: nextEnv }).catch(fallback)\n }\n\n return Promise.reject(error)\n }\n\n return this.getOrder(uid, { ...contextOverride, env }).catch(fallback)\n }\n\n getQuote(requestBody: OrderQuoteRequest, contextOverride: PartialApiContext = {}): Promise<OrderQuoteResponse> {\n return this.fetch({ path: '/api/v1/quote', method: 'POST', body: requestBody }, contextOverride)\n }\n\n sendSignedOrderCancellations(\n requestBody: OrderCancellations,\n contextOverride: PartialApiContext = {}\n ): Promise<void> {\n return this.fetch({ path: '/api/v1/orders', method: 'DELETE', body: requestBody }, contextOverride)\n }\n\n sendOrder(requestBody: OrderCreation, contextOverride: PartialApiContext = {}): Promise<UID> {\n return this.fetch({ path: '/api/v1/orders', method: 'POST', body: requestBody }, contextOverride)\n }\n\n getNativePrice(tokenAddress: Address, contextOverride: PartialApiContext = {}): Promise<NativePriceResponse> {\n return this.fetch({ path: `/api/v1/token/${tokenAddress}/native_price`, method: 'GET' }, contextOverride)\n }\n\n getOrderLink(uid: UID, contextOverride?: PartialApiContext): string {\n const { chainId, env } = this.getContextWithOverride(contextOverride)\n return this.getApiBaseUrls(env)[chainId] + `/api/v1/orders/${uid}`\n }\n\n private getContextWithOverride(contextOverride: PartialApiContext = {}): ApiContext & RequestOptions {\n return { ...this.context, ...contextOverride }\n }\n\n private getApiBaseUrls(env: CowEnv): ApiBaseUrls {\n if (this.context.baseUrls) return this.context.baseUrls\n\n return env === 'prod' ? ORDER_BOOK_PROD_CONFIG : ORDER_BOOK_STAGING_CONFIG\n }\n\n private fetch<T>(params: FetchParams, contextOverride: PartialApiContext = {}): Promise<T> {\n const { chainId, env } = this.getContextWithOverride(contextOverride)\n const baseUrl = this.getApiBaseUrls(env)[chainId]\n const backoffOpts = this.context.backoffOpts || DEFAULT_BACKOFF_OPTIONS\n\n return request(baseUrl, params, this.rateLimiter, backoffOpts)\n }\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Where should the buy token be transfered to?\n */\nexport enum BuyTokenDestination {\n ERC20 = 'erc20',\n INTERNAL = 'internal',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * How was the order signed?\n */\nexport enum EcdsaSigningScheme {\n EIP712 = 'eip712',\n ETHSIGN = 'ethsign',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport type FeeAndQuoteError = {\n errorType: FeeAndQuoteError.errorType;\n description: string;\n};\n\nexport namespace FeeAndQuoteError {\n\n export enum errorType {\n NO_LIQUIDITY = 'NoLiquidity',\n UNSUPPORTED_TOKEN = 'UnsupportedToken',\n AMOUNT_IS_ZERO = 'AmountIsZero',\n SELL_AMOUNT_DOES_NOT_COVER_FEE = 'SellAmountDoesNotCoverFee',\n }\n\n\n}\n\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nimport type { Address } from './Address';\n\nexport type OnchainOrderData = {\n /**\n * If orders are placed as onchain orders, the owner of the order might\n * be a smart contract, but not the user placing the order. The\n * actual user will be provided in this field\n *\n */\n sender: Address;\n /**\n * Describes the error, if the order placement was not\n * successful. This could happen, for example, if the\n * valid_to is too high, or no valid quote was found or generated\n *\n */\n placementError?: OnchainOrderData.placementError;\n};\n\nexport namespace OnchainOrderData {\n\n /**\n * Describes the error, if the order placement was not\n * successful. This could happen, for example, if the\n * valid_to is too high, or no valid quote was found or generated\n *\n */\n export enum placementError {\n QUOTE_NOT_FOUND = 'QuoteNotFound',\n VALID_TO_TOO_FAR_IN_FUTURE = 'ValidToTooFarInFuture',\n PRE_VALIDATION_ERROR = 'PreValidationError',\n }\n\n\n}\n\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport type OrderCancellationError = {\n errorType: OrderCancellationError.errorType;\n description: string;\n};\n\nexport namespace OrderCancellationError {\n\n export enum errorType {\n INVALID_SIGNATURE = 'InvalidSignature',\n WRONG_OWNER = 'WrongOwner',\n ORDER_NOT_FOUND = 'OrderNotFound',\n ALREADY_CANCELLED = 'AlreadyCancelled',\n ORDER_FULLY_EXECUTED = 'OrderFullyExecuted',\n ORDER_EXPIRED = 'OrderExpired',\n ON_CHAIN_ORDER = 'OnChainOrder',\n }\n\n\n}\n\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Order class\n */\nexport enum OrderClass {\n MARKET = 'market',\n LIMIT = 'limit',\n LIQUIDITY = 'liquidity',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Is this a buy order or sell order?\n */\nexport enum OrderKind {\n BUY = 'buy',\n SELL = 'sell',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport type OrderPostError = {\n errorType: OrderPostError.errorType;\n description: string;\n};\n\nexport namespace OrderPostError {\n\n export enum errorType {\n DUPLICATE_ORDER = 'DuplicateOrder',\n INSUFFICIENT_FEE = 'InsufficientFee',\n INSUFFICIENT_ALLOWANCE = 'InsufficientAllowance',\n INSUFFICIENT_BALANCE = 'InsufficientBalance',\n INSUFFICIENT_VALID_TO = 'InsufficientValidTo',\n EXCESSIVE_VALID_TO = 'ExcessiveValidTo',\n INVALID_SIGNATURE = 'InvalidSignature',\n TRANSFER_ETH_TO_CONTRACT = 'TransferEthToContract',\n TRANSFER_SIMULATION_FAILED = 'TransferSimulationFailed',\n UNSUPPORTED_TOKEN = 'UnsupportedToken',\n WRONG_OWNER = 'WrongOwner',\n MISSING_FROM = 'MissingFrom',\n SAME_BUY_AND_SELL_TOKEN = 'SameBuyAndSellToken',\n ZERO_AMOUNT = 'ZeroAmount',\n UNSUPPORTED_BUY_TOKEN_DESTINATION = 'UnsupportedBuyTokenDestination',\n UNSUPPORTED_SELL_TOKEN_SOURCE = 'UnsupportedSellTokenSource',\n UNSUPPORTED_ORDER_TYPE = 'UnsupportedOrderType',\n UNSUPPORTED_SIGNATURE = 'UnsupportedSignature',\n TOO_MANY_LIMIT_ORDERS = 'TooManyLimitOrders',\n }\n\n\n}\n\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nimport type { TokenAmount } from './TokenAmount';\n\n/**\n * The buy or sell side when quoting an order.\n */\nexport type OrderQuoteSide = ({\n kind: OrderQuoteSide.kind;\n /**\n * The total amount that is available for the order. From this value, the fee\n * is deducted and the buy amount is calculated.\n *\n */\n sellAmountBeforeFee: TokenAmount;\n} | {\n kind: OrderQuoteSide.kind;\n /**\n * The sell amount for the order.\n */\n sellAmountAfterFee: TokenAmount;\n} | {\n kind: OrderQuoteSide.kind;\n /**\n * The buy amount for the order.\n */\n buyAmountAfterFee: TokenAmount;\n});\n\nexport namespace OrderQuoteSide {\n\n export enum kind {\n SELL = 'sell',\n }\n\n\n}\n\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * The current order status\n */\nexport enum OrderStatus {\n PRESIGNATURE_PENDING = 'presignaturePending',\n OPEN = 'open',\n FULFILLED = 'fulfilled',\n CANCELLED = 'cancelled',\n EXPIRED = 'expired',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * How good should the price estimate be?\n * Note that orders are supposed to be created from \"optimal\" price estimates.\n *\n */\nexport enum PriceQuality {\n FAST = 'fast',\n OPTIMAL = 'optimal',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport type ReplaceOrderError = {\n errorType: ReplaceOrderError.errorType;\n description: string;\n};\n\nexport namespace ReplaceOrderError {\n\n export enum errorType {\n ALREADY_CANCELLED = 'AlreadyCancelled',\n ORDER_FULLY_EXECUTED = 'OrderFullyExecuted',\n ORDER_EXPIRED = 'OrderExpired',\n ON_CHAIN_ORDER = 'OnChainOrder',\n DUPLICATE_ORDER = 'DuplicateOrder',\n INSUFFICIENT_FEE = 'InsufficientFee',\n INSUFFICIENT_ALLOWANCE = 'InsufficientAllowance',\n INSUFFICIENT_BALANCE = 'InsufficientBalance',\n INSUFFICIENT_VALID_TO = 'InsufficientValidTo',\n EXCESSIVE_VALID_TO = 'ExcessiveValidTo',\n INVALID_SIGNATURE = 'InvalidSignature',\n TRANSFER_ETH_TO_CONTRACT = 'TransferEthToContract',\n TRANSFER_SIMULATION_FAILED = 'TransferSimulationFailed',\n UNSUPPORTED_TOKEN = 'UnsupportedToken',\n WRONG_OWNER = 'WrongOwner',\n SAME_BUY_AND_SELL_TOKEN = 'SameBuyAndSellToken',\n ZERO_AMOUNT = 'ZeroAmount',\n UNSUPPORTED_BUY_TOKEN_DESTINATION = 'UnsupportedBuyTokenDestination',\n UNSUPPORTED_SELL_TOKEN_SOURCE = 'UnsupportedSellTokenSource',\n UNSUPPORTED_ORDER_TYPE = 'UnsupportedOrderType',\n UNSUPPORTED_SIGNATURE = 'UnsupportedSignature',\n }\n\n\n}\n\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Where should the sell token be drawn from?\n */\nexport enum SellTokenSource {\n ERC20 = 'erc20',\n INTERNAL = 'internal',\n EXTERNAL = 'external',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * How was the order signed?\n */\nexport enum SigningScheme {\n EIP712 = 'eip712',\n ETHSIGN = 'ethsign',\n PRESIGN = 'presign',\n EIP1271 = 'eip1271',\n}\n","import { gql } from 'graphql-request'\n\nexport const TOTALS_QUERY = gql`\n query Totals {\n totals {\n tokens\n orders\n traders\n settlements\n volumeUsd\n volumeEth\n feesUsd\n feesEth\n }\n }\n`\n\nexport const LAST_DAYS_VOLUME_QUERY = gql`\n query LastDaysVolume($days: Int!) {\n dailyTotals(orderBy: timestamp, orderDirection: desc, first: $days) {\n timestamp\n volumeUsd\n }\n }\n`\n\nexport const LAST_HOURS_VOLUME_QUERY = gql`\n query LastHoursVolume($hours: Int!) {\n hourlyTotals(orderBy: timestamp, orderDirection: desc, first: $hours) {\n timestamp\n volumeUsd\n }\n }\n`\n","import { CowError } from '../common/cow-error'\nimport { LastDaysVolumeQuery, LastHoursVolumeQuery, TotalsQuery } from './graphql'\nimport { LAST_DAYS_VOLUME_QUERY, LAST_HOURS_VOLUME_QUERY, TOTALS_QUERY } from './queries'\nimport { DocumentNode } from 'graphql/index'\nimport { request, Variables } from 'graphql-request'\nimport { ApiContext, CowEnv, DEFAULT_COW_API_CONTEXT, ApiBaseUrls, PartialApiContext } from '../common/configs'\nimport { SupportedChainId } from '../common/chains'\n\nexport const SUBGRAPH_PROD_CONFIG: ApiBaseUrls = {\n [SupportedChainId.MAINNET]: 'https://api.thegraph.com/subgraphs/name/cowprotocol/cow',\n [SupportedChainId.GNOSIS_CHAIN]: 'https://api.thegraph.com/subgraphs/name/cowprotocol/cow-gc',\n [SupportedChainId.GOERLI]: 'https://api.thegraph.com/subgraphs/name/cowprotocol/cow-goerli',\n}\n\nexport const SUBGRAPH_STAGING_CONFIG: ApiBaseUrls = {\n [SupportedChainId.MAINNET]: 'https://api.thegraph.com/subgraphs/name/cowprotocol/cow-staging',\n [SupportedChainId.GNOSIS_CHAIN]: 'https://api.thegraph.com/subgraphs/name/cowprotocol/cow-gc-staging',\n [SupportedChainId.GOERLI]: '',\n}\n\nexport class SubgraphApi {\n API_NAME = 'CoW Protocol Subgraph'\n\n public context: ApiContext\n\n constructor(context: PartialApiContext = {}) {\n this.context = {\n ...DEFAULT_COW_API_CONTEXT,\n ...context,\n }\n }\n\n async getTotals(contextOverride: PartialApiContext = {}): Promise<TotalsQuery['totals'][0]> {\n const response = await this.runQuery<TotalsQuery>(TOTALS_QUERY, undefined, contextOverride)\n return response.totals[0]\n }\n\n async getLastDaysVolume(days: number, contextOverride: PartialApiContext = {}): Promise<LastDaysVolumeQuery> {\n return this.runQuery<LastDaysVolumeQuery>(LAST_DAYS_VOLUME_QUERY, { days }, contextOverride)\n }\n\n async getLastHoursVolume(hours: number, contextOverride: PartialApiContext = {}): Promise<LastHoursVolumeQuery> {\n return this.runQuery<LastHoursVolumeQuery>(LAST_HOURS_VOLUME_QUERY, { hours }, contextOverride)\n }\n\n async runQuery<T>(\n query: string | DocumentNode,\n variables: Variables | undefined = undefined,\n contextOverride: PartialApiContext = {}\n ): Promise<T> {\n const { chainId, env } = this.getContextWithOverride(contextOverride)\n const baseUrl = this.getEnvConfigs(env)[chainId]\n\n try {\n return await request(baseUrl, query, variables)\n } catch (error) {\n console.error(`[subgraph:${this.API_NAME}]`, error)\n throw new CowError(\n `Error running query: ${query}. Variables: ${JSON.stringify(variables)}. API: ${baseUrl}. Inner Error: ${error}`\n )\n }\n }\n\n private getContextWithOverride(contextOverride: PartialApiContext = {}): ApiContext {\n return { ...this.context, ...contextOverride }\n }\n\n private getEnvConfigs(env: CowEnv): ApiBaseUrls {\n if (this.context.baseUrls) return this.context.baseUrls\n\n return env === 'prod' ? SUBGRAPH_PROD_CONFIG : SUBGRAPH_STAGING_CONFIG\n }\n}\n","import type { SupportedChainId } from '../common'\nimport type { Signer } from '@ethersproject/abstract-signer'\nimport type { TypedDataDomain } from '@cowprotocol/contracts'\nimport type { SigningResult, UnsignedOrder } from './types'\n\nconst getSignUtils = () => import('./utils')\n\nexport class OrderSigningUtils {\n static async signOrder(order: UnsignedOrder, chainId: SupportedChainId, signer: Signer): Promise<SigningResult> {\n const { signOrder } = await getSignUtils()\n return signOrder(order, chainId, signer)\n }\n\n static async signOrderCancellation(\n orderId: string,\n chainId: SupportedChainId,\n signer: Signer\n ): Promise<SigningResult> {\n const { signOrderCancellation } = await getSignUtils()\n return signOrderCancellation(orderId, chainId, signer)\n }\n\n static async signOrderCancellations(\n orderUid: string[],\n chainId: SupportedChainId,\n signer: Signer\n ): Promise<SigningResult> {\n const { signOrderCancellations } = await getSignUtils()\n return signOrderCancellations(orderUid, chainId, signer)\n }\n\n static async getDomain(chainId: SupportedChainId): Promise<TypedDataDomain> {\n const { getDomain } = await getSignUtils()\n return getDomain(chainId)\n }\n}\n","export const DEFAULT_IPFS_READ_URI = 'https://gnosis.mypinata.cloud/ipfs'\nexport const DEFAULT_IPFS_WRITE_URI = 'https://api.pinata.cloud'\n"],"names":["SupportedChainId","ENVS_LIST","DEFAULT_COW_API_CONTEXT","env","chainId","MAINNET","CowError","Error","constructor","message","error_code","super","this","GPv2Settlement","JSON","parse","ALL_SUPPORTED_CHAIN_IDS","GOERLI","GNOSIS_CHAIN","COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS","reduce","acc","address","BUY_ETH_ADDRESS","transformOrder","order","ethflowData","userValidTo","validTo","owner","onchainUser","sellToken","transformEthFlowOrder","dto","executedFeeAmount","executedSurplusFee","totalFee","addTotalFeeToOrder","request","baseUrl","path","query","method","body","rateLimiter","backoffOpts","headers","Accept","url","init","stringify","undefined","Promise","resolve","backOff","removeTokens","then","fetch","response","getResponseBody","responseBody","status","reject","OrderBookApiError","e","statusText","STATUS_CODES_TO_RETRY","DEFAULT_BACKOFF_OPTIONS","numOfAttempts","maxDelay","Infinity","jitter","retry","error","includes","DEFAULT_LIMITER_OPTIONS","tokensPerInterval","interval","_exit","_temp","contentType","get","toLowerCase","startsWith","json","_await$response$json","text","_await$response$text","_catch","console","_result3","ORDER_BOOK_PROD_CONFIG","ORDER_BOOK_STAGING_CONFIG","BuyTokenDestination","EcdsaSigningScheme","FeeAndQuoteError","errorType","OnchainOrderData","placementError","OrderCancellationError","OrderClass","OrderKind","OrderPostError","OrderQuoteSide","OrderStatus","PriceQuality","ReplaceOrderError","SellTokenSource","SigningScheme","kind","TOTALS_QUERY","gql","LAST_DAYS_VOLUME_QUERY","LAST_HOURS_VOLUME_QUERY","SUBGRAPH_PROD_CONFIG","SUBGRAPH_STAGING_CONFIG","getSignUtils","require","context","RateLimiter","limiterOpts","getTrades","contextOverride","orderUid","URLSearchParams","getOrders","offset","limit","toString","orders","map","getTxOrders","txHash","getOrder","uid","getOrderMultiEnv","getContextWithOverride","otherEnvs","filter","i","attemptsCount","fallback","nextEnv","catch","getQuote","requestBody","sendSignedOrderCancellations","sendOrder","getNativePrice","tokenAddress","getOrderLink","getApiBaseUrls","baseUrls","params","static","signer","signOrder","orderId","signOrderCancellation","signOrderCancellations","getDomain","API_NAME","getTotals","runQuery","totals","getLastDaysVolume","days","getLastHoursVolume","hours","variables","_this4","getEnvConfigs"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/common/chains.ts","../src/common/configs.ts","../src/common/cow-error.ts","../src/common/consts.ts","../src/order-book/transformOrder.ts","../src/order-book/request.ts","../src/order-book/api.ts","../src/order-book/generated/models/BuyTokenDestination.ts","../src/order-book/generated/models/EcdsaSigningScheme.ts","../src/order-book/generated/models/FeeAndQuoteError.ts","../src/order-book/generated/models/OnchainOrderData.ts","../src/order-book/generated/models/OrderCancellationError.ts","../src/order-book/generated/models/OrderClass.ts","../src/order-book/generated/models/OrderKind.ts","../src/order-book/generated/models/OrderPostError.ts","../src/order-book/generated/models/OrderQuoteSide.ts","../src/order-book/generated/models/OrderStatus.ts","../src/order-book/generated/models/PriceQuality.ts","../src/order-book/generated/models/ReplaceOrderError.ts","../src/order-book/generated/models/SellTokenSource.ts","../src/order-book/generated/models/SigningScheme.ts","../src/subgraph/queries.ts","../src/subgraph/api.ts","../src/order-signing/orderSigningUtils.ts","../src/common/ipfs.ts"],"sourcesContent":["export enum SupportedChainId {\n MAINNET = 1,\n GOERLI = 5,\n GNOSIS_CHAIN = 100,\n}\n","import { SupportedChainId } from './chains'\nimport { BackoffOptions } from 'exponential-backoff'\nimport { RateLimiterOpts } from 'limiter/dist/esm'\n\nexport interface IpfsConfig {\n uri?: string\n writeUri?: string\n readUri?: string\n pinataApiKey?: string\n pinataApiSecret?: string\n}\n\nexport interface RequestOptions {\n limiterOpts?: RateLimiterOpts\n backoffOpts?: BackoffOptions\n}\n\nexport type CowEnv = 'prod' | 'staging'\n\nexport type PartialApiContext = Partial<ApiContext>\n\nexport type ApiBaseUrls = Record<SupportedChainId, string>\n\nexport interface ApiContext {\n chainId: SupportedChainId\n env: CowEnv\n baseUrls?: ApiBaseUrls\n}\n\nexport const ENVS_LIST: CowEnv[] = ['prod', 'staging']\n\nexport const DEFAULT_COW_API_CONTEXT: ApiContext = {\n env: 'prod',\n chainId: SupportedChainId.MAINNET,\n}\n","export class CowError extends Error {\n error_code?: string\n\n constructor(message: string, error_code?: string) {\n super(message)\n this.error_code = error_code\n }\n}\n\nexport const logPrefix = 'cow-sdk:'\n","import { SupportedChainId } from './chains'\nimport contractNetworks from '@cowprotocol/contracts/networks.json'\n\nconst { GPv2Settlement } = JSON.parse(contractNetworks as unknown as string) as typeof contractNetworks\n\nexport const ALL_SUPPORTED_CHAIN_IDS: SupportedChainId[] = [\n SupportedChainId.MAINNET,\n SupportedChainId.GOERLI,\n SupportedChainId.GNOSIS_CHAIN,\n]\n\nexport const COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS = ALL_SUPPORTED_CHAIN_IDS.reduce<Record<number, string>>(\n (acc, chainId) => ({\n ...acc,\n [chainId]: GPv2Settlement[chainId].address,\n }),\n {}\n)\n","import { Order } from './generated'\nimport { EnrichedOrder } from './types'\n\nexport const BUY_ETH_ADDRESS = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE'\n\nexport function transformOrder(order: Order): EnrichedOrder {\n return transformEthFlowOrder(addTotalFeeToOrder(order))\n}\n\n/**\n * The executedSurplusFee represents exactly the fee that was charged (regardless of the fee signed with the order).\n * So, while the protocol currently does not allow placing a limit order with any other fee than 0 - the backend is designed to support these kinds of orders for the future.\n */\nfunction addTotalFeeToOrder(dto: Order): EnrichedOrder {\n const { executedFeeAmount, executedSurplusFee } = dto\n const totalFee = executedSurplusFee ?? executedFeeAmount\n\n return {\n ...dto,\n totalFee,\n }\n}\n\n/**\n * Transform order field for Native EthFlow orders\n *\n * A no-op for regular orders\n * For Native EthFlow, due to how the contract is setup:\n * - sellToken set to Native token address\n * - owner set to `onchainUser`\n * - validTo set to `ethflowData.userValidTo`\n */\nfunction transformEthFlowOrder(order: EnrichedOrder): EnrichedOrder {\n const { ethflowData } = order\n\n if (!ethflowData) {\n return order\n }\n\n const { userValidTo: validTo } = ethflowData\n const owner = order.onchainUser || order.owner\n const sellToken = BUY_ETH_ADDRESS\n\n return { ...order, validTo, owner, sellToken }\n}\n","import { backOff, BackoffOptions } from 'exponential-backoff'\nimport { RateLimiter, RateLimiterOpts } from 'limiter'\n\nexport class OrderBookApiError<T = unknown> extends Error {\n constructor(public readonly response: Response, public readonly body: T) {\n super(typeof body === 'string' ? body : response.statusText)\n }\n}\n\nconst REQUEST_TIMEOUT = 408\nconst TOO_EARLY = 425\nconst TOO_MANY_REQUESTS = 429\nconst INTERNAL_SERVER_ERROR = 500\nconst BAD_GATEWAY = 502\nconst SERVICE_UNAVAILABLE = 503\nconst GATEWAY_TIMEOUT = 504\n\nconst STATUS_CODES_TO_RETRY = [\n REQUEST_TIMEOUT,\n TOO_EARLY,\n TOO_MANY_REQUESTS,\n INTERNAL_SERVER_ERROR,\n BAD_GATEWAY,\n SERVICE_UNAVAILABLE,\n GATEWAY_TIMEOUT,\n]\n\n// See config in https://www.npmjs.com/package/@insertish/exponential-backoff\nexport const DEFAULT_BACKOFF_OPTIONS: BackoffOptions = {\n numOfAttempts: 10,\n maxDelay: Infinity,\n jitter: 'none',\n retry: (error: Error | OrderBookApiError) => {\n if (error instanceof OrderBookApiError) {\n return STATUS_CODES_TO_RETRY.includes(error.response.status)\n }\n\n return true\n },\n}\n\n// CowSwap order-book API is limited by 5 requests per second from one IP\nexport const DEFAULT_LIMITER_OPTIONS: RateLimiterOpts = {\n tokensPerInterval: 5,\n interval: 'second',\n}\n\nexport interface FetchParams {\n path: string\n method: 'GET' | 'POST' | 'DELETE' | 'PUT'\n body?: unknown\n query?: URLSearchParams\n}\n\nconst getResponseBody = async (response: Response): Promise<unknown> => {\n if (response.status !== 204) {\n try {\n const contentType = response.headers.get('Content-Type')\n if (contentType) {\n if (contentType.toLowerCase().startsWith('application/json')) {\n return await response.json()\n } else {\n return await response.text()\n }\n }\n } catch (error) {\n console.error(error)\n }\n }\n return undefined\n}\n\nexport async function request<T>(\n baseUrl: string,\n { path, query, method, body }: FetchParams,\n rateLimiter: RateLimiter,\n backoffOpts: BackoffOptions\n): Promise<T> {\n const queryString = query ? '?' + query : ''\n const headers = {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n }\n\n const url = `${baseUrl}${path}${queryString}`\n const init: RequestInit = { method, body: body ? JSON.stringify(body) : undefined, headers }\n\n return backOff<T>(async () => {\n await rateLimiter.removeTokens(1)\n\n const response = await fetch(url, init)\n const responseBody = (await getResponseBody(response)) as T\n\n // Successful response\n if (response.status >= 200 && response.status < 300) {\n return responseBody\n }\n\n return Promise.reject(new OrderBookApiError(response, responseBody))\n }, backoffOpts)\n}\n","import 'cross-fetch/polyfill'\nimport {\n Address,\n NativePriceResponse,\n Order,\n OrderCancellations,\n OrderCreation,\n OrderQuoteRequest,\n OrderQuoteResponse,\n Trade,\n TransactionHash,\n UID,\n} from './generated'\nimport { CowError } from '../common/cow-error'\nimport {\n ApiContext,\n CowEnv,\n DEFAULT_COW_API_CONTEXT,\n ApiBaseUrls,\n ENVS_LIST,\n PartialApiContext,\n RequestOptions,\n} from '../common/configs'\nimport { transformOrder } from './transformOrder'\nimport { EnrichedOrder } from './types'\nimport { SupportedChainId } from '../common/chains'\nimport { RateLimiter } from 'limiter'\nimport { DEFAULT_BACKOFF_OPTIONS, DEFAULT_LIMITER_OPTIONS, FetchParams, OrderBookApiError, request } from './request'\n\nexport const ORDER_BOOK_PROD_CONFIG: ApiBaseUrls = {\n [SupportedChainId.MAINNET]: 'https://api.cow.fi/mainnet',\n [SupportedChainId.GNOSIS_CHAIN]: 'https://api.cow.fi/xdai',\n [SupportedChainId.GOERLI]: 'https://api.cow.fi/goerli',\n}\n\nexport const ORDER_BOOK_STAGING_CONFIG: ApiBaseUrls = {\n [SupportedChainId.MAINNET]: 'https://barn.api.cow.fi/mainnet',\n [SupportedChainId.GNOSIS_CHAIN]: 'https://barn.api.cow.fi/xdai',\n [SupportedChainId.GOERLI]: 'https://barn.api.cow.fi/goerli',\n}\n\nfunction cleanObjectFromUndefinedValues(obj: Record<string, string>): typeof obj {\n return Object.keys(obj).reduce((acc, key) => {\n const val = obj[key]\n if (typeof val !== 'undefined') acc[key] = val\n return acc\n }, {} as typeof obj)\n}\n\nexport class OrderBookApi {\n public context: ApiContext & RequestOptions\n\n private rateLimiter: RateLimiter\n\n constructor(context: PartialApiContext & RequestOptions = {}) {\n this.context = { ...DEFAULT_COW_API_CONTEXT, ...context }\n this.rateLimiter = new RateLimiter(context.limiterOpts || DEFAULT_LIMITER_OPTIONS)\n }\n\n getTrades(\n request: { owner?: Address; orderUid?: UID },\n contextOverride: PartialApiContext = {}\n ): Promise<Array<Trade>> {\n if (request.owner && request.orderUid) {\n return Promise.reject(new CowError('Cannot specify both owner and orderId'))\n }\n\n const query = new URLSearchParams(cleanObjectFromUndefinedValues(request))\n\n return this.fetch({ path: '/api/v1/trades', method: 'GET', query }, contextOverride)\n }\n\n getOrders(\n {\n owner,\n offset = 0,\n limit = 1000,\n }: {\n owner: Address\n offset?: number\n limit?: number\n },\n contextOverride: PartialApiContext = {}\n ): Promise<Array<EnrichedOrder>> {\n const query = new URLSearchParams(\n cleanObjectFromUndefinedValues({ offset: offset.toString(), limit: limit.toString() })\n )\n\n return this.fetch<Array<EnrichedOrder>>(\n { path: `/api/v1/account/${owner}/orders`, method: 'GET', query },\n contextOverride\n ).then((orders) => {\n return orders.map(transformOrder)\n })\n }\n\n getTxOrders(txHash: TransactionHash, contextOverride: PartialApiContext = {}): Promise<Array<EnrichedOrder>> {\n return this.fetch<Array<EnrichedOrder>>(\n { path: `/api/v1/transactions/${txHash}/orders`, method: 'GET' },\n contextOverride\n ).then((orders) => {\n return orders.map(transformOrder)\n })\n }\n\n getOrder(uid: UID, contextOverride: PartialApiContext = {}): Promise<EnrichedOrder> {\n return this.fetch<Order>({ path: `/api/v1/orders/${uid}`, method: 'GET' }, contextOverride).then((order) => {\n return transformOrder(order)\n })\n }\n\n getOrderMultiEnv(uid: UID, contextOverride: PartialApiContext = {}): Promise<EnrichedOrder> {\n const { env } = this.getContextWithOverride(contextOverride)\n const otherEnvs = ENVS_LIST.filter((i) => i !== env)\n\n let attemptsCount = 0\n\n const fallback = (error: Error | OrderBookApiError): Promise<EnrichedOrder> => {\n const nextEnv = otherEnvs[attemptsCount]\n\n if (error instanceof OrderBookApiError && error.response.status === 404 && nextEnv) {\n attemptsCount++\n\n return this.getOrder(uid, { ...contextOverride, env: nextEnv }).catch(fallback)\n }\n\n return Promise.reject(error)\n }\n\n return this.getOrder(uid, { ...contextOverride, env }).catch(fallback)\n }\n\n getQuote(requestBody: OrderQuoteRequest, contextOverride: PartialApiContext = {}): Promise<OrderQuoteResponse> {\n return this.fetch({ path: '/api/v1/quote', method: 'POST', body: requestBody }, contextOverride)\n }\n\n sendSignedOrderCancellations(\n requestBody: OrderCancellations,\n contextOverride: PartialApiContext = {}\n ): Promise<void> {\n return this.fetch({ path: '/api/v1/orders', method: 'DELETE', body: requestBody }, contextOverride)\n }\n\n sendOrder(requestBody: OrderCreation, contextOverride: PartialApiContext = {}): Promise<UID> {\n return this.fetch({ path: '/api/v1/orders', method: 'POST', body: requestBody }, contextOverride)\n }\n\n getNativePrice(tokenAddress: Address, contextOverride: PartialApiContext = {}): Promise<NativePriceResponse> {\n return this.fetch({ path: `/api/v1/token/${tokenAddress}/native_price`, method: 'GET' }, contextOverride)\n }\n\n getOrderLink(uid: UID, contextOverride?: PartialApiContext): string {\n const { chainId, env } = this.getContextWithOverride(contextOverride)\n return this.getApiBaseUrls(env)[chainId] + `/api/v1/orders/${uid}`\n }\n\n private getContextWithOverride(contextOverride: PartialApiContext = {}): ApiContext & RequestOptions {\n return { ...this.context, ...contextOverride }\n }\n\n private getApiBaseUrls(env: CowEnv): ApiBaseUrls {\n if (this.context.baseUrls) return this.context.baseUrls\n\n return env === 'prod' ? ORDER_BOOK_PROD_CONFIG : ORDER_BOOK_STAGING_CONFIG\n }\n\n private fetch<T>(params: FetchParams, contextOverride: PartialApiContext = {}): Promise<T> {\n const { chainId, env } = this.getContextWithOverride(contextOverride)\n const baseUrl = this.getApiBaseUrls(env)[chainId]\n const backoffOpts = this.context.backoffOpts || DEFAULT_BACKOFF_OPTIONS\n\n return request(baseUrl, params, this.rateLimiter, backoffOpts)\n }\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Where should the buy token be transfered to?\n */\nexport enum BuyTokenDestination {\n ERC20 = 'erc20',\n INTERNAL = 'internal',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * How was the order signed?\n */\nexport enum EcdsaSigningScheme {\n EIP712 = 'eip712',\n ETHSIGN = 'ethsign',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport type FeeAndQuoteError = {\n errorType: FeeAndQuoteError.errorType;\n description: string;\n};\n\nexport namespace FeeAndQuoteError {\n\n export enum errorType {\n NO_LIQUIDITY = 'NoLiquidity',\n UNSUPPORTED_TOKEN = 'UnsupportedToken',\n AMOUNT_IS_ZERO = 'AmountIsZero',\n SELL_AMOUNT_DOES_NOT_COVER_FEE = 'SellAmountDoesNotCoverFee',\n }\n\n\n}\n\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nimport type { Address } from './Address';\n\nexport type OnchainOrderData = {\n /**\n * If orders are placed as onchain orders, the owner of the order might\n * be a smart contract, but not the user placing the order. The\n * actual user will be provided in this field\n *\n */\n sender: Address;\n /**\n * Describes the error, if the order placement was not\n * successful. This could happen, for example, if the\n * valid_to is too high, or no valid quote was found or generated\n *\n */\n placementError?: OnchainOrderData.placementError;\n};\n\nexport namespace OnchainOrderData {\n\n /**\n * Describes the error, if the order placement was not\n * successful. This could happen, for example, if the\n * valid_to is too high, or no valid quote was found or generated\n *\n */\n export enum placementError {\n QUOTE_NOT_FOUND = 'QuoteNotFound',\n VALID_TO_TOO_FAR_IN_FUTURE = 'ValidToTooFarInFuture',\n PRE_VALIDATION_ERROR = 'PreValidationError',\n }\n\n\n}\n\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport type OrderCancellationError = {\n errorType: OrderCancellationError.errorType;\n description: string;\n};\n\nexport namespace OrderCancellationError {\n\n export enum errorType {\n INVALID_SIGNATURE = 'InvalidSignature',\n WRONG_OWNER = 'WrongOwner',\n ORDER_NOT_FOUND = 'OrderNotFound',\n ALREADY_CANCELLED = 'AlreadyCancelled',\n ORDER_FULLY_EXECUTED = 'OrderFullyExecuted',\n ORDER_EXPIRED = 'OrderExpired',\n ON_CHAIN_ORDER = 'OnChainOrder',\n }\n\n\n}\n\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Order class\n */\nexport enum OrderClass {\n MARKET = 'market',\n LIMIT = 'limit',\n LIQUIDITY = 'liquidity',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Is this a buy order or sell order?\n */\nexport enum OrderKind {\n BUY = 'buy',\n SELL = 'sell',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport type OrderPostError = {\n errorType: OrderPostError.errorType;\n description: string;\n};\n\nexport namespace OrderPostError {\n\n export enum errorType {\n DUPLICATE_ORDER = 'DuplicateOrder',\n INSUFFICIENT_FEE = 'InsufficientFee',\n INSUFFICIENT_ALLOWANCE = 'InsufficientAllowance',\n INSUFFICIENT_BALANCE = 'InsufficientBalance',\n INSUFFICIENT_VALID_TO = 'InsufficientValidTo',\n EXCESSIVE_VALID_TO = 'ExcessiveValidTo',\n INVALID_SIGNATURE = 'InvalidSignature',\n TRANSFER_ETH_TO_CONTRACT = 'TransferEthToContract',\n TRANSFER_SIMULATION_FAILED = 'TransferSimulationFailed',\n UNSUPPORTED_TOKEN = 'UnsupportedToken',\n WRONG_OWNER = 'WrongOwner',\n MISSING_FROM = 'MissingFrom',\n SAME_BUY_AND_SELL_TOKEN = 'SameBuyAndSellToken',\n ZERO_AMOUNT = 'ZeroAmount',\n UNSUPPORTED_BUY_TOKEN_DESTINATION = 'UnsupportedBuyTokenDestination',\n UNSUPPORTED_SELL_TOKEN_SOURCE = 'UnsupportedSellTokenSource',\n UNSUPPORTED_ORDER_TYPE = 'UnsupportedOrderType',\n UNSUPPORTED_SIGNATURE = 'UnsupportedSignature',\n TOO_MANY_LIMIT_ORDERS = 'TooManyLimitOrders',\n }\n\n\n}\n\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nimport type { TokenAmount } from './TokenAmount';\n\n/**\n * The buy or sell side when quoting an order.\n */\nexport type OrderQuoteSide = ({\n kind: OrderQuoteSide.kind;\n /**\n * The total amount that is available for the order. From this value, the fee\n * is deducted and the buy amount is calculated.\n *\n */\n sellAmountBeforeFee: TokenAmount;\n} | {\n kind: OrderQuoteSide.kind;\n /**\n * The sell amount for the order.\n */\n sellAmountAfterFee: TokenAmount;\n} | {\n kind: OrderQuoteSide.kind;\n /**\n * The buy amount for the order.\n */\n buyAmountAfterFee: TokenAmount;\n});\n\nexport namespace OrderQuoteSide {\n\n export enum kind {\n SELL = 'sell',\n }\n\n\n}\n\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * The current order status\n */\nexport enum OrderStatus {\n PRESIGNATURE_PENDING = 'presignaturePending',\n OPEN = 'open',\n FULFILLED = 'fulfilled',\n CANCELLED = 'cancelled',\n EXPIRED = 'expired',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * How good should the price estimate be?\n * Note that orders are supposed to be created from \"optimal\" price estimates.\n *\n */\nexport enum PriceQuality {\n FAST = 'fast',\n OPTIMAL = 'optimal',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport type ReplaceOrderError = {\n errorType: ReplaceOrderError.errorType;\n description: string;\n};\n\nexport namespace ReplaceOrderError {\n\n export enum errorType {\n ALREADY_CANCELLED = 'AlreadyCancelled',\n ORDER_FULLY_EXECUTED = 'OrderFullyExecuted',\n ORDER_EXPIRED = 'OrderExpired',\n ON_CHAIN_ORDER = 'OnChainOrder',\n DUPLICATE_ORDER = 'DuplicateOrder',\n INSUFFICIENT_FEE = 'InsufficientFee',\n INSUFFICIENT_ALLOWANCE = 'InsufficientAllowance',\n INSUFFICIENT_BALANCE = 'InsufficientBalance',\n INSUFFICIENT_VALID_TO = 'InsufficientValidTo',\n EXCESSIVE_VALID_TO = 'ExcessiveValidTo',\n INVALID_SIGNATURE = 'InvalidSignature',\n TRANSFER_ETH_TO_CONTRACT = 'TransferEthToContract',\n TRANSFER_SIMULATION_FAILED = 'TransferSimulationFailed',\n UNSUPPORTED_TOKEN = 'UnsupportedToken',\n WRONG_OWNER = 'WrongOwner',\n SAME_BUY_AND_SELL_TOKEN = 'SameBuyAndSellToken',\n ZERO_AMOUNT = 'ZeroAmount',\n UNSUPPORTED_BUY_TOKEN_DESTINATION = 'UnsupportedBuyTokenDestination',\n UNSUPPORTED_SELL_TOKEN_SOURCE = 'UnsupportedSellTokenSource',\n UNSUPPORTED_ORDER_TYPE = 'UnsupportedOrderType',\n UNSUPPORTED_SIGNATURE = 'UnsupportedSignature',\n }\n\n\n}\n\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Where should the sell token be drawn from?\n */\nexport enum SellTokenSource {\n ERC20 = 'erc20',\n INTERNAL = 'internal',\n EXTERNAL = 'external',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * How was the order signed?\n */\nexport enum SigningScheme {\n EIP712 = 'eip712',\n ETHSIGN = 'ethsign',\n PRESIGN = 'presign',\n EIP1271 = 'eip1271',\n}\n","import { gql } from 'graphql-request'\n\nexport const TOTALS_QUERY = gql`\n query Totals {\n totals {\n tokens\n orders\n traders\n settlements\n volumeUsd\n volumeEth\n feesUsd\n feesEth\n }\n }\n`\n\nexport const LAST_DAYS_VOLUME_QUERY = gql`\n query LastDaysVolume($days: Int!) {\n dailyTotals(orderBy: timestamp, orderDirection: desc, first: $days) {\n timestamp\n volumeUsd\n }\n }\n`\n\nexport const LAST_HOURS_VOLUME_QUERY = gql`\n query LastHoursVolume($hours: Int!) {\n hourlyTotals(orderBy: timestamp, orderDirection: desc, first: $hours) {\n timestamp\n volumeUsd\n }\n }\n`\n","import { CowError } from '../common/cow-error'\nimport { LastDaysVolumeQuery, LastHoursVolumeQuery, TotalsQuery } from './graphql'\nimport { LAST_DAYS_VOLUME_QUERY, LAST_HOURS_VOLUME_QUERY, TOTALS_QUERY } from './queries'\nimport { DocumentNode } from 'graphql/index'\nimport { request, Variables } from 'graphql-request'\nimport { ApiContext, CowEnv, DEFAULT_COW_API_CONTEXT, ApiBaseUrls, PartialApiContext } from '../common/configs'\nimport { SupportedChainId } from '../common/chains'\n\nexport const SUBGRAPH_PROD_CONFIG: ApiBaseUrls = {\n [SupportedChainId.MAINNET]: 'https://api.thegraph.com/subgraphs/name/cowprotocol/cow',\n [SupportedChainId.GNOSIS_CHAIN]: 'https://api.thegraph.com/subgraphs/name/cowprotocol/cow-gc',\n [SupportedChainId.GOERLI]: 'https://api.thegraph.com/subgraphs/name/cowprotocol/cow-goerli',\n}\n\nexport const SUBGRAPH_STAGING_CONFIG: ApiBaseUrls = {\n [SupportedChainId.MAINNET]: 'https://api.thegraph.com/subgraphs/name/cowprotocol/cow-staging',\n [SupportedChainId.GNOSIS_CHAIN]: 'https://api.thegraph.com/subgraphs/name/cowprotocol/cow-gc-staging',\n [SupportedChainId.GOERLI]: '',\n}\n\nexport class SubgraphApi {\n API_NAME = 'CoW Protocol Subgraph'\n\n public context: ApiContext\n\n constructor(context: PartialApiContext = {}) {\n this.context = {\n ...DEFAULT_COW_API_CONTEXT,\n ...context,\n }\n }\n\n async getTotals(contextOverride: PartialApiContext = {}): Promise<TotalsQuery['totals'][0]> {\n const response = await this.runQuery<TotalsQuery>(TOTALS_QUERY, undefined, contextOverride)\n return response.totals[0]\n }\n\n async getLastDaysVolume(days: number, contextOverride: PartialApiContext = {}): Promise<LastDaysVolumeQuery> {\n return this.runQuery<LastDaysVolumeQuery>(LAST_DAYS_VOLUME_QUERY, { days }, contextOverride)\n }\n\n async getLastHoursVolume(hours: number, contextOverride: PartialApiContext = {}): Promise<LastHoursVolumeQuery> {\n return this.runQuery<LastHoursVolumeQuery>(LAST_HOURS_VOLUME_QUERY, { hours }, contextOverride)\n }\n\n async runQuery<T>(\n query: string | DocumentNode,\n variables: Variables | undefined = undefined,\n contextOverride: PartialApiContext = {}\n ): Promise<T> {\n const { chainId, env } = this.getContextWithOverride(contextOverride)\n const baseUrl = this.getEnvConfigs(env)[chainId]\n\n try {\n return await request(baseUrl, query, variables)\n } catch (error) {\n console.error(`[subgraph:${this.API_NAME}]`, error)\n throw new CowError(\n `Error running query: ${query}. Variables: ${JSON.stringify(variables)}. API: ${baseUrl}. Inner Error: ${error}`\n )\n }\n }\n\n private getContextWithOverride(contextOverride: PartialApiContext = {}): ApiContext {\n return { ...this.context, ...contextOverride }\n }\n\n private getEnvConfigs(env: CowEnv): ApiBaseUrls {\n if (this.context.baseUrls) return this.context.baseUrls\n\n return env === 'prod' ? SUBGRAPH_PROD_CONFIG : SUBGRAPH_STAGING_CONFIG\n }\n}\n","import type { SupportedChainId } from '../common'\nimport type { Signer } from '@ethersproject/abstract-signer'\nimport type { TypedDataDomain } from '@cowprotocol/contracts'\nimport type { SigningResult, UnsignedOrder } from './types'\n\nconst getSignUtils = () => import('./utils')\n\nexport class OrderSigningUtils {\n static async signOrder(order: UnsignedOrder, chainId: SupportedChainId, signer: Signer): Promise<SigningResult> {\n const { signOrder } = await getSignUtils()\n return signOrder(order, chainId, signer)\n }\n\n static async signOrderCancellation(\n orderId: string,\n chainId: SupportedChainId,\n signer: Signer\n ): Promise<SigningResult> {\n const { signOrderCancellation } = await getSignUtils()\n return signOrderCancellation(orderId, chainId, signer)\n }\n\n static async signOrderCancellations(\n orderUid: string[],\n chainId: SupportedChainId,\n signer: Signer\n ): Promise<SigningResult> {\n const { signOrderCancellations } = await getSignUtils()\n return signOrderCancellations(orderUid, chainId, signer)\n }\n\n static async getDomain(chainId: SupportedChainId): Promise<TypedDataDomain> {\n const { getDomain } = await getSignUtils()\n return getDomain(chainId)\n }\n}\n","export const DEFAULT_IPFS_READ_URI = 'https://gnosis.mypinata.cloud/ipfs'\nexport const DEFAULT_IPFS_WRITE_URI = 'https://api.pinata.cloud'\n"],"names":["SupportedChainId","ENVS_LIST","DEFAULT_COW_API_CONTEXT","env","chainId","MAINNET","CowError","Error","constructor","message","error_code","super","this","GPv2Settlement","JSON","parse","ALL_SUPPORTED_CHAIN_IDS","GOERLI","GNOSIS_CHAIN","COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS","reduce","acc","address","BUY_ETH_ADDRESS","transformOrder","order","ethflowData","userValidTo","validTo","owner","onchainUser","sellToken","transformEthFlowOrder","dto","executedFeeAmount","executedSurplusFee","totalFee","addTotalFeeToOrder","request","baseUrl","path","query","method","body","rateLimiter","backoffOpts","headers","Accept","url","init","stringify","undefined","Promise","resolve","backOff","removeTokens","then","fetch","response","getResponseBody","responseBody","status","reject","OrderBookApiError","e","statusText","STATUS_CODES_TO_RETRY","DEFAULT_BACKOFF_OPTIONS","numOfAttempts","maxDelay","Infinity","jitter","retry","error","includes","DEFAULT_LIMITER_OPTIONS","tokensPerInterval","interval","_exit","_temp","contentType","get","toLowerCase","startsWith","json","_await$response$json","text","_await$response$text","_catch","console","_result3","ORDER_BOOK_PROD_CONFIG","ORDER_BOOK_STAGING_CONFIG","cleanObjectFromUndefinedValues","obj","Object","keys","key","val","BuyTokenDestination","EcdsaSigningScheme","FeeAndQuoteError","errorType","OnchainOrderData","placementError","OrderCancellationError","OrderClass","OrderKind","OrderPostError","OrderQuoteSide","OrderStatus","PriceQuality","ReplaceOrderError","SellTokenSource","SigningScheme","kind","TOTALS_QUERY","gql","LAST_DAYS_VOLUME_QUERY","LAST_HOURS_VOLUME_QUERY","SUBGRAPH_PROD_CONFIG","SUBGRAPH_STAGING_CONFIG","getSignUtils","require","context","RateLimiter","limiterOpts","getTrades","contextOverride","orderUid","URLSearchParams","getOrders","offset","limit","toString","orders","map","getTxOrders","txHash","getOrder","uid","getOrderMultiEnv","getContextWithOverride","otherEnvs","filter","i","attemptsCount","fallback","nextEnv","catch","getQuote","requestBody","sendSignedOrderCancellations","sendOrder","getNativePrice","tokenAddress","getOrderLink","getApiBaseUrls","baseUrls","params","static","signer","signOrder","orderId","signOrderCancellation","signOrderCancellations","getDomain","API_NAME","getTotals","runQuery","totals","getLastDaysVolume","days","getLastHoursVolume","hours","variables","_this4","getEnvConfigs"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export{A as ALL_SUPPORTED_CHAIN_IDS,B as BuyTokenDestination,a as COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS,C as CowError,r as DEFAULT_BACKOFF_OPTIONS,D as DEFAULT_COW_API_CONTEXT,c as DEFAULT_IPFS_READ_URI,d as DEFAULT_IPFS_WRITE_URI,s as DEFAULT_LIMITER_OPTIONS,b as ENVS_LIST,E as EcdsaSigningScheme,F as FeeAndQuoteError,O as ORDER_BOOK_PROD_CONFIG,e as ORDER_BOOK_STAGING_CONFIG,g as OnchainOrderData,f as OrderBookApi,q as OrderBookApiError,h as OrderCancellationError,i as OrderClass,j as OrderKind,k as OrderPostError,m as OrderQuoteSide,x as OrderSigningUtils,n as OrderStatus,P as PriceQuality,R as ReplaceOrderError,u as SUBGRAPH_PROD_CONFIG,v as SUBGRAPH_STAGING_CONFIG,o as SellTokenSource,p as SigningScheme,w as SubgraphApi,S as SupportedChainId,l as logPrefix,t as request}from"./index-c1597896.js";import"cross-fetch/polyfill";import"limiter";import"exponential-backoff";import"graphql-request";
1
+ export{A as ALL_SUPPORTED_CHAIN_IDS,B as BuyTokenDestination,a as COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS,C as CowError,r as DEFAULT_BACKOFF_OPTIONS,D as DEFAULT_COW_API_CONTEXT,c as DEFAULT_IPFS_READ_URI,d as DEFAULT_IPFS_WRITE_URI,s as DEFAULT_LIMITER_OPTIONS,b as ENVS_LIST,E as EcdsaSigningScheme,F as FeeAndQuoteError,O as ORDER_BOOK_PROD_CONFIG,e as ORDER_BOOK_STAGING_CONFIG,g as OnchainOrderData,f as OrderBookApi,q as OrderBookApiError,h as OrderCancellationError,i as OrderClass,j as OrderKind,k as OrderPostError,m as OrderQuoteSide,x as OrderSigningUtils,n as OrderStatus,P as PriceQuality,R as ReplaceOrderError,u as SUBGRAPH_PROD_CONFIG,v as SUBGRAPH_STAGING_CONFIG,o as SellTokenSource,p as SigningScheme,w as SubgraphApi,S as SupportedChainId,l as logPrefix,t as request}from"./index-ed2b18ee.js";import"cross-fetch/polyfill";import"limiter";import"exponential-backoff";import"graphql-request";
2
2
  //# sourceMappingURL=index.modern.mjs.map