@cowprotocol/cow-sdk 3.0.0-rc.8 → 3.0.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.
- package/dist/composable/ConditionalOrder.d.ts +1 -1
- package/dist/composable/orderTypes/Twap.d.ts +1 -1
- package/dist/{index-983a9908.js → index-2fad821e.js} +2 -2
- package/dist/index-2fad821e.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.modern.mjs +1 -1
- package/dist/index.module.js +1 -1
- package/dist/index.module.js.map +1 -1
- package/dist/package.json +1 -1
- package/dist/{utils-b25bc6f3.js → utils-0670a8ac.js} +1 -1
- package/dist/{utils-b25bc6f3.js.map → utils-0670a8ac.js.map} +1 -1
- package/dist/{utils-438cb2f6.js → utils-19aa2b9d.js} +2 -2
- package/dist/{utils-438cb2f6.js.map → utils-19aa2b9d.js.map} +1 -1
- package/dist/{utils-e1c3bbf3.js → utils-b8f2a7db.js} +1 -1
- package/dist/{utils-e1c3bbf3.js.map → utils-b8f2a7db.js.map} +1 -1
- package/package.json +1 -1
- package/dist/index-983a9908.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BigNumber } from 'ethers';
|
|
2
2
|
import { GPv2Order } from './generated/ComposableCoW';
|
|
3
3
|
import { ConditionalOrderArguments, ConditionalOrderParams, ContextFactory, IsValidResult, OwnerContext, PollParams, PollResult, PollResultErrors } from './types';
|
|
4
|
-
import { UID } from '
|
|
4
|
+
import { UID } from '../order-book';
|
|
5
5
|
/**
|
|
6
6
|
* An abstract base class from which all conditional orders should inherit.
|
|
7
7
|
*
|
|
@@ -135,7 +135,7 @@ export declare class Twap extends ConditionalOrder<TwapData, TwapStruct> {
|
|
|
135
135
|
* @param data The TWAP order parameters in a more user-friendly format.
|
|
136
136
|
* @returns An instance of the TWAP order.
|
|
137
137
|
*/
|
|
138
|
-
static fromData(data: TwapData): Twap;
|
|
138
|
+
static fromData(data: TwapData, salt?: string): Twap;
|
|
139
139
|
/**
|
|
140
140
|
* Create a TWAP order with sound defaults.
|
|
141
141
|
* @param data The TWAP order parameters in a more user-friendly format.
|
|
@@ -25,5 +25,5 @@ import"cross-fetch/polyfill";import{RateLimiter as e}from"limiter";import{backOf
|
|
|
25
25
|
volumeUsd
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
-
`)),de="https://api.thegraph.com/subgraphs/name/cowprotocol",pe={[y.MAINNET]:de+"/cow",[y.GNOSIS_CHAIN]:de+"/cow-gc",[y.GOERLI]:de+"/cow-goerli"},ce={[y.MAINNET]:de+"/cow-staging",[y.GNOSIS_CHAIN]:de+"/cow-gc-staging",[y.GOERLI]:""};class ue{constructor(e={}){this.API_NAME="CoW Protocol Subgraph",this.context=void 0,this.context=E({},f,e)}async getTotals(e={}){return(await this.runQuery(se,void 0,e)).totals[0]}async getLastDaysVolume(e,t={}){return this.runQuery(ie,{days:e},t)}async getLastHoursVolume(e,t={}){return this.runQuery(oe,{hours:e},t)}async runQuery(e,t=undefined,n={}){const{chainId:r,env:s}=this.getContextWithOverride(n),i=this.getEnvConfigs(s)[r];try{return await a(i,e,t)}catch(n){throw console.error(`[subgraph:${this.API_NAME}]`,n),new m(`Error running query: ${e}. Variables: ${JSON.stringify(t)}. API: ${i}. Inner Error: ${n}`)}}getContextWithOverride(e={}){return E({},this.context,e)}getEnvConfigs(e){return this.context.baseUrls?this.context.baseUrls:"prod"===e?pe:ce}}const ye=()=>import("./utils-438cb2f6.js");class le{static async signOrder(e,t,n){const{signOrder:a}=await ye();return a(e,t,n)}static async signOrderCancellation(e,t,n){const{signOrderCancellation:a}=await ye();return a(e,t,n)}static async signOrderCancellations(e,t,n){const{signOrderCancellations:a}=await ye();return a(e,t,n)}static async getDomain(e){const{getDomain:t}=await ye();return t(e)}static async getDomainSeparator(e){const{getDomain:t}=await ye(),{_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 fe,me;!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"}(fe||(fe={})),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"}(me||(me={}));const Te=[{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 be{static createInterface(){return new r.Interface(Te)}static connect(e,t){return new s(e,Te,t)}}be.abi=Te;const he=[{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 Ee{static createInterface(){return new r.Interface(he)}static connect(e,t){return new s(e,he,t)}}Ee.abi=he;const Ie=["erc20","0x5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9"],Ae=["external","0xabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea0632"],Oe=["internal","0x4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce"],Se=["sell","0xf3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775"],Ne=["buy","0x6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc"],_e=["tuple(address handler, bytes32 salt, bytes staticInput)"],ge=(e,t)=>`${t}@${e}`;function ve(e,t){return e===v[t]}function De(e,t){return e===D[t]}async function we(e,t,n,a){const r=Ee.connect(v[n],a);return await r.callStatic.domainVerifiers(e,t)}function Ce(e,t){return Ee.createInterface().encodeFunctionData("setDomainVerifier",[e,t])}function Re(e){return r.defaultAbiCoder.encode(_e,[e])}function Pe(e){const{handler:t,salt:n,staticInput:a}=r.defaultAbiCoder.decode(_e,e)[0];return{handler:t,salt:n,staticInput:a}}function xe(e,t){try{r.defaultAbiCoder.encode(e,t)}catch(e){return!1}return!0}async function Ue(e){const t=await e.getBlock("latest");return{blockNumber:t.number,blockTimestamp:t.timestamp}}function Le(e){return new Date(1e3*e).toISOString()}function Me(e){if(Ie.includes(e))return p.ERC20;if(Ae.includes(e))return p.EXTERNAL;if(Oe.includes(e))return p.INTERNAL;throw new Error(`Unknown balance type: ${e}`)}function Fe(e){if(Se.includes(e))return c.SELL;if(Ne.includes(e))return c.BUY;throw new Error(`Unknown kind: ${e}`)}function ke(e){const{sellToken:t,sellAmount:n,buyToken:a,buyAmount:r,buyTokenBalance:s,sellTokenBalance:i,feeAmount:o,kind:d,receiver:p,validTo:c,partiallyFillable:u,appData:y}=e;return{sellToken:t,sellAmount:n,buyToken:a,buyAmount:r,feeAmount:o,receiver:p,partiallyFillable:u,appData:y,validTo:Number(c),kind:Fe(d.toString()),sellTokenBalance:Me(i.toString()),buyTokenBalance:Me(s.toString())}}let Ge,Be;function Ve(){return Ge||(Ge=be.createInterface()),Ge}function He(e,t){return Be||(Be=be.connect(D[e],t)),Be}const $e={};class We{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=Ve(),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(),Ve().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(Re(e))}get offChainInput(){return"0x"}encodeStaticInputHelper(e,t){return r.defaultAbiCoder.encode(e,[t])}async poll(e){const{chainId:t,owner:n,provider:a}=e,r=He(t,a);try{const a=this.isValid();if(!a.isValid)return{result:me.DONT_TRY_AGAIN,reason:`InvalidConditionalOrder. Reason: ${a.reason}`};const s=await this.pollValidate(e);if(s)return s;if(!await this.isAuthorized(e))return{result:me.DONT_TRY_AGAIN,reason:`NotAuthorized: Order ${this.id} is not authorized for ${n} on chain ${t}`};const[i,o]=await r.getTradeableOrderWithSignature(n,this.leaf,this.offChainInput,[]);let d=$e[t];d||(d=new G({chainId:t}),$e[t]=d);const p=await async function(e,t,n){const{computeOrderUid:a}=await import("@cowprotocol/contracts");return a(await le.getDomain(e),n,t)}(t,n,ke(i));return await d.getOrder(p).then(()=>!0).catch(()=>!1)?await this.handlePollFailedAlreadyPresent(p,i,e)||{result:me.TRY_NEXT_BLOCK,reason:"Order already in orderbook"}:{result:me.SUCCESS,order:i,signature:o}}catch(e){return{result:me.UNEXPECTED_ERROR,error:e}}}isAuthorized(e){const{chainId:t,owner:n,provider:a}=e;return He(t,a).callStatic.singleOrders(n,this.id)}cabinet(e){const{chainId:t,owner:n,provider:a}=e;return He(t,a).callStatic.cabinet(n,this.ctx)}static deserializeHelper(e,t,n,a){try{const{handler:s,salt:i,staticInput:o}=Pe(e);if(s!=t)throw new Error("HandlerMismatch");const[d]=r.defaultAbiCoder.decode(n,o);return a(d,i)}catch(e){throw"HandlerMismatch"===e.message?e:new Error("InvalidSerializedConditionalOrder")}}}const Ye=["orderType"],je=["address","bytes32","bytes"],Ze=["tuple(bytes32[] proof, tuple(address handler, bytes32 salt, bytes staticInput) params)[]"];class Ke{constructor(e,t,n,a=fe.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(!Ke.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=I(a,Ye);if(!Ke.orderTypeRegistry.hasOwnProperty(r))throw new Error(`Unknown order type: ${r}`);e[n]=new(0,Ke.orderTypeRegistry[r])(s)}return e}return"object"==typeof t&&null!==t&&t.hasOwnProperty("type")&&t.hasOwnProperty("hex")&&"BigNumber"===t.type?d.from(t):t}),s=new Ke(t,n,a);return s.location=r,s}toJSON(){const e=this.getOrGenerateTree().root;return JSON.stringify(E({},this,{root:e}),(e,t)=>{if("tree"!==e)return"object"==typeof t&&null!==t&&"orderType"in t?E({},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=u.of(Object.values(this.orders).map(e=>[...Object.values(e.leaf)]),je)),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 fe.PRIVATE:return"0x";case fe.EMITTED:return a.encodeToABI(t);case fe.SWARM:case fe.WAKU:case fe.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=He(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(Ze,[this.getProofs(e)])}encodeToJSON(e){return JSON.stringify(this.getProofs(e))}reset(){this.tree=void 0}static registerOrderType(e,t){Ke.orderTypeRegistry[e]=t}static resetOrderTypeRegistry(){Ke.orderTypeRegistry={}}}Ke.orderTypeRegistry={};class Xe{constructor(e){this.knownOrderTypes=void 0,this.knownOrderTypes=e}fromParams(e){const{handler:t}=e,n=this.knownOrderTypes[t];if(n)return n(e)}}const qe=["sellAmount","buyAmount","numberOfParts","startTime","timeBetweenParts","durationOfPart"],ze=["n","partSellAmount","minPartLimit","t","t0","span"],Je="0x6cF1e9cA41f7611dEf408122793c358a3d11E5a5",Qe="0x52eD56Da04309Aca4c3FECC595298d80C2f16BAc",et=d.from(2).pow(32).sub(1),tt=d.from(31536e3),nt=["tuple(address sellToken, address buyToken, address receiver, uint256 partSellAmount, uint256 minPartLimit, uint256 t0, uint256 n, uint256 t, uint256 span, bytes32 appData)"];var at,rt;!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"}(rt||(rt={}));const st={startType:rt.AT_MINING_TIME},it={durationType:at.AUTO};class ot extends We{constructor(e){const{handler:t,salt:n,data:a,hasOffChainInput:r}=e;if(t!==Je)throw new Error(`InvalidHandler: Expected: ${Je}, provided: ${t}`);super({handler:Je,salt:n,data:a,hasOffChainInput:r}),this.isSingleOrder=!0}static fromData(e){return new ot({handler:Je,data:e})}static fromParams(e){return ot.deserialize(Re(e))}get context(){return this.staticInput.t0.gt(0)?super.context:{address:Qe,factoryArgs:void 0}}get orderType(){return"twap"}isValid(){const e=(()=>{const{sellToken:e,sellAmount:t,buyToken:n,buyAmount:a,startTime:r=st,numberOfParts:s,timeBetweenParts:i,durationOfPart:d=it}=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===rt.AT_EPOCH){const e=r.epoch;if(!e.gte(o.Zero)||!e.lt(et))return"InvalidStartTime"}return s.gt(o.One)&&s.lte(et)?i.gt(o.Zero)&&i.lte(tt)?d.durationType!==at.LIMIT_DURATION||d.duration.lte(i)?xe(nt,[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)===rt.AT_EPOCH)return t.epoch.toNumber();const n=await this.cabinet(e);if(0===r.defaultAbiCoder.decode(["uint256"],n)[0])throw new Error("Cabinet is not set. Required for TWAP orders that start at mining time.");return parseInt(n,16)}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 Ue(e.provider)}=e,{blockTimestamp:n}=t,a=await this.startTimestamp(e);if(a>n)return{result:me.TRY_AT_EPOCH,epoch:a,reason:`TWAP hasn't started yet. Starts at ${a} (${Le(a)})`};const r=this.endTimestamp(a);return n>=r?{result:me.DONT_TRY_AGAIN,reason:`TWAP has expired. Expired at ${r} (${Le(r)})`}:void 0}async handlePollFailedAlreadyPresent(e,t,n){const{blockInfo:a=await Ue(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:me.UNEXPECTED_ERROR,reason:`TWAP part hash't started. First TWAP part start at ${o} (${Le(o)})`,error:void 0};const d=i.mul(s).add(o).toNumber();if(r>=d)return{result:me.UNEXPECTED_ERROR,reason:`TWAP is expired. Expired at ${d} (${Le(d)})`,error:void 0};const p=Math.floor((r-o)/s);if(p===i.toNumber()-1)return{result:me.DONT_TRY_AGAIN,reason:`Current active TWAP part (${p+1}/${i}) is already in the Order Book. This was the last TWAP part, no more orders need to be placed`};const c=o+(p+1)*s;return{result:me.TRY_AT_EPOCH,epoch:c,reason:`Current active TWAP part (${p+1}/${i}) is already in the Order Book. TWAP part ${p+2} doesn't start until ${c} (${Le(c)})`}}serialize(){return Re(this.leaf)}encodeStaticInput(){return super.encodeStaticInputHelper(nt,this.staticInput)}static deserialize(e){return super.deserializeHelper(e,Je,nt,(e,t)=>new ot({handler:Je,salt:t,data:pt(e)}))}toString(){const{sellAmount:e,sellToken:t,buyAmount:n,buyToken:a,numberOfParts:r,startTime:s=st,timeBetweenParts:i,durationOfPart:o=it,receiver:d,appData:p}=this.data,c=s.startType===rt.AT_MINING_TIME?"AT_MINING_TIME":s.epoch.toNumber(),u=o.durationType===at.AUTO?"AUTO":o.duration.toNumber(),y={sellAmount:e.toString(),sellToken:t,buyAmount:n.toString(),buyToken:a,numberOfParts:r.toString(),startTime:c,timeBetweenParts:i.toNumber(),durationOfPart:u,receiver:d,appData:p};return`${this.orderType}: ${JSON.stringify(y)}`}transformDataToStruct(e){return dt(e)}transformStructToData(e){return pt(e)}}function dt(e){const{sellAmount:t,buyAmount:n,numberOfParts:a,startTime:r=st,timeBetweenParts:s,durationOfPart:i=it}=e,d=I(e,qe),{partSellAmount:p,minPartLimit:c}=a&&!a.isZero()?{partSellAmount:t.div(a),minPartLimit:n.div(a)}:{partSellAmount:o.Zero,minPartLimit:o.Zero};return E({partSellAmount:p,minPartLimit:c,t0:r.startType===rt.AT_MINING_TIME?o.Zero:r.epoch,n:a,t:s,span:i.durationType===at.AUTO?o.Zero:i.duration},d)}function pt(e){const{n:t,partSellAmount:n,minPartLimit:a,t:r,t0:s,span:i}=e,o=I(e,ze),d=i.isZero()?{durationType:at.AUTO}:{durationType:at.LIMIT_DURATION,duration:i},p=i.isZero()?{startType:rt.AT_MINING_TIME}:{startType:rt.AT_EPOCH,epoch:s};return E({sellAmount:n.mul(t),buyAmount:a.mul(t),startTime:p,numberOfParts:t,timeBetweenParts:r,durationOfPart:d},o)}const ct={[Je]:e=>ot.fromParams(e)};export{Le as $,_ as A,O as B,m as C,f as D,V as E,H as F,pe as G,ce as H,ue as I,le as J,fe as K,me as L,_e as M,ge as N,M as O,z as P,ve as Q,J as R,y as S,De as T,we as U,Ce as V,Re as W,Pe as X,xe as Y,Ue as Z,E as _,g as a,ke as a0,We as a1,Ke as a2,Xe as a3,ct as a4,Je as a5,Qe as a6,et as a7,tt as a8,at as a9,rt as aa,ot as ab,dt as ac,pt as ad,l as b,b as c,h as d,S as e,N as f,v as g,D as h,F as i,G as j,B as k,T as l,$ as m,W as n,Y as o,j as p,Z as q,K as r,X as s,q as t,Q as u,ee as v,C as w,P as x,x as y,L as z};
|
|
29
|
-
//# sourceMappingURL=index-
|
|
28
|
+
`)),de="https://api.thegraph.com/subgraphs/name/cowprotocol",pe={[y.MAINNET]:de+"/cow",[y.GNOSIS_CHAIN]:de+"/cow-gc",[y.GOERLI]:de+"/cow-goerli"},ce={[y.MAINNET]:de+"/cow-staging",[y.GNOSIS_CHAIN]:de+"/cow-gc-staging",[y.GOERLI]:""};class ue{constructor(e={}){this.API_NAME="CoW Protocol Subgraph",this.context=void 0,this.context=E({},f,e)}async getTotals(e={}){return(await this.runQuery(se,void 0,e)).totals[0]}async getLastDaysVolume(e,t={}){return this.runQuery(ie,{days:e},t)}async getLastHoursVolume(e,t={}){return this.runQuery(oe,{hours:e},t)}async runQuery(e,t=undefined,n={}){const{chainId:r,env:s}=this.getContextWithOverride(n),i=this.getEnvConfigs(s)[r];try{return await a(i,e,t)}catch(n){throw console.error(`[subgraph:${this.API_NAME}]`,n),new m(`Error running query: ${e}. Variables: ${JSON.stringify(t)}. API: ${i}. Inner Error: ${n}`)}}getContextWithOverride(e={}){return E({},this.context,e)}getEnvConfigs(e){return this.context.baseUrls?this.context.baseUrls:"prod"===e?pe:ce}}const ye=()=>import("./utils-19aa2b9d.js");class le{static async signOrder(e,t,n){const{signOrder:a}=await ye();return a(e,t,n)}static async signOrderCancellation(e,t,n){const{signOrderCancellation:a}=await ye();return a(e,t,n)}static async signOrderCancellations(e,t,n){const{signOrderCancellations:a}=await ye();return a(e,t,n)}static async getDomain(e){const{getDomain:t}=await ye();return t(e)}static async getDomainSeparator(e){const{getDomain:t}=await ye(),{_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 fe,me;!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"}(fe||(fe={})),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"}(me||(me={}));const Te=[{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 be{static createInterface(){return new r.Interface(Te)}static connect(e,t){return new s(e,Te,t)}}be.abi=Te;const he=[{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 Ee{static createInterface(){return new r.Interface(he)}static connect(e,t){return new s(e,he,t)}}Ee.abi=he;const Ie=["erc20","0x5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9"],Ae=["external","0xabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea0632"],Oe=["internal","0x4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce"],Se=["sell","0xf3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775"],Ne=["buy","0x6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc"],_e=["tuple(address handler, bytes32 salt, bytes staticInput)"],ge=(e,t)=>`${t}@${e}`;function ve(e,t){return e===v[t]}function De(e,t){return e===D[t]}async function we(e,t,n,a){const r=Ee.connect(v[n],a);return await r.callStatic.domainVerifiers(e,t)}function Ce(e,t){return Ee.createInterface().encodeFunctionData("setDomainVerifier",[e,t])}function Re(e){return r.defaultAbiCoder.encode(_e,[e])}function Pe(e){const{handler:t,salt:n,staticInput:a}=r.defaultAbiCoder.decode(_e,e)[0];return{handler:t,salt:n,staticInput:a}}function xe(e,t){try{r.defaultAbiCoder.encode(e,t)}catch(e){return!1}return!0}async function Ue(e){const t=await e.getBlock("latest");return{blockNumber:t.number,blockTimestamp:t.timestamp}}function Le(e){return new Date(1e3*e).toISOString()}function Me(e){if(Ie.includes(e))return p.ERC20;if(Ae.includes(e))return p.EXTERNAL;if(Oe.includes(e))return p.INTERNAL;throw new Error(`Unknown balance type: ${e}`)}function Fe(e){if(Se.includes(e))return c.SELL;if(Ne.includes(e))return c.BUY;throw new Error(`Unknown kind: ${e}`)}function ke(e){const{sellToken:t,sellAmount:n,buyToken:a,buyAmount:r,buyTokenBalance:s,sellTokenBalance:i,feeAmount:o,kind:d,receiver:p,validTo:c,partiallyFillable:u,appData:y}=e;return{sellToken:t,sellAmount:n,buyToken:a,buyAmount:r,feeAmount:o,receiver:p,partiallyFillable:u,appData:y,validTo:Number(c),kind:Fe(d.toString()),sellTokenBalance:Me(i.toString()),buyTokenBalance:Me(s.toString())}}let Ge,Be;function Ve(){return Ge||(Ge=be.createInterface()),Ge}function He(e,t){return Be||(Be=be.connect(D[e],t)),Be}const $e={};class We{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=Ve(),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(),Ve().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(Re(e))}get offChainInput(){return"0x"}encodeStaticInputHelper(e,t){return r.defaultAbiCoder.encode(e,[t])}async poll(e){const{chainId:t,owner:n,provider:a}=e,r=He(t,a);try{const a=this.isValid();if(!a.isValid)return{result:me.DONT_TRY_AGAIN,reason:`InvalidConditionalOrder. Reason: ${a.reason}`};const s=await this.pollValidate(e);if(s)return s;if(!await this.isAuthorized(e))return{result:me.DONT_TRY_AGAIN,reason:`NotAuthorized: Order ${this.id} is not authorized for ${n} on chain ${t}`};const[i,o]=await r.getTradeableOrderWithSignature(n,this.leaf,this.offChainInput,[]);let d=$e[t];d||(d=new G({chainId:t}),$e[t]=d);const p=await async function(e,t,n){const{computeOrderUid:a}=await import("@cowprotocol/contracts");return a(await le.getDomain(e),n,t)}(t,n,ke(i));return await d.getOrder(p).then(()=>!0).catch(()=>!1)?await this.handlePollFailedAlreadyPresent(p,i,e)||{result:me.TRY_NEXT_BLOCK,reason:"Order already in orderbook"}:{result:me.SUCCESS,order:i,signature:o}}catch(e){return{result:me.UNEXPECTED_ERROR,error:e}}}isAuthorized(e){const{chainId:t,owner:n,provider:a}=e;return He(t,a).callStatic.singleOrders(n,this.id)}cabinet(e){const{chainId:t,owner:n,provider:a}=e;return He(t,a).callStatic.cabinet(n,this.ctx)}static deserializeHelper(e,t,n,a){try{const{handler:s,salt:i,staticInput:o}=Pe(e);if(s!=t)throw new Error("HandlerMismatch");const[d]=r.defaultAbiCoder.decode(n,o);return a(d,i)}catch(e){throw"HandlerMismatch"===e.message?e:new Error("InvalidSerializedConditionalOrder")}}}const Ye=["orderType"],je=["address","bytes32","bytes"],Ze=["tuple(bytes32[] proof, tuple(address handler, bytes32 salt, bytes staticInput) params)[]"];class Ke{constructor(e,t,n,a=fe.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(!Ke.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=I(a,Ye);if(!Ke.orderTypeRegistry.hasOwnProperty(r))throw new Error(`Unknown order type: ${r}`);e[n]=new(0,Ke.orderTypeRegistry[r])(s)}return e}return"object"==typeof t&&null!==t&&t.hasOwnProperty("type")&&t.hasOwnProperty("hex")&&"BigNumber"===t.type?d.from(t):t}),s=new Ke(t,n,a);return s.location=r,s}toJSON(){const e=this.getOrGenerateTree().root;return JSON.stringify(E({},this,{root:e}),(e,t)=>{if("tree"!==e)return"object"==typeof t&&null!==t&&"orderType"in t?E({},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=u.of(Object.values(this.orders).map(e=>[...Object.values(e.leaf)]),je)),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 fe.PRIVATE:return"0x";case fe.EMITTED:return a.encodeToABI(t);case fe.SWARM:case fe.WAKU:case fe.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=He(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(Ze,[this.getProofs(e)])}encodeToJSON(e){return JSON.stringify(this.getProofs(e))}reset(){this.tree=void 0}static registerOrderType(e,t){Ke.orderTypeRegistry[e]=t}static resetOrderTypeRegistry(){Ke.orderTypeRegistry={}}}Ke.orderTypeRegistry={};class Xe{constructor(e){this.knownOrderTypes=void 0,this.knownOrderTypes=e}fromParams(e){const{handler:t}=e,n=this.knownOrderTypes[t];if(n)return n(e)}}const qe=["sellAmount","buyAmount","numberOfParts","startTime","timeBetweenParts","durationOfPart"],ze=["n","partSellAmount","minPartLimit","t","t0","span"],Je="0x6cF1e9cA41f7611dEf408122793c358a3d11E5a5",Qe="0x52eD56Da04309Aca4c3FECC595298d80C2f16BAc",et=d.from(2).pow(32).sub(1),tt=d.from(31536e3),nt=["tuple(address sellToken, address buyToken, address receiver, uint256 partSellAmount, uint256 minPartLimit, uint256 t0, uint256 n, uint256 t, uint256 span, bytes32 appData)"];var at,rt;!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"}(rt||(rt={}));const st={startType:rt.AT_MINING_TIME},it={durationType:at.AUTO};class ot extends We{constructor(e){const{handler:t,salt:n,data:a,hasOffChainInput:r}=e;if(t!==Je)throw new Error(`InvalidHandler: Expected: ${Je}, provided: ${t}`);super({handler:Je,salt:n,data:a,hasOffChainInput:r}),this.isSingleOrder=!0}static fromData(e,t){return new ot({handler:Je,data:e,salt:t})}static fromParams(e){return ot.deserialize(Re(e))}get context(){return this.staticInput.t0.gt(0)?super.context:{address:Qe,factoryArgs:void 0}}get orderType(){return"twap"}isValid(){const e=(()=>{const{sellToken:e,sellAmount:t,buyToken:n,buyAmount:a,startTime:r=st,numberOfParts:s,timeBetweenParts:i,durationOfPart:d=it}=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===rt.AT_EPOCH){const e=r.epoch;if(!e.gte(o.Zero)||!e.lt(et))return"InvalidStartTime"}return s.gt(o.One)&&s.lte(et)?i.gt(o.Zero)&&i.lte(tt)?d.durationType!==at.LIMIT_DURATION||d.duration.lte(i)?xe(nt,[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)===rt.AT_EPOCH)return t.epoch.toNumber();const n=await this.cabinet(e);if(0===r.defaultAbiCoder.decode(["uint256"],n)[0])throw new Error("Cabinet is not set. Required for TWAP orders that start at mining time.");return parseInt(n,16)}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 Ue(e.provider)}=e,{blockTimestamp:n}=t,a=await this.startTimestamp(e);if(a>n)return{result:me.TRY_AT_EPOCH,epoch:a,reason:`TWAP hasn't started yet. Starts at ${a} (${Le(a)})`};const r=this.endTimestamp(a);return n>=r?{result:me.DONT_TRY_AGAIN,reason:`TWAP has expired. Expired at ${r} (${Le(r)})`}:void 0}async handlePollFailedAlreadyPresent(e,t,n){const{blockInfo:a=await Ue(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:me.UNEXPECTED_ERROR,reason:`TWAP part hash't started. First TWAP part start at ${o} (${Le(o)})`,error:void 0};const d=i.mul(s).add(o).toNumber();if(r>=d)return{result:me.UNEXPECTED_ERROR,reason:`TWAP is expired. Expired at ${d} (${Le(d)})`,error:void 0};const p=Math.floor((r-o)/s);if(p===i.toNumber()-1)return{result:me.DONT_TRY_AGAIN,reason:`Current active TWAP part (${p+1}/${i}) is already in the Order Book. This was the last TWAP part, no more orders need to be placed`};const c=o+(p+1)*s;return{result:me.TRY_AT_EPOCH,epoch:c,reason:`Current active TWAP part (${p+1}/${i}) is already in the Order Book. TWAP part ${p+2} doesn't start until ${c} (${Le(c)})`}}serialize(){return Re(this.leaf)}encodeStaticInput(){return super.encodeStaticInputHelper(nt,this.staticInput)}static deserialize(e){return super.deserializeHelper(e,Je,nt,(e,t)=>new ot({handler:Je,salt:t,data:pt(e)}))}toString(){const{sellAmount:e,sellToken:t,buyAmount:n,buyToken:a,numberOfParts:r,startTime:s=st,timeBetweenParts:i,durationOfPart:o=it,receiver:d,appData:p}=this.data,c=s.startType===rt.AT_MINING_TIME?"AT_MINING_TIME":s.epoch.toNumber(),u=o.durationType===at.AUTO?"AUTO":o.duration.toNumber(),y={sellAmount:e.toString(),sellToken:t,buyAmount:n.toString(),buyToken:a,numberOfParts:r.toString(),startTime:c,timeBetweenParts:i.toNumber(),durationOfPart:u,receiver:d,appData:p};return`${this.orderType} (${this.id}): ${JSON.stringify(y)}`}transformDataToStruct(e){return dt(e)}transformStructToData(e){return pt(e)}}function dt(e){const{sellAmount:t,buyAmount:n,numberOfParts:a,startTime:r=st,timeBetweenParts:s,durationOfPart:i=it}=e,d=I(e,qe),{partSellAmount:p,minPartLimit:c}=a&&!a.isZero()?{partSellAmount:t.div(a),minPartLimit:n.div(a)}:{partSellAmount:o.Zero,minPartLimit:o.Zero};return E({partSellAmount:p,minPartLimit:c,t0:r.startType===rt.AT_MINING_TIME?o.Zero:r.epoch,n:a,t:s,span:i.durationType===at.AUTO?o.Zero:i.duration},d)}function pt(e){const{n:t,partSellAmount:n,minPartLimit:a,t:r,t0:s,span:i}=e,o=I(e,ze),d=i.isZero()?{durationType:at.AUTO}:{durationType:at.LIMIT_DURATION,duration:i},p=i.isZero()?{startType:rt.AT_MINING_TIME}:{startType:rt.AT_EPOCH,epoch:s};return E({sellAmount:n.mul(t),buyAmount:a.mul(t),startTime:p,numberOfParts:t,timeBetweenParts:r,durationOfPart:d},o)}const ct={[Je]:e=>ot.fromParams(e)};export{Le as $,_ as A,O as B,m as C,f as D,V as E,H as F,pe as G,ce as H,ue as I,le as J,fe as K,me as L,_e as M,ge as N,M as O,z as P,ve as Q,J as R,y as S,De as T,we as U,Ce as V,Re as W,Pe as X,xe as Y,Ue as Z,E as _,g as a,ke as a0,We as a1,Ke as a2,Xe as a3,ct as a4,Je as a5,Qe as a6,et as a7,tt as a8,at as a9,rt as aa,ot as ab,dt as ac,pt as ad,l as b,b as c,h as d,S as e,N as f,v as g,D as h,F as i,G as j,B as k,T as l,$ as m,W as n,Y as o,j as p,Z as q,K as r,X as s,q as t,Q as u,ee as v,C as w,P as x,x as y,L as z};
|
|
29
|
+
//# sourceMappingURL=index-2fad821e.js.map
|