@cowprotocol/cow-sdk 5.8.0-RC.8 → 5.8.0

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.
Files changed (56) hide show
  1. package/dist/common/consts.d.ts +1 -11
  2. package/dist/common/generated/factories/index.d.ts +0 -2
  3. package/dist/common/generated/index.d.ts +0 -4
  4. package/dist/composable/ConditionalOrderFactory.d.ts +10 -0
  5. package/dist/index-c004f2c4.js +29 -0
  6. package/dist/index-c004f2c4.js.map +1 -0
  7. package/dist/index.d.ts +0 -1
  8. package/dist/index.js +4 -4
  9. package/dist/index.js.map +1 -1
  10. package/dist/index.modern.mjs +1 -1
  11. package/dist/index.module.js +4 -4
  12. package/dist/index.module.js.map +1 -1
  13. package/dist/order-signing/orderSigningUtils.d.ts +4 -14
  14. package/dist/order-signing/utils.d.ts +1 -11
  15. package/dist/package.json +5 -8
  16. package/dist/utils-2718e59e.js +2 -0
  17. package/dist/utils-2718e59e.js.map +1 -0
  18. package/dist/utils-353bb58e.js +2 -0
  19. package/dist/utils-353bb58e.js.map +1 -0
  20. package/dist/utils-61509987.js +2 -0
  21. package/dist/utils-61509987.js.map +1 -0
  22. package/package.json +5 -8
  23. package/dist/common/generated/EthFlow.d.ts +0 -117
  24. package/dist/common/generated/GPv2Settlement.d.ts +0 -107
  25. package/dist/common/generated/factories/EthFlow__factory.d.ts +0 -124
  26. package/dist/common/generated/factories/GPv2Settlement__factory.d.ts +0 -81
  27. package/dist/index-cc6750e9.js +0 -29
  28. package/dist/index-cc6750e9.js.map +0 -1
  29. package/dist/schemas/trading/LimitOrderAdvancedSettings.ts +0 -228
  30. package/dist/schemas/trading/LimitTradeParameters.ts +0 -90
  31. package/dist/schemas/trading/QuoteResultsSerialized.ts +0 -836
  32. package/dist/schemas/trading/QuoterParameters.ts +0 -30
  33. package/dist/schemas/trading/SwapAdvancedSettings.ts +0 -334
  34. package/dist/schemas/trading/TradeParameters.ts +0 -79
  35. package/dist/trading/appDataUtils.d.ts +0 -4
  36. package/dist/trading/calculateUniqueOrderId.d.ts +0 -6
  37. package/dist/trading/consts.d.ts +0 -8
  38. package/dist/trading/getEthFlowTransaction.d.ts +0 -7
  39. package/dist/trading/getOrderToSign.d.ts +0 -8
  40. package/dist/trading/getOrderTypedData.d.ts +0 -4
  41. package/dist/trading/getPreSignTransaction.d.ts +0 -4
  42. package/dist/trading/getQuote.d.ts +0 -14
  43. package/dist/trading/index.d.ts +0 -19
  44. package/dist/trading/postCoWProtocolTrade.d.ts +0 -4
  45. package/dist/trading/postLimitOrder.d.ts +0 -3
  46. package/dist/trading/postOnChainTrade.d.ts +0 -8
  47. package/dist/trading/postSwapOrder.d.ts +0 -4
  48. package/dist/trading/tradingSdk.d.ts +0 -13
  49. package/dist/trading/types.d.ts +0 -103
  50. package/dist/trading/utils.d.ts +0 -16
  51. package/dist/utils-492ba939.js +0 -2
  52. package/dist/utils-492ba939.js.map +0 -1
  53. package/dist/utils-d066bc92.js +0 -2
  54. package/dist/utils-d066bc92.js.map +0 -1
  55. package/dist/utils-f09c5cb3.js +0 -2
  56. package/dist/utils-f09c5cb3.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import { SupportedChainId } from './chains';
2
- export declare const ETH_ADDRESS = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
2
+ export declare const BUY_ETH_ADDRESS = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
3
3
  export declare const EXTENSIBLE_FALLBACK_HANDLER = "0x2f55e8b20D0B9FEFA187AA7d00B6Cbe563605bF5";
4
4
  export declare const COMPOSABLE_COW = "0xfdaFc9d1902f4e0b84f65F49f244b32b31013b74";
5
5
  export declare const COW_SHED_FACTORY = "0x00E989b87700514118Fa55326CD1cCE82faebEF6";
@@ -27,13 +27,3 @@ export declare const EXTENSIBLE_FALLBACK_HANDLER_CONTRACT_ADDRESS: Record<Suppor
27
27
  * An object containing the addresses of the `ComposableCow` contracts for each supported chain.
28
28
  */
29
29
  export declare const COMPOSABLE_COW_CONTRACT_ADDRESS: Record<SupportedChainId, string>;
30
- /**
31
- * An object containing the addresses of wrapped native currencies for each supported chain.
32
- */
33
- export declare const WRAPPED_NATIVE_CURRENCIES: Record<SupportedChainId, string>;
34
- /**
35
- * An object containing the addresses of ETH flow contracts for each supported chain.
36
- */
37
- export declare const ETH_FLOW_ADDRESSES: Record<SupportedChainId, string>;
38
- export declare const BARN_ETH_FLOW_ADDRESSES: Record<SupportedChainId, string>;
39
- export declare const MAX_VALID_TO_EPOCH = 4294967295;
@@ -1,7 +1,5 @@
1
1
  export { CoWShed__factory } from "./CoWShed__factory";
2
2
  export { CoWShedFactory__factory } from "./CoWShedFactory__factory";
3
3
  export { ComposableCoW__factory } from "./ComposableCoW__factory";
4
- export { EthFlow__factory } from "./EthFlow__factory";
5
4
  export { ExtensibleFallbackHandler__factory } from "./ExtensibleFallbackHandler__factory";
6
- export { GPv2Settlement__factory } from "./GPv2Settlement__factory";
7
5
  export { TWAP__factory } from "./TWAP__factory";
@@ -1,15 +1,11 @@
1
1
  export type { CoWShed } from "./CoWShed";
2
2
  export type { CoWShedFactory } from "./CoWShedFactory";
3
3
  export type { ComposableCoW } from "./ComposableCoW";
4
- export type { EthFlow } from "./EthFlow";
5
4
  export type { ExtensibleFallbackHandler } from "./ExtensibleFallbackHandler";
6
- export type { GPv2Settlement } from "./GPv2Settlement";
7
5
  export type { TWAP } from "./TWAP";
8
6
  export * as factories from "./factories";
9
7
  export { ComposableCoW__factory } from "./factories/ComposableCoW__factory";
10
8
  export { CoWShed__factory } from "./factories/CoWShed__factory";
11
9
  export { CoWShedFactory__factory } from "./factories/CoWShedFactory__factory";
12
- export { EthFlow__factory } from "./factories/EthFlow__factory";
13
10
  export { ExtensibleFallbackHandler__factory } from "./factories/ExtensibleFallbackHandler__factory";
14
- export { GPv2Settlement__factory } from "./factories/GPv2Settlement__factory";
15
11
  export { TWAP__factory } from "./factories/TWAP__factory";
@@ -2,8 +2,18 @@ import { type ConditionalOrder } from './ConditionalOrder';
2
2
  import { ConditionalOrderParams } from './types';
3
3
  export type FromParams<D, S> = (params: ConditionalOrderParams) => ConditionalOrder<D, S>;
4
4
  export type ConditionalOrderRegistry = Record<string, FromParams<unknown, unknown>>;
5
+ /**
6
+ * Factory for conditional orders.
7
+ *
8
+ * It uses a registry to instantiate the correct conditional order based on the handler.
9
+ *
10
+ * Knowing the handler, the factory will instantiate the correct conditional order using the staticInput data.
11
+ */
5
12
  export declare class ConditionalOrderFactory {
6
13
  knownOrderTypes: ConditionalOrderRegistry;
7
14
  constructor(registry: ConditionalOrderRegistry);
15
+ /**
16
+ * Get the conditional order factory from the conditional order parameters
17
+ */
8
18
  fromParams(params: ConditionalOrderParams): ConditionalOrder<unknown, unknown> | undefined;
9
19
  }
@@ -0,0 +1,29 @@
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";import{utils as r,Contract as s,ethers as i,constants as o,BigNumber as p}from"ethers";import{OrderBalance as d,OrderKind as u,SigningScheme as y,hashTypedData as l,isTypedDataSigner as c}from"@cowprotocol/contracts";import{StandardMerkleTree as f}from"@openzeppelin/merkle-tree";import{defaultAbiCoder as m,solidityKeccak256 as b,getCreate2Address as T,arrayify as h,joinSignature as I,splitSignature as E}from"ethers/lib/utils";var A;!function(e){e[e.MAINNET=1]="MAINNET",e[e.GNOSIS_CHAIN=100]="GNOSIS_CHAIN",e[e.ARBITRUM_ONE=42161]="ARBITRUM_ONE",e[e.BASE=8453]="BASE",e[e.SEPOLIA=11155111]="SEPOLIA"}(A||(A={}));const O=["prod","staging"],g={env:"prod",chainId:A.MAINNET};class v extends Error{constructor(e,t){super(e),this.error_code=void 0,this.error_code=t}}const S="cow-sdk:",w="https://gnosis.mypinata.cloud/ipfs",N="https://api.pinata.cloud";function C(){return C=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},C.apply(this,arguments)}function _(e,t){if(null==e)return{};var n,a,r={},s=Object.keys(e);for(a=0;a<s.length;a++)t.indexOf(n=s[a])>=0||(r[n]=e[n]);return r}const P="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",R="0x2f55e8b20D0B9FEFA187AA7d00B6Cbe563605bF5",D="0xfdaFc9d1902f4e0b84f65F49f244b32b31013b74",x="0x00E989b87700514118Fa55326CD1cCE82faebEF6",M="0x2CFFA8cf11B90C9F437567b86352169dF4009F73",U=Object.values(A).filter(e=>"number"==typeof e);function k(e){return U.reduce((t,n)=>C({},t,{[n]:"function"==typeof e?e(n):e}),{})}function L(e){return k(e)}const F=L("0x9008D19f58AAbD9eD0D60971565AA8510560ab41"),B=L("0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"),V=L(R),G=L(D);class $ 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 H=[408,425,429,500,502,503,504],W={numOfAttempts:10,maxDelay:Infinity,jitter:"none",retry:e=>!(e instanceof $)||H.includes(e.response.status)},Y={tokensPerInterval:5,interval:"second"},j=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 z(e,{path:n,query:a,method:r,body:s},i,o){const p=`${e}${n}${a?"?"+a:""}`,d={method:r,body:(()=>{if(s)return"string"==typeof s?s:JSON.stringify(s)})(),headers:{Accept:"application/json","Content-Type":"application/json"}};return t(async()=>{await i.removeTokens(1);const e=await fetch(p,d),t=await j(e);return e.status>=200&&e.status<300?t:Promise.reject(new $(e,t))},o)}function Z(e){return function(e){const{ethflowData:t}=e;if(!t)return e;const{userValidTo:n}=t;return C({},e,{validTo:n,owner:e.onchainUser||e.owner,sellToken:P})}(function(e){const{executedFeeAmount:t,executedSurplusFee:n}=e,a=BigInt(t||"0"),r=BigInt(n||"0");return C({},e,{totalFee:String(a+r)})}(e))}const K={[A.MAINNET]:"https://api.cow.fi/mainnet",[A.GNOSIS_CHAIN]:"https://api.cow.fi/xdai",[A.ARBITRUM_ONE]:"https://api.cow.fi/arbitrum_one",[A.BASE]:"https://api.cow.fi/base",[A.SEPOLIA]:"https://api.cow.fi/sepolia"},Q={[A.MAINNET]:"https://barn.api.cow.fi/mainnet",[A.GNOSIS_CHAIN]:"https://barn.api.cow.fi/xdai",[A.ARBITRUM_ONE]:"https://barn.api.cow.fi/arbitrum_one",[A.BASE]:"https://barn.api.cow.fi/base",[A.SEPOLIA]:"https://barn.api.cow.fi/sepolia"};function X(e){return Object.keys(e).reduce((t,n)=>{const a=e[n];return void 0!==a&&(t[n]=a),t},{})}class q{constructor(t={}){this.context=void 0,this.rateLimiter=void 0,this.context=C({},g,t),this.rateLimiter=new e(t.limiterOpts||Y)}getVersion(e={}){return this.fetch({path:"/api/v1/version",method:"GET"},e)}getTrades(e,t={}){if(e.owner&&e.orderUid)return Promise.reject(new v("Cannot specify both owner and orderId"));if(!e.owner&&!e.orderUid)return Promise.reject(new v("Must specify either owner or orderId"));const n=new URLSearchParams(X(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(X({offset:t.toString(),limit:n.toString()}));return this.fetch({path:`/api/v1/account/${e}/orders`,method:"GET",query:r},a).then(e=>e.map(Z))}getTxOrders(e,t={}){return this.fetch({path:`/api/v1/transactions/${e}/orders`,method:"GET"},t).then(e=>e.map(Z))}getOrder(e,t={}){return this.fetch({path:`/api/v1/orders/${e}`,method:"GET"},t).then(e=>Z(e))}getOrderCompetitionStatus(e,t={}){return this.fetch({path:`/api/v1/orders/${e}/status`,method:"GET"},t)}getOrderMultiEnv(e,t={}){const{env:n}=this.getContextWithOverride(t),a=O.filter(e=>e!==n);let r=0;const s=n=>{const i=a[r];return n instanceof $&&404===n.response.status&&i?(r++,this.getOrder(e,C({},t,{env:i})).catch(s)):Promise.reject(n)};return this.getOrder(e,C({},t,{env:n})).catch(s)}getQuote(e,t={}){return this.fetch({path:"/api/v1/quote",method:"POST",body:e},t)}sendSignedOrderCancellations(e,t={}){return this.fetch({path:"/api/v1/orders",method:"DELETE",body:e},t)}sendOrder(e,t={}){return this.fetch({path:"/api/v1/orders",method:"POST",body:e},t)}getNativePrice(e,t={}){return this.fetch({path:`/api/v1/token/${e}/native_price`,method:"GET"},t)}getTotalSurplus(e,t={}){return this.fetch({path:`/api/v1/users/${e}/total_surplus`,method:"GET"},t)}getAppData(e,t={}){return this.fetch({path:`/api/v1/app_data/${e}`,method:"GET"},t)}uploadAppData(e,t,n={}){return this.fetch({path:`/api/v1/app_data/${e}`,method:"PUT",body:{fullAppData:t}},n)}getSolverCompetition(e,t={}){return this.fetch({path:`/api/v1/solver_competition${"string"==typeof e?"/by_tx_hash":""}/${e}`,method:"GET"},t)}getOrderLink(e,t){const{chainId:n,env:a}=this.getContextWithOverride(t);return this.getApiBaseUrls(a)[n]+`/api/v1/orders/${e}`}getContextWithOverride(e={}){return C({},this.context,e)}getApiBaseUrls(e){return this.context.baseUrls?this.context.baseUrls:"prod"===e?K:Q}fetch(t,n={}){const{chainId:a,env:r,backoffOpts:s}=this.getContextWithOverride(n),i=this.getApiBaseUrls(r)[a],o=s||W;return z(i,t,n.limiterOpts?new e(n.limiterOpts):this.rateLimiter,o)}}var J,ee,te,ne,ae,re,se,ie,oe,pe,de,ue,ye,le,ce;!function(e){e.ERC20="erc20",e.INTERNAL="internal"}(J||(J={})),function(e){var t;(t=e.type||(e.type={})).OPEN="open",t.SCHEDULED="scheduled",t.ACTIVE="active",t.SOLVED="solved",t.EXECUTING="executing",t.TRADED="traded",t.CANCELLED="cancelled"}(ee||(ee={})),function(e){e.EIP712="eip712",e.ETHSIGN="ethsign"}(te||(te={})),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"}(ne||(ne={})),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"}(ae||(ae={})),function(e){e.MARKET="market",e.LIMIT="limit",e.LIQUIDITY="liquidity"}(re||(re={})),function(e){e.BUY="buy",e.SELL="sell"}(se||(se={})),function(e){var t;(t=e.errorType||(e.errorType={})).DUPLICATED_ORDER="DuplicatedOrder",t.QUOTE_NOT_FOUND="QuoteNotFound",t.QUOTE_NOT_VERIFIED="QuoteNotVerified",t.INVALID_QUOTE="InvalidQuote",t.MISSING_FROM="MissingFrom",t.WRONG_OWNER="WrongOwner",t.INVALID_EIP1271SIGNATURE="InvalidEip1271Signature",t.INSUFFICIENT_BALANCE="InsufficientBalance",t.INSUFFICIENT_ALLOWANCE="InsufficientAllowance",t.INVALID_SIGNATURE="InvalidSignature",t.SELL_AMOUNT_OVERFLOW="SellAmountOverflow",t.TRANSFER_SIMULATION_FAILED="TransferSimulationFailed",t.ZERO_AMOUNT="ZeroAmount",t.INCOMPATIBLE_SIGNING_SCHEME="IncompatibleSigningScheme",t.TOO_MANY_LIMIT_ORDERS="TooManyLimitOrders",t.TOO_MUCH_GAS="TooMuchGas",t.UNSUPPORTED_BUY_TOKEN_DESTINATION="UnsupportedBuyTokenDestination",t.UNSUPPORTED_SELL_TOKEN_SOURCE="UnsupportedSellTokenSource",t.UNSUPPORTED_ORDER_TYPE="UnsupportedOrderType",t.INSUFFICIENT_VALID_TO="InsufficientValidTo",t.EXCESSIVE_VALID_TO="ExcessiveValidTo",t.INVALID_NATIVE_SELL_TOKEN="InvalidNativeSellToken",t.SAME_BUY_AND_SELL_TOKEN="SameBuyAndSellToken",t.UNSUPPORTED_TOKEN="UnsupportedToken",t.INVALID_APP_DATA="InvalidAppData",t.APP_DATA_HASH_MISMATCH="AppDataHashMismatch",t.APPDATA_FROM_MISMATCH="AppdataFromMismatch"}(ie||(ie={})),function(e){e.BUY="buy"}(oe||(oe={})),function(e){e.SELL="sell"}(pe||(pe={})),function(e){e.PRESIGNATURE_PENDING="presignaturePending",e.OPEN="open",e.FULFILLED="fulfilled",e.CANCELLED="cancelled",e.EXPIRED="expired"}(de||(de={})),function(e){var t;(t=e.errorType||(e.errorType={})).QUOTE_NOT_VERIFIED="QuoteNotVerified",t.UNSUPPORTED_TOKEN="UnsupportedToken",t.ZERO_AMOUNT="ZeroAmount",t.UNSUPPORTED_ORDER_TYPE="UnsupportedOrderType"}(ue||(ue={})),function(e){e.FAST="fast",e.OPTIMAL="optimal",e.VERIFIED="verified"}(ye||(ye={})),function(e){e.ERC20="erc20",e.INTERNAL="internal",e.EXTERNAL="external"}(le||(le={})),function(e){e.EIP712="eip712",e.ETHSIGN="ethsign",e.PRESIGN="presign",e.EIP1271="eip1271"}(ce||(ce={}));const fe=BigInt(1e4);function me(e){var t;const{orderParams:n,sellDecimals:a,buyDecimals:r,slippagePercentBps:s}=e,i=null!==(t=e.partnerFeeBps)&&void 0!==t?t:0,o=n.kind===se.SELL,p=be(n.feeAmount,a),d=be(n.sellAmount,a),u=be(n.buyAmount,r),y=u.num/d.num,l=be(d.big+p.big,a),c=be(y*l.num,r),f=i>0?(o?c.big:d.big)*BigInt(i)/fe:BigInt(0),m=o?{sellAmount:l.big,buyAmount:u.big-f}:{sellAmount:l.big+f,buyAmount:u.big},b=e=>e*BigInt(s)/fe,T=o?{sellAmount:m.sellAmount,buyAmount:m.buyAmount-b(m.buyAmount)}:{sellAmount:m.sellAmount+b(m.sellAmount),buyAmount:m.buyAmount};return{isSell:o,costs:{networkFee:{amountInSellCurrency:p.big,amountInBuyCurrency:be(y*p.num,r).big},partnerFee:{amount:f,bps:i}},beforeNetworkCosts:{sellAmount:d.big,buyAmount:c.big},afterNetworkCosts:{sellAmount:l.big,buyAmount:u.big},afterPartnerFees:m,afterSlippage:T}}function be(e,t){if("number"==typeof e){const n=e*10**t,a=n.toFixed();return{big:BigInt(a.includes("e")?n:a),num:e}}const n=BigInt(e);return{big:n,num:Number(n)/10**t}}let Te,he,Ie,Ee=e=>e;const Ae=n(Te||(Te=Ee`
2
+ query Totals {
3
+ totals {
4
+ tokens
5
+ orders
6
+ traders
7
+ settlements
8
+ volumeUsd
9
+ volumeEth
10
+ feesUsd
11
+ feesEth
12
+ }
13
+ }
14
+ `)),Oe=n(he||(he=Ee`
15
+ query LastDaysVolume($days: Int!) {
16
+ dailyTotals(orderBy: timestamp, orderDirection: desc, first: $days) {
17
+ timestamp
18
+ volumeUsd
19
+ }
20
+ }
21
+ `)),ge=n(Ie||(Ie=Ee`
22
+ query LastHoursVolume($hours: Int!) {
23
+ hourlyTotals(orderBy: timestamp, orderDirection: desc, first: $hours) {
24
+ timestamp
25
+ volumeUsd
26
+ }
27
+ }
28
+ `)),ve="https://api.thegraph.com/subgraphs/name/cowprotocol",Se={[A.MAINNET]:ve+"/cow",[A.GNOSIS_CHAIN]:ve+"/cow-gc",[A.ARBITRUM_ONE]:null,[A.BASE]:null,[A.SEPOLIA]:null},we={[A.MAINNET]:ve+"/cow-staging",[A.GNOSIS_CHAIN]:ve+"/cow-gc-staging",[A.ARBITRUM_ONE]:null,[A.BASE]:null,[A.SEPOLIA]:null};class Ne{constructor(e={}){this.API_NAME="CoW Protocol Subgraph",this.context=void 0,this.context=C({},g,e)}async getTotals(e={}){return(await this.runQuery(Ae,void 0,e)).totals[0]}async getLastDaysVolume(e,t={}){return this.runQuery(Oe,{days:e},t)}async getLastHoursVolume(e,t={}){return this.runQuery(ge,{hours:e},t)}async runQuery(e,t=undefined,n={}){const{chainId:r,env:s}=this.getContextWithOverride(n),i=this.getEnvConfigs(s)[r];if(null===i)throw new Error("Unsupported Network. The subgraph API is not available in the Network "+r);try{return await a(i,e,t)}catch(n){throw console.error(`[subgraph:${this.API_NAME}]`,n),new v(`Error running query: ${e}. Variables: ${JSON.stringify(t)}. API: ${i}. Inner Error: ${n}`)}}getContextWithOverride(e={}){return C({},this.context,e)}getEnvConfigs(e){return this.context.baseUrls?this.context.baseUrls:"prod"===e?Se:we}}const Ce=()=>import("./utils-353bb58e.js");class _e{static async signOrder(e,t,n){const{signOrder:a}=await Ce();return a(e,t,n)}static async signOrderCancellation(e,t,n){const{signOrderCancellation:a}=await Ce();return a(e,t,n)}static async signOrderCancellations(e,t,n){const{signOrderCancellations:a}=await Ce();return a(e,t,n)}static async getDomain(e){const{getDomain:t}=await Ce();return t(e)}static async getDomainSeparator(e){const{getDomain:t}=await Ce(),{_TypedDataEncoder:n}=await import("ethers/lib/utils");return n.hashDomain(t(e))}static getEIP712Types(){return{Order:[{name:"sellToken",type:"address"},{name:"buyToken",type:"address"},{name:"receiver",type:"address"},{name:"sellAmount",type:"uint256"},{name:"buyAmount",type:"uint256"},{name:"validTo",type:"uint32"},{name:"appData",type:"bytes32"},{name:"feeAmount",type:"uint256"},{name:"kind",type:"string"},{name:"partiallyFillable",type:"bool"},{name:"sellTokenBalance",type:"string"},{name:"buyTokenBalance",type:"string"}]}}}var Pe,Re;!function(e){e[e.PRIVATE=0]="PRIVATE",e[e.EMITTED=1]="EMITTED",e[e.SWARM=2]="SWARM",e[e.WAKU=3]="WAKU",e[e.RESERVED=4]="RESERVED",e[e.IPFS=5]="IPFS"}(Pe||(Pe={})),function(e){e.SUCCESS="SUCCESS",e.UNEXPECTED_ERROR="UNEXPECTED_ERROR",e.TRY_NEXT_BLOCK="TRY_NEXT_BLOCK",e.TRY_ON_BLOCK="TRY_ON_BLOCK",e.TRY_AT_EPOCH="TRY_AT_EPOCH",e.DONT_TRY_AGAIN="DONT_TRY_AGAIN"}(Re||(Re={}));const De=[{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"DeadlineElapsed",type:"error"},{inputs:[],name:"InvalidSignature",type:"error"},{inputs:[],name:"InvalidSignature",type:"error"},{inputs:[],name:"NonceAlreadyUsed",type:"error"},{inputs:[],name:"OnlyAdmin",type:"error"},{inputs:[],name:"OnlyAdminOrTrustedExecutorOrSelf",type:"error"},{inputs:[],name:"OnlySelf",type:"error"},{inputs:[],name:"OnlyTrustedExecutor",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"r",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"s",type:"bytes32"},{indexed:!1,internalType:"uint8",name:"v",type:"uint8"}],name:"RSV",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousExecutor",type:"address"},{indexed:!1,internalType:"address",name:"newExecutor",type:"address"}],name:"TrustedExecutorChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{inputs:[{internalType:"address",name:"resolver",type:"address"}],name:"claimWithResolver",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"domainSeparator",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"address",name:"target",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"bytes",name:"callData",type:"bytes"},{internalType:"bool",name:"allowFailure",type:"bool"},{internalType:"bool",name:"isDelegateCall",type:"bool"}],internalType:"struct Call[]",name:"calls",type:"tuple[]"},{internalType:"bytes32",name:"nonce",type:"bytes32"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"executeHooks",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"factory",type:"address"},{internalType:"bool",name:"claimResolver",type:"bool"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"nonce",type:"bytes32"}],name:"nonces",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"nonce",type:"bytes32"}],name:"revokeNonce",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"address",name:"target",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"bytes",name:"callData",type:"bytes"},{internalType:"bool",name:"allowFailure",type:"bool"},{internalType:"bool",name:"isDelegateCall",type:"bool"}],internalType:"struct Call[]",name:"calls",type:"tuple[]"}],name:"trustedExecuteHooks",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"trustedExecutor",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"updateImplementation",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"who",type:"address"}],name:"updateTrustedExecutor",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}];class xe{static createInterface(){return new r.Interface(De)}static connect(e,t){return new s(e,De,t)}}xe.abi=De;const Me=[{inputs:[{internalType:"address",name:"impl",type:"address"},{internalType:"bytes32",name:"bName",type:"bytes32"},{internalType:"bytes32",name:"bNode",type:"bytes32"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"InvalidSignature",type:"error"},{inputs:[],name:"NonceAlreadyUsed",type:"error"},{inputs:[],name:"SettingEnsRecordsFailed",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"address",name:"shed",type:"address"}],name:"COWShedBuilt",type:"event"},{inputs:[{internalType:"bytes32",name:"node",type:"bytes32"}],name:"addr",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"baseName",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"baseNode",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"address",name:"target",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"bytes",name:"callData",type:"bytes"},{internalType:"bool",name:"allowFailure",type:"bool"},{internalType:"bool",name:"isDelegateCall",type:"bool"}],internalType:"struct Call[]",name:"calls",type:"tuple[]"},{internalType:"bytes32",name:"nonce",type:"bytes32"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"address",name:"user",type:"address"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"executeHooks",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"forwardResolutionNodeToAddress",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"initializeEns",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"bool",name:"withEns",type:"bool"}],name:"initializeProxy",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"node",type:"bytes32"}],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"ownerOf",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"who",type:"address"}],name:"proxyOf",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"reverseResolutionNodeToAddress",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"pure",type:"function"}];class Ue{static createInterface(){return new r.Interface(Me)}static connect(e,t){return new s(e,Me,t)}}Ue.abi=Me;const ke=[{inputs:[{internalType:"address",name:"_settlement",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"InterfaceNotSupported",type:"error"},{inputs:[],name:"InvalidHandler",type:"error"},{inputs:[],name:"ProofNotAuthed",type:"error"},{inputs:[],name:"SingleOrderNotAuthed",type:"error"},{inputs:[],name:"SwapGuardRestricted",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{components:[{internalType:"contract IConditionalOrder",name:"handler",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"bytes",name:"staticInput",type:"bytes"}],indexed:!1,internalType:"struct IConditionalOrder.ConditionalOrderParams",name:"params",type:"tuple"}],name:"ConditionalOrderCreated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!1,internalType:"bytes32",name:"root",type:"bytes32"},{components:[{internalType:"uint256",name:"location",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],indexed:!1,internalType:"struct ComposableCoW.Proof",name:"proof",type:"tuple"}],name:"MerkleRootSet",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!1,internalType:"contract ISwapGuard",name:"swapGuard",type:"address"}],name:"SwapGuardSet",type:"event"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"bytes32",name:"",type:"bytes32"}],name:"cabinet",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"contract IConditionalOrder",name:"handler",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"bytes",name:"staticInput",type:"bytes"}],internalType:"struct IConditionalOrder.ConditionalOrderParams",name:"params",type:"tuple"},{internalType:"bool",name:"dispatch",type:"bool"}],name:"create",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"contract IConditionalOrder",name:"handler",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"bytes",name:"staticInput",type:"bytes"}],internalType:"struct IConditionalOrder.ConditionalOrderParams",name:"params",type:"tuple"},{internalType:"contract IValueFactory",name:"factory",type:"address"},{internalType:"bytes",name:"data",type:"bytes"},{internalType:"bool",name:"dispatch",type:"bool"}],name:"createWithContext",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"domainSeparator",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{components:[{internalType:"contract IConditionalOrder",name:"handler",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"bytes",name:"staticInput",type:"bytes"}],internalType:"struct IConditionalOrder.ConditionalOrderParams",name:"params",type:"tuple"},{internalType:"bytes",name:"offchainInput",type:"bytes"},{internalType:"bytes32[]",name:"proof",type:"bytes32[]"}],name:"getTradeableOrderWithSignature",outputs:[{components:[{internalType:"contract IERC20",name:"sellToken",type:"address"},{internalType:"contract IERC20",name:"buyToken",type:"address"},{internalType:"address",name:"receiver",type:"address"},{internalType:"uint256",name:"sellAmount",type:"uint256"},{internalType:"uint256",name:"buyAmount",type:"uint256"},{internalType:"uint32",name:"validTo",type:"uint32"},{internalType:"bytes32",name:"appData",type:"bytes32"},{internalType:"uint256",name:"feeAmount",type:"uint256"},{internalType:"bytes32",name:"kind",type:"bytes32"},{internalType:"bool",name:"partiallyFillable",type:"bool"},{internalType:"bytes32",name:"sellTokenBalance",type:"bytes32"},{internalType:"bytes32",name:"buyTokenBalance",type:"bytes32"}],internalType:"struct GPv2Order.Data",name:"order",type:"tuple"},{internalType:"bytes",name:"signature",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"contract IConditionalOrder",name:"handler",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"bytes",name:"staticInput",type:"bytes"}],internalType:"struct IConditionalOrder.ConditionalOrderParams",name:"params",type:"tuple"}],name:"hash",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"contract Safe",name:"safe",type:"address"},{internalType:"address",name:"sender",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes32",name:"_domainSeparator",type:"bytes32"},{internalType:"bytes32",name:"",type:"bytes32"},{internalType:"bytes",name:"encodeData",type:"bytes"},{internalType:"bytes",name:"payload",type:"bytes"}],name:"isValidSafeSignature",outputs:[{internalType:"bytes4",name:"magic",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"singleOrderHash",type:"bytes32"}],name:"remove",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"roots",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"root",type:"bytes32"},{components:[{internalType:"uint256",name:"location",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],internalType:"struct ComposableCoW.Proof",name:"proof",type:"tuple"}],name:"setRoot",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"root",type:"bytes32"},{components:[{internalType:"uint256",name:"location",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],internalType:"struct ComposableCoW.Proof",name:"proof",type:"tuple"},{internalType:"contract IValueFactory",name:"factory",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"setRootWithContext",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract ISwapGuard",name:"swapGuard",type:"address"}],name:"setSwapGuard",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"bytes32",name:"",type:"bytes32"}],name:"singleOrders",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"swapGuards",outputs:[{internalType:"contract ISwapGuard",name:"",type:"address"}],stateMutability:"view",type:"function"}];class Le{static createInterface(){return new r.Interface(ke)}static connect(e,t){return new s(e,ke,t)}}Le.abi=ke;const Fe=[{anonymous:!1,inputs:[{indexed:!0,internalType:"contract Safe",name:"safe",type:"address"},{indexed:!1,internalType:"bytes32",name:"domainSeparator",type:"bytes32"},{indexed:!1,internalType:"contract ISafeSignatureVerifier",name:"verifier",type:"address"}],name:"AddedDomainVerifier",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"contract Safe",name:"safe",type:"address"},{indexed:!1,internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"AddedInterface",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"contract Safe",name:"safe",type:"address"},{indexed:!1,internalType:"bytes4",name:"selector",type:"bytes4"},{indexed:!1,internalType:"bytes32",name:"method",type:"bytes32"}],name:"AddedSafeMethod",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"contract Safe",name:"safe",type:"address"},{indexed:!1,internalType:"bytes32",name:"domainSeparator",type:"bytes32"},{indexed:!1,internalType:"contract ISafeSignatureVerifier",name:"oldVerifier",type:"address"},{indexed:!1,internalType:"contract ISafeSignatureVerifier",name:"newVerifier",type:"address"}],name:"ChangedDomainVerifier",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"contract Safe",name:"safe",type:"address"},{indexed:!1,internalType:"bytes4",name:"selector",type:"bytes4"},{indexed:!1,internalType:"bytes32",name:"oldMethod",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"newMethod",type:"bytes32"}],name:"ChangedSafeMethod",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"contract Safe",name:"safe",type:"address"},{indexed:!1,internalType:"bytes32",name:"domainSeparator",type:"bytes32"}],name:"RemovedDomainVerifier",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"contract Safe",name:"safe",type:"address"},{indexed:!1,internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"RemovedInterface",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"contract Safe",name:"safe",type:"address"},{indexed:!1,internalType:"bytes4",name:"selector",type:"bytes4"}],name:"RemovedSafeMethod",type:"event"},{stateMutability:"nonpayable",type:"fallback"},{inputs:[{internalType:"contract Safe",name:"",type:"address"},{internalType:"bytes32",name:"",type:"bytes32"}],name:"domainVerifiers",outputs:[{internalType:"contract ISafeSignatureVerifier",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"isValidSignature",outputs:[{internalType:"bytes4",name:"magic",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155BatchReceived",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155Received",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC721Received",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"contract Safe",name:"",type:"address"},{internalType:"bytes4",name:"",type:"bytes4"}],name:"safeInterfaces",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Safe",name:"",type:"address"},{internalType:"bytes4",name:"",type:"bytes4"}],name:"safeMethods",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"domainSeparator",type:"bytes32"},{internalType:"contract ISafeSignatureVerifier",name:"newVerifier",type:"address"}],name:"setDomainVerifier",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"selector",type:"bytes4"},{internalType:"bytes32",name:"newMethod",type:"bytes32"}],name:"setSafeMethod",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"},{internalType:"bool",name:"supported",type:"bool"}],name:"setSupportedInterface",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"_interfaceId",type:"bytes4"},{internalType:"bytes32[]",name:"handlerWithSelectors",type:"bytes32[]"}],name:"setSupportedInterfaceBatch",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"}];class Be{static createInterface(){return new r.Interface(Fe)}static connect(e,t){return new s(e,Fe,t)}}Be.abi=Fe;const Ve=["erc20","0x5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9"],Ge=["external","0xabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea0632"],$e=["internal","0x4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce"],He=["sell","0xf3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775"],We=["buy","0x6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc"],Ye=["tuple(address handler, bytes32 salt, bytes staticInput)"],je=(e,t)=>`${t}@${e}`;function ze(e,t){return e===V[t]}function Ze(e,t){return e===G[t]}async function Ke(e,t,n,a){const r=Be.connect(V[n],a);return await r.callStatic.domainVerifiers(e,t)}function Qe(e,t){return Be.createInterface().encodeFunctionData("setDomainVerifier",[e,t])}function Xe(e){return r.defaultAbiCoder.encode(Ye,[e])}function qe(e){const{handler:t,salt:n,staticInput:a}=r.defaultAbiCoder.decode(Ye,e)[0];return{handler:t,salt:n,staticInput:a}}function Je(e,t){try{r.defaultAbiCoder.encode(e,t)}catch(e){return!1}return!0}async function et(e){const t=await e.getBlock("latest");return{blockNumber:t.number,blockTimestamp:t.timestamp}}function tt(e){return new Date(1e3*e).toISOString()}function nt(e){if(Ve.includes(e))return d.ERC20;if(Ge.includes(e))return d.EXTERNAL;if($e.includes(e))return d.INTERNAL;throw new Error(`Unknown balance type: ${e}`)}function at(e){if(He.includes(e))return u.SELL;if(We.includes(e))return u.BUY;throw new Error(`Unknown kind: ${e}`)}function rt(e){const{sellToken:t,sellAmount:n,buyToken:a,buyAmount:r,buyTokenBalance:s,sellTokenBalance:i,feeAmount:o,kind:p,receiver:d,validTo:u,partiallyFillable:y,appData:l}=e;return{sellToken:t,sellAmount:n,buyToken:a,buyAmount:r,feeAmount:o,receiver:d,partiallyFillable:y,appData:l,validTo:Number(u),kind:at(p.toString()),sellTokenBalance:nt(i.toString()),buyTokenBalance:nt(s.toString())}}let st,it;function ot(){return st||(st=Le.createInterface()),st}function pt(e,t){return it||(it=Le.connect(G[e],t)),it}class dt{constructor(e){this.handler=void 0,this.salt=void 0,this.data=void 0,this.staticInput=void 0,this.hasOffChainInput=void 0;const{handler:t,salt:n=r.keccak256(r.randomBytes(32)),data:a,hasOffChainInput:s=!1}=e;if(!i.utils.isAddress(t))throw new Error(`Invalid handler: ${t}`);if(!i.utils.isHexString(n)||32!==i.utils.hexDataLength(n))throw new Error(`Invalid salt: ${n}`);this.handler=t,this.salt=n,this.data=a,this.staticInput=this.transformDataToStruct(a),this.hasOffChainInput=s}get context(){}assertIsValid(){const e=this.isValid();if(!e.isValid)throw new Error(`Invalid order: ${e.reason}`)}get createCalldata(){this.assertIsValid();const e=this.context,t=ot(),n={handler:this.handler,salt:this.salt,staticInput:this.encodeStaticInput()};if(e){const a=e.factoryArgs?r.defaultAbiCoder.encode(e.factoryArgs.argsType,e.factoryArgs.args):"0x";return t.encodeFunctionData("createWithContext",[n,e.address,a,!0])}return t.encodeFunctionData("create",[n,!0])}get removeCalldata(){return this.assertIsValid(),ot().encodeFunctionData("remove",[this.id])}get id(){return r.keccak256(this.serialize())}get ctx(){return this.isSingleOrder?this.id:o.HashZero}get leaf(){return{handler:this.handler,salt:this.salt,staticInput:this.encodeStaticInput()}}static leafToId(e){return r.keccak256(Xe(e))}get offChainInput(){return"0x"}encodeStaticInputHelper(e,t){return r.defaultAbiCoder.encode(e,[t])}async poll(e){const{chainId:t,owner:n,provider:a,orderBookApi:r}=e,s=pt(t,a);try{const a=this.isValid();if(!a.isValid)return{result:Re.DONT_TRY_AGAIN,reason:`InvalidConditionalOrder. Reason: ${a.reason}`};const i=await this.pollValidate(e);if(i)return i;if(!await this.isAuthorized(e))return{result:Re.DONT_TRY_AGAIN,reason:`NotAuthorized: Order ${this.id} is not authorized for ${n} on chain ${t}`};const[o,p]=await s.getTradeableOrderWithSignature(n,this.leaf,this.offChainInput,[]),d=await async function(e,t,n){const{computeOrderUid:a}=await import("@cowprotocol/contracts");return a(await _e.getDomain(e),n,t)}(t,n,rt(o));return await r.getOrder(d).then(()=>!0).catch(()=>!1)?await this.handlePollFailedAlreadyPresent(d,o,e)||{result:Re.TRY_NEXT_BLOCK,reason:"Order already in orderbook"}:{result:Re.SUCCESS,order:o,signature:p}}catch(e){return{result:Re.UNEXPECTED_ERROR,error:e}}}isAuthorized(e){const{chainId:t,owner:n,provider:a}=e;return pt(t,a).callStatic.singleOrders(n,this.id)}cabinet(e){const{chainId:t,owner:n,provider:a}=e;return pt(t,a).callStatic.cabinet(n,this.ctx)}static deserializeHelper(e,t,n,a){try{const{handler:s,salt:i,staticInput:o}=qe(e);if(s!=t)throw new Error("HandlerMismatch");const[p]=r.defaultAbiCoder.decode(n,o);return a(p,i)}catch(e){throw"HandlerMismatch"===e.message?e:new Error("InvalidSerializedConditionalOrder")}}}const ut=["orderType"],yt=["address","bytes32","bytes"],lt=["tuple(bytes32[] proof, tuple(address handler, bytes32 salt, bytes staticInput) params)[]"];class ct{constructor(e,t,n,a=Pe.PRIVATE){if(this.chain=void 0,this.location=void 0,this.orders={},this.tree=void 0,this.ctx=void 0,this.chain=e,this.location=a,t&&0===Object.keys(t).length)throw new Error("orders must have non-zero length");if(t&&!n||!t&&n)throw new Error("orders cannot have undefined root");for(const e in t)if(t.hasOwnProperty(e)){const n=t[e];if(!ct.orderTypeRegistry.hasOwnProperty(n.orderType))throw new Error(`Unknown order type: ${n.orderType}`)}if(t&&(this.orders=t,this.getOrGenerateTree().root!==n))throw new Error("root mismatch")}static fromJSON(e){const{chain:t,orders:n,root:a,location:r}=JSON.parse(e,(e,t)=>{if("orders"===e&&"object"==typeof t&&null!==t){const e={};for(const n in t)if(t.hasOwnProperty(n)){const a=t[n],{orderType:r}=a,s=_(a,ut);if(!ct.orderTypeRegistry.hasOwnProperty(r))throw new Error(`Unknown order type: ${r}`);e[n]=new(0,ct.orderTypeRegistry[r])(s)}return e}return"object"==typeof t&&null!==t&&t.hasOwnProperty("type")&&t.hasOwnProperty("hex")&&"BigNumber"===t.type?p.from(t):t}),s=new ct(t,n,a);return s.location=r,s}toJSON(){const e=this.getOrGenerateTree().root;return JSON.stringify(C({},this,{root:e}),(e,t)=>{if("tree"!==e)return"object"==typeof t&&null!==t&&"orderType"in t?C({},t,{orderType:t.orderType}):t})}add(e){e.assertIsValid(),this.orders[e.id]=e,this.reset()}remove(e){delete this.orders[e],this.reset()}update(e,t){const n=t(this.orders[e],this.ctx);delete this.orders[e],this.orders[n.id]=n,this.reset()}getById(e){return this.orders[e]}getByIndex(e){return this.orders[this.orderIds[e]]}get orderIds(){return Object.keys(this.orders)}get root(){return this.getOrGenerateTree().root}getOrGenerateTree(){return this.tree||(this.tree=f.of(Object.values(this.orders).map(e=>[...Object.values(e.leaf)]),yt)),this.tree}static decodeFromJSON(e){return JSON.parse(e)}async prepareProofStruct(e=this.location,t,n){var a=this;return await async function(){switch(e){case Pe.PRIVATE:return"0x";case Pe.EMITTED:return a.encodeToABI(t);case Pe.SWARM:case Pe.WAKU:case Pe.IPFS:if(!n)throw new Error("Must provide an uploader function");try{return await n(a.encodeToJSON(t))}catch(t){throw new Error(`Error uploading to decentralized storage ${e}: ${t}`)}default:throw new Error("Unsupported location")}}().then(t=>{try{return r.hexlify(r.arrayify(t)),this.location=e,{location:e,data:t}}catch(e){throw new Error("data returned by uploader is invalid")}}).catch(e=>{throw new Error(`Error preparing proof struct: ${e}`)})}static async poll(e,t,n,a,r){const s=pt(n,a),i=r?await r(e,t.params):"0x";return await s.getTradeableOrderWithSignature(e,t.params,i,t.proof)}dumpProofs(e){return this.encodeToJSON(e)}dumpProofsAndParams(e){return this.getProofs(e)}getProofs(e){return[...this.getOrGenerateTree().entries()].map(([t,n])=>e&&e(n)||void 0===e?{idx:t,value:n}:void 0).reduce((e,t)=>{if(t){const n={handler:t.value[0],salt:t.value[1],staticInput:t.value[2]};e.push({proof:this.getOrGenerateTree().getProof(t.idx),params:n})}return e},[])}encodeToABI(e){return r.defaultAbiCoder.encode(lt,[this.getProofs(e)])}encodeToJSON(e){return JSON.stringify(this.getProofs(e))}reset(){this.tree=void 0}static registerOrderType(e,t){ct.orderTypeRegistry[e]=t}static resetOrderTypeRegistry(){ct.orderTypeRegistry={}}}ct.orderTypeRegistry={};class ft{constructor(e){this.knownOrderTypes=void 0,this.knownOrderTypes=Object.entries(e).reduce((e,[t,n])=>(e[t.toLowerCase()]=n,e),{})}fromParams(e){const{handler:t}=e,n=this.knownOrderTypes[t.toLocaleLowerCase()];if(n)return n(e)}}const mt=["sellAmount","buyAmount","numberOfParts","startTime","timeBetweenParts","durationOfPart"],bt="0x6cF1e9cA41f7611dEf408122793c358a3d11E5a5",Tt="0x52eD56Da04309Aca4c3FECC595298d80C2f16BAc",ht=p.from(2).pow(32).sub(1),It=p.from(31536e3),Et=["tuple(address sellToken, address buyToken, address receiver, uint256 partSellAmount, uint256 minPartLimit, uint256 t0, uint256 n, uint256 t, uint256 span, bytes32 appData)"];var At,Ot;!function(e){e.AUTO="AUTO",e.LIMIT_DURATION="LIMIT_DURATION"}(At||(At={})),function(e){e.AT_MINING_TIME="AT_MINING_TIME",e.AT_EPOCH="AT_EPOCH"}(Ot||(Ot={}));const gt={startType:Ot.AT_MINING_TIME},vt={durationType:At.AUTO};class St extends dt{constructor(e){const{handler:t,salt:n,data:a,hasOffChainInput:r}=e;if(t!==bt)throw new Error(`InvalidHandler: Expected: ${bt}, provided: ${t}`);super({handler:bt,salt:n,data:a,hasOffChainInput:r}),this.isSingleOrder=!0}static fromData(e,t){return new St({handler:bt,data:e,salt:t})}static fromParams(e){return St.deserialize(Xe(e))}get context(){return this.staticInput.t0.gt(0)?super.context:{address:Tt,factoryArgs:void 0}}get orderType(){return"twap"}isValid(){const e=(()=>{const{sellToken:e,sellAmount:t,buyToken:n,buyAmount:a,startTime:r=gt,numberOfParts:s,timeBetweenParts:i,durationOfPart:p=vt}=this.data;if(e==n)return"InvalidSameToken";if(e==o.AddressZero||n==o.AddressZero)return"InvalidToken";if(!t.gt(o.Zero))return"InvalidSellAmount";if(!a.gt(o.Zero))return"InvalidMinBuyAmount";if(r.startType===Ot.AT_EPOCH){const e=r.epoch;if(!e.gte(o.Zero)||!e.lt(ht))return"InvalidStartTime"}return s.gt(o.One)&&s.lte(ht)?i.gt(o.Zero)&&i.lte(It)?p.durationType!==At.LIMIT_DURATION||p.duration.lte(i)?Je(Et,[this.staticInput])?void 0:"InvalidData":"InvalidSpan":"InvalidFrequency":"InvalidNumParts"})();return e?{isValid:!1,reason:e}:{isValid:!0}}async startTimestamp(e){const{startTime:t}=this.data;if((null==t?void 0:t.startType)===Ot.AT_EPOCH)return t.epoch.toNumber();const n=await this.cabinet(e),a=r.defaultAbiCoder.decode(["uint256"],n)[0];if(a.gt(ht))throw new Error(`Cabinet epoch out of range: ${a.toString()}`);const s=a.toNumber();if(0===s)throw new Error("Cabinet is not set. Required for TWAP orders that start at mining time.");return s}endTimestamp(e){const{numberOfParts:t,timeBetweenParts:n,durationOfPart:a}=this.data;return a&&a.durationType===At.LIMIT_DURATION?e+t.sub(1).mul(n).add(a.duration).toNumber():e+t.mul(n).toNumber()}async pollValidate(e){const{blockInfo:t=await et(e.provider)}=e,{blockTimestamp:n}=t;try{const t=await this.startTimestamp(e);if(t>n)return{result:Re.TRY_AT_EPOCH,epoch:t,reason:`TWAP hasn't started yet. Starts at ${t} (${tt(t)})`};const a=this.endTimestamp(t);return n>=a?{result:Re.DONT_TRY_AGAIN,reason:`TWAP has expired. Expired at ${a} (${tt(a)})`}:void 0}catch(e){var a,r;return null!=e&&null!=(a=e.message)&&a.includes("Cabinet is not set")?{result:Re.DONT_TRY_AGAIN,reason:`${null==e?void 0:e.message}. User likely removed the order.`}:null!=e&&null!=(r=e.message)&&r.includes("Cabinet epoch out of range")?{result:Re.DONT_TRY_AGAIN,reason:`${null==e?void 0:e.message}`}:{result:Re.UNEXPECTED_ERROR,reason:`Unexpected error: ${e.message}`,error:e}}}async handlePollFailedAlreadyPresent(e,t,n){const{blockInfo:a=await et(n.provider)}=n,{blockTimestamp:r}=a,s=this.data.timeBetweenParts.toNumber(),{numberOfParts:i}=this.data,o=await this.startTimestamp(n);if(r<o)return{result:Re.UNEXPECTED_ERROR,reason:`TWAP part hash't started. First TWAP part start at ${o} (${tt(o)})`,error:void 0};const p=i.mul(s).add(o).toNumber();if(r>=p)return{result:Re.UNEXPECTED_ERROR,reason:`TWAP is expired. Expired at ${p} (${tt(p)})`,error:void 0};const d=Math.floor((r-o)/s);if(d===i.toNumber()-1)return{result:Re.DONT_TRY_AGAIN,reason:`Current active TWAP part (${d+1}/${i}) is already in the Order Book. This was the last TWAP part, no more orders need to be placed`};const u=o+(d+1)*s;return{result:Re.TRY_AT_EPOCH,epoch:u,reason:`Current active TWAP part (${d+1}/${i}) is already in the Order Book. TWAP part ${d+2} doesn't start until ${u} (${tt(u)})`}}serialize(){return Xe(this.leaf)}encodeStaticInput(){return super.encodeStaticInputHelper(Et,this.staticInput)}static deserialize(e){return super.deserializeHelper(e,bt,Et,(e,t)=>new St({handler:bt,salt:t,data:Nt(e)}))}toString(){const{sellAmount:e,sellToken:t,buyAmount:n,buyToken:a,numberOfParts:r,startTime:s=gt,timeBetweenParts:i,durationOfPart:o=vt,receiver:p,appData:d}=this.data,u=s.startType===Ot.AT_MINING_TIME?"AT_MINING_TIME":s.epoch.toNumber(),y=o.durationType===At.AUTO?"AUTO":o.duration.toNumber(),l={sellAmount:e.toString(),sellToken:t,buyAmount:n.toString(),buyToken:a,numberOfParts:r.toString(),startTime:u,timeBetweenParts:i.toNumber(),durationOfPart:y,receiver:p,appData:d};return`${this.orderType} (${this.id}): ${JSON.stringify(l)}`}transformDataToStruct(e){return wt(e)}transformStructToData(e){return Nt(e)}}function wt(e){const{sellAmount:t,buyAmount:n,numberOfParts:a,startTime:r=gt,timeBetweenParts:s,durationOfPart:i=vt}=e,p=_(e,mt),{partSellAmount:d,minPartLimit:u}=a&&!a.isZero()?{partSellAmount:t.div(a),minPartLimit:n.div(a)}:{partSellAmount:o.Zero,minPartLimit:o.Zero};return C({partSellAmount:d,minPartLimit:u,t0:r.startType===Ot.AT_MINING_TIME?o.Zero:r.epoch,n:a,t:s,span:i.durationType===At.AUTO?o.Zero:i.duration},p)}function Nt(e){const{n:t,partSellAmount:n,minPartLimit:a,t:r,t0:s,span:i,sellToken:o,buyToken:p,receiver:d,appData:u}=e,y=i.isZero()?{durationType:At.AUTO}:{durationType:At.LIMIT_DURATION,duration:i},l=i.isZero()?{startType:Ot.AT_MINING_TIME}:{startType:Ot.AT_EPOCH,epoch:s};return{sellAmount:n.mul(t),buyAmount:a.mul(t),startTime:l,numberOfParts:t,timeBetweenParts:r,durationOfPart:y,sellToken:o,buyToken:p,receiver:d,appData:u}}const Ct={[bt]:e=>St.fromParams(e)},_t={EIP712Domain:[{type:"string",name:"name"},{type:"string",name:"version"},{type:"uint256",name:"chainId"},{type:"address",name:"verifyingContract"}]},Pt={ExecuteHooks:[{type:"Call[]",name:"calls"},{type:"bytes32",name:"nonce"},{type:"uint256",name:"deadline"}],Call:[{type:"address",name:"target"},{type:"uint256",name:"value"},{type:"bytes",name:"callData"},{type:"bool",name:"allowFailure"},{type:"bool",name:"isDelegateCall"}]};let Rt,Dt;function xt(){return Rt||(Rt=xe.createInterface()),Rt}function Mt(){return Dt||(Dt=Ue.createInterface()),Dt}const Ut="0x60a034608e57601f61037138819003918201601f19168301916001600160401b038311848410176093578084926040948552833981010312608e57604b602060458360a9565b920160a9565b6080527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc556040516102b490816100bd8239608051818181608f01526101720152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203608e5756fe60806040526004361015610018575b3661019457610194565b6000803560e01c908163025b22bc1461003b575063f851a4400361000e5761010d565b3461010a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010a5773ffffffffffffffffffffffffffffffffffffffff60043581811691828203610106577f0000000000000000000000000000000000000000000000000000000000000000163314600014610101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8280a280f35b61023d565b8380fd5b80fd5b346101645760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610164576020610146610169565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b600080fd5b333003610101577f000000000000000000000000000000000000000000000000000000000000000090565b60ff7f68df44b1011761f481358c0f49a711192727fb02c377d697bcb0ea8ff8393ac0541615806101ef575b1561023d5760046040517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b507f400ada75000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000006000351614156101c0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546000808092368280378136915af43d82803e1561027a573d90f35b3d90fdfea2646970667358221220c7c26ff3040b96a28e96d6d27b743972943aeaef81cc821544c5fe1e24f9b17264736f6c63430008190033";class kt{constructor(e,t){this.chainId=void 0,this.customOptions=void 0,this.chainId=e,this.customOptions=t}proxyOf(e){const t=m.encode(["address"],[e]),n=b(["bytes","bytes"],[this.proxyCreationCode(),m.encode(["address","address"],[this.getImplementationAddress(),e])]);return T(this.getFactoryAddress(),t,n)}encodeExecuteHooksForFactory(e,t,n,a,r){return Mt().encodeFunctionData("executeHooks",[e,t,n,a,r])}async signCalls(e,t,n,a,r){const s=await a.getAddress(),i=this.proxyOf(s),{domain:o,types:p,message:d}=this.infoToSign(e,t,n,i);return await async function(e,t,n,a,r){let s=null;switch(e){case y.EIP712:if(!c(t))throw new Error("signer does not support signing typed data");s=await t._signTypedData(n,a,r);break;case y.ETHSIGN:s=await t.signMessage(h(l(n,a,r)));break;default:throw new Error("invalid signing scheme")}return I(E(s))}(r,a,o,p,d)}infoToSign(e,t,n,a){const r={calls:e,nonce:t,deadline:n};return{domain:this.getDomain(a),types:Pt,message:r}}getDomain(e){return{name:"COWShed",version:"1.0.0",chainId:this.chainId,verifyingContract:e}}proxyCreationCode(){var e,t;return null!==(e=null==(t=this.customOptions)?void 0:t.proxyCreationCode)&&void 0!==e?e:Ut}getFactoryAddress(){var e,t;return null!==(e=null==(t=this.customOptions)?void 0:t.factoryAddress)&&void 0!==e?e:x}getImplementationAddress(){var e,t;return null!==(e=null==(t=this.customOptions)?void 0:t.implementationAddress)&&void 0!==e?e:M}}export{Ke as $,U as A,P as B,v as C,g as D,te as E,ye as F,le as G,ce as H,$ as I,W as J,Y as K,z as L,me as M,Se as N,K as O,ue as P,we as Q,Ne as R,A as S,_e as T,Pe as U,Re as V,Ye as W,je as X,ze as Y,Ze as Z,C as _,F as a,Qe as a0,Xe as a1,qe as a2,Je as a3,et as a4,tt as a5,rt as a6,dt as a7,ct as a8,ft as a9,Ct as aa,bt as ab,Tt as ac,ht as ad,It as ae,At as af,Ot as ag,St as ah,wt as ai,Nt as aj,_t as ak,Pt as al,kt as am,xt as an,Mt as ao,Ut as ap,O as b,w as c,N as d,R as e,D as f,x as g,M as h,L as i,B as j,V as k,S as l,k as m,G as n,Q as o,q as p,J as q,ee as r,ne as s,ae as t,re as u,se as v,ie as w,oe as x,pe as y,de as z};
29
+ //# sourceMappingURL=index-c004f2c4.js.map