@cowprotocol/cow-sdk
Advanced tools
Comparing version 5.3.1 to 5.3.2
@@ -1,2 +0,2 @@ | ||
require("cross-fetch/polyfill");var e,t=require("limiter"),r=require("exponential-backoff"),n=require("graphql-request"),o=require("ethers"),a=require("@cowprotocol/contracts"),s=require("@openzeppelin/merkle-tree");function i(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach(function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}}),t.default=e,t}exports.SupportedChainId=void 0,(e=exports.SupportedChainId||(exports.SupportedChainId={}))[e.MAINNET=1]="MAINNET",e[e.GNOSIS_CHAIN=100]="GNOSIS_CHAIN",e[e.ARBITRUM_ONE=42161]="ARBITRUM_ONE",e[e.SEPOLIA=11155111]="SEPOLIA";const p=["prod","staging"],u={env:"prod",chainId:exports.SupportedChainId.MAINNET};class d extends Error{constructor(e,t){super(e),this.error_code=void 0,this.error_code=t}}const l="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",c="0x2f55e8b20D0B9FEFA187AA7d00B6Cbe563605bF5",y="0xfdaFc9d1902f4e0b84f65F49f244b32b31013b74",m=Object.values(exports.SupportedChainId).filter(e=>"number"==typeof e);function T(e){return m.reduce((t,r)=>({...t,[r]:"function"==typeof e?e(r):e}),{})}function h(e){return T(e)}const f=h("0x9008D19f58AAbD9eD0D60971565AA8510560ab41"),b=h("0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"),I=h(c),O=h(y),E=function(e,{path:t,query:n,method:o,body:a},s,i){try{const p={Accept:"application/json","Content-Type":"application/json"},u=`${e}${t}${n?"?"+n:""}`,d={method:o,body:(()=>{if(a)return"string"==typeof a?a:JSON.stringify(a)})(),headers:p};return Promise.resolve(r.backOff(function(){try{return Promise.resolve(s.removeTokens(1)).then(function(){return Promise.resolve(fetch(u,d)).then(function(e){return Promise.resolve(v(e)).then(function(t){return e.status>=200&&e.status<300?t:Promise.reject(new A(e,t))})})})}catch(e){return Promise.reject(e)}},i))}catch(e){return Promise.reject(e)}};class A extends Error{constructor(e,t){super("string"==typeof t?t:e.statusText),this.response=void 0,this.body=void 0,this.response=e,this.body=t}}const S=[408,425,429,500,502,503,504],P={numOfAttempts:10,maxDelay:Infinity,jitter:"none",retry:e=>!(e instanceof A)||S.includes(e.response.status)},x={tokensPerInterval:5,interval:"second"},v=function(e){try{let t;const r=function(){if(204!==e.status)return function(r,n){try{var o=function(){const r=e.headers.get("Content-Type");return function(){if(r)return r.toLowerCase().startsWith("application/json")?Promise.resolve(e.json()).then(function(e){return t=1,e}):Promise.resolve(e.text()).then(function(e){return t=1,e})}()}()}catch(e){return n(e)}return o&&o.then?o.then(void 0,n):o}(0,function(e){console.error(e)})}();return Promise.resolve(r&&r.then?r.then(function(e){return t?e:void 0}):t?r:void 0)}catch(e){return Promise.reject(e)}};function g(e){return function(e){const{ethflowData:t}=e;if(!t)return e;const{userValidTo:r}=t,n=e.onchainUser||e.owner,o=l;return{...e,validTo:r,owner:n,sellToken:o}}(function(e){const{executedFeeAmount:t,executedSurplusFee:r}=e,n=BigInt(t||"0"),o=BigInt(r||"0"),a=String(n+o);return{...e,totalFee:a}}(e))}const _={[exports.SupportedChainId.MAINNET]:"https://api.cow.fi/mainnet",[exports.SupportedChainId.GNOSIS_CHAIN]:"https://api.cow.fi/xdai",[exports.SupportedChainId.ARBITRUM_ONE]:"https://api.cow.fi/arbitrum_one",[exports.SupportedChainId.SEPOLIA]:"https://api.cow.fi/sepolia"},N={[exports.SupportedChainId.MAINNET]:"https://barn.api.cow.fi/mainnet",[exports.SupportedChainId.GNOSIS_CHAIN]:"https://barn.api.cow.fi/xdai",[exports.SupportedChainId.ARBITRUM_ONE]:"https://barn.api.cow.fi/arbitrum_one",[exports.SupportedChainId.SEPOLIA]:"https://barn.api.cow.fi/sepolia"};function C(e){return Object.keys(e).reduce((t,r)=>{const n=e[r];return void 0!==n&&(t[r]=n),t},{})}var R,D,w,L,U,M,k,B,F,V,G,$,W,j;function H(e,t){if("number"==typeof e){const r=e*10**t,n=r.toFixed();return{big:BigInt(n.includes("e")?r:n),num:e}}const r=BigInt(e);return{big:r,num:Number(r)/10**t}}exports.BuyTokenDestination=void 0,(R=exports.BuyTokenDestination||(exports.BuyTokenDestination={})).ERC20="erc20",R.INTERNAL="internal",exports.EcdsaSigningScheme=void 0,(D=exports.EcdsaSigningScheme||(exports.EcdsaSigningScheme={})).EIP712="eip712",D.ETHSIGN="ethsign",exports.OnchainOrderData=void 0,(L=(w=exports.OnchainOrderData||(exports.OnchainOrderData={})).placementError||(w.placementError={})).QUOTE_NOT_FOUND="QuoteNotFound",L.VALID_TO_TOO_FAR_IN_FUTURE="ValidToTooFarInFuture",L.PRE_VALIDATION_ERROR="PreValidationError",exports.OrderCancellationError=void 0,(M=(U=exports.OrderCancellationError||(exports.OrderCancellationError={})).errorType||(U.errorType={})).INVALID_SIGNATURE="InvalidSignature",M.WRONG_OWNER="WrongOwner",M.ORDER_NOT_FOUND="OrderNotFound",M.ALREADY_CANCELLED="AlreadyCancelled",M.ORDER_FULLY_EXECUTED="OrderFullyExecuted",M.ORDER_EXPIRED="OrderExpired",M.ON_CHAIN_ORDER="OnChainOrder",exports.OrderClass=void 0,(k=exports.OrderClass||(exports.OrderClass={})).MARKET="market",k.LIMIT="limit",k.LIQUIDITY="liquidity",exports.OrderKind=void 0,(B=exports.OrderKind||(exports.OrderKind={})).BUY="buy",B.SELL="sell",exports.OrderPostError=void 0,function(e){e.DUPLICATED_ORDER="DuplicatedOrder",e.QUOTE_NOT_FOUND="QuoteNotFound",e.INVALID_QUOTE="InvalidQuote",e.MISSING_FROM="MissingFrom",e.WRONG_OWNER="WrongOwner",e.INVALID_EIP1271SIGNATURE="InvalidEip1271Signature",e.INSUFFICIENT_BALANCE="InsufficientBalance",e.INSUFFICIENT_ALLOWANCE="InsufficientAllowance",e.INVALID_SIGNATURE="InvalidSignature",e.SELL_AMOUNT_OVERFLOW="SellAmountOverflow",e.TRANSFER_SIMULATION_FAILED="TransferSimulationFailed",e.ZERO_AMOUNT="ZeroAmount",e.INCOMPATIBLE_SIGNING_SCHEME="IncompatibleSigningScheme",e.TOO_MANY_LIMIT_ORDERS="TooManyLimitOrders",e.TOO_MUCH_GAS="TooMuchGas",e.UNSUPPORTED_BUY_TOKEN_DESTINATION="UnsupportedBuyTokenDestination",e.UNSUPPORTED_SELL_TOKEN_SOURCE="UnsupportedSellTokenSource",e.UNSUPPORTED_ORDER_TYPE="UnsupportedOrderType",e.INSUFFICIENT_VALID_TO="InsufficientValidTo",e.EXCESSIVE_VALID_TO="ExcessiveValidTo",e.INVALID_NATIVE_SELL_TOKEN="InvalidNativeSellToken",e.SAME_BUY_AND_SELL_TOKEN="SameBuyAndSellToken",e.UNSUPPORTED_TOKEN="UnsupportedToken",e.INVALID_APP_DATA="InvalidAppData",e.APP_DATA_HASH_MISMATCH="AppDataHashMismatch",e.APPDATA_FROM_MISMATCH="AppdataFromMismatch"}((F=exports.OrderPostError||(exports.OrderPostError={})).errorType||(F.errorType={})),exports.OrderQuoteSideKindBuy=void 0,(exports.OrderQuoteSideKindBuy||(exports.OrderQuoteSideKindBuy={})).BUY="buy",exports.OrderQuoteSideKindSell=void 0,(exports.OrderQuoteSideKindSell||(exports.OrderQuoteSideKindSell={})).SELL="sell",exports.OrderStatus=void 0,(V=exports.OrderStatus||(exports.OrderStatus={})).PRESIGNATURE_PENDING="presignaturePending",V.OPEN="open",V.FULFILLED="fulfilled",V.CANCELLED="cancelled",V.EXPIRED="expired",exports.PriceEstimationError=void 0,function(e){e.UNSUPPORTED_TOKEN="UnsupportedToken",e.ZERO_AMOUNT="ZeroAmount",e.UNSUPPORTED_ORDER_TYPE="UnsupportedOrderType"}((G=exports.PriceEstimationError||(exports.PriceEstimationError={})).errorType||(G.errorType={})),exports.PriceQuality=void 0,($=exports.PriceQuality||(exports.PriceQuality={})).FAST="fast",$.OPTIMAL="optimal",$.VERIFIED="verified",exports.SellTokenSource=void 0,(W=exports.SellTokenSource||(exports.SellTokenSource={})).ERC20="erc20",W.INTERNAL="internal",W.EXTERNAL="external",exports.SigningScheme=void 0,(j=exports.SigningScheme||(exports.SigningScheme={})).EIP712="eip712",j.ETHSIGN="ethsign",j.PRESIGN="presign",j.EIP1271="eip1271";const K=n.gql` | ||
require("cross-fetch/polyfill");var e,t=require("limiter"),r=require("exponential-backoff"),n=require("graphql-request"),o=require("ethers"),a=require("@cowprotocol/contracts"),s=require("@openzeppelin/merkle-tree");function i(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach(function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}}),t.default=e,t}exports.SupportedChainId=void 0,(e=exports.SupportedChainId||(exports.SupportedChainId={}))[e.MAINNET=1]="MAINNET",e[e.GNOSIS_CHAIN=100]="GNOSIS_CHAIN",e[e.ARBITRUM_ONE=42161]="ARBITRUM_ONE",e[e.SEPOLIA=11155111]="SEPOLIA";const p=["prod","staging"],u={env:"prod",chainId:exports.SupportedChainId.MAINNET};class d extends Error{constructor(e,t){super(e),this.error_code=void 0,this.error_code=t}}const l="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",c="0x2f55e8b20D0B9FEFA187AA7d00B6Cbe563605bF5",y="0xfdaFc9d1902f4e0b84f65F49f244b32b31013b74",m=Object.values(exports.SupportedChainId).filter(e=>"number"==typeof e);function T(e){return m.reduce((t,r)=>({...t,[r]:"function"==typeof e?e(r):e}),{})}function h(e){return T(e)}const f=h("0x9008D19f58AAbD9eD0D60971565AA8510560ab41"),b=h("0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"),I=h(c),O=h(y),E=function(e,{path:t,query:n,method:o,body:a},s,i){try{const p={Accept:"application/json","Content-Type":"application/json"},u=`${e}${t}${n?"?"+n:""}`,d={method:o,body:(()=>{if(a)return"string"==typeof a?a:JSON.stringify(a)})(),headers:p};return Promise.resolve(r.backOff(function(){try{return Promise.resolve(s.removeTokens(1)).then(function(){return Promise.resolve(fetch(u,d)).then(function(e){return Promise.resolve(v(e)).then(function(t){return e.status>=200&&e.status<300?t:Promise.reject(new A(e,t))})})})}catch(e){return Promise.reject(e)}},i))}catch(e){return Promise.reject(e)}};class A extends Error{constructor(e,t){super("string"==typeof t?t:e.statusText),this.response=void 0,this.body=void 0,this.response=e,this.body=t}}const S=[408,425,429,500,502,503,504],P={numOfAttempts:10,maxDelay:Infinity,jitter:"none",retry:e=>!(e instanceof A)||S.includes(e.response.status)},x={tokensPerInterval:5,interval:"second"},v=function(e){try{let t;const r=function(){if(204!==e.status)return function(r,n){try{var o=function(){const r=e.headers.get("Content-Type");return function(){if(r)return r.toLowerCase().startsWith("application/json")?Promise.resolve(e.json()).then(function(e){return t=1,e}):Promise.resolve(e.text()).then(function(e){return t=1,e})}()}()}catch(e){return n(e)}return o&&o.then?o.then(void 0,n):o}(0,function(e){console.error(e)})}();return Promise.resolve(r&&r.then?r.then(function(e){return t?e:void 0}):t?r:void 0)}catch(e){return Promise.reject(e)}};function g(e){return function(e){const{ethflowData:t}=e;if(!t)return e;const{userValidTo:r}=t,n=e.onchainUser||e.owner,o=l;return{...e,validTo:r,owner:n,sellToken:o}}(function(e){const{executedFeeAmount:t,executedSurplusFee:r}=e,n=BigInt(t||"0"),o=BigInt(r||"0"),a=String(n+o);return{...e,totalFee:a}}(e))}const _={[exports.SupportedChainId.MAINNET]:"https://api.cow.fi/mainnet",[exports.SupportedChainId.GNOSIS_CHAIN]:"https://api.cow.fi/xdai",[exports.SupportedChainId.ARBITRUM_ONE]:"https://api.cow.fi/arbitrum_one",[exports.SupportedChainId.SEPOLIA]:"https://api.cow.fi/sepolia"},N={[exports.SupportedChainId.MAINNET]:"https://barn.api.cow.fi/mainnet",[exports.SupportedChainId.GNOSIS_CHAIN]:"https://barn.api.cow.fi/xdai",[exports.SupportedChainId.ARBITRUM_ONE]:"https://barn.api.cow.fi/arbitrum_one",[exports.SupportedChainId.SEPOLIA]:"https://barn.api.cow.fi/sepolia"};function C(e){return Object.keys(e).reduce((t,r)=>{const n=e[r];return void 0!==n&&(t[r]=n),t},{})}var R,D,w,L,U,M,k,B,F,V,G,$,W,j;exports.BuyTokenDestination=void 0,(R=exports.BuyTokenDestination||(exports.BuyTokenDestination={})).ERC20="erc20",R.INTERNAL="internal",exports.EcdsaSigningScheme=void 0,(D=exports.EcdsaSigningScheme||(exports.EcdsaSigningScheme={})).EIP712="eip712",D.ETHSIGN="ethsign",exports.OnchainOrderData=void 0,(L=(w=exports.OnchainOrderData||(exports.OnchainOrderData={})).placementError||(w.placementError={})).QUOTE_NOT_FOUND="QuoteNotFound",L.VALID_TO_TOO_FAR_IN_FUTURE="ValidToTooFarInFuture",L.PRE_VALIDATION_ERROR="PreValidationError",exports.OrderCancellationError=void 0,(M=(U=exports.OrderCancellationError||(exports.OrderCancellationError={})).errorType||(U.errorType={})).INVALID_SIGNATURE="InvalidSignature",M.WRONG_OWNER="WrongOwner",M.ORDER_NOT_FOUND="OrderNotFound",M.ALREADY_CANCELLED="AlreadyCancelled",M.ORDER_FULLY_EXECUTED="OrderFullyExecuted",M.ORDER_EXPIRED="OrderExpired",M.ON_CHAIN_ORDER="OnChainOrder",exports.OrderClass=void 0,(k=exports.OrderClass||(exports.OrderClass={})).MARKET="market",k.LIMIT="limit",k.LIQUIDITY="liquidity",exports.OrderKind=void 0,(B=exports.OrderKind||(exports.OrderKind={})).BUY="buy",B.SELL="sell",exports.OrderPostError=void 0,function(e){e.DUPLICATED_ORDER="DuplicatedOrder",e.QUOTE_NOT_FOUND="QuoteNotFound",e.INVALID_QUOTE="InvalidQuote",e.MISSING_FROM="MissingFrom",e.WRONG_OWNER="WrongOwner",e.INVALID_EIP1271SIGNATURE="InvalidEip1271Signature",e.INSUFFICIENT_BALANCE="InsufficientBalance",e.INSUFFICIENT_ALLOWANCE="InsufficientAllowance",e.INVALID_SIGNATURE="InvalidSignature",e.SELL_AMOUNT_OVERFLOW="SellAmountOverflow",e.TRANSFER_SIMULATION_FAILED="TransferSimulationFailed",e.ZERO_AMOUNT="ZeroAmount",e.INCOMPATIBLE_SIGNING_SCHEME="IncompatibleSigningScheme",e.TOO_MANY_LIMIT_ORDERS="TooManyLimitOrders",e.TOO_MUCH_GAS="TooMuchGas",e.UNSUPPORTED_BUY_TOKEN_DESTINATION="UnsupportedBuyTokenDestination",e.UNSUPPORTED_SELL_TOKEN_SOURCE="UnsupportedSellTokenSource",e.UNSUPPORTED_ORDER_TYPE="UnsupportedOrderType",e.INSUFFICIENT_VALID_TO="InsufficientValidTo",e.EXCESSIVE_VALID_TO="ExcessiveValidTo",e.INVALID_NATIVE_SELL_TOKEN="InvalidNativeSellToken",e.SAME_BUY_AND_SELL_TOKEN="SameBuyAndSellToken",e.UNSUPPORTED_TOKEN="UnsupportedToken",e.INVALID_APP_DATA="InvalidAppData",e.APP_DATA_HASH_MISMATCH="AppDataHashMismatch",e.APPDATA_FROM_MISMATCH="AppdataFromMismatch"}((F=exports.OrderPostError||(exports.OrderPostError={})).errorType||(F.errorType={})),exports.OrderQuoteSideKindBuy=void 0,(exports.OrderQuoteSideKindBuy||(exports.OrderQuoteSideKindBuy={})).BUY="buy",exports.OrderQuoteSideKindSell=void 0,(exports.OrderQuoteSideKindSell||(exports.OrderQuoteSideKindSell={})).SELL="sell",exports.OrderStatus=void 0,(V=exports.OrderStatus||(exports.OrderStatus={})).PRESIGNATURE_PENDING="presignaturePending",V.OPEN="open",V.FULFILLED="fulfilled",V.CANCELLED="cancelled",V.EXPIRED="expired",exports.PriceEstimationError=void 0,function(e){e.UNSUPPORTED_TOKEN="UnsupportedToken",e.ZERO_AMOUNT="ZeroAmount",e.UNSUPPORTED_ORDER_TYPE="UnsupportedOrderType"}((G=exports.PriceEstimationError||(exports.PriceEstimationError={})).errorType||(G.errorType={})),exports.PriceQuality=void 0,($=exports.PriceQuality||(exports.PriceQuality={})).FAST="fast",$.OPTIMAL="optimal",$.VERIFIED="verified",exports.SellTokenSource=void 0,(W=exports.SellTokenSource||(exports.SellTokenSource={})).ERC20="erc20",W.INTERNAL="internal",W.EXTERNAL="external",exports.SigningScheme=void 0,(j=exports.SigningScheme||(exports.SigningScheme={})).EIP712="eip712",j.ETHSIGN="ethsign",j.PRESIGN="presign",j.EIP1271="eip1271";const H=BigInt(1e4);function K(e,t){if("number"==typeof e){const r=e*10**t,n=r.toFixed();return{big:BigInt(n.includes("e")?r:n),num:e}}const r=BigInt(e);return{big:r,num:Number(r)/10**t}}const Y=n.gql` | ||
query Totals { | ||
@@ -14,3 +14,3 @@ totals { | ||
} | ||
`,Y=n.gql` | ||
`,q=n.gql` | ||
query LastDaysVolume($days: Int!) { | ||
@@ -22,3 +22,3 @@ dailyTotals(orderBy: timestamp, orderDirection: desc, first: $days) { | ||
} | ||
`,q=n.gql` | ||
`,Q=n.gql` | ||
query LastHoursVolume($hours: Int!) { | ||
@@ -30,3 +30,3 @@ hourlyTotals(orderBy: timestamp, orderDirection: desc, first: $hours) { | ||
} | ||
`,Q="https://api.thegraph.com/subgraphs/name/cowprotocol",X={[exports.SupportedChainId.MAINNET]:Q+"/cow",[exports.SupportedChainId.GNOSIS_CHAIN]:Q+"/cow-gc",[exports.SupportedChainId.ARBITRUM_ONE]:null,[exports.SupportedChainId.SEPOLIA]:null},Z={[exports.SupportedChainId.MAINNET]:Q+"/cow-staging",[exports.SupportedChainId.GNOSIS_CHAIN]:Q+"/cow-gc-staging",[exports.SupportedChainId.ARBITRUM_ONE]:null,[exports.SupportedChainId.SEPOLIA]:null},z=()=>Promise.resolve().then(function(){return require("./utils-17f67bdd.js")});class J{static signOrder(e,t,r){try{return Promise.resolve(z()).then(function({signOrder:n}){return n(e,t,r)})}catch(e){return Promise.reject(e)}}static signOrderCancellation(e,t,r){try{return Promise.resolve(z()).then(function({signOrderCancellation:n}){return n(e,t,r)})}catch(e){return Promise.reject(e)}}static signOrderCancellations(e,t,r){try{return Promise.resolve(z()).then(function({signOrderCancellations:n}){return n(e,t,r)})}catch(e){return Promise.reject(e)}}static getDomain(e){try{return Promise.resolve(z()).then(function({getDomain:t}){return t(e)})}catch(e){return Promise.reject(e)}}static getDomainSeparator(e){try{return Promise.resolve(z()).then(function({getDomain:t}){return Promise.resolve(Promise.resolve().then(function(){/*#__PURE__*/return i(require("ethers/lib/utils"))})).then(function({_TypedDataEncoder:r}){return r.hashDomain(t(e))})})}catch(e){return Promise.reject(e)}}static getEIP712Types(){return{Order:[{name:"sellToken",type:"address"},{name:"buyToken",type:"address"},{name:"receiver",type:"address"},{name:"sellAmount",type:"uint256"},{name:"buyAmount",type:"uint256"},{name:"validTo",type:"uint32"},{name:"appData",type:"bytes32"},{name:"feeAmount",type:"uint256"},{name:"kind",type:"string"},{name:"partiallyFillable",type:"bool"},{name:"sellTokenBalance",type:"string"},{name:"buyTokenBalance",type:"string"}]}}}var ee,te;exports.ProofLocation=void 0,(ee=exports.ProofLocation||(exports.ProofLocation={}))[ee.PRIVATE=0]="PRIVATE",ee[ee.EMITTED=1]="EMITTED",ee[ee.SWARM=2]="SWARM",ee[ee.WAKU=3]="WAKU",ee[ee.RESERVED=4]="RESERVED",ee[ee.IPFS=5]="IPFS",exports.PollResultCode=void 0,(te=exports.PollResultCode||(exports.PollResultCode={})).SUCCESS="SUCCESS",te.UNEXPECTED_ERROR="UNEXPECTED_ERROR",te.TRY_NEXT_BLOCK="TRY_NEXT_BLOCK",te.TRY_ON_BLOCK="TRY_ON_BLOCK",te.TRY_AT_EPOCH="TRY_AT_EPOCH",te.DONT_TRY_AGAIN="DONT_TRY_AGAIN";const re=[{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 ne{static createInterface(){return new o.utils.Interface(re)}static connect(e,t){return new o.Contract(e,re,t)}}ne.abi=re;const oe=[{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 ae{static createInterface(){return new o.utils.Interface(oe)}static connect(e,t){return new o.Contract(e,oe,t)}}ae.abi=oe;const se=function(e){try{return Promise.resolve(e.getBlock("latest")).then(function(e){return{blockNumber:e.number,blockTimestamp:e.timestamp}})}catch(e){return Promise.reject(e)}},ie=["erc20","0x5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9"],pe=["external","0xabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea0632"],ue=["internal","0x4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce"],de=["sell","0xf3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775"],le=["buy","0x6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc"],ce=["tuple(address handler, bytes32 salt, bytes staticInput)"];function ye(e){return o.utils.defaultAbiCoder.encode(ce,[e])}function me(e){const{handler:t,salt:r,staticInput:n}=o.utils.defaultAbiCoder.decode(ce,e)[0];return{handler:t,salt:r,staticInput:n}}function Te(e,t){try{o.utils.defaultAbiCoder.encode(e,t)}catch(e){return!1}return!0}function he(e){return new Date(1e3*e).toISOString()}function fe(e){if(ie.includes(e))return a.OrderBalance.ERC20;if(pe.includes(e))return a.OrderBalance.EXTERNAL;if(ue.includes(e))return a.OrderBalance.INTERNAL;throw new Error(`Unknown balance type: ${e}`)}function be(e){if(de.includes(e))return a.OrderKind.SELL;if(le.includes(e))return a.OrderKind.BUY;throw new Error(`Unknown kind: ${e}`)}function Ie(e){const{sellToken:t,sellAmount:r,buyToken:n,buyAmount:o,buyTokenBalance:a,sellTokenBalance:s,feeAmount:i,kind:p,receiver:u,validTo:d,partiallyFillable:l,appData:c}=e;return{sellToken:t,sellAmount:r,buyToken:n,buyAmount:o,feeAmount:i,receiver:u,partiallyFillable:l,appData:c,validTo:Number(d),kind:be(p.toString()),sellTokenBalance:fe(s.toString()),buyTokenBalance:fe(a.toString())}}let Oe,Ee;function Ae(){return Oe||(Oe=ne.createInterface()),Oe}function Se(e,t){return Ee||(Ee=ne.connect(O[e],t)),Ee}class Pe{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:r=o.utils.keccak256(o.utils.randomBytes(32)),data:n,hasOffChainInput:a=!1}=e;if(!o.ethers.utils.isAddress(t))throw new Error(`Invalid handler: ${t}`);if(!o.ethers.utils.isHexString(r)||32!==o.ethers.utils.hexDataLength(r))throw new Error(`Invalid salt: ${r}`);this.handler=t,this.salt=r,this.data=n,this.staticInput=this.transformDataToStruct(n),this.hasOffChainInput=a}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=Ae(),r={handler:this.handler,salt:this.salt,staticInput:this.encodeStaticInput()};if(e){const n=e.factoryArgs?o.utils.defaultAbiCoder.encode(e.factoryArgs.argsType,e.factoryArgs.args):"0x";return t.encodeFunctionData("createWithContext",[r,e.address,n,!0])}return t.encodeFunctionData("create",[r,!0])}get removeCalldata(){return this.assertIsValid(),Ae().encodeFunctionData("remove",[this.id])}get id(){return o.utils.keccak256(this.serialize())}get ctx(){return this.isSingleOrder?this.id:o.constants.HashZero}get leaf(){return{handler:this.handler,salt:this.salt,staticInput:this.encodeStaticInput()}}static leafToId(e){return o.utils.keccak256(ye(e))}get offChainInput(){return"0x"}encodeStaticInputHelper(e,t){return o.utils.defaultAbiCoder.encode(e,[t])}poll(e){try{const t=this,{chainId:r,owner:n,provider:o,orderBookApi:a}=e,s=Se(r,o);return Promise.resolve(function(o,p){try{var u=function(){const o=t.isValid();return o.isValid?Promise.resolve(t.pollValidate(e)).then(function(o){return o||Promise.resolve(t.isAuthorized(e)).then(function(o){return o?Promise.resolve(s.getTradeableOrderWithSignature(n,t.leaf,t.offChainInput,[])).then(function([o,s]){return Promise.resolve(function(e,t,r){try{return Promise.resolve(Promise.resolve().then(function(){/*#__PURE__*/return i(require("@cowprotocol/contracts"))})).then(function({computeOrderUid:n}){return Promise.resolve(J.getDomain(e)).then(function(e){return n(e,r,t)})})}catch(e){return Promise.reject(e)}}(r,n,Ie(o))).then(function(r){return Promise.resolve(a.getOrder(r).then(()=>!0).catch(()=>!1)).then(function(n){let a;function i(e){return a?e:{result:exports.PollResultCode.SUCCESS,order:o,signature:s}}const p=function(){if(n)return Promise.resolve(t.handlePollFailedAlreadyPresent(r,o,e)).then(function(e){if(e)return a=1,e;const t={result:exports.PollResultCode.TRY_NEXT_BLOCK,reason:"Order already in orderbook"};return a=1,t})}();return p&&p.then?p.then(i):i(p)})})}):{result:exports.PollResultCode.DONT_TRY_AGAIN,reason:`NotAuthorized: Order ${t.id} is not authorized for ${n} on chain ${r}`}})}):{result:exports.PollResultCode.DONT_TRY_AGAIN,reason:`InvalidConditionalOrder. Reason: ${o.reason}`}}()}catch(e){return p(e)}return u&&u.then?u.then(void 0,p):u}(0,function(e){return{result:exports.PollResultCode.UNEXPECTED_ERROR,error:e}}))}catch(e){return Promise.reject(e)}}isAuthorized(e){const{chainId:t,owner:r,provider:n}=e;return Se(t,n).callStatic.singleOrders(r,this.id)}cabinet(e){const{chainId:t,owner:r,provider:n}=e;return Se(t,n).callStatic.cabinet(r,this.ctx)}static deserializeHelper(e,t,r,n){try{const{handler:a,salt:s,staticInput:i}=me(e);if(a!=t)throw new Error("HandlerMismatch");const[p]=o.utils.defaultAbiCoder.decode(r,i);return n(p,s)}catch(e){throw"HandlerMismatch"===e.message?e:new Error("InvalidSerializedConditionalOrder")}}}const xe=["address","bytes32","bytes"],ve=["tuple(bytes32[] proof, tuple(address handler, bytes32 salt, bytes staticInput) params)[]"];class ge{constructor(e,t,r,n=exports.ProofLocation.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=n,t&&0===Object.keys(t).length)throw new Error("orders must have non-zero length");if(t&&!r||!t&&r)throw new Error("orders cannot have undefined root");for(const e in t)if(t.hasOwnProperty(e)){const r=t[e];if(!ge.orderTypeRegistry.hasOwnProperty(r.orderType))throw new Error(`Unknown order type: ${r.orderType}`)}if(t&&(this.orders=t,this.getOrGenerateTree().root!==r))throw new Error("root mismatch")}static fromJSON(e){const{chain:t,orders:r,root:n,location:a}=JSON.parse(e,(e,t)=>{if("orders"===e&&"object"==typeof t&&null!==t){const e={};for(const r in t)if(t.hasOwnProperty(r)){const{orderType:n,...o}=t[r];if(!ge.orderTypeRegistry.hasOwnProperty(n))throw new Error(`Unknown order type: ${n}`);e[r]=new(0,ge.orderTypeRegistry[n])(o)}return e}return"object"==typeof t&&null!==t&&t.hasOwnProperty("type")&&t.hasOwnProperty("hex")&&"BigNumber"===t.type?o.BigNumber.from(t):t}),s=new ge(t,r,n);return s.location=a,s}toJSON(){const e=this.getOrGenerateTree().root;return JSON.stringify({...this,root:e},(e,t)=>{if("tree"!==e){if("object"==typeof t&&null!==t&&"orderType"in t){const e=t;return{...e,orderType:e.orderType}}return t}})}add(e){e.assertIsValid(),this.orders[e.id]=e,this.reset()}remove(e){delete this.orders[e],this.reset()}update(e,t){const r=t(this.orders[e],this.ctx);delete this.orders[e],this.orders[r.id]=r,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=s.StandardMerkleTree.of(Object.values(this.orders).map(e=>[...Object.values(e.leaf)]),xe)),this.tree}static decodeFromJSON(e){return JSON.parse(e)}prepareProofStruct(e,t,r){try{const n=this;void 0===e&&(e=n.location);const a=function(){try{switch(e){case exports.ProofLocation.PRIVATE:return Promise.resolve("0x");case exports.ProofLocation.EMITTED:return Promise.resolve(n.encodeToABI(t));case exports.ProofLocation.SWARM:case exports.ProofLocation.WAKU:case exports.ProofLocation.IPFS:if(!r)throw new Error("Must provide an uploader function");return Promise.resolve(function(e,o){try{var a=Promise.resolve(r(n.encodeToJSON(t)))}catch(e){return o(e)}return a&&a.then?a.then(void 0,o):a}(0,function(t){throw new Error(`Error uploading to decentralized storage ${e}: ${t}`)}));default:throw new Error("Unsupported location")}}catch(e){return Promise.reject(e)}};return Promise.resolve(a().then(t=>{try{return o.utils.hexlify(o.utils.arrayify(t)),n.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}`)}))}catch(e){return Promise.reject(e)}}static poll(e,t,r,n,o){try{function a(r){return Promise.resolve(s.getTradeableOrderWithSignature(e,t.params,r,t.proof))}const s=Se(r,n);return Promise.resolve(o?Promise.resolve(o(e,t.params)).then(a):a("0x"))}catch(i){return Promise.reject(i)}}dumpProofs(e){return this.encodeToJSON(e)}dumpProofsAndParams(e){return this.getProofs(e)}getProofs(e){return[...this.getOrGenerateTree().entries()].map(([t,r])=>e&&e(r)||void 0===e?{idx:t,value:r}:void 0).reduce((e,t)=>{if(t){const r={handler:t.value[0],salt:t.value[1],staticInput:t.value[2]};e.push({proof:this.getOrGenerateTree().getProof(t.idx),params:r})}return e},[])}encodeToABI(e){return o.utils.defaultAbiCoder.encode(ve,[this.getProofs(e)])}encodeToJSON(e){return JSON.stringify(this.getProofs(e))}reset(){this.tree=void 0}static registerOrderType(e,t){ge.orderTypeRegistry[e]=t}static resetOrderTypeRegistry(){ge.orderTypeRegistry={}}}ge.orderTypeRegistry={};const _e="0x6cF1e9cA41f7611dEf408122793c358a3d11E5a5",Ne="0x52eD56Da04309Aca4c3FECC595298d80C2f16BAc",Ce=o.BigNumber.from(2).pow(32).sub(1),Re=o.BigNumber.from(31536e3),De=["tuple(address sellToken, address buyToken, address receiver, uint256 partSellAmount, uint256 minPartLimit, uint256 t0, uint256 n, uint256 t, uint256 span, bytes32 appData)"];var we,Le;exports.DurationType=void 0,(we=exports.DurationType||(exports.DurationType={})).AUTO="AUTO",we.LIMIT_DURATION="LIMIT_DURATION",exports.StartTimeValue=void 0,(Le=exports.StartTimeValue||(exports.StartTimeValue={})).AT_MINING_TIME="AT_MINING_TIME",Le.AT_EPOCH="AT_EPOCH";const Ue={startType:exports.StartTimeValue.AT_MINING_TIME},Me={durationType:exports.DurationType.AUTO};class ke extends Pe{constructor(e){const{handler:t,salt:r,data:n,hasOffChainInput:o}=e;if(t!==_e)throw new Error(`InvalidHandler: Expected: ${_e}, provided: ${t}`);super({handler:_e,salt:r,data:n,hasOffChainInput:o}),this.isSingleOrder=!0}static fromData(e,t){return new ke({handler:_e,data:e,salt:t})}static fromParams(e){return ke.deserialize(ye(e))}get context(){return this.staticInput.t0.gt(0)?super.context:{address:Ne,factoryArgs:void 0}}get orderType(){return"twap"}isValid(){const e=(()=>{const{sellToken:e,sellAmount:t,buyToken:r,buyAmount:n,startTime:a=Ue,numberOfParts:s,timeBetweenParts:i,durationOfPart:p=Me}=this.data;if(e==r)return"InvalidSameToken";if(e==o.constants.AddressZero||r==o.constants.AddressZero)return"InvalidToken";if(!t.gt(o.constants.Zero))return"InvalidSellAmount";if(!n.gt(o.constants.Zero))return"InvalidMinBuyAmount";if(a.startType===exports.StartTimeValue.AT_EPOCH){const e=a.epoch;if(!e.gte(o.constants.Zero)||!e.lt(Ce))return"InvalidStartTime"}return s.gt(o.constants.One)&&s.lte(Ce)?i.gt(o.constants.Zero)&&i.lte(Re)?p.durationType!==exports.DurationType.LIMIT_DURATION||p.duration.lte(i)?Te(De,[this.staticInput])?void 0:"InvalidData":"InvalidSpan":"InvalidFrequency":"InvalidNumParts"})();return e?{isValid:!1,reason:e}:{isValid:!0}}startTimestamp(e){try{const t=this,{startTime:r}=t.data;return r?.startType===exports.StartTimeValue.AT_EPOCH?Promise.resolve(r.epoch.toNumber()):Promise.resolve(t.cabinet(e)).then(function(e){const t=o.utils.defaultAbiCoder.decode(["uint256"],e)[0];if(t.gt(Ce))throw new Error(`Cabinet epoch out of range: ${t.toString()}`);const r=t.toNumber();if(0===r)throw new Error("Cabinet is not set. Required for TWAP orders that start at mining time.");return r})}catch(e){return Promise.reject(e)}}endTimestamp(e){const{numberOfParts:t,timeBetweenParts:r,durationOfPart:n}=this.data;return n&&n.durationType===exports.DurationType.LIMIT_DURATION?e+t.sub(1).mul(r).add(n.duration).toNumber():e+t.mul(r).toNumber()}pollValidate(e){try{const t=this;return Promise.resolve(se(e.provider)).then(function(r){const{blockInfo:n=r}=e,{blockTimestamp:o}=n;return function(r,n){try{var a=Promise.resolve(t.startTimestamp(e)).then(function(e){if(e>o)return{result:exports.PollResultCode.TRY_AT_EPOCH,epoch:e,reason:`TWAP hasn't started yet. Starts at ${e} (${he(e)})`};const r=t.endTimestamp(e);return o>=r?{result:exports.PollResultCode.DONT_TRY_AGAIN,reason:`TWAP has expired. Expired at ${r} (${he(r)})`}:void 0})}catch(e){return n(e)}return a&&a.then?a.then(void 0,n):a}(0,function(e){return e?.message?.includes("Cabinet is not set")?{result:exports.PollResultCode.DONT_TRY_AGAIN,reason:`${e?.message}. User likely removed the order.`}:e?.message?.includes("Cabinet epoch out of range")?{result:exports.PollResultCode.DONT_TRY_AGAIN,reason:`${e?.message}`}:{result:exports.PollResultCode.UNEXPECTED_ERROR,reason:`Unexpected error: ${e.message}`,error:e}})})}catch(e){return Promise.reject(e)}}handlePollFailedAlreadyPresent(e,t,r){try{const e=this;return Promise.resolve(se(r.provider)).then(function(t){const{blockInfo:n=t}=r,{blockTimestamp:o}=n,a=e.data.timeBetweenParts.toNumber(),{numberOfParts:s}=e.data;return Promise.resolve(e.startTimestamp(r)).then(function(e){if(o<e)return{result:exports.PollResultCode.UNEXPECTED_ERROR,reason:`TWAP part hash't started. First TWAP part start at ${e} (${he(e)})`,error:void 0};const t=s.mul(a).add(e).toNumber();if(o>=t)return{result:exports.PollResultCode.UNEXPECTED_ERROR,reason:`TWAP is expired. Expired at ${t} (${he(t)})`,error:void 0};const r=Math.floor((o-e)/a);if(r===s.toNumber()-1)return{result:exports.PollResultCode.DONT_TRY_AGAIN,reason:`Current active TWAP part (${r+1}/${s}) is already in the Order Book. This was the last TWAP part, no more orders need to be placed`};const n=e+(r+1)*a;return{result:exports.PollResultCode.TRY_AT_EPOCH,epoch:n,reason:`Current active TWAP part (${r+1}/${s}) is already in the Order Book. TWAP part ${r+2} doesn't start until ${n} (${he(n)})`}})})}catch(e){return Promise.reject(e)}}serialize(){return ye(this.leaf)}encodeStaticInput(){return super.encodeStaticInputHelper(De,this.staticInput)}static deserialize(e){return super.deserializeHelper(e,_e,De,(e,t)=>new ke({handler:_e,salt:t,data:Fe(e)}))}toString(){const{sellAmount:e,sellToken:t,buyAmount:r,buyToken:n,numberOfParts:o,startTime:a=Ue,timeBetweenParts:s,durationOfPart:i=Me,receiver:p,appData:u}=this.data,d=a.startType===exports.StartTimeValue.AT_MINING_TIME?"AT_MINING_TIME":a.epoch.toNumber(),l=i.durationType===exports.DurationType.AUTO?"AUTO":i.duration.toNumber(),c={sellAmount:e.toString(),sellToken:t,buyAmount:r.toString(),buyToken:n,numberOfParts:o.toString(),startTime:d,timeBetweenParts:s.toNumber(),durationOfPart:l,receiver:p,appData:u};return`${this.orderType} (${this.id}): ${JSON.stringify(c)}`}transformDataToStruct(e){return Be(e)}transformStructToData(e){return Fe(e)}}function Be(e){const{sellAmount:t,buyAmount:r,numberOfParts:n,startTime:a=Ue,timeBetweenParts:s,durationOfPart:i=Me,...p}=e,{partSellAmount:u,minPartLimit:d}=n&&!n.isZero()?{partSellAmount:t.div(n),minPartLimit:r.div(n)}:{partSellAmount:o.constants.Zero,minPartLimit:o.constants.Zero},l=i.durationType===exports.DurationType.AUTO?o.constants.Zero:i.duration;return{partSellAmount:u,minPartLimit:d,t0:a.startType===exports.StartTimeValue.AT_MINING_TIME?o.constants.Zero:a.epoch,n:n,t:s,span:l,...p}}function Fe(e){const{n:t,partSellAmount:r,minPartLimit:n,t:o,t0:a,span:s,...i}=e,p=s.isZero()?{durationType:exports.DurationType.AUTO}:{durationType:exports.DurationType.LIMIT_DURATION,duration:s},u=s.isZero()?{startType:exports.StartTimeValue.AT_MINING_TIME}:{startType:exports.StartTimeValue.AT_EPOCH,epoch:a};return{sellAmount:r.mul(t),buyAmount:n.mul(t),startTime:u,numberOfParts:t,timeBetweenParts:o,durationOfPart:p,...i}}const Ve={[_e]:e=>ke.fromParams(e)};exports.ALL_SUPPORTED_CHAIN_IDS=m,exports.BUY_ETH_ADDRESS=l,exports.COMPOSABLE_COW=y,exports.COMPOSABLE_COW_CONTRACT_ADDRESS=O,exports.CONDITIONAL_ORDER_PARAMS_ABI=ce,exports.COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS=f,exports.COW_PROTOCOL_VAULT_RELAYER_ADDRESS=b,exports.CURRENT_BLOCK_TIMESTAMP_FACTORY_ADDRESS=Ne,exports.ConditionalOrder=Pe,exports.ConditionalOrderFactory=class{constructor(e){this.knownOrderTypes=void 0,this.knownOrderTypes=e}fromParams(e){const{handler:t}=e,r=this.knownOrderTypes[t];if(r)return r(e)}},exports.CowError=d,exports.DEFAULT_BACKOFF_OPTIONS=P,exports.DEFAULT_CONDITIONAL_ORDER_REGISTRY=Ve,exports.DEFAULT_COW_API_CONTEXT=u,exports.DEFAULT_IPFS_READ_URI="https://gnosis.mypinata.cloud/ipfs",exports.DEFAULT_IPFS_WRITE_URI="https://api.pinata.cloud",exports.DEFAULT_LIMITER_OPTIONS=x,exports.DEFAULT_TOKEN_FORMATTER=(e,t)=>`${t}@${e}`,exports.ENVS_LIST=p,exports.EXTENSIBLE_FALLBACK_HANDLER=c,exports.EXTENSIBLE_FALLBACK_HANDLER_CONTRACT_ADDRESS=I,exports.MAX_FREQUENCY=Re,exports.MAX_UINT32=Ce,exports.Multiplexer=ge,exports.ORDER_BOOK_PROD_CONFIG=_,exports.ORDER_BOOK_STAGING_CONFIG=N,exports.OrderBookApi=class{constructor(e={}){this.context=void 0,this.rateLimiter=void 0,this.context={...u,...e},this.rateLimiter=new t.RateLimiter(e.limiterOpts||x)}getVersion(e={}){return this.fetch({path:"/api/v1/version",method:"GET"},e)}getTrades(e,t={}){if(e.owner&&e.orderUid)return Promise.reject(new d("Cannot specify both owner and orderId"));if(!e.owner&&!e.orderUid)return Promise.reject(new d("Must specify either owner or orderId"));const r=new URLSearchParams(C(e));return this.fetch({path:"/api/v1/trades",method:"GET",query:r},t)}getOrders({owner:e,offset:t=0,limit:r=1e3},n={}){const o=new URLSearchParams(C({offset:t.toString(),limit:r.toString()}));return this.fetch({path:`/api/v1/account/${e}/orders`,method:"GET",query:o},n).then(e=>e.map(g))}getTxOrders(e,t={}){return this.fetch({path:`/api/v1/transactions/${e}/orders`,method:"GET"},t).then(e=>e.map(g))}getOrder(e,t={}){return this.fetch({path:`/api/v1/orders/${e}`,method:"GET"},t).then(e=>g(e))}getOrderMultiEnv(e,t={}){const{env:r}=this.getContextWithOverride(t),n=p.filter(e=>e!==r);let o=0;const a=r=>{const s=n[o];return r instanceof A&&404===r.response.status&&s?(o++,this.getOrder(e,{...t,env:s}).catch(a)):Promise.reject(r)};return this.getOrder(e,{...t,env:r}).catch(a)}getQuote(e,t={}){return this.fetch({path:"/api/v1/quote",method:"POST",body:e},t)}sendSignedOrderCancellations(e,t={}){return this.fetch({path:"/api/v1/orders",method:"DELETE",body:e},t)}sendOrder(e,t={}){return this.fetch({path:"/api/v1/orders",method:"POST",body:e},t)}getNativePrice(e,t={}){return this.fetch({path:`/api/v1/token/${e}/native_price`,method:"GET"},t)}getTotalSurplus(e,t={}){return this.fetch({path:`/api/v1/users/${e}/total_surplus`,method:"GET"},t)}getAppData(e,t={}){return this.fetch({path:`/api/v1/app_data/${e}`,method:"GET"},t)}uploadAppData(e,t,r={}){return this.fetch({path:`/api/v1/app_data/${e}`,method:"PUT",body:{fullAppData:t}},r)}getSolverCompetition(e,t={}){return this.fetch({path:`/api/v1/solver_competition${"string"==typeof e?"/by_tx_hash":""}/${e}`,method:"GET"},t)}getOrderLink(e,t){const{chainId:r,env:n}=this.getContextWithOverride(t);return this.getApiBaseUrls(n)[r]+`/api/v1/orders/${e}`}getContextWithOverride(e={}){return{...this.context,...e}}getApiBaseUrls(e){return this.context.baseUrls?this.context.baseUrls:"prod"===e?_:N}fetch(e,r={}){const{chainId:n,env:o,backoffOpts:a}=this.getContextWithOverride(r),s=this.getApiBaseUrls(o)[n],i=a||P,p=r.limiterOpts?new t.RateLimiter(r.limiterOpts):this.rateLimiter;return E(s,e,p,i)}},exports.OrderBookApiError=A,exports.OrderSigningUtils=J,exports.SUBGRAPH_PROD_CONFIG=X,exports.SUBGRAPH_STAGING_CONFIG=Z,exports.SubgraphApi=class{constructor(e={}){this.API_NAME="CoW Protocol Subgraph",this.context=void 0,this.context={...u,...e}}getTotals(e={}){try{return Promise.resolve(this.runQuery(K,void 0,e)).then(function(e){return e.totals[0]})}catch(e){return Promise.reject(e)}}getLastDaysVolume(e,t={}){try{return Promise.resolve(this.runQuery(Y,{days:e},t))}catch(e){return Promise.reject(e)}}getLastHoursVolume(e,t={}){try{return Promise.resolve(this.runQuery(q,{hours:e},t))}catch(e){return Promise.reject(e)}}runQuery(e,t=undefined,r={}){try{const o=this,{chainId:a,env:s}=o.getContextWithOverride(r),i=o.getEnvConfigs(s)[a];if(null===i)throw new Error("Unsupported Network. The subgraph API is not available in the Network "+a);return Promise.resolve(function(r,o){try{var a=Promise.resolve(n.request(i,e,t))}catch(e){return o(e)}return a&&a.then?a.then(void 0,o):a}(0,function(r){throw console.error(`[subgraph:${o.API_NAME}]`,r),new d(`Error running query: ${e}. Variables: ${JSON.stringify(t)}. API: ${i}. Inner Error: ${r}`)}))}catch(e){return Promise.reject(e)}}getContextWithOverride(e={}){return{...this.context,...e}}getEnvConfigs(e){return this.context.baseUrls?this.context.baseUrls:"prod"===e?X:Z}},exports.TWAP_ADDRESS=_e,exports.Twap=ke,exports.createSetDomainVerifierTx=function(e,t){return ae.createInterface().encodeFunctionData("setDomainVerifier",[e,t])},exports.decodeParams=me,exports.encodeParams=ye,exports.formatEpoch=he,exports.fromStructToOrder=Ie,exports.getBlockInfo=se,exports.getDomainVerifier=function(e,t,r,n){try{const o=ae.connect(I[r],n);return Promise.resolve(o.callStatic.domainVerifiers(e,t))}catch(e){return Promise.reject(e)}},exports.getQuoteAmountsAndCosts=function(e){var t;const{orderParams:r,sellDecimals:n,buyDecimals:o,slippagePercentBps:a}=e,s=null!==(t=e.partnerFeeBps)&&void 0!==t?t:0,i=r.kind===exports.OrderKind.SELL,p=H(r.feeAmount,n),u=H(r.sellAmount,n),d=H(r.buyAmount,o),l=d.num/u.num,c=H(u.big+p.big,n),y=H(l*c.num,o),m=s>0?(i?y.big:u.big)/BigInt(s):BigInt(0),T=i?{sellAmount:c.big,buyAmount:d.big-m}:{sellAmount:c.big+m,buyAmount:d.big},h=e=>e*BigInt(a)/BigInt(1e4),f=i?{sellAmount:T.sellAmount,buyAmount:T.buyAmount-h(T.buyAmount)}:{sellAmount:T.sellAmount+h(T.sellAmount),buyAmount:T.buyAmount};return{isSell:i,costs:{networkFee:{amountInSellCurrency:p.big,amountInBuyCurrency:H(l*p.num,o).big},partnerFee:{amount:m,bps:s}},beforeNetworkCosts:{sellAmount:u.big,buyAmount:y.big},afterNetworkCosts:{sellAmount:c.big,buyAmount:d.big},afterPartnerFees:T,afterSlippage:f}},exports.isComposableCow=function(e,t){return e===O[t]},exports.isExtensibleFallbackHandler=function(e,t){return e===I[t]},exports.isValidAbi=Te,exports.logPrefix="cow-sdk:",exports.mapAddressToSupportedNetworks=h,exports.mapSupportedNetworks=T,exports.request=E,exports.transformDataToStruct=Be,exports.transformStructToData=Fe; | ||
`,X="https://api.thegraph.com/subgraphs/name/cowprotocol",Z={[exports.SupportedChainId.MAINNET]:X+"/cow",[exports.SupportedChainId.GNOSIS_CHAIN]:X+"/cow-gc",[exports.SupportedChainId.ARBITRUM_ONE]:null,[exports.SupportedChainId.SEPOLIA]:null},z={[exports.SupportedChainId.MAINNET]:X+"/cow-staging",[exports.SupportedChainId.GNOSIS_CHAIN]:X+"/cow-gc-staging",[exports.SupportedChainId.ARBITRUM_ONE]:null,[exports.SupportedChainId.SEPOLIA]:null},J=()=>Promise.resolve().then(function(){return require("./utils-bf12253d.js")});class ee{static signOrder(e,t,r){try{return Promise.resolve(J()).then(function({signOrder:n}){return n(e,t,r)})}catch(e){return Promise.reject(e)}}static signOrderCancellation(e,t,r){try{return Promise.resolve(J()).then(function({signOrderCancellation:n}){return n(e,t,r)})}catch(e){return Promise.reject(e)}}static signOrderCancellations(e,t,r){try{return Promise.resolve(J()).then(function({signOrderCancellations:n}){return n(e,t,r)})}catch(e){return Promise.reject(e)}}static getDomain(e){try{return Promise.resolve(J()).then(function({getDomain:t}){return t(e)})}catch(e){return Promise.reject(e)}}static getDomainSeparator(e){try{return Promise.resolve(J()).then(function({getDomain:t}){return Promise.resolve(Promise.resolve().then(function(){/*#__PURE__*/return i(require("ethers/lib/utils"))})).then(function({_TypedDataEncoder:r}){return r.hashDomain(t(e))})})}catch(e){return Promise.reject(e)}}static getEIP712Types(){return{Order:[{name:"sellToken",type:"address"},{name:"buyToken",type:"address"},{name:"receiver",type:"address"},{name:"sellAmount",type:"uint256"},{name:"buyAmount",type:"uint256"},{name:"validTo",type:"uint32"},{name:"appData",type:"bytes32"},{name:"feeAmount",type:"uint256"},{name:"kind",type:"string"},{name:"partiallyFillable",type:"bool"},{name:"sellTokenBalance",type:"string"},{name:"buyTokenBalance",type:"string"}]}}}var te,re;exports.ProofLocation=void 0,(te=exports.ProofLocation||(exports.ProofLocation={}))[te.PRIVATE=0]="PRIVATE",te[te.EMITTED=1]="EMITTED",te[te.SWARM=2]="SWARM",te[te.WAKU=3]="WAKU",te[te.RESERVED=4]="RESERVED",te[te.IPFS=5]="IPFS",exports.PollResultCode=void 0,(re=exports.PollResultCode||(exports.PollResultCode={})).SUCCESS="SUCCESS",re.UNEXPECTED_ERROR="UNEXPECTED_ERROR",re.TRY_NEXT_BLOCK="TRY_NEXT_BLOCK",re.TRY_ON_BLOCK="TRY_ON_BLOCK",re.TRY_AT_EPOCH="TRY_AT_EPOCH",re.DONT_TRY_AGAIN="DONT_TRY_AGAIN";const ne=[{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 oe{static createInterface(){return new o.utils.Interface(ne)}static connect(e,t){return new o.Contract(e,ne,t)}}oe.abi=ne;const ae=[{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 se{static createInterface(){return new o.utils.Interface(ae)}static connect(e,t){return new o.Contract(e,ae,t)}}se.abi=ae;const ie=function(e){try{return Promise.resolve(e.getBlock("latest")).then(function(e){return{blockNumber:e.number,blockTimestamp:e.timestamp}})}catch(e){return Promise.reject(e)}},pe=["erc20","0x5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9"],ue=["external","0xabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea0632"],de=["internal","0x4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce"],le=["sell","0xf3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775"],ce=["buy","0x6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc"],ye=["tuple(address handler, bytes32 salt, bytes staticInput)"];function me(e){return o.utils.defaultAbiCoder.encode(ye,[e])}function Te(e){const{handler:t,salt:r,staticInput:n}=o.utils.defaultAbiCoder.decode(ye,e)[0];return{handler:t,salt:r,staticInput:n}}function he(e,t){try{o.utils.defaultAbiCoder.encode(e,t)}catch(e){return!1}return!0}function fe(e){return new Date(1e3*e).toISOString()}function be(e){if(pe.includes(e))return a.OrderBalance.ERC20;if(ue.includes(e))return a.OrderBalance.EXTERNAL;if(de.includes(e))return a.OrderBalance.INTERNAL;throw new Error(`Unknown balance type: ${e}`)}function Ie(e){if(le.includes(e))return a.OrderKind.SELL;if(ce.includes(e))return a.OrderKind.BUY;throw new Error(`Unknown kind: ${e}`)}function Oe(e){const{sellToken:t,sellAmount:r,buyToken:n,buyAmount:o,buyTokenBalance:a,sellTokenBalance:s,feeAmount:i,kind:p,receiver:u,validTo:d,partiallyFillable:l,appData:c}=e;return{sellToken:t,sellAmount:r,buyToken:n,buyAmount:o,feeAmount:i,receiver:u,partiallyFillable:l,appData:c,validTo:Number(d),kind:Ie(p.toString()),sellTokenBalance:be(s.toString()),buyTokenBalance:be(a.toString())}}let Ee,Ae;function Se(){return Ee||(Ee=oe.createInterface()),Ee}function Pe(e,t){return Ae||(Ae=oe.connect(O[e],t)),Ae}class xe{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:r=o.utils.keccak256(o.utils.randomBytes(32)),data:n,hasOffChainInput:a=!1}=e;if(!o.ethers.utils.isAddress(t))throw new Error(`Invalid handler: ${t}`);if(!o.ethers.utils.isHexString(r)||32!==o.ethers.utils.hexDataLength(r))throw new Error(`Invalid salt: ${r}`);this.handler=t,this.salt=r,this.data=n,this.staticInput=this.transformDataToStruct(n),this.hasOffChainInput=a}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=Se(),r={handler:this.handler,salt:this.salt,staticInput:this.encodeStaticInput()};if(e){const n=e.factoryArgs?o.utils.defaultAbiCoder.encode(e.factoryArgs.argsType,e.factoryArgs.args):"0x";return t.encodeFunctionData("createWithContext",[r,e.address,n,!0])}return t.encodeFunctionData("create",[r,!0])}get removeCalldata(){return this.assertIsValid(),Se().encodeFunctionData("remove",[this.id])}get id(){return o.utils.keccak256(this.serialize())}get ctx(){return this.isSingleOrder?this.id:o.constants.HashZero}get leaf(){return{handler:this.handler,salt:this.salt,staticInput:this.encodeStaticInput()}}static leafToId(e){return o.utils.keccak256(me(e))}get offChainInput(){return"0x"}encodeStaticInputHelper(e,t){return o.utils.defaultAbiCoder.encode(e,[t])}poll(e){try{const t=this,{chainId:r,owner:n,provider:o,orderBookApi:a}=e,s=Pe(r,o);return Promise.resolve(function(o,p){try{var u=function(){const o=t.isValid();return o.isValid?Promise.resolve(t.pollValidate(e)).then(function(o){return o||Promise.resolve(t.isAuthorized(e)).then(function(o){return o?Promise.resolve(s.getTradeableOrderWithSignature(n,t.leaf,t.offChainInput,[])).then(function([o,s]){return Promise.resolve(function(e,t,r){try{return Promise.resolve(Promise.resolve().then(function(){/*#__PURE__*/return i(require("@cowprotocol/contracts"))})).then(function({computeOrderUid:n}){return Promise.resolve(ee.getDomain(e)).then(function(e){return n(e,r,t)})})}catch(e){return Promise.reject(e)}}(r,n,Oe(o))).then(function(r){return Promise.resolve(a.getOrder(r).then(()=>!0).catch(()=>!1)).then(function(n){let a;function i(e){return a?e:{result:exports.PollResultCode.SUCCESS,order:o,signature:s}}const p=function(){if(n)return Promise.resolve(t.handlePollFailedAlreadyPresent(r,o,e)).then(function(e){if(e)return a=1,e;const t={result:exports.PollResultCode.TRY_NEXT_BLOCK,reason:"Order already in orderbook"};return a=1,t})}();return p&&p.then?p.then(i):i(p)})})}):{result:exports.PollResultCode.DONT_TRY_AGAIN,reason:`NotAuthorized: Order ${t.id} is not authorized for ${n} on chain ${r}`}})}):{result:exports.PollResultCode.DONT_TRY_AGAIN,reason:`InvalidConditionalOrder. Reason: ${o.reason}`}}()}catch(e){return p(e)}return u&&u.then?u.then(void 0,p):u}(0,function(e){return{result:exports.PollResultCode.UNEXPECTED_ERROR,error:e}}))}catch(e){return Promise.reject(e)}}isAuthorized(e){const{chainId:t,owner:r,provider:n}=e;return Pe(t,n).callStatic.singleOrders(r,this.id)}cabinet(e){const{chainId:t,owner:r,provider:n}=e;return Pe(t,n).callStatic.cabinet(r,this.ctx)}static deserializeHelper(e,t,r,n){try{const{handler:a,salt:s,staticInput:i}=Te(e);if(a!=t)throw new Error("HandlerMismatch");const[p]=o.utils.defaultAbiCoder.decode(r,i);return n(p,s)}catch(e){throw"HandlerMismatch"===e.message?e:new Error("InvalidSerializedConditionalOrder")}}}const ve=["address","bytes32","bytes"],ge=["tuple(bytes32[] proof, tuple(address handler, bytes32 salt, bytes staticInput) params)[]"];class _e{constructor(e,t,r,n=exports.ProofLocation.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=n,t&&0===Object.keys(t).length)throw new Error("orders must have non-zero length");if(t&&!r||!t&&r)throw new Error("orders cannot have undefined root");for(const e in t)if(t.hasOwnProperty(e)){const r=t[e];if(!_e.orderTypeRegistry.hasOwnProperty(r.orderType))throw new Error(`Unknown order type: ${r.orderType}`)}if(t&&(this.orders=t,this.getOrGenerateTree().root!==r))throw new Error("root mismatch")}static fromJSON(e){const{chain:t,orders:r,root:n,location:a}=JSON.parse(e,(e,t)=>{if("orders"===e&&"object"==typeof t&&null!==t){const e={};for(const r in t)if(t.hasOwnProperty(r)){const{orderType:n,...o}=t[r];if(!_e.orderTypeRegistry.hasOwnProperty(n))throw new Error(`Unknown order type: ${n}`);e[r]=new(0,_e.orderTypeRegistry[n])(o)}return e}return"object"==typeof t&&null!==t&&t.hasOwnProperty("type")&&t.hasOwnProperty("hex")&&"BigNumber"===t.type?o.BigNumber.from(t):t}),s=new _e(t,r,n);return s.location=a,s}toJSON(){const e=this.getOrGenerateTree().root;return JSON.stringify({...this,root:e},(e,t)=>{if("tree"!==e){if("object"==typeof t&&null!==t&&"orderType"in t){const e=t;return{...e,orderType:e.orderType}}return t}})}add(e){e.assertIsValid(),this.orders[e.id]=e,this.reset()}remove(e){delete this.orders[e],this.reset()}update(e,t){const r=t(this.orders[e],this.ctx);delete this.orders[e],this.orders[r.id]=r,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=s.StandardMerkleTree.of(Object.values(this.orders).map(e=>[...Object.values(e.leaf)]),ve)),this.tree}static decodeFromJSON(e){return JSON.parse(e)}prepareProofStruct(e,t,r){try{const n=this;void 0===e&&(e=n.location);const a=function(){try{switch(e){case exports.ProofLocation.PRIVATE:return Promise.resolve("0x");case exports.ProofLocation.EMITTED:return Promise.resolve(n.encodeToABI(t));case exports.ProofLocation.SWARM:case exports.ProofLocation.WAKU:case exports.ProofLocation.IPFS:if(!r)throw new Error("Must provide an uploader function");return Promise.resolve(function(e,o){try{var a=Promise.resolve(r(n.encodeToJSON(t)))}catch(e){return o(e)}return a&&a.then?a.then(void 0,o):a}(0,function(t){throw new Error(`Error uploading to decentralized storage ${e}: ${t}`)}));default:throw new Error("Unsupported location")}}catch(e){return Promise.reject(e)}};return Promise.resolve(a().then(t=>{try{return o.utils.hexlify(o.utils.arrayify(t)),n.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}`)}))}catch(e){return Promise.reject(e)}}static poll(e,t,r,n,o){try{function a(r){return Promise.resolve(s.getTradeableOrderWithSignature(e,t.params,r,t.proof))}const s=Pe(r,n);return Promise.resolve(o?Promise.resolve(o(e,t.params)).then(a):a("0x"))}catch(i){return Promise.reject(i)}}dumpProofs(e){return this.encodeToJSON(e)}dumpProofsAndParams(e){return this.getProofs(e)}getProofs(e){return[...this.getOrGenerateTree().entries()].map(([t,r])=>e&&e(r)||void 0===e?{idx:t,value:r}:void 0).reduce((e,t)=>{if(t){const r={handler:t.value[0],salt:t.value[1],staticInput:t.value[2]};e.push({proof:this.getOrGenerateTree().getProof(t.idx),params:r})}return e},[])}encodeToABI(e){return o.utils.defaultAbiCoder.encode(ge,[this.getProofs(e)])}encodeToJSON(e){return JSON.stringify(this.getProofs(e))}reset(){this.tree=void 0}static registerOrderType(e,t){_e.orderTypeRegistry[e]=t}static resetOrderTypeRegistry(){_e.orderTypeRegistry={}}}_e.orderTypeRegistry={};const Ne="0x6cF1e9cA41f7611dEf408122793c358a3d11E5a5",Ce="0x52eD56Da04309Aca4c3FECC595298d80C2f16BAc",Re=o.BigNumber.from(2).pow(32).sub(1),De=o.BigNumber.from(31536e3),we=["tuple(address sellToken, address buyToken, address receiver, uint256 partSellAmount, uint256 minPartLimit, uint256 t0, uint256 n, uint256 t, uint256 span, bytes32 appData)"];var Le,Ue;exports.DurationType=void 0,(Le=exports.DurationType||(exports.DurationType={})).AUTO="AUTO",Le.LIMIT_DURATION="LIMIT_DURATION",exports.StartTimeValue=void 0,(Ue=exports.StartTimeValue||(exports.StartTimeValue={})).AT_MINING_TIME="AT_MINING_TIME",Ue.AT_EPOCH="AT_EPOCH";const Me={startType:exports.StartTimeValue.AT_MINING_TIME},ke={durationType:exports.DurationType.AUTO};class Be extends xe{constructor(e){const{handler:t,salt:r,data:n,hasOffChainInput:o}=e;if(t!==Ne)throw new Error(`InvalidHandler: Expected: ${Ne}, provided: ${t}`);super({handler:Ne,salt:r,data:n,hasOffChainInput:o}),this.isSingleOrder=!0}static fromData(e,t){return new Be({handler:Ne,data:e,salt:t})}static fromParams(e){return Be.deserialize(me(e))}get context(){return this.staticInput.t0.gt(0)?super.context:{address:Ce,factoryArgs:void 0}}get orderType(){return"twap"}isValid(){const e=(()=>{const{sellToken:e,sellAmount:t,buyToken:r,buyAmount:n,startTime:a=Me,numberOfParts:s,timeBetweenParts:i,durationOfPart:p=ke}=this.data;if(e==r)return"InvalidSameToken";if(e==o.constants.AddressZero||r==o.constants.AddressZero)return"InvalidToken";if(!t.gt(o.constants.Zero))return"InvalidSellAmount";if(!n.gt(o.constants.Zero))return"InvalidMinBuyAmount";if(a.startType===exports.StartTimeValue.AT_EPOCH){const e=a.epoch;if(!e.gte(o.constants.Zero)||!e.lt(Re))return"InvalidStartTime"}return s.gt(o.constants.One)&&s.lte(Re)?i.gt(o.constants.Zero)&&i.lte(De)?p.durationType!==exports.DurationType.LIMIT_DURATION||p.duration.lte(i)?he(we,[this.staticInput])?void 0:"InvalidData":"InvalidSpan":"InvalidFrequency":"InvalidNumParts"})();return e?{isValid:!1,reason:e}:{isValid:!0}}startTimestamp(e){try{const t=this,{startTime:r}=t.data;return r?.startType===exports.StartTimeValue.AT_EPOCH?Promise.resolve(r.epoch.toNumber()):Promise.resolve(t.cabinet(e)).then(function(e){const t=o.utils.defaultAbiCoder.decode(["uint256"],e)[0];if(t.gt(Re))throw new Error(`Cabinet epoch out of range: ${t.toString()}`);const r=t.toNumber();if(0===r)throw new Error("Cabinet is not set. Required for TWAP orders that start at mining time.");return r})}catch(e){return Promise.reject(e)}}endTimestamp(e){const{numberOfParts:t,timeBetweenParts:r,durationOfPart:n}=this.data;return n&&n.durationType===exports.DurationType.LIMIT_DURATION?e+t.sub(1).mul(r).add(n.duration).toNumber():e+t.mul(r).toNumber()}pollValidate(e){try{const t=this;return Promise.resolve(ie(e.provider)).then(function(r){const{blockInfo:n=r}=e,{blockTimestamp:o}=n;return function(r,n){try{var a=Promise.resolve(t.startTimestamp(e)).then(function(e){if(e>o)return{result:exports.PollResultCode.TRY_AT_EPOCH,epoch:e,reason:`TWAP hasn't started yet. Starts at ${e} (${fe(e)})`};const r=t.endTimestamp(e);return o>=r?{result:exports.PollResultCode.DONT_TRY_AGAIN,reason:`TWAP has expired. Expired at ${r} (${fe(r)})`}:void 0})}catch(e){return n(e)}return a&&a.then?a.then(void 0,n):a}(0,function(e){return e?.message?.includes("Cabinet is not set")?{result:exports.PollResultCode.DONT_TRY_AGAIN,reason:`${e?.message}. User likely removed the order.`}:e?.message?.includes("Cabinet epoch out of range")?{result:exports.PollResultCode.DONT_TRY_AGAIN,reason:`${e?.message}`}:{result:exports.PollResultCode.UNEXPECTED_ERROR,reason:`Unexpected error: ${e.message}`,error:e}})})}catch(e){return Promise.reject(e)}}handlePollFailedAlreadyPresent(e,t,r){try{const e=this;return Promise.resolve(ie(r.provider)).then(function(t){const{blockInfo:n=t}=r,{blockTimestamp:o}=n,a=e.data.timeBetweenParts.toNumber(),{numberOfParts:s}=e.data;return Promise.resolve(e.startTimestamp(r)).then(function(e){if(o<e)return{result:exports.PollResultCode.UNEXPECTED_ERROR,reason:`TWAP part hash't started. First TWAP part start at ${e} (${fe(e)})`,error:void 0};const t=s.mul(a).add(e).toNumber();if(o>=t)return{result:exports.PollResultCode.UNEXPECTED_ERROR,reason:`TWAP is expired. Expired at ${t} (${fe(t)})`,error:void 0};const r=Math.floor((o-e)/a);if(r===s.toNumber()-1)return{result:exports.PollResultCode.DONT_TRY_AGAIN,reason:`Current active TWAP part (${r+1}/${s}) is already in the Order Book. This was the last TWAP part, no more orders need to be placed`};const n=e+(r+1)*a;return{result:exports.PollResultCode.TRY_AT_EPOCH,epoch:n,reason:`Current active TWAP part (${r+1}/${s}) is already in the Order Book. TWAP part ${r+2} doesn't start until ${n} (${fe(n)})`}})})}catch(e){return Promise.reject(e)}}serialize(){return me(this.leaf)}encodeStaticInput(){return super.encodeStaticInputHelper(we,this.staticInput)}static deserialize(e){return super.deserializeHelper(e,Ne,we,(e,t)=>new Be({handler:Ne,salt:t,data:Ve(e)}))}toString(){const{sellAmount:e,sellToken:t,buyAmount:r,buyToken:n,numberOfParts:o,startTime:a=Me,timeBetweenParts:s,durationOfPart:i=ke,receiver:p,appData:u}=this.data,d=a.startType===exports.StartTimeValue.AT_MINING_TIME?"AT_MINING_TIME":a.epoch.toNumber(),l=i.durationType===exports.DurationType.AUTO?"AUTO":i.duration.toNumber(),c={sellAmount:e.toString(),sellToken:t,buyAmount:r.toString(),buyToken:n,numberOfParts:o.toString(),startTime:d,timeBetweenParts:s.toNumber(),durationOfPart:l,receiver:p,appData:u};return`${this.orderType} (${this.id}): ${JSON.stringify(c)}`}transformDataToStruct(e){return Fe(e)}transformStructToData(e){return Ve(e)}}function Fe(e){const{sellAmount:t,buyAmount:r,numberOfParts:n,startTime:a=Me,timeBetweenParts:s,durationOfPart:i=ke,...p}=e,{partSellAmount:u,minPartLimit:d}=n&&!n.isZero()?{partSellAmount:t.div(n),minPartLimit:r.div(n)}:{partSellAmount:o.constants.Zero,minPartLimit:o.constants.Zero},l=i.durationType===exports.DurationType.AUTO?o.constants.Zero:i.duration;return{partSellAmount:u,minPartLimit:d,t0:a.startType===exports.StartTimeValue.AT_MINING_TIME?o.constants.Zero:a.epoch,n:n,t:s,span:l,...p}}function Ve(e){const{n:t,partSellAmount:r,minPartLimit:n,t:o,t0:a,span:s,...i}=e,p=s.isZero()?{durationType:exports.DurationType.AUTO}:{durationType:exports.DurationType.LIMIT_DURATION,duration:s},u=s.isZero()?{startType:exports.StartTimeValue.AT_MINING_TIME}:{startType:exports.StartTimeValue.AT_EPOCH,epoch:a};return{sellAmount:r.mul(t),buyAmount:n.mul(t),startTime:u,numberOfParts:t,timeBetweenParts:o,durationOfPart:p,...i}}const Ge={[Ne]:e=>Be.fromParams(e)};exports.ALL_SUPPORTED_CHAIN_IDS=m,exports.BUY_ETH_ADDRESS=l,exports.COMPOSABLE_COW=y,exports.COMPOSABLE_COW_CONTRACT_ADDRESS=O,exports.CONDITIONAL_ORDER_PARAMS_ABI=ye,exports.COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS=f,exports.COW_PROTOCOL_VAULT_RELAYER_ADDRESS=b,exports.CURRENT_BLOCK_TIMESTAMP_FACTORY_ADDRESS=Ce,exports.ConditionalOrder=xe,exports.ConditionalOrderFactory=class{constructor(e){this.knownOrderTypes=void 0,this.knownOrderTypes=e}fromParams(e){const{handler:t}=e,r=this.knownOrderTypes[t];if(r)return r(e)}},exports.CowError=d,exports.DEFAULT_BACKOFF_OPTIONS=P,exports.DEFAULT_CONDITIONAL_ORDER_REGISTRY=Ge,exports.DEFAULT_COW_API_CONTEXT=u,exports.DEFAULT_IPFS_READ_URI="https://gnosis.mypinata.cloud/ipfs",exports.DEFAULT_IPFS_WRITE_URI="https://api.pinata.cloud",exports.DEFAULT_LIMITER_OPTIONS=x,exports.DEFAULT_TOKEN_FORMATTER=(e,t)=>`${t}@${e}`,exports.ENVS_LIST=p,exports.EXTENSIBLE_FALLBACK_HANDLER=c,exports.EXTENSIBLE_FALLBACK_HANDLER_CONTRACT_ADDRESS=I,exports.MAX_FREQUENCY=De,exports.MAX_UINT32=Re,exports.Multiplexer=_e,exports.ORDER_BOOK_PROD_CONFIG=_,exports.ORDER_BOOK_STAGING_CONFIG=N,exports.OrderBookApi=class{constructor(e={}){this.context=void 0,this.rateLimiter=void 0,this.context={...u,...e},this.rateLimiter=new t.RateLimiter(e.limiterOpts||x)}getVersion(e={}){return this.fetch({path:"/api/v1/version",method:"GET"},e)}getTrades(e,t={}){if(e.owner&&e.orderUid)return Promise.reject(new d("Cannot specify both owner and orderId"));if(!e.owner&&!e.orderUid)return Promise.reject(new d("Must specify either owner or orderId"));const r=new URLSearchParams(C(e));return this.fetch({path:"/api/v1/trades",method:"GET",query:r},t)}getOrders({owner:e,offset:t=0,limit:r=1e3},n={}){const o=new URLSearchParams(C({offset:t.toString(),limit:r.toString()}));return this.fetch({path:`/api/v1/account/${e}/orders`,method:"GET",query:o},n).then(e=>e.map(g))}getTxOrders(e,t={}){return this.fetch({path:`/api/v1/transactions/${e}/orders`,method:"GET"},t).then(e=>e.map(g))}getOrder(e,t={}){return this.fetch({path:`/api/v1/orders/${e}`,method:"GET"},t).then(e=>g(e))}getOrderMultiEnv(e,t={}){const{env:r}=this.getContextWithOverride(t),n=p.filter(e=>e!==r);let o=0;const a=r=>{const s=n[o];return r instanceof A&&404===r.response.status&&s?(o++,this.getOrder(e,{...t,env:s}).catch(a)):Promise.reject(r)};return this.getOrder(e,{...t,env:r}).catch(a)}getQuote(e,t={}){return this.fetch({path:"/api/v1/quote",method:"POST",body:e},t)}sendSignedOrderCancellations(e,t={}){return this.fetch({path:"/api/v1/orders",method:"DELETE",body:e},t)}sendOrder(e,t={}){return this.fetch({path:"/api/v1/orders",method:"POST",body:e},t)}getNativePrice(e,t={}){return this.fetch({path:`/api/v1/token/${e}/native_price`,method:"GET"},t)}getTotalSurplus(e,t={}){return this.fetch({path:`/api/v1/users/${e}/total_surplus`,method:"GET"},t)}getAppData(e,t={}){return this.fetch({path:`/api/v1/app_data/${e}`,method:"GET"},t)}uploadAppData(e,t,r={}){return this.fetch({path:`/api/v1/app_data/${e}`,method:"PUT",body:{fullAppData:t}},r)}getSolverCompetition(e,t={}){return this.fetch({path:`/api/v1/solver_competition${"string"==typeof e?"/by_tx_hash":""}/${e}`,method:"GET"},t)}getOrderLink(e,t){const{chainId:r,env:n}=this.getContextWithOverride(t);return this.getApiBaseUrls(n)[r]+`/api/v1/orders/${e}`}getContextWithOverride(e={}){return{...this.context,...e}}getApiBaseUrls(e){return this.context.baseUrls?this.context.baseUrls:"prod"===e?_:N}fetch(e,r={}){const{chainId:n,env:o,backoffOpts:a}=this.getContextWithOverride(r),s=this.getApiBaseUrls(o)[n],i=a||P,p=r.limiterOpts?new t.RateLimiter(r.limiterOpts):this.rateLimiter;return E(s,e,p,i)}},exports.OrderBookApiError=A,exports.OrderSigningUtils=ee,exports.SUBGRAPH_PROD_CONFIG=Z,exports.SUBGRAPH_STAGING_CONFIG=z,exports.SubgraphApi=class{constructor(e={}){this.API_NAME="CoW Protocol Subgraph",this.context=void 0,this.context={...u,...e}}getTotals(e={}){try{return Promise.resolve(this.runQuery(Y,void 0,e)).then(function(e){return e.totals[0]})}catch(e){return Promise.reject(e)}}getLastDaysVolume(e,t={}){try{return Promise.resolve(this.runQuery(q,{days:e},t))}catch(e){return Promise.reject(e)}}getLastHoursVolume(e,t={}){try{return Promise.resolve(this.runQuery(Q,{hours:e},t))}catch(e){return Promise.reject(e)}}runQuery(e,t=undefined,r={}){try{const o=this,{chainId:a,env:s}=o.getContextWithOverride(r),i=o.getEnvConfigs(s)[a];if(null===i)throw new Error("Unsupported Network. The subgraph API is not available in the Network "+a);return Promise.resolve(function(r,o){try{var a=Promise.resolve(n.request(i,e,t))}catch(e){return o(e)}return a&&a.then?a.then(void 0,o):a}(0,function(r){throw console.error(`[subgraph:${o.API_NAME}]`,r),new d(`Error running query: ${e}. Variables: ${JSON.stringify(t)}. API: ${i}. Inner Error: ${r}`)}))}catch(e){return Promise.reject(e)}}getContextWithOverride(e={}){return{...this.context,...e}}getEnvConfigs(e){return this.context.baseUrls?this.context.baseUrls:"prod"===e?Z:z}},exports.TWAP_ADDRESS=Ne,exports.Twap=Be,exports.createSetDomainVerifierTx=function(e,t){return se.createInterface().encodeFunctionData("setDomainVerifier",[e,t])},exports.decodeParams=Te,exports.encodeParams=me,exports.formatEpoch=fe,exports.fromStructToOrder=Oe,exports.getBlockInfo=ie,exports.getDomainVerifier=function(e,t,r,n){try{const o=se.connect(I[r],n);return Promise.resolve(o.callStatic.domainVerifiers(e,t))}catch(e){return Promise.reject(e)}},exports.getQuoteAmountsAndCosts=function(e){var t;const{orderParams:r,sellDecimals:n,buyDecimals:o,slippagePercentBps:a}=e,s=null!==(t=e.partnerFeeBps)&&void 0!==t?t:0,i=r.kind===exports.OrderKind.SELL,p=K(r.feeAmount,n),u=K(r.sellAmount,n),d=K(r.buyAmount,o),l=d.num/u.num,c=K(u.big+p.big,n),y=K(l*c.num,o),m=s>0?(i?y.big:u.big)*BigInt(s)/H:BigInt(0),T=i?{sellAmount:c.big,buyAmount:d.big-m}:{sellAmount:c.big+m,buyAmount:d.big},h=e=>e*BigInt(a)/H,f=i?{sellAmount:T.sellAmount,buyAmount:T.buyAmount-h(T.buyAmount)}:{sellAmount:T.sellAmount+h(T.sellAmount),buyAmount:T.buyAmount};return{isSell:i,costs:{networkFee:{amountInSellCurrency:p.big,amountInBuyCurrency:K(l*p.num,o).big},partnerFee:{amount:m,bps:s}},beforeNetworkCosts:{sellAmount:u.big,buyAmount:y.big},afterNetworkCosts:{sellAmount:c.big,buyAmount:d.big},afterPartnerFees:T,afterSlippage:f}},exports.isComposableCow=function(e,t){return e===O[t]},exports.isExtensibleFallbackHandler=function(e,t){return e===I[t]},exports.isValidAbi=he,exports.logPrefix="cow-sdk:",exports.mapAddressToSupportedNetworks=h,exports.mapSupportedNetworks=T,exports.request=E,exports.transformDataToStruct=Fe,exports.transformStructToData=Ve; | ||
//# sourceMappingURL=index.js.map |
@@ -1,2 +0,2 @@ | ||
import"cross-fetch/polyfill";import{RateLimiter as e}from"limiter";import{backOff as t}from"exponential-backoff";import{gql as n,request as r}from"graphql-request";import{utils as a,Contract as i,ethers as s,constants as o,BigNumber as u}from"ethers";import{OrderBalance as p,OrderKind as d}from"@cowprotocol/contracts";import{StandardMerkleTree as l}from"@openzeppelin/merkle-tree";var c;!function(e){e[e.MAINNET=1]="MAINNET",e[e.GNOSIS_CHAIN=100]="GNOSIS_CHAIN",e[e.ARBITRUM_ONE=42161]="ARBITRUM_ONE",e[e.SEPOLIA=11155111]="SEPOLIA"}(c||(c={}));const y=["prod","staging"],m={env:"prod",chainId:c.MAINNET};class T extends Error{constructor(e,t){super(e),this.error_code=void 0,this.error_code=t}}const h="cow-sdk:",f="https://gnosis.mypinata.cloud/ipfs",b="https://api.pinata.cloud",I="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",E="0x2f55e8b20D0B9FEFA187AA7d00B6Cbe563605bF5",A="0xfdaFc9d1902f4e0b84f65F49f244b32b31013b74",O=Object.values(c).filter(e=>"number"==typeof e);function v(e){return O.reduce((t,n)=>({...t,[n]:"function"==typeof e?e(n):e}),{})}function P(e){return v(e)}const g=P("0x9008D19f58AAbD9eD0D60971565AA8510560ab41"),S=P("0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"),N=P(E),_=P(A),w=function(e,{path:n,query:r,method:a,body:i},s,o){try{const u={Accept:"application/json","Content-Type":"application/json"},p=`${e}${n}${r?"?"+r:""}`,d={method:a,body:(()=>{if(i)return"string"==typeof i?i:JSON.stringify(i)})(),headers:u};return Promise.resolve(t(function(){try{return Promise.resolve(s.removeTokens(1)).then(function(){return Promise.resolve(fetch(p,d)).then(function(e){return Promise.resolve(x(e)).then(function(t){return e.status>=200&&e.status<300?t:Promise.reject(new R(e,t))})})})}catch(e){return Promise.reject(e)}},o))}catch(e){return Promise.reject(e)}};class R 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 C=[408,425,429,500,502,503,504],D={numOfAttempts:10,maxDelay:Infinity,jitter:"none",retry:e=>!(e instanceof R)||C.includes(e.response.status)},M={tokensPerInterval:5,interval:"second"},x=function(e){try{let t;const n=function(){if(204!==e.status)return function(n,r){try{var a=function(){const n=e.headers.get("Content-Type");return function(){if(n)return n.toLowerCase().startsWith("application/json")?Promise.resolve(e.json()).then(function(e){return t=1,e}):Promise.resolve(e.text()).then(function(e){return t=1,e})}()}()}catch(e){return r(e)}return a&&a.then?a.then(void 0,r):a}(0,function(e){console.error(e)})}();return Promise.resolve(n&&n.then?n.then(function(e){return t?e:void 0}):t?n:void 0)}catch(e){return Promise.reject(e)}};function U(e){return function(e){const{ethflowData:t}=e;if(!t)return e;const{userValidTo:n}=t,r=e.onchainUser||e.owner,a=I;return{...e,validTo:n,owner:r,sellToken:a}}(function(e){const{executedFeeAmount:t,executedSurplusFee:n}=e,r=BigInt(t||"0"),a=BigInt(n||"0"),i=String(r+a);return{...e,totalFee:i}}(e))}const L={[c.MAINNET]:"https://api.cow.fi/mainnet",[c.GNOSIS_CHAIN]:"https://api.cow.fi/xdai",[c.ARBITRUM_ONE]:"https://api.cow.fi/arbitrum_one",[c.SEPOLIA]:"https://api.cow.fi/sepolia"},k={[c.MAINNET]:"https://barn.api.cow.fi/mainnet",[c.GNOSIS_CHAIN]:"https://barn.api.cow.fi/xdai",[c.ARBITRUM_ONE]:"https://barn.api.cow.fi/arbitrum_one",[c.SEPOLIA]:"https://barn.api.cow.fi/sepolia"};function B(e){return Object.keys(e).reduce((t,n)=>{const r=e[n];return void 0!==r&&(t[n]=r),t},{})}class F{constructor(t={}){this.context=void 0,this.rateLimiter=void 0,this.context={...m,...t},this.rateLimiter=new e(t.limiterOpts||M)}getVersion(e={}){return this.fetch({path:"/api/v1/version",method:"GET"},e)}getTrades(e,t={}){if(e.owner&&e.orderUid)return Promise.reject(new T("Cannot specify both owner and orderId"));if(!e.owner&&!e.orderUid)return Promise.reject(new T("Must specify either owner or orderId"));const n=new URLSearchParams(B(e));return this.fetch({path:"/api/v1/trades",method:"GET",query:n},t)}getOrders({owner:e,offset:t=0,limit:n=1e3},r={}){const a=new URLSearchParams(B({offset:t.toString(),limit:n.toString()}));return this.fetch({path:`/api/v1/account/${e}/orders`,method:"GET",query:a},r).then(e=>e.map(U))}getTxOrders(e,t={}){return this.fetch({path:`/api/v1/transactions/${e}/orders`,method:"GET"},t).then(e=>e.map(U))}getOrder(e,t={}){return this.fetch({path:`/api/v1/orders/${e}`,method:"GET"},t).then(e=>U(e))}getOrderMultiEnv(e,t={}){const{env:n}=this.getContextWithOverride(t),r=y.filter(e=>e!==n);let a=0;const i=n=>{const s=r[a];return n instanceof R&&404===n.response.status&&s?(a++,this.getOrder(e,{...t,env:s}).catch(i)):Promise.reject(n)};return this.getOrder(e,{...t,env:n}).catch(i)}getQuote(e,t={}){return this.fetch({path:"/api/v1/quote",method:"POST",body:e},t)}sendSignedOrderCancellations(e,t={}){return this.fetch({path:"/api/v1/orders",method:"DELETE",body:e},t)}sendOrder(e,t={}){return this.fetch({path:"/api/v1/orders",method:"POST",body:e},t)}getNativePrice(e,t={}){return this.fetch({path:`/api/v1/token/${e}/native_price`,method:"GET"},t)}getTotalSurplus(e,t={}){return this.fetch({path:`/api/v1/users/${e}/total_surplus`,method:"GET"},t)}getAppData(e,t={}){return this.fetch({path:`/api/v1/app_data/${e}`,method:"GET"},t)}uploadAppData(e,t,n={}){return this.fetch({path:`/api/v1/app_data/${e}`,method:"PUT",body:{fullAppData:t}},n)}getSolverCompetition(e,t={}){return this.fetch({path:`/api/v1/solver_competition${"string"==typeof e?"/by_tx_hash":""}/${e}`,method:"GET"},t)}getOrderLink(e,t){const{chainId:n,env:r}=this.getContextWithOverride(t);return this.getApiBaseUrls(r)[n]+`/api/v1/orders/${e}`}getContextWithOverride(e={}){return{...this.context,...e}}getApiBaseUrls(e){return this.context.baseUrls?this.context.baseUrls:"prod"===e?L:k}fetch(t,n={}){const{chainId:r,env:a,backoffOpts:i}=this.getContextWithOverride(n),s=this.getApiBaseUrls(a)[r],o=i||D,u=n.limiterOpts?new e(n.limiterOpts):this.rateLimiter;return w(s,t,u,o)}}var V,$,G,W,j,H,Y,Z,K,X,q,z,J,Q;function ee(e){var t;const{orderParams:n,sellDecimals:r,buyDecimals:a,slippagePercentBps:i}=e,s=null!==(t=e.partnerFeeBps)&&void 0!==t?t:0,o=n.kind===H.SELL,u=te(n.feeAmount,r),p=te(n.sellAmount,r),d=te(n.buyAmount,a),l=d.num/p.num,c=te(p.big+u.big,r),y=te(l*c.num,a),m=s>0?(o?y.big:p.big)/BigInt(s):BigInt(0),T=o?{sellAmount:c.big,buyAmount:d.big-m}:{sellAmount:c.big+m,buyAmount:d.big},h=e=>e*BigInt(i)/BigInt(1e4),f=o?{sellAmount:T.sellAmount,buyAmount:T.buyAmount-h(T.buyAmount)}:{sellAmount:T.sellAmount+h(T.sellAmount),buyAmount:T.buyAmount};return{isSell:o,costs:{networkFee:{amountInSellCurrency:u.big,amountInBuyCurrency:te(l*u.num,a).big},partnerFee:{amount:m,bps:s}},beforeNetworkCosts:{sellAmount:p.big,buyAmount:y.big},afterNetworkCosts:{sellAmount:c.big,buyAmount:d.big},afterPartnerFees:T,afterSlippage:f}}function te(e,t){if("number"==typeof e){const n=e*10**t,r=n.toFixed();return{big:BigInt(r.includes("e")?n:r),num:e}}const n=BigInt(e);return{big:n,num:Number(n)/10**t}}!function(e){e.ERC20="erc20",e.INTERNAL="internal"}(V||(V={})),function(e){e.EIP712="eip712",e.ETHSIGN="ethsign"}($||($={})),function(e){var t;(t=e.placementError||(e.placementError={})).QUOTE_NOT_FOUND="QuoteNotFound",t.VALID_TO_TOO_FAR_IN_FUTURE="ValidToTooFarInFuture",t.PRE_VALIDATION_ERROR="PreValidationError"}(G||(G={})),function(e){var t;(t=e.errorType||(e.errorType={})).INVALID_SIGNATURE="InvalidSignature",t.WRONG_OWNER="WrongOwner",t.ORDER_NOT_FOUND="OrderNotFound",t.ALREADY_CANCELLED="AlreadyCancelled",t.ORDER_FULLY_EXECUTED="OrderFullyExecuted",t.ORDER_EXPIRED="OrderExpired",t.ON_CHAIN_ORDER="OnChainOrder"}(W||(W={})),function(e){e.MARKET="market",e.LIMIT="limit",e.LIQUIDITY="liquidity"}(j||(j={})),function(e){e.BUY="buy",e.SELL="sell"}(H||(H={})),function(e){var t;(t=e.errorType||(e.errorType={})).DUPLICATED_ORDER="DuplicatedOrder",t.QUOTE_NOT_FOUND="QuoteNotFound",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"}(Y||(Y={})),function(e){e.BUY="buy"}(Z||(Z={})),function(e){e.SELL="sell"}(K||(K={})),function(e){e.PRESIGNATURE_PENDING="presignaturePending",e.OPEN="open",e.FULFILLED="fulfilled",e.CANCELLED="cancelled",e.EXPIRED="expired"}(X||(X={})),function(e){var t;(t=e.errorType||(e.errorType={})).UNSUPPORTED_TOKEN="UnsupportedToken",t.ZERO_AMOUNT="ZeroAmount",t.UNSUPPORTED_ORDER_TYPE="UnsupportedOrderType"}(q||(q={})),function(e){e.FAST="fast",e.OPTIMAL="optimal",e.VERIFIED="verified"}(z||(z={})),function(e){e.ERC20="erc20",e.INTERNAL="internal",e.EXTERNAL="external"}(J||(J={})),function(e){e.EIP712="eip712",e.ETHSIGN="ethsign",e.PRESIGN="presign",e.EIP1271="eip1271"}(Q||(Q={}));const ne=n` | ||
import"cross-fetch/polyfill";import{RateLimiter as e}from"limiter";import{backOff as t}from"exponential-backoff";import{gql as n,request as r}from"graphql-request";import{utils as a,Contract as i,ethers as s,constants as o,BigNumber as u}from"ethers";import{OrderBalance as p,OrderKind as d}from"@cowprotocol/contracts";import{StandardMerkleTree as l}from"@openzeppelin/merkle-tree";var c;!function(e){e[e.MAINNET=1]="MAINNET",e[e.GNOSIS_CHAIN=100]="GNOSIS_CHAIN",e[e.ARBITRUM_ONE=42161]="ARBITRUM_ONE",e[e.SEPOLIA=11155111]="SEPOLIA"}(c||(c={}));const y=["prod","staging"],m={env:"prod",chainId:c.MAINNET};class T extends Error{constructor(e,t){super(e),this.error_code=void 0,this.error_code=t}}const h="cow-sdk:",f="https://gnosis.mypinata.cloud/ipfs",b="https://api.pinata.cloud",I="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",E="0x2f55e8b20D0B9FEFA187AA7d00B6Cbe563605bF5",A="0xfdaFc9d1902f4e0b84f65F49f244b32b31013b74",O=Object.values(c).filter(e=>"number"==typeof e);function v(e){return O.reduce((t,n)=>({...t,[n]:"function"==typeof e?e(n):e}),{})}function P(e){return v(e)}const g=P("0x9008D19f58AAbD9eD0D60971565AA8510560ab41"),S=P("0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"),N=P(E),_=P(A),w=function(e,{path:n,query:r,method:a,body:i},s,o){try{const u={Accept:"application/json","Content-Type":"application/json"},p=`${e}${n}${r?"?"+r:""}`,d={method:a,body:(()=>{if(i)return"string"==typeof i?i:JSON.stringify(i)})(),headers:u};return Promise.resolve(t(function(){try{return Promise.resolve(s.removeTokens(1)).then(function(){return Promise.resolve(fetch(p,d)).then(function(e){return Promise.resolve(x(e)).then(function(t){return e.status>=200&&e.status<300?t:Promise.reject(new R(e,t))})})})}catch(e){return Promise.reject(e)}},o))}catch(e){return Promise.reject(e)}};class R 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 C=[408,425,429,500,502,503,504],D={numOfAttempts:10,maxDelay:Infinity,jitter:"none",retry:e=>!(e instanceof R)||C.includes(e.response.status)},M={tokensPerInterval:5,interval:"second"},x=function(e){try{let t;const n=function(){if(204!==e.status)return function(n,r){try{var a=function(){const n=e.headers.get("Content-Type");return function(){if(n)return n.toLowerCase().startsWith("application/json")?Promise.resolve(e.json()).then(function(e){return t=1,e}):Promise.resolve(e.text()).then(function(e){return t=1,e})}()}()}catch(e){return r(e)}return a&&a.then?a.then(void 0,r):a}(0,function(e){console.error(e)})}();return Promise.resolve(n&&n.then?n.then(function(e){return t?e:void 0}):t?n:void 0)}catch(e){return Promise.reject(e)}};function U(e){return function(e){const{ethflowData:t}=e;if(!t)return e;const{userValidTo:n}=t,r=e.onchainUser||e.owner,a=I;return{...e,validTo:n,owner:r,sellToken:a}}(function(e){const{executedFeeAmount:t,executedSurplusFee:n}=e,r=BigInt(t||"0"),a=BigInt(n||"0"),i=String(r+a);return{...e,totalFee:i}}(e))}const L={[c.MAINNET]:"https://api.cow.fi/mainnet",[c.GNOSIS_CHAIN]:"https://api.cow.fi/xdai",[c.ARBITRUM_ONE]:"https://api.cow.fi/arbitrum_one",[c.SEPOLIA]:"https://api.cow.fi/sepolia"},k={[c.MAINNET]:"https://barn.api.cow.fi/mainnet",[c.GNOSIS_CHAIN]:"https://barn.api.cow.fi/xdai",[c.ARBITRUM_ONE]:"https://barn.api.cow.fi/arbitrum_one",[c.SEPOLIA]:"https://barn.api.cow.fi/sepolia"};function B(e){return Object.keys(e).reduce((t,n)=>{const r=e[n];return void 0!==r&&(t[n]=r),t},{})}class F{constructor(t={}){this.context=void 0,this.rateLimiter=void 0,this.context={...m,...t},this.rateLimiter=new e(t.limiterOpts||M)}getVersion(e={}){return this.fetch({path:"/api/v1/version",method:"GET"},e)}getTrades(e,t={}){if(e.owner&&e.orderUid)return Promise.reject(new T("Cannot specify both owner and orderId"));if(!e.owner&&!e.orderUid)return Promise.reject(new T("Must specify either owner or orderId"));const n=new URLSearchParams(B(e));return this.fetch({path:"/api/v1/trades",method:"GET",query:n},t)}getOrders({owner:e,offset:t=0,limit:n=1e3},r={}){const a=new URLSearchParams(B({offset:t.toString(),limit:n.toString()}));return this.fetch({path:`/api/v1/account/${e}/orders`,method:"GET",query:a},r).then(e=>e.map(U))}getTxOrders(e,t={}){return this.fetch({path:`/api/v1/transactions/${e}/orders`,method:"GET"},t).then(e=>e.map(U))}getOrder(e,t={}){return this.fetch({path:`/api/v1/orders/${e}`,method:"GET"},t).then(e=>U(e))}getOrderMultiEnv(e,t={}){const{env:n}=this.getContextWithOverride(t),r=y.filter(e=>e!==n);let a=0;const i=n=>{const s=r[a];return n instanceof R&&404===n.response.status&&s?(a++,this.getOrder(e,{...t,env:s}).catch(i)):Promise.reject(n)};return this.getOrder(e,{...t,env:n}).catch(i)}getQuote(e,t={}){return this.fetch({path:"/api/v1/quote",method:"POST",body:e},t)}sendSignedOrderCancellations(e,t={}){return this.fetch({path:"/api/v1/orders",method:"DELETE",body:e},t)}sendOrder(e,t={}){return this.fetch({path:"/api/v1/orders",method:"POST",body:e},t)}getNativePrice(e,t={}){return this.fetch({path:`/api/v1/token/${e}/native_price`,method:"GET"},t)}getTotalSurplus(e,t={}){return this.fetch({path:`/api/v1/users/${e}/total_surplus`,method:"GET"},t)}getAppData(e,t={}){return this.fetch({path:`/api/v1/app_data/${e}`,method:"GET"},t)}uploadAppData(e,t,n={}){return this.fetch({path:`/api/v1/app_data/${e}`,method:"PUT",body:{fullAppData:t}},n)}getSolverCompetition(e,t={}){return this.fetch({path:`/api/v1/solver_competition${"string"==typeof e?"/by_tx_hash":""}/${e}`,method:"GET"},t)}getOrderLink(e,t){const{chainId:n,env:r}=this.getContextWithOverride(t);return this.getApiBaseUrls(r)[n]+`/api/v1/orders/${e}`}getContextWithOverride(e={}){return{...this.context,...e}}getApiBaseUrls(e){return this.context.baseUrls?this.context.baseUrls:"prod"===e?L:k}fetch(t,n={}){const{chainId:r,env:a,backoffOpts:i}=this.getContextWithOverride(n),s=this.getApiBaseUrls(a)[r],o=i||D,u=n.limiterOpts?new e(n.limiterOpts):this.rateLimiter;return w(s,t,u,o)}}var V,$,G,W,j,H,Y,Z,K,X,q,z,J,Q;!function(e){e.ERC20="erc20",e.INTERNAL="internal"}(V||(V={})),function(e){e.EIP712="eip712",e.ETHSIGN="ethsign"}($||($={})),function(e){var t;(t=e.placementError||(e.placementError={})).QUOTE_NOT_FOUND="QuoteNotFound",t.VALID_TO_TOO_FAR_IN_FUTURE="ValidToTooFarInFuture",t.PRE_VALIDATION_ERROR="PreValidationError"}(G||(G={})),function(e){var t;(t=e.errorType||(e.errorType={})).INVALID_SIGNATURE="InvalidSignature",t.WRONG_OWNER="WrongOwner",t.ORDER_NOT_FOUND="OrderNotFound",t.ALREADY_CANCELLED="AlreadyCancelled",t.ORDER_FULLY_EXECUTED="OrderFullyExecuted",t.ORDER_EXPIRED="OrderExpired",t.ON_CHAIN_ORDER="OnChainOrder"}(W||(W={})),function(e){e.MARKET="market",e.LIMIT="limit",e.LIQUIDITY="liquidity"}(j||(j={})),function(e){e.BUY="buy",e.SELL="sell"}(H||(H={})),function(e){var t;(t=e.errorType||(e.errorType={})).DUPLICATED_ORDER="DuplicatedOrder",t.QUOTE_NOT_FOUND="QuoteNotFound",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"}(Y||(Y={})),function(e){e.BUY="buy"}(Z||(Z={})),function(e){e.SELL="sell"}(K||(K={})),function(e){e.PRESIGNATURE_PENDING="presignaturePending",e.OPEN="open",e.FULFILLED="fulfilled",e.CANCELLED="cancelled",e.EXPIRED="expired"}(X||(X={})),function(e){var t;(t=e.errorType||(e.errorType={})).UNSUPPORTED_TOKEN="UnsupportedToken",t.ZERO_AMOUNT="ZeroAmount",t.UNSUPPORTED_ORDER_TYPE="UnsupportedOrderType"}(q||(q={})),function(e){e.FAST="fast",e.OPTIMAL="optimal",e.VERIFIED="verified"}(z||(z={})),function(e){e.ERC20="erc20",e.INTERNAL="internal",e.EXTERNAL="external"}(J||(J={})),function(e){e.EIP712="eip712",e.ETHSIGN="ethsign",e.PRESIGN="presign",e.EIP1271="eip1271"}(Q||(Q={}));const ee=BigInt(1e4);function te(e){var t;const{orderParams:n,sellDecimals:r,buyDecimals:a,slippagePercentBps:i}=e,s=null!==(t=e.partnerFeeBps)&&void 0!==t?t:0,o=n.kind===H.SELL,u=ne(n.feeAmount,r),p=ne(n.sellAmount,r),d=ne(n.buyAmount,a),l=d.num/p.num,c=ne(p.big+u.big,r),y=ne(l*c.num,a),m=s>0?(o?y.big:p.big)*BigInt(s)/ee:BigInt(0),T=o?{sellAmount:c.big,buyAmount:d.big-m}:{sellAmount:c.big+m,buyAmount:d.big},h=e=>e*BigInt(i)/ee,f=o?{sellAmount:T.sellAmount,buyAmount:T.buyAmount-h(T.buyAmount)}:{sellAmount:T.sellAmount+h(T.sellAmount),buyAmount:T.buyAmount};return{isSell:o,costs:{networkFee:{amountInSellCurrency:u.big,amountInBuyCurrency:ne(l*u.num,a).big},partnerFee:{amount:m,bps:s}},beforeNetworkCosts:{sellAmount:p.big,buyAmount:y.big},afterNetworkCosts:{sellAmount:c.big,buyAmount:d.big},afterPartnerFees:T,afterSlippage:f}}function ne(e,t){if("number"==typeof e){const n=e*10**t,r=n.toFixed();return{big:BigInt(r.includes("e")?n:r),num:e}}const n=BigInt(e);return{big:n,num:Number(n)/10**t}}const re=n` | ||
query Totals { | ||
@@ -14,3 +14,3 @@ totals { | ||
} | ||
`,re=n` | ||
`,ae=n` | ||
query LastDaysVolume($days: Int!) { | ||
@@ -22,3 +22,3 @@ dailyTotals(orderBy: timestamp, orderDirection: desc, first: $days) { | ||
} | ||
`,ae=n` | ||
`,ie=n` | ||
query LastHoursVolume($hours: Int!) { | ||
@@ -30,3 +30,3 @@ hourlyTotals(orderBy: timestamp, orderDirection: desc, first: $hours) { | ||
} | ||
`,ie="https://api.thegraph.com/subgraphs/name/cowprotocol",se={[c.MAINNET]:ie+"/cow",[c.GNOSIS_CHAIN]:ie+"/cow-gc",[c.ARBITRUM_ONE]:null,[c.SEPOLIA]:null},oe={[c.MAINNET]:ie+"/cow-staging",[c.GNOSIS_CHAIN]:ie+"/cow-gc-staging",[c.ARBITRUM_ONE]:null,[c.SEPOLIA]:null};class ue{constructor(e={}){this.API_NAME="CoW Protocol Subgraph",this.context=void 0,this.context={...m,...e}}getTotals(e={}){try{return Promise.resolve(this.runQuery(ne,void 0,e)).then(function(e){return e.totals[0]})}catch(e){return Promise.reject(e)}}getLastDaysVolume(e,t={}){try{return Promise.resolve(this.runQuery(re,{days:e},t))}catch(e){return Promise.reject(e)}}getLastHoursVolume(e,t={}){try{return Promise.resolve(this.runQuery(ae,{hours:e},t))}catch(e){return Promise.reject(e)}}runQuery(e,t=undefined,n={}){try{const a=this,{chainId:i,env:s}=a.getContextWithOverride(n),o=a.getEnvConfigs(s)[i];if(null===o)throw new Error("Unsupported Network. The subgraph API is not available in the Network "+i);return Promise.resolve(function(n,a){try{var i=Promise.resolve(r(o,e,t))}catch(e){return a(e)}return i&&i.then?i.then(void 0,a):i}(0,function(n){throw console.error(`[subgraph:${a.API_NAME}]`,n),new T(`Error running query: ${e}. Variables: ${JSON.stringify(t)}. API: ${o}. Inner Error: ${n}`)}))}catch(e){return Promise.reject(e)}}getContextWithOverride(e={}){return{...this.context,...e}}getEnvConfigs(e){return this.context.baseUrls?this.context.baseUrls:"prod"===e?se:oe}}const pe=()=>import("./utils-6d548a1c.js");class de{static signOrder(e,t,n){try{return Promise.resolve(pe()).then(function({signOrder:r}){return r(e,t,n)})}catch(e){return Promise.reject(e)}}static signOrderCancellation(e,t,n){try{return Promise.resolve(pe()).then(function({signOrderCancellation:r}){return r(e,t,n)})}catch(e){return Promise.reject(e)}}static signOrderCancellations(e,t,n){try{return Promise.resolve(pe()).then(function({signOrderCancellations:r}){return r(e,t,n)})}catch(e){return Promise.reject(e)}}static getDomain(e){try{return Promise.resolve(pe()).then(function({getDomain:t}){return t(e)})}catch(e){return Promise.reject(e)}}static getDomainSeparator(e){try{return Promise.resolve(pe()).then(function({getDomain:t}){return Promise.resolve(import("ethers/lib/utils")).then(function({_TypedDataEncoder:n}){return n.hashDomain(t(e))})})}catch(e){return Promise.reject(e)}}static getEIP712Types(){return{Order:[{name:"sellToken",type:"address"},{name:"buyToken",type:"address"},{name:"receiver",type:"address"},{name:"sellAmount",type:"uint256"},{name:"buyAmount",type:"uint256"},{name:"validTo",type:"uint32"},{name:"appData",type:"bytes32"},{name:"feeAmount",type:"uint256"},{name:"kind",type:"string"},{name:"partiallyFillable",type:"bool"},{name:"sellTokenBalance",type:"string"},{name:"buyTokenBalance",type:"string"}]}}}var le,ce;!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"}(le||(le={})),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"}(ce||(ce={}));const ye=[{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 me{static createInterface(){return new a.Interface(ye)}static connect(e,t){return new i(e,ye,t)}}me.abi=ye;const Te=[{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 he{static createInterface(){return new a.Interface(Te)}static connect(e,t){return new i(e,Te,t)}}he.abi=Te;const fe=function(e){try{return Promise.resolve(e.getBlock("latest")).then(function(e){return{blockNumber:e.number,blockTimestamp:e.timestamp}})}catch(e){return Promise.reject(e)}},be=function(e,t,n,r){try{const a=he.connect(N[n],r);return Promise.resolve(a.callStatic.domainVerifiers(e,t))}catch(e){return Promise.reject(e)}},Ie=["erc20","0x5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9"],Ee=["external","0xabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea0632"],Ae=["internal","0x4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce"],Oe=["sell","0xf3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775"],ve=["buy","0x6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc"],Pe=["tuple(address handler, bytes32 salt, bytes staticInput)"],ge=(e,t)=>`${t}@${e}`;function Se(e,t){return e===N[t]}function Ne(e,t){return e===_[t]}function _e(e,t){return he.createInterface().encodeFunctionData("setDomainVerifier",[e,t])}function we(e){return a.defaultAbiCoder.encode(Pe,[e])}function Re(e){const{handler:t,salt:n,staticInput:r}=a.defaultAbiCoder.decode(Pe,e)[0];return{handler:t,salt:n,staticInput:r}}function Ce(e,t){try{a.defaultAbiCoder.encode(e,t)}catch(e){return!1}return!0}function De(e){return new Date(1e3*e).toISOString()}function Me(e){if(Ie.includes(e))return p.ERC20;if(Ee.includes(e))return p.EXTERNAL;if(Ae.includes(e))return p.INTERNAL;throw new Error(`Unknown balance type: ${e}`)}function xe(e){if(Oe.includes(e))return d.SELL;if(ve.includes(e))return d.BUY;throw new Error(`Unknown kind: ${e}`)}function Ue(e){const{sellToken:t,sellAmount:n,buyToken:r,buyAmount:a,buyTokenBalance:i,sellTokenBalance:s,feeAmount:o,kind:u,receiver:p,validTo:d,partiallyFillable:l,appData:c}=e;return{sellToken:t,sellAmount:n,buyToken:r,buyAmount:a,feeAmount:o,receiver:p,partiallyFillable:l,appData:c,validTo:Number(d),kind:xe(u.toString()),sellTokenBalance:Me(s.toString()),buyTokenBalance:Me(i.toString())}}let Le,ke;function Be(){return Le||(Le=me.createInterface()),Le}function Fe(e,t){return ke||(ke=me.connect(_[e],t)),ke}class Ve{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=a.keccak256(a.randomBytes(32)),data:r,hasOffChainInput:i=!1}=e;if(!s.utils.isAddress(t))throw new Error(`Invalid handler: ${t}`);if(!s.utils.isHexString(n)||32!==s.utils.hexDataLength(n))throw new Error(`Invalid salt: ${n}`);this.handler=t,this.salt=n,this.data=r,this.staticInput=this.transformDataToStruct(r),this.hasOffChainInput=i}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=Be(),n={handler:this.handler,salt:this.salt,staticInput:this.encodeStaticInput()};if(e){const r=e.factoryArgs?a.defaultAbiCoder.encode(e.factoryArgs.argsType,e.factoryArgs.args):"0x";return t.encodeFunctionData("createWithContext",[n,e.address,r,!0])}return t.encodeFunctionData("create",[n,!0])}get removeCalldata(){return this.assertIsValid(),Be().encodeFunctionData("remove",[this.id])}get id(){return a.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 a.keccak256(we(e))}get offChainInput(){return"0x"}encodeStaticInputHelper(e,t){return a.defaultAbiCoder.encode(e,[t])}poll(e){try{const t=this,{chainId:n,owner:r,provider:a,orderBookApi:i}=e,s=Fe(n,a);return Promise.resolve(function(a,o){try{var u=function(){const a=t.isValid();return a.isValid?Promise.resolve(t.pollValidate(e)).then(function(a){return a||Promise.resolve(t.isAuthorized(e)).then(function(a){return a?Promise.resolve(s.getTradeableOrderWithSignature(r,t.leaf,t.offChainInput,[])).then(function([a,s]){return Promise.resolve(function(e,t,n){try{return Promise.resolve(import("@cowprotocol/contracts")).then(function({computeOrderUid:r}){return Promise.resolve(de.getDomain(e)).then(function(e){return r(e,n,t)})})}catch(e){return Promise.reject(e)}}(n,r,Ue(a))).then(function(n){return Promise.resolve(i.getOrder(n).then(()=>!0).catch(()=>!1)).then(function(r){let i;function o(e){return i?e:{result:ce.SUCCESS,order:a,signature:s}}const u=function(){if(r)return Promise.resolve(t.handlePollFailedAlreadyPresent(n,a,e)).then(function(e){return e?(i=1,e):(i=1,{result:ce.TRY_NEXT_BLOCK,reason:"Order already in orderbook"})})}();return u&&u.then?u.then(o):o(u)})})}):{result:ce.DONT_TRY_AGAIN,reason:`NotAuthorized: Order ${t.id} is not authorized for ${r} on chain ${n}`}})}):{result:ce.DONT_TRY_AGAIN,reason:`InvalidConditionalOrder. Reason: ${a.reason}`}}()}catch(e){return o(e)}return u&&u.then?u.then(void 0,o):u}(0,function(e){return{result:ce.UNEXPECTED_ERROR,error:e}}))}catch(e){return Promise.reject(e)}}isAuthorized(e){const{chainId:t,owner:n,provider:r}=e;return Fe(t,r).callStatic.singleOrders(n,this.id)}cabinet(e){const{chainId:t,owner:n,provider:r}=e;return Fe(t,r).callStatic.cabinet(n,this.ctx)}static deserializeHelper(e,t,n,r){try{const{handler:i,salt:s,staticInput:o}=Re(e);if(i!=t)throw new Error("HandlerMismatch");const[u]=a.defaultAbiCoder.decode(n,o);return r(u,s)}catch(e){throw"HandlerMismatch"===e.message?e:new Error("InvalidSerializedConditionalOrder")}}}const $e=["address","bytes32","bytes"],Ge=["tuple(bytes32[] proof, tuple(address handler, bytes32 salt, bytes staticInput) params)[]"];class We{constructor(e,t,n,r=le.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=r,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(!We.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:r,location:a}=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{orderType:r,...a}=t[n];if(!We.orderTypeRegistry.hasOwnProperty(r))throw new Error(`Unknown order type: ${r}`);e[n]=new(0,We.orderTypeRegistry[r])(a)}return e}return"object"==typeof t&&null!==t&&t.hasOwnProperty("type")&&t.hasOwnProperty("hex")&&"BigNumber"===t.type?u.from(t):t}),i=new We(t,n,r);return i.location=a,i}toJSON(){const e=this.getOrGenerateTree().root;return JSON.stringify({...this,root:e},(e,t)=>{if("tree"!==e){if("object"==typeof t&&null!==t&&"orderType"in t){const e=t;return{...e,orderType:e.orderType}}return 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=l.of(Object.values(this.orders).map(e=>[...Object.values(e.leaf)]),$e)),this.tree}static decodeFromJSON(e){return JSON.parse(e)}prepareProofStruct(e,t,n){try{const r=this;void 0===e&&(e=r.location);const i=function(){try{switch(e){case le.PRIVATE:return Promise.resolve("0x");case le.EMITTED:return Promise.resolve(r.encodeToABI(t));case le.SWARM:case le.WAKU:case le.IPFS:if(!n)throw new Error("Must provide an uploader function");return Promise.resolve(function(e,a){try{var i=Promise.resolve(n(r.encodeToJSON(t)))}catch(e){return a(e)}return i&&i.then?i.then(void 0,a):i}(0,function(t){throw new Error(`Error uploading to decentralized storage ${e}: ${t}`)}));default:throw new Error("Unsupported location")}}catch(e){return Promise.reject(e)}};return Promise.resolve(i().then(t=>{try{return a.hexlify(a.arrayify(t)),r.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}`)}))}catch(e){return Promise.reject(e)}}static poll(e,t,n,r,a){try{function i(n){return Promise.resolve(s.getTradeableOrderWithSignature(e,t.params,n,t.proof))}const s=Fe(n,r);return Promise.resolve(a?Promise.resolve(a(e,t.params)).then(i):i("0x"))}catch(o){return Promise.reject(o)}}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 a.defaultAbiCoder.encode(Ge,[this.getProofs(e)])}encodeToJSON(e){return JSON.stringify(this.getProofs(e))}reset(){this.tree=void 0}static registerOrderType(e,t){We.orderTypeRegistry[e]=t}static resetOrderTypeRegistry(){We.orderTypeRegistry={}}}We.orderTypeRegistry={};class je{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 He="0x6cF1e9cA41f7611dEf408122793c358a3d11E5a5",Ye="0x52eD56Da04309Aca4c3FECC595298d80C2f16BAc",Ze=u.from(2).pow(32).sub(1),Ke=u.from(31536e3),Xe=["tuple(address sellToken, address buyToken, address receiver, uint256 partSellAmount, uint256 minPartLimit, uint256 t0, uint256 n, uint256 t, uint256 span, bytes32 appData)"];var qe,ze;!function(e){e.AUTO="AUTO",e.LIMIT_DURATION="LIMIT_DURATION"}(qe||(qe={})),function(e){e.AT_MINING_TIME="AT_MINING_TIME",e.AT_EPOCH="AT_EPOCH"}(ze||(ze={}));const Je={startType:ze.AT_MINING_TIME},Qe={durationType:qe.AUTO};class et extends Ve{constructor(e){const{handler:t,salt:n,data:r,hasOffChainInput:a}=e;if(t!==He)throw new Error(`InvalidHandler: Expected: ${He}, provided: ${t}`);super({handler:He,salt:n,data:r,hasOffChainInput:a}),this.isSingleOrder=!0}static fromData(e,t){return new et({handler:He,data:e,salt:t})}static fromParams(e){return et.deserialize(we(e))}get context(){return this.staticInput.t0.gt(0)?super.context:{address:Ye,factoryArgs:void 0}}get orderType(){return"twap"}isValid(){const e=(()=>{const{sellToken:e,sellAmount:t,buyToken:n,buyAmount:r,startTime:a=Je,numberOfParts:i,timeBetweenParts:s,durationOfPart:u=Qe}=this.data;if(e==n)return"InvalidSameToken";if(e==o.AddressZero||n==o.AddressZero)return"InvalidToken";if(!t.gt(o.Zero))return"InvalidSellAmount";if(!r.gt(o.Zero))return"InvalidMinBuyAmount";if(a.startType===ze.AT_EPOCH){const e=a.epoch;if(!e.gte(o.Zero)||!e.lt(Ze))return"InvalidStartTime"}return i.gt(o.One)&&i.lte(Ze)?s.gt(o.Zero)&&s.lte(Ke)?u.durationType!==qe.LIMIT_DURATION||u.duration.lte(s)?Ce(Xe,[this.staticInput])?void 0:"InvalidData":"InvalidSpan":"InvalidFrequency":"InvalidNumParts"})();return e?{isValid:!1,reason:e}:{isValid:!0}}startTimestamp(e){try{const t=this,{startTime:n}=t.data;return n?.startType===ze.AT_EPOCH?Promise.resolve(n.epoch.toNumber()):Promise.resolve(t.cabinet(e)).then(function(e){const t=a.defaultAbiCoder.decode(["uint256"],e)[0];if(t.gt(Ze))throw new Error(`Cabinet epoch out of range: ${t.toString()}`);const n=t.toNumber();if(0===n)throw new Error("Cabinet is not set. Required for TWAP orders that start at mining time.");return n})}catch(e){return Promise.reject(e)}}endTimestamp(e){const{numberOfParts:t,timeBetweenParts:n,durationOfPart:r}=this.data;return r&&r.durationType===qe.LIMIT_DURATION?e+t.sub(1).mul(n).add(r.duration).toNumber():e+t.mul(n).toNumber()}pollValidate(e){try{const t=this;return Promise.resolve(fe(e.provider)).then(function(n){const{blockInfo:r=n}=e,{blockTimestamp:a}=r;return function(n,r){try{var i=Promise.resolve(t.startTimestamp(e)).then(function(e){if(e>a)return{result:ce.TRY_AT_EPOCH,epoch:e,reason:`TWAP hasn't started yet. Starts at ${e} (${De(e)})`};const n=t.endTimestamp(e);return a>=n?{result:ce.DONT_TRY_AGAIN,reason:`TWAP has expired. Expired at ${n} (${De(n)})`}:void 0})}catch(e){return r(e)}return i&&i.then?i.then(void 0,r):i}(0,function(e){return e?.message?.includes("Cabinet is not set")?{result:ce.DONT_TRY_AGAIN,reason:`${e?.message}. User likely removed the order.`}:e?.message?.includes("Cabinet epoch out of range")?{result:ce.DONT_TRY_AGAIN,reason:`${e?.message}`}:{result:ce.UNEXPECTED_ERROR,reason:`Unexpected error: ${e.message}`,error:e}})})}catch(e){return Promise.reject(e)}}handlePollFailedAlreadyPresent(e,t,n){try{const e=this;return Promise.resolve(fe(n.provider)).then(function(t){const{blockInfo:r=t}=n,{blockTimestamp:a}=r,i=e.data.timeBetweenParts.toNumber(),{numberOfParts:s}=e.data;return Promise.resolve(e.startTimestamp(n)).then(function(e){if(a<e)return{result:ce.UNEXPECTED_ERROR,reason:`TWAP part hash't started. First TWAP part start at ${e} (${De(e)})`,error:void 0};const t=s.mul(i).add(e).toNumber();if(a>=t)return{result:ce.UNEXPECTED_ERROR,reason:`TWAP is expired. Expired at ${t} (${De(t)})`,error:void 0};const n=Math.floor((a-e)/i);if(n===s.toNumber()-1)return{result:ce.DONT_TRY_AGAIN,reason:`Current active TWAP part (${n+1}/${s}) is already in the Order Book. This was the last TWAP part, no more orders need to be placed`};const r=e+(n+1)*i;return{result:ce.TRY_AT_EPOCH,epoch:r,reason:`Current active TWAP part (${n+1}/${s}) is already in the Order Book. TWAP part ${n+2} doesn't start until ${r} (${De(r)})`}})})}catch(e){return Promise.reject(e)}}serialize(){return we(this.leaf)}encodeStaticInput(){return super.encodeStaticInputHelper(Xe,this.staticInput)}static deserialize(e){return super.deserializeHelper(e,He,Xe,(e,t)=>new et({handler:He,salt:t,data:nt(e)}))}toString(){const{sellAmount:e,sellToken:t,buyAmount:n,buyToken:r,numberOfParts:a,startTime:i=Je,timeBetweenParts:s,durationOfPart:o=Qe,receiver:u,appData:p}=this.data,d=i.startType===ze.AT_MINING_TIME?"AT_MINING_TIME":i.epoch.toNumber(),l=o.durationType===qe.AUTO?"AUTO":o.duration.toNumber(),c={sellAmount:e.toString(),sellToken:t,buyAmount:n.toString(),buyToken:r,numberOfParts:a.toString(),startTime:d,timeBetweenParts:s.toNumber(),durationOfPart:l,receiver:u,appData:p};return`${this.orderType} (${this.id}): ${JSON.stringify(c)}`}transformDataToStruct(e){return tt(e)}transformStructToData(e){return nt(e)}}function tt(e){const{sellAmount:t,buyAmount:n,numberOfParts:r,startTime:a=Je,timeBetweenParts:i,durationOfPart:s=Qe,...u}=e,{partSellAmount:p,minPartLimit:d}=r&&!r.isZero()?{partSellAmount:t.div(r),minPartLimit:n.div(r)}:{partSellAmount:o.Zero,minPartLimit:o.Zero};return{partSellAmount:p,minPartLimit:d,t0:a.startType===ze.AT_MINING_TIME?o.Zero:a.epoch,n:r,t:i,span:s.durationType===qe.AUTO?o.Zero:s.duration,...u}}function nt(e){const{n:t,partSellAmount:n,minPartLimit:r,t:a,t0:i,span:s,...o}=e,u=s.isZero()?{durationType:qe.AUTO}:{durationType:qe.LIMIT_DURATION,duration:s},p=s.isZero()?{startType:ze.AT_MINING_TIME}:{startType:ze.AT_EPOCH,epoch:i};return{sellAmount:n.mul(t),buyAmount:r.mul(t),startTime:p,numberOfParts:t,timeBetweenParts:a,durationOfPart:u,...o}}const rt={[He]:e=>et.fromParams(e)};export{O as ALL_SUPPORTED_CHAIN_IDS,I as BUY_ETH_ADDRESS,V as BuyTokenDestination,A as COMPOSABLE_COW,_ as COMPOSABLE_COW_CONTRACT_ADDRESS,Pe as CONDITIONAL_ORDER_PARAMS_ABI,g as COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS,S as COW_PROTOCOL_VAULT_RELAYER_ADDRESS,Ye as CURRENT_BLOCK_TIMESTAMP_FACTORY_ADDRESS,Ve as ConditionalOrder,je as ConditionalOrderFactory,T as CowError,D as DEFAULT_BACKOFF_OPTIONS,rt as DEFAULT_CONDITIONAL_ORDER_REGISTRY,m as DEFAULT_COW_API_CONTEXT,f as DEFAULT_IPFS_READ_URI,b as DEFAULT_IPFS_WRITE_URI,M as DEFAULT_LIMITER_OPTIONS,ge as DEFAULT_TOKEN_FORMATTER,qe as DurationType,y as ENVS_LIST,E as EXTENSIBLE_FALLBACK_HANDLER,N as EXTENSIBLE_FALLBACK_HANDLER_CONTRACT_ADDRESS,$ as EcdsaSigningScheme,Ke as MAX_FREQUENCY,Ze as MAX_UINT32,We as Multiplexer,L as ORDER_BOOK_PROD_CONFIG,k as ORDER_BOOK_STAGING_CONFIG,G as OnchainOrderData,F as OrderBookApi,R as OrderBookApiError,W as OrderCancellationError,j as OrderClass,H as OrderKind,Y as OrderPostError,Z as OrderQuoteSideKindBuy,K as OrderQuoteSideKindSell,de as OrderSigningUtils,X as OrderStatus,ce as PollResultCode,q as PriceEstimationError,z as PriceQuality,le as ProofLocation,se as SUBGRAPH_PROD_CONFIG,oe as SUBGRAPH_STAGING_CONFIG,J as SellTokenSource,Q as SigningScheme,ze as StartTimeValue,ue as SubgraphApi,c as SupportedChainId,He as TWAP_ADDRESS,et as Twap,_e as createSetDomainVerifierTx,Re as decodeParams,we as encodeParams,De as formatEpoch,Ue as fromStructToOrder,fe as getBlockInfo,be as getDomainVerifier,ee as getQuoteAmountsAndCosts,Ne as isComposableCow,Se as isExtensibleFallbackHandler,Ce as isValidAbi,h as logPrefix,P as mapAddressToSupportedNetworks,v as mapSupportedNetworks,w as request,tt as transformDataToStruct,nt as transformStructToData}; | ||
`,se="https://api.thegraph.com/subgraphs/name/cowprotocol",oe={[c.MAINNET]:se+"/cow",[c.GNOSIS_CHAIN]:se+"/cow-gc",[c.ARBITRUM_ONE]:null,[c.SEPOLIA]:null},ue={[c.MAINNET]:se+"/cow-staging",[c.GNOSIS_CHAIN]:se+"/cow-gc-staging",[c.ARBITRUM_ONE]:null,[c.SEPOLIA]:null};class pe{constructor(e={}){this.API_NAME="CoW Protocol Subgraph",this.context=void 0,this.context={...m,...e}}getTotals(e={}){try{return Promise.resolve(this.runQuery(re,void 0,e)).then(function(e){return e.totals[0]})}catch(e){return Promise.reject(e)}}getLastDaysVolume(e,t={}){try{return Promise.resolve(this.runQuery(ae,{days:e},t))}catch(e){return Promise.reject(e)}}getLastHoursVolume(e,t={}){try{return Promise.resolve(this.runQuery(ie,{hours:e},t))}catch(e){return Promise.reject(e)}}runQuery(e,t=undefined,n={}){try{const a=this,{chainId:i,env:s}=a.getContextWithOverride(n),o=a.getEnvConfigs(s)[i];if(null===o)throw new Error("Unsupported Network. The subgraph API is not available in the Network "+i);return Promise.resolve(function(n,a){try{var i=Promise.resolve(r(o,e,t))}catch(e){return a(e)}return i&&i.then?i.then(void 0,a):i}(0,function(n){throw console.error(`[subgraph:${a.API_NAME}]`,n),new T(`Error running query: ${e}. Variables: ${JSON.stringify(t)}. API: ${o}. Inner Error: ${n}`)}))}catch(e){return Promise.reject(e)}}getContextWithOverride(e={}){return{...this.context,...e}}getEnvConfigs(e){return this.context.baseUrls?this.context.baseUrls:"prod"===e?oe:ue}}const de=()=>import("./utils-7951fc9a.js");class le{static signOrder(e,t,n){try{return Promise.resolve(de()).then(function({signOrder:r}){return r(e,t,n)})}catch(e){return Promise.reject(e)}}static signOrderCancellation(e,t,n){try{return Promise.resolve(de()).then(function({signOrderCancellation:r}){return r(e,t,n)})}catch(e){return Promise.reject(e)}}static signOrderCancellations(e,t,n){try{return Promise.resolve(de()).then(function({signOrderCancellations:r}){return r(e,t,n)})}catch(e){return Promise.reject(e)}}static getDomain(e){try{return Promise.resolve(de()).then(function({getDomain:t}){return t(e)})}catch(e){return Promise.reject(e)}}static getDomainSeparator(e){try{return Promise.resolve(de()).then(function({getDomain:t}){return Promise.resolve(import("ethers/lib/utils")).then(function({_TypedDataEncoder:n}){return n.hashDomain(t(e))})})}catch(e){return Promise.reject(e)}}static getEIP712Types(){return{Order:[{name:"sellToken",type:"address"},{name:"buyToken",type:"address"},{name:"receiver",type:"address"},{name:"sellAmount",type:"uint256"},{name:"buyAmount",type:"uint256"},{name:"validTo",type:"uint32"},{name:"appData",type:"bytes32"},{name:"feeAmount",type:"uint256"},{name:"kind",type:"string"},{name:"partiallyFillable",type:"bool"},{name:"sellTokenBalance",type:"string"},{name:"buyTokenBalance",type:"string"}]}}}var ce,ye;!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"}(ce||(ce={})),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"}(ye||(ye={}));const me=[{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 Te{static createInterface(){return new a.Interface(me)}static connect(e,t){return new i(e,me,t)}}Te.abi=me;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 fe{static createInterface(){return new a.Interface(he)}static connect(e,t){return new i(e,he,t)}}fe.abi=he;const be=function(e){try{return Promise.resolve(e.getBlock("latest")).then(function(e){return{blockNumber:e.number,blockTimestamp:e.timestamp}})}catch(e){return Promise.reject(e)}},Ie=function(e,t,n,r){try{const a=fe.connect(N[n],r);return Promise.resolve(a.callStatic.domainVerifiers(e,t))}catch(e){return Promise.reject(e)}},Ee=["erc20","0x5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9"],Ae=["external","0xabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea0632"],Oe=["internal","0x4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce"],ve=["sell","0xf3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775"],Pe=["buy","0x6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc"],ge=["tuple(address handler, bytes32 salt, bytes staticInput)"],Se=(e,t)=>`${t}@${e}`;function Ne(e,t){return e===N[t]}function _e(e,t){return e===_[t]}function we(e,t){return fe.createInterface().encodeFunctionData("setDomainVerifier",[e,t])}function Re(e){return a.defaultAbiCoder.encode(ge,[e])}function Ce(e){const{handler:t,salt:n,staticInput:r}=a.defaultAbiCoder.decode(ge,e)[0];return{handler:t,salt:n,staticInput:r}}function De(e,t){try{a.defaultAbiCoder.encode(e,t)}catch(e){return!1}return!0}function Me(e){return new Date(1e3*e).toISOString()}function xe(e){if(Ee.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 Ue(e){if(ve.includes(e))return d.SELL;if(Pe.includes(e))return d.BUY;throw new Error(`Unknown kind: ${e}`)}function Le(e){const{sellToken:t,sellAmount:n,buyToken:r,buyAmount:a,buyTokenBalance:i,sellTokenBalance:s,feeAmount:o,kind:u,receiver:p,validTo:d,partiallyFillable:l,appData:c}=e;return{sellToken:t,sellAmount:n,buyToken:r,buyAmount:a,feeAmount:o,receiver:p,partiallyFillable:l,appData:c,validTo:Number(d),kind:Ue(u.toString()),sellTokenBalance:xe(s.toString()),buyTokenBalance:xe(i.toString())}}let ke,Be;function Fe(){return ke||(ke=Te.createInterface()),ke}function Ve(e,t){return Be||(Be=Te.connect(_[e],t)),Be}class $e{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=a.keccak256(a.randomBytes(32)),data:r,hasOffChainInput:i=!1}=e;if(!s.utils.isAddress(t))throw new Error(`Invalid handler: ${t}`);if(!s.utils.isHexString(n)||32!==s.utils.hexDataLength(n))throw new Error(`Invalid salt: ${n}`);this.handler=t,this.salt=n,this.data=r,this.staticInput=this.transformDataToStruct(r),this.hasOffChainInput=i}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=Fe(),n={handler:this.handler,salt:this.salt,staticInput:this.encodeStaticInput()};if(e){const r=e.factoryArgs?a.defaultAbiCoder.encode(e.factoryArgs.argsType,e.factoryArgs.args):"0x";return t.encodeFunctionData("createWithContext",[n,e.address,r,!0])}return t.encodeFunctionData("create",[n,!0])}get removeCalldata(){return this.assertIsValid(),Fe().encodeFunctionData("remove",[this.id])}get id(){return a.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 a.keccak256(Re(e))}get offChainInput(){return"0x"}encodeStaticInputHelper(e,t){return a.defaultAbiCoder.encode(e,[t])}poll(e){try{const t=this,{chainId:n,owner:r,provider:a,orderBookApi:i}=e,s=Ve(n,a);return Promise.resolve(function(a,o){try{var u=function(){const a=t.isValid();return a.isValid?Promise.resolve(t.pollValidate(e)).then(function(a){return a||Promise.resolve(t.isAuthorized(e)).then(function(a){return a?Promise.resolve(s.getTradeableOrderWithSignature(r,t.leaf,t.offChainInput,[])).then(function([a,s]){return Promise.resolve(function(e,t,n){try{return Promise.resolve(import("@cowprotocol/contracts")).then(function({computeOrderUid:r}){return Promise.resolve(le.getDomain(e)).then(function(e){return r(e,n,t)})})}catch(e){return Promise.reject(e)}}(n,r,Le(a))).then(function(n){return Promise.resolve(i.getOrder(n).then(()=>!0).catch(()=>!1)).then(function(r){let i;function o(e){return i?e:{result:ye.SUCCESS,order:a,signature:s}}const u=function(){if(r)return Promise.resolve(t.handlePollFailedAlreadyPresent(n,a,e)).then(function(e){return e?(i=1,e):(i=1,{result:ye.TRY_NEXT_BLOCK,reason:"Order already in orderbook"})})}();return u&&u.then?u.then(o):o(u)})})}):{result:ye.DONT_TRY_AGAIN,reason:`NotAuthorized: Order ${t.id} is not authorized for ${r} on chain ${n}`}})}):{result:ye.DONT_TRY_AGAIN,reason:`InvalidConditionalOrder. Reason: ${a.reason}`}}()}catch(e){return o(e)}return u&&u.then?u.then(void 0,o):u}(0,function(e){return{result:ye.UNEXPECTED_ERROR,error:e}}))}catch(e){return Promise.reject(e)}}isAuthorized(e){const{chainId:t,owner:n,provider:r}=e;return Ve(t,r).callStatic.singleOrders(n,this.id)}cabinet(e){const{chainId:t,owner:n,provider:r}=e;return Ve(t,r).callStatic.cabinet(n,this.ctx)}static deserializeHelper(e,t,n,r){try{const{handler:i,salt:s,staticInput:o}=Ce(e);if(i!=t)throw new Error("HandlerMismatch");const[u]=a.defaultAbiCoder.decode(n,o);return r(u,s)}catch(e){throw"HandlerMismatch"===e.message?e:new Error("InvalidSerializedConditionalOrder")}}}const Ge=["address","bytes32","bytes"],We=["tuple(bytes32[] proof, tuple(address handler, bytes32 salt, bytes staticInput) params)[]"];class je{constructor(e,t,n,r=ce.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=r,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(!je.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:r,location:a}=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{orderType:r,...a}=t[n];if(!je.orderTypeRegistry.hasOwnProperty(r))throw new Error(`Unknown order type: ${r}`);e[n]=new(0,je.orderTypeRegistry[r])(a)}return e}return"object"==typeof t&&null!==t&&t.hasOwnProperty("type")&&t.hasOwnProperty("hex")&&"BigNumber"===t.type?u.from(t):t}),i=new je(t,n,r);return i.location=a,i}toJSON(){const e=this.getOrGenerateTree().root;return JSON.stringify({...this,root:e},(e,t)=>{if("tree"!==e){if("object"==typeof t&&null!==t&&"orderType"in t){const e=t;return{...e,orderType:e.orderType}}return 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=l.of(Object.values(this.orders).map(e=>[...Object.values(e.leaf)]),Ge)),this.tree}static decodeFromJSON(e){return JSON.parse(e)}prepareProofStruct(e,t,n){try{const r=this;void 0===e&&(e=r.location);const i=function(){try{switch(e){case ce.PRIVATE:return Promise.resolve("0x");case ce.EMITTED:return Promise.resolve(r.encodeToABI(t));case ce.SWARM:case ce.WAKU:case ce.IPFS:if(!n)throw new Error("Must provide an uploader function");return Promise.resolve(function(e,a){try{var i=Promise.resolve(n(r.encodeToJSON(t)))}catch(e){return a(e)}return i&&i.then?i.then(void 0,a):i}(0,function(t){throw new Error(`Error uploading to decentralized storage ${e}: ${t}`)}));default:throw new Error("Unsupported location")}}catch(e){return Promise.reject(e)}};return Promise.resolve(i().then(t=>{try{return a.hexlify(a.arrayify(t)),r.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}`)}))}catch(e){return Promise.reject(e)}}static poll(e,t,n,r,a){try{function i(n){return Promise.resolve(s.getTradeableOrderWithSignature(e,t.params,n,t.proof))}const s=Ve(n,r);return Promise.resolve(a?Promise.resolve(a(e,t.params)).then(i):i("0x"))}catch(o){return Promise.reject(o)}}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 a.defaultAbiCoder.encode(We,[this.getProofs(e)])}encodeToJSON(e){return JSON.stringify(this.getProofs(e))}reset(){this.tree=void 0}static registerOrderType(e,t){je.orderTypeRegistry[e]=t}static resetOrderTypeRegistry(){je.orderTypeRegistry={}}}je.orderTypeRegistry={};class He{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 Ye="0x6cF1e9cA41f7611dEf408122793c358a3d11E5a5",Ze="0x52eD56Da04309Aca4c3FECC595298d80C2f16BAc",Ke=u.from(2).pow(32).sub(1),Xe=u.from(31536e3),qe=["tuple(address sellToken, address buyToken, address receiver, uint256 partSellAmount, uint256 minPartLimit, uint256 t0, uint256 n, uint256 t, uint256 span, bytes32 appData)"];var ze,Je;!function(e){e.AUTO="AUTO",e.LIMIT_DURATION="LIMIT_DURATION"}(ze||(ze={})),function(e){e.AT_MINING_TIME="AT_MINING_TIME",e.AT_EPOCH="AT_EPOCH"}(Je||(Je={}));const Qe={startType:Je.AT_MINING_TIME},et={durationType:ze.AUTO};class tt extends $e{constructor(e){const{handler:t,salt:n,data:r,hasOffChainInput:a}=e;if(t!==Ye)throw new Error(`InvalidHandler: Expected: ${Ye}, provided: ${t}`);super({handler:Ye,salt:n,data:r,hasOffChainInput:a}),this.isSingleOrder=!0}static fromData(e,t){return new tt({handler:Ye,data:e,salt:t})}static fromParams(e){return tt.deserialize(Re(e))}get context(){return this.staticInput.t0.gt(0)?super.context:{address:Ze,factoryArgs:void 0}}get orderType(){return"twap"}isValid(){const e=(()=>{const{sellToken:e,sellAmount:t,buyToken:n,buyAmount:r,startTime:a=Qe,numberOfParts:i,timeBetweenParts:s,durationOfPart:u=et}=this.data;if(e==n)return"InvalidSameToken";if(e==o.AddressZero||n==o.AddressZero)return"InvalidToken";if(!t.gt(o.Zero))return"InvalidSellAmount";if(!r.gt(o.Zero))return"InvalidMinBuyAmount";if(a.startType===Je.AT_EPOCH){const e=a.epoch;if(!e.gte(o.Zero)||!e.lt(Ke))return"InvalidStartTime"}return i.gt(o.One)&&i.lte(Ke)?s.gt(o.Zero)&&s.lte(Xe)?u.durationType!==ze.LIMIT_DURATION||u.duration.lte(s)?De(qe,[this.staticInput])?void 0:"InvalidData":"InvalidSpan":"InvalidFrequency":"InvalidNumParts"})();return e?{isValid:!1,reason:e}:{isValid:!0}}startTimestamp(e){try{const t=this,{startTime:n}=t.data;return n?.startType===Je.AT_EPOCH?Promise.resolve(n.epoch.toNumber()):Promise.resolve(t.cabinet(e)).then(function(e){const t=a.defaultAbiCoder.decode(["uint256"],e)[0];if(t.gt(Ke))throw new Error(`Cabinet epoch out of range: ${t.toString()}`);const n=t.toNumber();if(0===n)throw new Error("Cabinet is not set. Required for TWAP orders that start at mining time.");return n})}catch(e){return Promise.reject(e)}}endTimestamp(e){const{numberOfParts:t,timeBetweenParts:n,durationOfPart:r}=this.data;return r&&r.durationType===ze.LIMIT_DURATION?e+t.sub(1).mul(n).add(r.duration).toNumber():e+t.mul(n).toNumber()}pollValidate(e){try{const t=this;return Promise.resolve(be(e.provider)).then(function(n){const{blockInfo:r=n}=e,{blockTimestamp:a}=r;return function(n,r){try{var i=Promise.resolve(t.startTimestamp(e)).then(function(e){if(e>a)return{result:ye.TRY_AT_EPOCH,epoch:e,reason:`TWAP hasn't started yet. Starts at ${e} (${Me(e)})`};const n=t.endTimestamp(e);return a>=n?{result:ye.DONT_TRY_AGAIN,reason:`TWAP has expired. Expired at ${n} (${Me(n)})`}:void 0})}catch(e){return r(e)}return i&&i.then?i.then(void 0,r):i}(0,function(e){return e?.message?.includes("Cabinet is not set")?{result:ye.DONT_TRY_AGAIN,reason:`${e?.message}. User likely removed the order.`}:e?.message?.includes("Cabinet epoch out of range")?{result:ye.DONT_TRY_AGAIN,reason:`${e?.message}`}:{result:ye.UNEXPECTED_ERROR,reason:`Unexpected error: ${e.message}`,error:e}})})}catch(e){return Promise.reject(e)}}handlePollFailedAlreadyPresent(e,t,n){try{const e=this;return Promise.resolve(be(n.provider)).then(function(t){const{blockInfo:r=t}=n,{blockTimestamp:a}=r,i=e.data.timeBetweenParts.toNumber(),{numberOfParts:s}=e.data;return Promise.resolve(e.startTimestamp(n)).then(function(e){if(a<e)return{result:ye.UNEXPECTED_ERROR,reason:`TWAP part hash't started. First TWAP part start at ${e} (${Me(e)})`,error:void 0};const t=s.mul(i).add(e).toNumber();if(a>=t)return{result:ye.UNEXPECTED_ERROR,reason:`TWAP is expired. Expired at ${t} (${Me(t)})`,error:void 0};const n=Math.floor((a-e)/i);if(n===s.toNumber()-1)return{result:ye.DONT_TRY_AGAIN,reason:`Current active TWAP part (${n+1}/${s}) is already in the Order Book. This was the last TWAP part, no more orders need to be placed`};const r=e+(n+1)*i;return{result:ye.TRY_AT_EPOCH,epoch:r,reason:`Current active TWAP part (${n+1}/${s}) is already in the Order Book. TWAP part ${n+2} doesn't start until ${r} (${Me(r)})`}})})}catch(e){return Promise.reject(e)}}serialize(){return Re(this.leaf)}encodeStaticInput(){return super.encodeStaticInputHelper(qe,this.staticInput)}static deserialize(e){return super.deserializeHelper(e,Ye,qe,(e,t)=>new tt({handler:Ye,salt:t,data:rt(e)}))}toString(){const{sellAmount:e,sellToken:t,buyAmount:n,buyToken:r,numberOfParts:a,startTime:i=Qe,timeBetweenParts:s,durationOfPart:o=et,receiver:u,appData:p}=this.data,d=i.startType===Je.AT_MINING_TIME?"AT_MINING_TIME":i.epoch.toNumber(),l=o.durationType===ze.AUTO?"AUTO":o.duration.toNumber(),c={sellAmount:e.toString(),sellToken:t,buyAmount:n.toString(),buyToken:r,numberOfParts:a.toString(),startTime:d,timeBetweenParts:s.toNumber(),durationOfPart:l,receiver:u,appData:p};return`${this.orderType} (${this.id}): ${JSON.stringify(c)}`}transformDataToStruct(e){return nt(e)}transformStructToData(e){return rt(e)}}function nt(e){const{sellAmount:t,buyAmount:n,numberOfParts:r,startTime:a=Qe,timeBetweenParts:i,durationOfPart:s=et,...u}=e,{partSellAmount:p,minPartLimit:d}=r&&!r.isZero()?{partSellAmount:t.div(r),minPartLimit:n.div(r)}:{partSellAmount:o.Zero,minPartLimit:o.Zero};return{partSellAmount:p,minPartLimit:d,t0:a.startType===Je.AT_MINING_TIME?o.Zero:a.epoch,n:r,t:i,span:s.durationType===ze.AUTO?o.Zero:s.duration,...u}}function rt(e){const{n:t,partSellAmount:n,minPartLimit:r,t:a,t0:i,span:s,...o}=e,u=s.isZero()?{durationType:ze.AUTO}:{durationType:ze.LIMIT_DURATION,duration:s},p=s.isZero()?{startType:Je.AT_MINING_TIME}:{startType:Je.AT_EPOCH,epoch:i};return{sellAmount:n.mul(t),buyAmount:r.mul(t),startTime:p,numberOfParts:t,timeBetweenParts:a,durationOfPart:u,...o}}const at={[Ye]:e=>tt.fromParams(e)};export{O as ALL_SUPPORTED_CHAIN_IDS,I as BUY_ETH_ADDRESS,V as BuyTokenDestination,A as COMPOSABLE_COW,_ as COMPOSABLE_COW_CONTRACT_ADDRESS,ge as CONDITIONAL_ORDER_PARAMS_ABI,g as COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS,S as COW_PROTOCOL_VAULT_RELAYER_ADDRESS,Ze as CURRENT_BLOCK_TIMESTAMP_FACTORY_ADDRESS,$e as ConditionalOrder,He as ConditionalOrderFactory,T as CowError,D as DEFAULT_BACKOFF_OPTIONS,at as DEFAULT_CONDITIONAL_ORDER_REGISTRY,m as DEFAULT_COW_API_CONTEXT,f as DEFAULT_IPFS_READ_URI,b as DEFAULT_IPFS_WRITE_URI,M as DEFAULT_LIMITER_OPTIONS,Se as DEFAULT_TOKEN_FORMATTER,ze as DurationType,y as ENVS_LIST,E as EXTENSIBLE_FALLBACK_HANDLER,N as EXTENSIBLE_FALLBACK_HANDLER_CONTRACT_ADDRESS,$ as EcdsaSigningScheme,Xe as MAX_FREQUENCY,Ke as MAX_UINT32,je as Multiplexer,L as ORDER_BOOK_PROD_CONFIG,k as ORDER_BOOK_STAGING_CONFIG,G as OnchainOrderData,F as OrderBookApi,R as OrderBookApiError,W as OrderCancellationError,j as OrderClass,H as OrderKind,Y as OrderPostError,Z as OrderQuoteSideKindBuy,K as OrderQuoteSideKindSell,le as OrderSigningUtils,X as OrderStatus,ye as PollResultCode,q as PriceEstimationError,z as PriceQuality,ce as ProofLocation,oe as SUBGRAPH_PROD_CONFIG,ue as SUBGRAPH_STAGING_CONFIG,J as SellTokenSource,Q as SigningScheme,Je as StartTimeValue,pe as SubgraphApi,c as SupportedChainId,Ye as TWAP_ADDRESS,tt as Twap,we as createSetDomainVerifierTx,Ce as decodeParams,Re as encodeParams,Me as formatEpoch,Le as fromStructToOrder,be as getBlockInfo,Ie as getDomainVerifier,te as getQuoteAmountsAndCosts,_e as isComposableCow,Ne as isExtensibleFallbackHandler,De as isValidAbi,h as logPrefix,P as mapAddressToSupportedNetworks,v as mapSupportedNetworks,w as request,nt as transformDataToStruct,rt as transformStructToData}; | ||
//# sourceMappingURL=index.module.js.map |
{ | ||
"name": "@cowprotocol/cow-sdk", | ||
"version": "5.3.1", | ||
"version": "5.3.2", | ||
"license": "(MIT OR Apache-2.0)", | ||
@@ -5,0 +5,0 @@ "files": [ |
{ | ||
"name": "@cowprotocol/cow-sdk", | ||
"version": "5.3.1", | ||
"version": "5.3.2", | ||
"license": "(MIT OR Apache-2.0)", | ||
@@ -5,0 +5,0 @@ "files": [ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
1115585