@cowprotocol/cow-sdk 0.0.12 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/utils/common.ts","../src/constants/chains.ts","../src/constants/index.ts","../src/utils/sign.ts","../src/api/cow/errors/OperatorError.ts","../src/api/cow/errors/QuoteError.ts","../src/types/index.ts","../src/constants/tokens.ts","../src/utils/tokens.ts","../src/api/cow/index.ts","../src/api/cow-subgraph/queries.ts","../src/api/cow-subgraph/index.ts","../src/utils/appData.ts","../src/api/metadata/index.ts","../src/utils/ipfs.ts","../src/utils/context.ts","../src/api/cow-subgraph/graphql.ts","../src/CowSdk.ts"],"sourcesContent":["export class CowError extends Error {\n error_code?: string\n\n constructor(message: string, error_code?: string) {\n super(message)\n this.error_code = error_code\n }\n}\n\nexport function objectToQueryString(o: { [key: string]: string | number | undefined }): string {\n if (!o) {\n return ''\n }\n\n const qs = new URLSearchParams()\n\n for (const key of Object.keys(o)) {\n const value = o[key]\n if (value) {\n qs.append(key, value.toString())\n }\n }\n\n const qsResult = qs.toString()\n\n return qsResult ? `?${qsResult}` : ''\n}\n\nexport const logPrefix = 'cow-sdk:'\n\nexport function fromHexString(hexString: string) {\n const stringMatch = hexString.match(/.{1,2}/g)\n if (!stringMatch) return\n return new Uint8Array(stringMatch.map((byte) => parseInt(byte, 16)))\n}\n","export enum SupportedChainId {\n MAINNET = 1,\n RINKEBY = 4,\n GNOSIS_CHAIN = 100,\n}\n\nexport const ALL_SUPPORTED_CHAIN_IDS: SupportedChainId[] = [\n SupportedChainId.MAINNET,\n SupportedChainId.RINKEBY,\n SupportedChainId.GNOSIS_CHAIN,\n]\n","import contractNetworks from '@gnosis.pm/gp-v2-contracts/networks.json'\nimport { SupportedChainId as ChainId } from './chains'\n\nconst { GPv2Settlement } = contractNetworks\n\nexport const GP_SETTLEMENT_CONTRACT_ADDRESS: Partial<Record<number, string>> = {\n [ChainId.MAINNET]: GPv2Settlement[ChainId.MAINNET].address,\n [ChainId.RINKEBY]: GPv2Settlement[ChainId.RINKEBY].address,\n [ChainId.GNOSIS_CHAIN]: GPv2Settlement[ChainId.GNOSIS_CHAIN].address,\n}\n\nexport const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'\n\nexport const DEFAULT_APP_DATA_HASH = '0x0000000000000000000000000000000000000000000000000000000000000000'\n\nexport const DEFAULT_IPFS_GATEWAY_URI = 'https://gnosis.mypinata.cloud/ipfs'\n","import {\n domain as domainGp,\n signOrder as signOrderGp,\n signOrderCancellation as signOrderCancellationGp,\n EcdsaSignature,\n Order,\n OrderCancellation as OrderCancellationGp,\n Signature,\n TypedDataV3Signer,\n IntChainIdTypedDataV4Signer,\n SigningScheme,\n} from '@gnosis.pm/gp-v2-contracts'\nimport log from 'loglevel'\n\nimport { SupportedChainId as ChainId } from '../constants/chains'\nimport { GP_SETTLEMENT_CONTRACT_ADDRESS } from '../constants'\nimport { TypedDataDomain, Signer } from '@ethersproject/abstract-signer'\nimport { CowError, logPrefix } from './common'\n\n// For error codes, see:\n// - https://eth.wiki/json-rpc/json-rpc-error-codes-improvement-proposal\n// - https://www.jsonrpc.org/specification#error_object\nconst METAMASK_SIGNATURE_ERROR_CODE = -32603\nconst METHOD_NOT_FOUND_ERROR_CODE = -32601\nconst V4_ERROR_MSG_REGEX = /eth_signTypedData_v4 does not exist/i\nconst V3_ERROR_MSG_REGEX = /eth_signTypedData_v3 does not exist/i\nconst RPC_REQUEST_FAILED_REGEX = /RPC request failed/i\nconst METAMASK_STRING_CHAINID_REGEX = /provided chainid .* must match the active chainid/i\n\nexport type UnsignedOrder = Omit<Order, 'receiver'> & { receiver: string }\n\nexport interface SignOrderParams {\n chainId: ChainId\n signer: Signer\n order: UnsignedOrder\n signingScheme: SigningScheme\n}\n\n// posted to /api/v1/orders on Order creation\n// serializable, so no BigNumbers\n// See https://protocol-rinkeby.dev.gnosisdev.com/api/\nexport interface OrderCreation extends UnsignedOrder {\n signingScheme: SigningScheme // signed method\n\n // Signature is used for:\n // - Signature: EIP-712,ETHSIGN\n // - Owner address: for PRESIGN\n signature: string // 65 bytes encoded as hex without `0x` prefix. r + s + v from the spec\n}\n\nexport interface SingOrderCancellationParams {\n chainId: ChainId\n signer: Signer\n orderId: string\n signingScheme: SigningScheme\n}\n\nexport interface OrderCancellation extends OrderCancellationGp {\n signature: string\n signingScheme: SigningScheme\n}\n\nexport type SigningSchemeValue = 'eip712' | 'ethsign' | 'eip1271' | 'presign'\n\ninterface SchemaInfo {\n libraryValue: number\n apiValue: SigningSchemeValue\n}\nconst mapSigningSchema: Map<SigningScheme, SchemaInfo> = new Map([\n [SigningScheme.EIP712, { libraryValue: 0, apiValue: 'eip712' }],\n [SigningScheme.ETHSIGN, { libraryValue: 1, apiValue: 'ethsign' }],\n [SigningScheme.EIP1271, { libraryValue: 2, apiValue: 'eip1271' }],\n [SigningScheme.PRESIGN, { libraryValue: 3, apiValue: 'presign' }],\n])\n\nfunction _getSigningSchemeInfo(ecdaSigningScheme: SigningScheme): SchemaInfo {\n const value = mapSigningSchema.get(ecdaSigningScheme)\n if (value === undefined) {\n throw new CowError('Unknown schema ' + ecdaSigningScheme)\n }\n\n return value\n}\n\ninterface ProviderRpcError extends Error {\n message: string\n code: number\n data?: unknown\n}\n\nfunction isProviderRpcError(error: unknown): error is ProviderRpcError {\n return (error as ProviderRpcError).code !== undefined || (error as ProviderRpcError).message !== undefined\n}\n\nexport function getSigningSchemeApiValue(ecdaSigningScheme: SigningScheme): string {\n return _getSigningSchemeInfo(ecdaSigningScheme).apiValue\n}\n\nexport function getSigningSchemeLibValue(ecdaSigningScheme: SigningScheme): number {\n return _getSigningSchemeInfo(ecdaSigningScheme).libraryValue\n}\n\nfunction _getDomain(chainId: ChainId): TypedDataDomain {\n // Get settlement contract address\n const settlementContract = GP_SETTLEMENT_CONTRACT_ADDRESS[chainId]\n\n if (!settlementContract) {\n throw new CowError('Unsupported network. Settlement contract is not deployed')\n }\n\n return domainGp(chainId, settlementContract)\n}\n\nasync function _signOrder(params: SignOrderParams): Promise<Signature> {\n const { chainId, signer, order, signingScheme } = params\n\n const domain = _getDomain(chainId)\n\n return signOrderGp(domain, order, signer, getSigningSchemeLibValue(signingScheme))\n}\n\nasync function _signOrderCancellation(params: SingOrderCancellationParams): Promise<Signature> {\n const { chainId, signer, signingScheme, orderId } = params\n\n const domain = _getDomain(chainId)\n\n return signOrderCancellationGp(domain, orderId, signer, getSigningSchemeLibValue(signingScheme))\n}\n\nexport type SigningResult = { signature?: string; signingScheme: SigningScheme }\n\nasync function _signPayload(\n payload: Pick<SignOrderParams, 'order' & 'chainId'> | Pick<SingOrderCancellationParams, 'chainId' & 'orderId'>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n signFn: (params: any) => Promise<Signature>,\n signer: Signer,\n signingMethod: 'v4' | 'int_v4' | 'v3' | 'eth_sign' = 'v4'\n): Promise<SigningResult> {\n const signingScheme: SigningScheme = signingMethod === 'eth_sign' ? SigningScheme.ETHSIGN : SigningScheme.EIP712\n let signature: Signature | null = null\n\n let _signer\n try {\n switch (signingMethod) {\n case 'v3':\n _signer = new TypedDataV3Signer(signer)\n break\n case 'int_v4':\n _signer = new IntChainIdTypedDataV4Signer(signer)\n break\n default:\n _signer = signer\n }\n } catch (e) {\n log.error(logPrefix, 'Wallet not supported:', e)\n throw new CowError('Wallet not supported')\n }\n\n try {\n signature = (await signFn({ ...payload, signer: _signer, signingScheme })) as EcdsaSignature // Only ECDSA signing supported for now\n } catch (e) {\n if (!isProviderRpcError(e)) {\n // Some other error signing. Let it bubble up.\n log.error(logPrefix, e)\n throw e\n }\n\n if (e.code === METHOD_NOT_FOUND_ERROR_CODE || RPC_REQUEST_FAILED_REGEX.test(e.message)) {\n // Maybe the wallet returns the proper error code? We can only hope 🤞\n // OR it failed with a generic message, there's no error code set, and we also hope it'll work\n // with other methods...\n switch (signingMethod) {\n case 'v4':\n return _signPayload(payload, signFn, signer, 'v3')\n case 'v3':\n return _signPayload(payload, signFn, signer, 'eth_sign')\n default:\n throw e\n }\n } else if (METAMASK_STRING_CHAINID_REGEX.test(e.message)) {\n // Metamask now enforces chainId to be an integer\n return _signPayload(payload, signFn, signer, 'int_v4')\n } else if (e.code === METAMASK_SIGNATURE_ERROR_CODE) {\n // We tried to sign order the nice way.\n // That works fine for regular MM addresses. Does not work for Hardware wallets, though.\n // See https://github.com/MetaMask/metamask-extension/issues/10240#issuecomment-810552020\n // So, when that specific error occurs, we know this is a problem with MM + HW.\n // Then, we fallback to ETHSIGN.\n return _signPayload(payload, signFn, signer, 'eth_sign')\n } else if (V4_ERROR_MSG_REGEX.test(e.message)) {\n // Failed with `v4`, and the wallet does not set the proper error code\n return _signPayload(payload, signFn, signer, 'v3')\n } else if (V3_ERROR_MSG_REGEX.test(e.message)) {\n // Failed with `v3`, and the wallet does not set the proper error code\n return _signPayload(payload, signFn, signer, 'eth_sign')\n }\n }\n return { signature: signature?.data.toString(), signingScheme }\n}\n/**\n * Returns the signature for the specified order with the signing scheme encoded\n * into the signature.\n * @export\n * @param {UnsignedOrder} order The order to sign.\n * @param {ChainId} chainId The chain Id\n * @param {Signer} signer The owner for the order used to sign.\n * @return {*} Encoded signature including signing scheme for the order.\n */\nexport async function signOrder(order: UnsignedOrder, chainId: ChainId, signer: Signer): Promise<SigningResult> {\n return _signPayload({ order, chainId }, _signOrder, signer)\n}\n\n/**\n * Returns the signature for the Order Cancellation with the signing scheme encoded\n * into the signature.\n *\n * @export\n * @param {string} orderId The unique identifier of the order being cancelled.\n * @param {ChainId} chainId The chain Id\n * @param {Signer} signer The owner for the order used to sign.\n * @return {*} Encoded signature including signing scheme for the order.\n */\nexport async function signOrderCancellation(orderId: string, chainId: ChainId, signer: Signer): Promise<SigningResult> {\n return _signPayload({ orderId, chainId }, _signOrderCancellation, signer)\n}\n","import log from 'loglevel'\nimport { CowError, logPrefix } from '../../../utils/common'\n\ntype ApiActionType = 'get' | 'create' | 'delete'\n\nexport interface ApiErrorObject {\n errorType: ApiErrorCodes\n description: string\n data?: unknown\n}\n\n// Conforms to backend API\n// https://github.com/gnosis/gp-v2-services/blob/d932e11c9a2125fdba239530be7684799f694909/crates/orderbook/openapi.yml#L801\n// and\n// https://github.com/gnosis/gp-v2-services/blob/d932e11c9a2125fdba239530be7684799f694909/crates/orderbook/openapi.yml#L740\nexport enum ApiErrorCodes {\n DuplicateOrder = 'DuplicateOrder',\n InvalidSignature = 'InvalidSignature',\n MissingOrderData = 'MissingOrderData',\n InsufficientValidTo = 'InsufficientValidTo',\n InsufficientAllowance = 'InsufficientAllowance',\n InsufficientBalance = 'InsufficientBalance',\n InsufficientFee = 'InsufficientFee',\n WrongOwner = 'WrongOwner',\n NotFound = 'NotFound',\n OrderNotFound = 'OrderNotFound',\n AlreadyCancelled = 'AlreadyCancelled',\n OrderFullyExecuted = 'OrderFullyExecuted',\n OrderExpired = 'OrderExpired',\n NoLiquidity = 'NoLiquidity',\n UnsupportedToken = 'UnsupportedToken',\n AmountIsZero = 'AmountIsZero',\n SellAmountDoesNotCoverFee = 'SellAmountDoesNotCoverFee',\n TransferEthToContract = 'TransferEthToContract',\n UNHANDLED_GET_ERROR = 'UNHANDLED_GET_ERROR',\n UNHANDLED_CREATE_ERROR = 'UNHANDLED_CREATE_ERROR',\n UNHANDLED_DELETE_ERROR = 'UNHANDLED_DELETE_ERROR',\n}\n\nexport enum ApiErrorCodeDetails {\n DuplicateOrder = 'There was another identical order already submitted. Please try again.',\n InsufficientFee = \"The signed fee is insufficient. It's possible that is higher now due to a change in the gas price, ether price, or the sell token price. Please try again to get an updated fee quote.\",\n InvalidSignature = 'The order signature is invalid. Check whether your Wallet app supports off-chain signing.',\n MissingOrderData = 'The order has missing information',\n InsufficientValidTo = 'The order you are signing is already expired. This can happen if you set a short expiration in the settings and waited too long before signing the transaction. Please try again.',\n InsufficientAllowance = \"The account doesn't have enough funds\",\n InsufficientBalance = 'The account needs to approve the selling token in order to trade',\n WrongOwner = \"The signature is invalid.\\n\\nIt's likely that the signing method provided by your wallet doesn't comply with the standards required by CowSwap.\\n\\nCheck whether your Wallet app supports off-chain signing (EIP-712 or ETHSIGN).\",\n NotFound = 'Token pair selected has insufficient liquidity',\n OrderNotFound = 'The order you are trying to cancel does not exist',\n AlreadyCancelled = 'Order is already cancelled',\n OrderFullyExecuted = 'Order is already filled',\n OrderExpired = 'Order is expired',\n NoLiquidity = 'Token pair selected has insufficient liquidity',\n UnsupportedToken = 'One of the tokens you are trading is unsupported. Please read the FAQ for more info.',\n AmountIsZero = 'Amount is zero',\n SellAmountDoesNotCoverFee = 'Sell amount does not sufficiently cover the current fee',\n TransferEthToContract = 'Sending the native currency to smart contract wallets is not currently supported',\n UNHANDLED_GET_ERROR = 'Order fetch failed. This may be due to a server or network connectivity issue. Please try again later.',\n UNHANDLED_CREATE_ERROR = 'The order was not accepted by the network',\n UNHANDLED_DELETE_ERROR = 'The order cancellation was not accepted by the network',\n}\n\nfunction _mapActionToErrorDetail(action?: ApiActionType) {\n switch (action) {\n case 'get':\n return ApiErrorCodeDetails.UNHANDLED_GET_ERROR\n case 'create':\n return ApiErrorCodeDetails.UNHANDLED_CREATE_ERROR\n case 'delete':\n return ApiErrorCodeDetails.UNHANDLED_DELETE_ERROR\n default:\n log.error(\n logPrefix,\n '[OperatorError::_mapActionToErrorDetails] Uncaught error mapping error action type to server error. Please try again later.'\n )\n return 'Something failed. Please try again later.'\n }\n}\n\nexport default class OperatorError extends CowError {\n name = 'OperatorError'\n description: ApiErrorObject['description']\n\n // Status 400 errors\n // https://github.com/gnosis/gp-v2-services/blob/9014ae55412a356e46343e051aefeb683cc69c41/orderbook/openapi.yml#L563\n static apiErrorDetails = ApiErrorCodeDetails\n\n public static async getErrorMessage(response: Response, action: ApiActionType) {\n try {\n const orderPostError: ApiErrorObject = await response.json()\n\n if (orderPostError.errorType) {\n const errorMessage = OperatorError.apiErrorDetails[orderPostError.errorType]\n // shouldn't fall through as this error constructor expects the error code to exist but just in case\n return errorMessage || orderPostError.errorType\n } else {\n log.error(logPrefix, 'Unknown reason for bad order submission', orderPostError)\n return orderPostError.description\n }\n } catch (error) {\n log.error(logPrefix, 'Error handling a 400 error. Likely a problem deserialising the JSON response')\n return _mapActionToErrorDetail(action)\n }\n }\n static async getErrorFromStatusCode(response: Response, action: 'create' | 'delete') {\n switch (response.status) {\n case 400:\n case 404:\n return this.getErrorMessage(response, action)\n\n case 403:\n return `The order cannot be ${action === 'create' ? 'accepted' : 'cancelled'}. Your account is deny-listed.`\n\n case 429:\n return `The order cannot be ${\n action === 'create' ? 'accepted. Too many order placements' : 'cancelled. Too many order cancellations'\n }. Please, retry in a minute`\n\n case 500:\n default:\n log.error(\n logPrefix,\n `[OperatorError::getErrorFromStatusCode] Error ${\n action === 'create' ? 'creating' : 'cancelling'\n } the order, status code:`,\n response.status || 'unknown'\n )\n return `Error ${action === 'create' ? 'creating' : 'cancelling'} the order`\n }\n }\n constructor(apiError: ApiErrorObject) {\n super(apiError.description, apiError.errorType)\n\n this.description = apiError.description\n this.message = ApiErrorCodeDetails[apiError.errorType]\n }\n}\n\nexport function isValidOperatorError(error: unknown): error is OperatorError {\n return error instanceof OperatorError\n}\n","import log from 'loglevel'\nimport { CowError, logPrefix } from '../../../utils/common'\nimport { ApiErrorCodes, ApiErrorObject } from './OperatorError'\n\nexport interface GpQuoteErrorObject {\n errorType: GpQuoteErrorCodes\n description: string\n data?: unknown\n}\n\n// Conforms to backend API\n// https://github.com/gnosis/gp-v2-services/blob/0bd5f7743bebaa5acd3be13e35ede2326a096f14/orderbook/openapi.yml#L562\nexport enum GpQuoteErrorCodes {\n UnsupportedToken = 'UnsupportedToken',\n InsufficientLiquidity = 'InsufficientLiquidity',\n FeeExceedsFrom = 'FeeExceedsFrom',\n ZeroPrice = 'ZeroPrice',\n UNHANDLED_ERROR = 'UNHANDLED_ERROR',\n}\n\nexport enum GpQuoteErrorDetails {\n UnsupportedToken = 'One of the tokens you are trading is unsupported. Please read the FAQ for more info.',\n InsufficientLiquidity = 'Token pair selected has insufficient liquidity',\n FeeExceedsFrom = 'Current fee exceeds entered \"from\" amount',\n ZeroPrice = 'Quoted price is zero. This is likely due to a significant price difference between the two tokens. Please try increasing amounts.',\n UNHANDLED_ERROR = 'Quote fetch failed. This may be due to a server or network connectivity issue. Please try again later.',\n}\n\nexport function mapOperatorErrorToQuoteError(error?: ApiErrorObject): GpQuoteErrorObject {\n switch (error?.errorType) {\n case ApiErrorCodes.NotFound:\n case ApiErrorCodes.NoLiquidity:\n return {\n errorType: GpQuoteErrorCodes.InsufficientLiquidity,\n description: GpQuoteErrorDetails.InsufficientLiquidity,\n }\n\n case ApiErrorCodes.SellAmountDoesNotCoverFee:\n return {\n errorType: GpQuoteErrorCodes.FeeExceedsFrom,\n description: GpQuoteErrorDetails.FeeExceedsFrom,\n data: error?.data,\n }\n\n case ApiErrorCodes.UnsupportedToken:\n return {\n errorType: GpQuoteErrorCodes.UnsupportedToken,\n description: error.description,\n }\n case ApiErrorCodes.SellAmountDoesNotCoverFee:\n return {\n errorType: GpQuoteErrorCodes.FeeExceedsFrom,\n description: error.description,\n }\n default:\n return { errorType: GpQuoteErrorCodes.UNHANDLED_ERROR, description: GpQuoteErrorDetails.UNHANDLED_ERROR }\n }\n}\n\nexport default class GpQuoteError extends CowError {\n name = 'QuoteErrorObject'\n description: string\n // any data attached\n data?: unknown\n\n // Status 400 errors\n // https://github.com/gnosis/gp-v2-services/blob/9014ae55412a356e46343e051aefeb683cc69c41/orderbook/openapi.yml#L563\n static quoteErrorDetails = GpQuoteErrorDetails\n\n public static async getErrorMessage(response: Response) {\n try {\n const orderPostError: GpQuoteErrorObject = await response.json()\n\n if (orderPostError.errorType) {\n const errorMessage = GpQuoteError.quoteErrorDetails[orderPostError.errorType]\n // shouldn't fall through as this error constructor expects the error code to exist but just in case\n return errorMessage || orderPostError.errorType\n } else {\n log.error(logPrefix, 'Unknown reason for bad quote fetch', orderPostError)\n return orderPostError.description\n }\n } catch (error) {\n log.error(logPrefix, 'Error handling 400/404 error. Likely a problem deserialising the JSON response')\n return GpQuoteError.quoteErrorDetails.UNHANDLED_ERROR\n }\n }\n\n static async getErrorFromStatusCode(response: Response) {\n switch (response.status) {\n case 400:\n case 404:\n return this.getErrorMessage(response)\n\n case 500:\n default:\n log.error(\n logPrefix,\n '[QuoteError::getErrorFromStatusCode] Error fetching quote, status code:',\n response.status || 'unknown'\n )\n return 'Error fetching quote'\n }\n }\n constructor(quoteError: GpQuoteErrorObject) {\n super(quoteError.description, quoteError.errorType)\n\n this.description = quoteError.description\n this.message = GpQuoteError.quoteErrorDetails[quoteError.errorType]\n this.data = quoteError?.data\n }\n}\n\nexport function isValidQuoteError(error: unknown): error is GpQuoteError {\n return error instanceof GpQuoteError\n}\n","export * from '../api/cow/types'\nexport * from '../api/metadata/types'\nexport { OrderKind } from '@gnosis.pm/gp-v2-contracts'\nexport class Token {\n constructor(public symbol: string, public address: string) {}\n}\n","import { SupportedChainId as ChainId } from './chains'\nimport { Token } from '../types'\n\nexport const XDAI_SYMBOL = 'XDAI'\n\nexport const WRAPPED_NATIVE_TOKEN: Record<ChainId, Token> = {\n [ChainId.MAINNET]: new Token('WETH', '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'),\n [ChainId.RINKEBY]: new Token('WETH', '0xc778417E063141139Fce010982780140Aa0cD5Ab'),\n [ChainId.GNOSIS_CHAIN]: new Token('WXDAI', '0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d'),\n}\n\nexport const NATIVE: Record<ChainId, string> = {\n [ChainId.MAINNET]: 'ETH',\n [ChainId.RINKEBY]: 'ETH',\n [ChainId.GNOSIS_CHAIN]: XDAI_SYMBOL,\n}\n","import { SupportedChainId as ChainId } from '../constants/chains'\nimport { NATIVE, WRAPPED_NATIVE_TOKEN } from '../constants/tokens'\n\nexport function toErc20Address(tokenAddress: string, chainId: ChainId): string {\n let checkedAddress = tokenAddress\n\n if (tokenAddress === NATIVE[chainId]) {\n checkedAddress = WRAPPED_NATIVE_TOKEN[chainId].address\n }\n\n return checkedAddress\n}\n","import log from 'loglevel'\nimport fetch from 'cross-fetch'\nimport { OrderKind, QuoteQuery } from '@gnosis.pm/gp-v2-contracts'\nimport { SupportedChainId as ChainId } from '../../constants/chains'\nimport { getSigningSchemeApiValue, OrderCreation } from '../../utils/sign'\nimport OperatorError, { ApiErrorCodeDetails, ApiErrorCodes, ApiErrorObject } from './errors/OperatorError'\nimport QuoteError, {\n GpQuoteErrorCodes,\n GpQuoteErrorObject,\n mapOperatorErrorToQuoteError,\n GpQuoteErrorDetails,\n} from './errors/QuoteError'\nimport { toErc20Address } from '../../utils/tokens'\nimport { FeeQuoteParams, PriceInformation, PriceQuoteParams, SimpleGetQuoteResponse } from './types'\n\nimport { ZERO_ADDRESS } from '../../constants'\nimport {\n GetOrdersParams,\n GetTradesParams,\n OrderCancellationParams,\n OrderID,\n OrderMetaData,\n ProfileData,\n TradeMetaData,\n} from './types'\nimport { CowError, logPrefix, objectToQueryString } from '../../utils/common'\nimport { Context } from '../../utils/context'\n\nfunction getGnosisProtocolUrl(isDev: boolean): Partial<Record<ChainId, string>> {\n if (isDev) {\n return {\n [ChainId.MAINNET]: 'https://barn.api.cow.fi/mainnet/api',\n [ChainId.RINKEBY]: 'https://barn.api.cow.fi/rinkeby/api',\n [ChainId.GNOSIS_CHAIN]: 'https://barn.api.cow.fi/xdai/api',\n }\n }\n\n return {\n [ChainId.MAINNET]: 'https://api.cow.fi/mainnet/api',\n [ChainId.RINKEBY]: 'https://api.cow.fi/rinkeby/api',\n [ChainId.GNOSIS_CHAIN]: 'https://api.cow.fi/xdai/api',\n }\n}\n\nfunction getProfileUrl(isDev: boolean): Partial<Record<ChainId, string>> {\n if (isDev) {\n return {\n [ChainId.MAINNET]: 'https://barn.api.cow.fi/affiliate/api',\n }\n }\n\n return {\n [ChainId.MAINNET]: 'https://api.cow.fi/affiliate/api',\n }\n}\n\nconst UNHANDLED_QUOTE_ERROR: GpQuoteErrorObject = {\n errorType: GpQuoteErrorCodes.UNHANDLED_ERROR,\n description: GpQuoteErrorDetails.UNHANDLED_ERROR,\n}\n\nconst UNHANDLED_ORDER_ERROR: ApiErrorObject = {\n errorType: ApiErrorCodes.UNHANDLED_CREATE_ERROR,\n description: ApiErrorCodeDetails.UNHANDLED_CREATE_ERROR,\n}\n\nasync function _handleQuoteResponse<T = unknown, P extends QuoteQuery = QuoteQuery>(\n response: Response,\n params?: P\n): Promise<T> {\n if (!response.ok) {\n const errorObj: ApiErrorObject = await response.json()\n\n // we need to map the backend error codes to match our own for quotes\n const mappedError = mapOperatorErrorToQuoteError(errorObj)\n const quoteError = new QuoteError(mappedError)\n\n if (params) {\n const { sellToken, buyToken } = params\n log.error(logPrefix, `Error querying fee from API - sellToken: ${sellToken}, buyToken: ${buyToken}`)\n }\n\n throw quoteError\n } else {\n return response.json()\n }\n}\n\nexport class CowApi {\n context: Context\n\n API_NAME = 'CoW Protocol'\n\n constructor(context: Context) {\n this.context = context\n }\n\n get DEFAULT_HEADERS() {\n return { 'Content-Type': 'application/json', 'X-AppId': this.context.appDataHash }\n }\n\n get API_BASE_URL() {\n return getGnosisProtocolUrl(this.context.isDevEnvironment)\n }\n\n get PROFILE_API_BASE_URL(): Partial<Record<ChainId, string>> {\n return getProfileUrl(this.context.isDevEnvironment)\n }\n\n async getProfileData(address: string): Promise<ProfileData | null> {\n const chainId = await this.context.chainId\n log.debug(logPrefix, `[api:${this.API_NAME}] Get profile data for`, chainId, address)\n if (chainId !== ChainId.MAINNET) {\n log.info(logPrefix, 'Profile data is only available for mainnet')\n return null\n }\n\n const response = await this.getProfile(`/profile/${address}`)\n\n if (!response.ok) {\n const errorResponse = await response.json()\n log.error(logPrefix, errorResponse)\n throw new CowError(errorResponse?.description)\n } else {\n return response.json()\n }\n }\n\n async getTrades(params: GetTradesParams): Promise<TradeMetaData[]> {\n const { owner, limit, offset } = params\n const qsParams = objectToQueryString({ owner, limit, offset })\n const chainId = await this.context.chainId\n log.debug(logPrefix, '[util:operator] Get trades for', chainId, owner, { limit, offset })\n try {\n const response = await this.get(`/trades${qsParams}`)\n\n if (!response.ok) {\n const errorResponse = await response.json()\n throw new OperatorError(errorResponse)\n } else {\n return response.json()\n }\n } catch (error) {\n log.error(logPrefix, 'Error getting trades:', error)\n if (error instanceof OperatorError) throw error\n\n throw new CowError('Error getting trades: ' + error)\n }\n }\n\n async getOrders(params: GetOrdersParams): Promise<OrderMetaData[]> {\n const { owner, limit = 1000, offset = 0 } = params\n const queryString = objectToQueryString({ limit, offset })\n const chainId = await this.context.chainId\n log.debug(logPrefix, `[api:${this.API_NAME}] Get orders for `, chainId, owner, limit, offset)\n\n try {\n const response = await this.get(`/account/${owner}/orders/${queryString}`)\n\n if (!response.ok) {\n const errorResponse: ApiErrorObject = await response.json()\n throw new OperatorError(errorResponse)\n } else {\n return response.json()\n }\n } catch (error) {\n log.error(logPrefix, 'Error getting orders information:', error)\n if (error instanceof OperatorError) throw error\n\n throw new OperatorError(UNHANDLED_ORDER_ERROR)\n }\n }\n\n async getTxOrders(txHash: string): Promise<OrderMetaData[]> {\n const chainId = await this.context.chainId\n log.debug(`[api:${this.API_NAME}] Get tx orders for `, chainId, txHash)\n\n try {\n const response = await this.get(`/transactions/${txHash}/orders`)\n\n if (!response.ok) {\n const errorResponse: ApiErrorObject = await response.json()\n throw new OperatorError(errorResponse)\n } else {\n return response.json()\n }\n } catch (error) {\n log.error('Error getting transaction orders information:', error)\n if (error instanceof OperatorError) throw error\n throw new OperatorError(UNHANDLED_ORDER_ERROR)\n }\n }\n\n async getOrder(orderId: string): Promise<OrderMetaData | null> {\n const chainId = await this.context.chainId\n log.debug(logPrefix, `[api:${this.API_NAME}] Get order for `, chainId, orderId)\n try {\n const response = await this.get(`/orders/${orderId}`)\n\n if (!response.ok) {\n const errorResponse: ApiErrorObject = await response.json()\n throw new OperatorError(errorResponse)\n } else {\n return response.json()\n }\n } catch (error) {\n log.error(logPrefix, 'Error getting order information:', error)\n if (error instanceof OperatorError) throw error\n\n throw new OperatorError(UNHANDLED_ORDER_ERROR)\n }\n }\n\n async getPriceQuoteLegacy(params: PriceQuoteParams): Promise<PriceInformation | null> {\n const { baseToken, quoteToken, amount, kind } = params\n const chainId = await this.context.chainId\n log.debug(logPrefix, `[api:${this.API_NAME}] Get price from API`, params, 'for', chainId)\n\n const response = await this.get(\n `/markets/${toErc20Address(baseToken, chainId)}-${toErc20Address(quoteToken, chainId)}/${kind}/${amount}`\n ).catch((error) => {\n log.error(logPrefix, 'Error getting price quote:', error)\n throw new QuoteError(UNHANDLED_QUOTE_ERROR)\n })\n\n return _handleQuoteResponse<PriceInformation | null>(response)\n }\n\n async getQuote(params: FeeQuoteParams): Promise<SimpleGetQuoteResponse> {\n const chainId = await this.context.chainId\n const quoteParams = this.mapNewToLegacyParams(params, chainId)\n const response = await this.post('/quote', quoteParams)\n\n return _handleQuoteResponse<SimpleGetQuoteResponse>(response)\n }\n\n async sendSignedOrderCancellation(params: OrderCancellationParams): Promise<void> {\n const { cancellation, owner: from } = params\n const chainId = await this.context.chainId\n log.debug(logPrefix, `[api:${this.API_NAME}] Delete signed order for network`, chainId, cancellation)\n\n const response = await this.delete(`/orders/${cancellation.orderUid}`, {\n signature: cancellation.signature,\n signingScheme: getSigningSchemeApiValue(cancellation.signingScheme),\n from,\n })\n\n if (!response.ok) {\n // Raise an exception\n const errorMessage = await OperatorError.getErrorFromStatusCode(response, 'delete')\n throw new CowError(errorMessage)\n }\n\n log.debug(logPrefix, `[api:${this.API_NAME}] Cancelled order`, cancellation.orderUid, chainId)\n }\n\n async sendOrder(params: { order: Omit<OrderCreation, 'appData'>; owner: string }): Promise<OrderID> {\n const fullOrder: OrderCreation = { ...params.order, appData: this.context.appDataHash }\n const chainId = await this.context.chainId\n const { owner } = params\n log.debug(logPrefix, `[api:${this.API_NAME}] Post signed order for network`, chainId, fullOrder)\n\n // Call API\n const response = await this.post(`/orders`, {\n ...fullOrder,\n signingScheme: getSigningSchemeApiValue(fullOrder.signingScheme),\n from: owner,\n })\n\n // Handle response\n if (!response.ok) {\n // Raise an exception\n const errorMessage = await OperatorError.getErrorFromStatusCode(response, 'create')\n throw new CowError(errorMessage)\n }\n\n const uid = (await response.json()) as string\n log.debug(logPrefix, `[api:${this.API_NAME}] Success posting the signed order`, uid)\n return uid\n }\n\n getOrderLink(orderId: OrderID): string {\n const baseUrl = this.getApiBaseUrl()\n\n return baseUrl + `/orders/${orderId}`\n }\n\n private mapNewToLegacyParams(params: FeeQuoteParams, chainId: ChainId): QuoteQuery {\n const { amount, kind, userAddress, receiver, validTo, sellToken, buyToken } = params\n const fallbackAddress = userAddress || ZERO_ADDRESS\n\n const baseParams = {\n sellToken: toErc20Address(sellToken, chainId),\n buyToken: toErc20Address(buyToken, chainId),\n from: fallbackAddress,\n receiver: receiver || fallbackAddress,\n appData: this.context.appDataHash,\n validTo,\n partiallyFillable: false,\n }\n\n const finalParams: QuoteQuery =\n kind === OrderKind.SELL\n ? {\n kind: OrderKind.SELL,\n sellAmountBeforeFee: amount,\n ...baseParams,\n }\n : {\n kind: OrderKind.BUY,\n buyAmountAfterFee: amount,\n ...baseParams,\n }\n\n return finalParams\n }\n\n private async getApiBaseUrl(): Promise<string> {\n const chainId = await this.context.chainId\n const baseUrl = this.API_BASE_URL[chainId]\n\n if (!baseUrl) {\n throw new CowError(`Unsupported Network. The ${this.API_NAME} API is not deployed in the Network ` + chainId)\n } else {\n return baseUrl + '/v1'\n }\n }\n\n private async getProfileApiBaseUrl(): Promise<string> {\n const chainId = await this.context.chainId\n const baseUrl = this.PROFILE_API_BASE_URL[chainId]\n\n if (!baseUrl) {\n throw new CowError(`Unsupported Network. The ${this.API_NAME} API is not deployed in the Network ` + chainId)\n } else {\n return baseUrl + '/v1'\n }\n }\n\n private async fetch(url: string, method: 'GET' | 'POST' | 'DELETE', data?: unknown): Promise<Response> {\n const baseUrl = await this.getApiBaseUrl()\n return fetch(baseUrl + url, {\n headers: this.DEFAULT_HEADERS,\n method,\n body: data !== undefined ? JSON.stringify(data) : data,\n })\n }\n\n private async fetchProfile(url: string, method: 'GET' | 'POST' | 'DELETE', data?: unknown): Promise<Response> {\n const baseUrl = await this.getProfileApiBaseUrl()\n return fetch(baseUrl + url, {\n headers: this.DEFAULT_HEADERS,\n method,\n body: data !== undefined ? JSON.stringify(data) : data,\n })\n }\n\n private post(url: string, data: unknown): Promise<Response> {\n return this.fetch(url, 'POST', data)\n }\n\n private get(url: string): Promise<Response> {\n return this.fetch(url, 'GET')\n }\n\n private getProfile(url: string): Promise<Response> {\n return this.fetchProfile(url, 'GET')\n }\n\n private delete(url: string, data: unknown): Promise<Response> {\n return this.fetch(url, 'DELETE', data)\n }\n}\n","import { gql } from 'graphql-request'\n\nexport const TOTALS_QUERY = gql`\n query Totals {\n totals {\n tokens\n orders\n traders\n settlements\n volumeUsd\n volumeEth\n feesUsd\n feesEth\n }\n }\n`\n\nexport const LAST_DAYS_VOLUME_QUERY = gql`\n query LastDaysVolume($days: Int!) {\n dailyTotals(orderBy: timestamp, orderDirection: desc, first: $days) {\n timestamp\n volumeUsd\n }\n }\n`\n\nexport const LAST_HOURS_VOLUME_QUERY = gql`\n query LastHoursVolume($hours: Int!) {\n hourlyTotals(orderBy: timestamp, orderDirection: desc, first: $hours) {\n timestamp\n volumeUsd\n }\n }\n`\n","import log from 'loglevel'\nimport fetch from 'cross-fetch'\nimport { GraphQLClient, Variables } from 'graphql-request'\nimport { DocumentNode } from 'graphql'\nimport { CowError } from '../../utils/common'\nimport { Context } from '../../utils/context'\nimport { SupportedChainId as ChainId } from '../../constants/chains'\nimport { LastDaysVolumeQuery, LastHoursVolumeQuery, TotalsQuery } from './graphql'\nimport { LAST_DAYS_VOLUME_QUERY, LAST_HOURS_VOLUME_QUERY, TOTALS_QUERY } from './queries'\n\nexport const subgraphUrls: Record<ChainId, string> = {\n [ChainId.MAINNET]: 'https://api.thegraph.com/subgraphs/name/cowprotocol/cow',\n [ChainId.RINKEBY]: 'https://api.thegraph.com/subgraphs/name/cowprotocol/cow-rinkeby',\n [ChainId.GNOSIS_CHAIN]: 'https://api.thegraph.com/subgraphs/name/cowprotocol/cow-gc',\n}\n\nexport class CowSubgraphApi {\n context: Context\n clients: Record<ChainId, GraphQLClient>\n\n API_NAME = 'CoW Protocol Subgraph'\n\n constructor(context: Context) {\n this.context = context\n this.clients = this.createClients()\n }\n\n private createClients(): Record<ChainId, GraphQLClient> {\n return {\n [ChainId.MAINNET]: new GraphQLClient(subgraphUrls[ChainId.MAINNET], { fetch }),\n [ChainId.RINKEBY]: new GraphQLClient(subgraphUrls[ChainId.RINKEBY], { fetch }),\n [ChainId.GNOSIS_CHAIN]: new GraphQLClient(subgraphUrls[ChainId.GNOSIS_CHAIN], { fetch }),\n }\n }\n\n async getBaseUrl(): Promise<string> {\n const chainId = await this.context.chainId\n return subgraphUrls[chainId]\n }\n\n async getTotals(): Promise<TotalsQuery['totals'][0]> {\n const chainId = await this.context.chainId\n log.debug(`[subgraph:${this.API_NAME}] Get totals for:`, chainId)\n const response = await this.runQuery<TotalsQuery>(TOTALS_QUERY)\n return response.totals[0]\n }\n\n async getLastDaysVolume(days: number): Promise<LastDaysVolumeQuery> {\n const chainId = await this.context.chainId\n log.debug(`[subgraph:${this.API_NAME}] Get last ${days} days volume for:`, chainId)\n return this.runQuery<LastDaysVolumeQuery>(LAST_DAYS_VOLUME_QUERY, { days })\n }\n\n async getLastHoursVolume(hours: number): Promise<LastHoursVolumeQuery> {\n const chainId = await this.context.chainId\n log.debug(`[subgraph:${this.API_NAME}] Get last ${hours} hours volume for:`, chainId)\n return this.runQuery<LastHoursVolumeQuery>(LAST_HOURS_VOLUME_QUERY, { hours })\n }\n\n async runQuery<T>(query: string | DocumentNode, variables?: Variables): Promise<T> {\n try {\n const chainId = await this.context.chainId\n const client = this.clients[chainId]\n const response = await client.request(query, variables)\n return response\n } catch (error) {\n log.error(error)\n const baseUrl = await this.getBaseUrl()\n throw new CowError(\n `Error running query: ${query}. Variables: ${JSON.stringify(variables)}. API: ${baseUrl}. Inner Error: ${error}`\n )\n }\n }\n}\n","import Ajv, { ValidateFunction } from 'ajv'\nimport { fromHexString } from './common'\nimport { DEFAULT_IPFS_GATEWAY_URI } from '../constants'\nimport { AppDataDoc } from '../types'\n\nlet validate: ValidateFunction | undefined\nlet ajv: Ajv\n\ninterface ValidationResult {\n result: boolean\n errors?: string\n}\n\nasync function getValidator(): Promise<{ ajv: Ajv; validate: ValidateFunction }> {\n if (!ajv) {\n ajv = new Ajv()\n }\n\n if (!validate) {\n const appDataSchema = await import('../schemas/appData.schema.json')\n validate = ajv.compile(appDataSchema)\n }\n\n return { ajv, validate }\n}\n\nexport async function getSerializedCID(hash: string): Promise<void | string> {\n const cidVersion = 0x1 //cidv1\n const codec = 0x70 //dag-pb\n const type = 0x12 //sha2-256\n const length = 32 //256 bits\n const _hash = hash.replace(/(^0x)/, '')\n\n const hexHash = fromHexString(_hash)\n\n if (!hexHash) return\n\n const uint8array = Uint8Array.from([cidVersion, codec, type, length, ...hexHash])\n const { CID } = await import('multiformats/cid')\n return CID.decode(uint8array).toV0().toString()\n}\n\nexport async function loadIpfsFromCid(cid: string, ipfsUri = DEFAULT_IPFS_GATEWAY_URI): Promise<AppDataDoc> {\n const { default: fetch } = await import('cross-fetch')\n const response = await fetch(`${ipfsUri}/${cid}`)\n\n return await response.json()\n}\n\nexport async function validateAppDataDocument(appDataDocument: unknown): Promise<ValidationResult> {\n const { ajv, validate } = await getValidator()\n const result = !!validate(appDataDocument)\n\n return {\n result,\n errors: ajv.errors ? ajv.errorsText(ajv.errors) : undefined,\n }\n}\n","import log from 'loglevel'\nimport { Context } from '../../utils/context'\nimport { getSerializedCID, loadIpfsFromCid, validateAppDataDocument } from '../../utils/appData'\nimport { calculateIpfsCidV0, pinJSONToIPFS } from '../../utils/ipfs'\nimport { AppDataDoc, IpfsHashInfo, MetadataDoc } from './types'\nimport { CowError } from '../../utils/common'\n\nconst DEFAULT_APP_CODE = 'CowSwap'\nconst DEFAULT_APP_VERSION = '0.2.0'\n\nexport class MetadataApi {\n context: Context\n\n constructor(context: Context) {\n this.context = context\n }\n\n generateAppDataDoc(metadata: MetadataDoc = {}, appCode: string = DEFAULT_APP_CODE): AppDataDoc {\n return {\n version: DEFAULT_APP_VERSION,\n appCode,\n metadata: {\n ...metadata,\n },\n }\n }\n\n async decodeAppData(hash: string): Promise<void | AppDataDoc> {\n try {\n const cidV0 = await getSerializedCID(hash)\n if (!cidV0) throw new CowError('Error getting serialized CID')\n return loadIpfsFromCid(cidV0)\n } catch (e) {\n const error = e as CowError\n log.error('Error decoding AppData:', error)\n throw new CowError('Error decoding AppData: ' + error.message)\n }\n }\n\n async cidToAppDataHex(ipfsHash: string): Promise<string | void> {\n const { CID } = await import('multiformats/cid')\n\n const { digest } = CID.parse(ipfsHash).multihash\n return `0x${Buffer.from(digest).toString('hex')}`\n }\n\n async appDataHexToCid(hash: string): Promise<string | void> {\n const cidV0 = await getSerializedCID(hash)\n if (!cidV0) throw new CowError('Error getting serialized CID')\n return cidV0\n }\n\n /**\n * Calculates appDataHash WITHOUT publishing file to IPFS\n *\n * This method is intended to quickly generate the appDataHash independent\n * of IPFS upload/pinning\n * The hash is deterministic thus uploading it to IPFS will give you the same\n * result\n *\n * WARNING!\n * One important caveat is that - like `uploadMetadataDocToIpfs` method - the\n * calculation is done with a stringified file without a new line at the end.\n * That means that you will get different results if the file is uploaded\n * directly as a file. For example:\n *\n * Consider the content `hello world`.\n *\n * Using IPFS's cli tool to updload a file with the contents above\n * (`ipfs add file`), it'll have the line ending and result in this CIDv0:\n * QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o\n *\n * While using this method - and `uploadMetadataDocToIpfs` - will give you\n * this CIDv0:\n * Qmf412jQZiuVUtdgnB36FXFX7xg5V6KEbSJ4dpQuhkLyfD\n *\n * @param appData\n */\n async calculateAppDataHash(appData: AppDataDoc): Promise<IpfsHashInfo | void> {\n const validation = await validateAppDataDocument(appData)\n if (!validation?.result) {\n throw new CowError('Invalid appData provided', validation?.errors)\n }\n\n try {\n const cidV0 = await calculateIpfsCidV0(appData)\n const appDataHash = await this.cidToAppDataHex(cidV0)\n\n if (!appDataHash) {\n throw new CowError(`Could not extract appDataHash from calculated cidV0 ${cidV0}`)\n }\n\n return { cidV0, appDataHash }\n } catch (e) {\n const error = e as CowError\n throw new CowError('Failed to calculate appDataHash', error.message)\n }\n }\n\n async uploadMetadataDocToIpfs(appDataDoc: AppDataDoc): Promise<string | void> {\n const { IpfsHash } = await pinJSONToIPFS(appDataDoc, this.context.ipfs)\n return this.cidToAppDataHex(IpfsHash)\n }\n}\n","import { CowError } from './common'\nimport { Ipfs } from './context'\nimport { AppDataDoc } from '../api/metadata/types'\n\ntype PinataPinResponse = {\n IpfsHash: string\n PinSize: number\n Timestamp: string\n}\n\nexport async function pinJSONToIPFS(\n file: unknown,\n { uri, pinataApiKey = '', pinataApiSecret = '' }: Ipfs\n): Promise<PinataPinResponse> {\n const { default: fetch } = await import('cross-fetch')\n\n if (!pinataApiKey || !pinataApiSecret) {\n throw new CowError('You need to pass IPFS api credentials.')\n }\n\n const body = JSON.stringify({\n pinataContent: file,\n pinataMetadata: { name: 'appData-affiliate' },\n })\n\n const pinataUrl = `${uri}/pinning/pinJSONToIPFS`\n\n const response = await fetch(pinataUrl, {\n method: 'POST',\n body,\n headers: {\n 'Content-Type': 'application/json',\n pinata_api_key: pinataApiKey,\n pinata_secret_api_key: pinataApiSecret,\n },\n })\n\n const data = await response.json()\n\n if (response.status !== 200) {\n throw new Error(data.error.details || data.error)\n }\n\n return data\n}\n\nexport async function calculateIpfsCidV0(doc: AppDataDoc): Promise<string> {\n const docString = JSON.stringify(doc)\n\n const { of } = await import('ipfs-only-hash')\n return of(docString, { cidVersion: 0 })\n}\n","import { Signer } from 'ethers'\nimport log from 'loglevel'\nimport { CowError, logPrefix } from './common'\nimport { SupportedChainId as ChainId } from '../constants/chains'\nimport { DEFAULT_APP_DATA_HASH, DEFAULT_IPFS_GATEWAY_URI } from '../constants'\n\nexport interface Ipfs {\n uri?: string\n pinataApiKey?: string\n pinataApiSecret?: string\n}\n\nexport interface CowContext {\n appDataHash?: string\n isDevEnvironment?: boolean\n signer?: Signer\n ipfs?: Ipfs\n}\n\nexport const DefaultCowContext = {\n appDataHash: DEFAULT_APP_DATA_HASH,\n isDevEnvironment: false,\n ipfs: {\n uri: DEFAULT_IPFS_GATEWAY_URI,\n apiKey: undefined,\n apiSecret: undefined,\n },\n}\n\n/**\n *\n *\n * @export\n * @class Context\n * @implements {Required<CowContext>}\n */\nexport class Context implements Partial<CowContext> {\n #context: CowContext\n #chainId: ChainId\n\n constructor(chainId: ChainId, context: CowContext) {\n this.#chainId = this.updateChainId(chainId)\n this.#context = { ...DefaultCowContext, ...context }\n }\n\n updateChainId(chainId: ChainId) {\n if (!ChainId[chainId]) {\n throw new CowError(`Invalid chainId: ${chainId}`)\n }\n\n log.debug(logPrefix, `Updating chainId to: ${chainId}`)\n\n this.#chainId = chainId\n return chainId\n }\n\n get chainId(): Promise<ChainId> {\n const provider = this.#context.signer?.provider\n if (!provider) {\n return Promise.resolve(this.#chainId)\n }\n\n log.debug(logPrefix, 'Getting chainId from provider')\n\n const getAndReconciliateNetwork = async () => {\n const network = await provider.getNetwork()\n const chainId = network.chainId\n\n if (chainId !== this.#chainId) {\n log.debug(\n logPrefix,\n `ChainId mismatch: Provider's chainId: ${chainId} vs Context's chainId: ${\n this.#chainId\n }. Updating Context's chainId`\n )\n this.updateChainId(chainId)\n }\n return chainId\n }\n\n return getAndReconciliateNetwork()\n }\n\n get appDataHash(): string {\n return this.#context.appDataHash ?? DefaultCowContext.appDataHash\n }\n\n get isDevEnvironment(): boolean {\n return this.#context.isDevEnvironment ?? DefaultCowContext.isDevEnvironment\n }\n\n get signer(): Signer | undefined {\n return this.#context.signer\n }\n\n get ipfs(): Ipfs {\n return this.#context.ipfs ?? DefaultCowContext.ipfs\n }\n}\n","export type Maybe<T> = T | null;\nexport type InputMaybe<T> = Maybe<T>;\nexport type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };\nexport type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };\nexport type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n ID: string;\n String: string;\n Boolean: boolean;\n Int: number;\n Float: number;\n BigDecimal: any;\n BigInt: any;\n Bytes: any;\n};\n\nexport type BlockChangedFilter = {\n number_gte: Scalars['Int'];\n};\n\nexport type Block_Height = {\n hash?: InputMaybe<Scalars['Bytes']>;\n number?: InputMaybe<Scalars['Int']>;\n number_gte?: InputMaybe<Scalars['Int']>;\n};\n\nexport type Bundle = {\n __typename?: 'Bundle';\n /** Price of ETH in usd */\n ethPriceUSD: Scalars['BigDecimal'];\n /** Singleton #1 */\n id: Scalars['ID'];\n};\n\nexport type Bundle_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n ethPriceUSD?: InputMaybe<Scalars['BigDecimal']>;\n ethPriceUSD_gt?: InputMaybe<Scalars['BigDecimal']>;\n ethPriceUSD_gte?: InputMaybe<Scalars['BigDecimal']>;\n ethPriceUSD_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n ethPriceUSD_lt?: InputMaybe<Scalars['BigDecimal']>;\n ethPriceUSD_lte?: InputMaybe<Scalars['BigDecimal']>;\n ethPriceUSD_not?: InputMaybe<Scalars['BigDecimal']>;\n ethPriceUSD_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n};\n\nexport enum Bundle_OrderBy {\n EthPriceUsd = 'ethPriceUSD',\n Id = 'id'\n}\n\nexport type DailyTotal = {\n __typename?: 'DailyTotal';\n /** Total fees in Eth */\n feesEth?: Maybe<Scalars['BigDecimal']>;\n /** Total fees in USD */\n feesUsd?: Maybe<Scalars['BigDecimal']>;\n /** Day timestamp */\n id: Scalars['ID'];\n /** Number of trades */\n numberOfTrades: Scalars['BigInt'];\n /** Total number of orders placed */\n orders: Scalars['BigInt'];\n /** Total number of batches settled */\n settlements: Scalars['BigInt'];\n /** Start day timestamp */\n timestamp: Scalars['Int'];\n /** Traded tokens */\n tokens: Array<Token>;\n /** Total number of tokens traded */\n totalTokens: Scalars['BigInt'];\n /** Total traded volume in ETH */\n volumeEth?: Maybe<Scalars['BigDecimal']>;\n /** Total traded volume in USD */\n volumeUsd?: Maybe<Scalars['BigDecimal']>;\n};\n\n\nexport type DailyTotalTokensArgs = {\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Token_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n where?: InputMaybe<Token_Filter>;\n};\n\nexport type DailyTotal_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n feesEth?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n feesEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_not?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n feesUsd?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n feesUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n numberOfTrades?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_gt?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_gte?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_in?: InputMaybe<Array<Scalars['BigInt']>>;\n numberOfTrades_lt?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_lte?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_not?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n orders?: InputMaybe<Scalars['BigInt']>;\n orders_gt?: InputMaybe<Scalars['BigInt']>;\n orders_gte?: InputMaybe<Scalars['BigInt']>;\n orders_in?: InputMaybe<Array<Scalars['BigInt']>>;\n orders_lt?: InputMaybe<Scalars['BigInt']>;\n orders_lte?: InputMaybe<Scalars['BigInt']>;\n orders_not?: InputMaybe<Scalars['BigInt']>;\n orders_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n settlements?: InputMaybe<Scalars['BigInt']>;\n settlements_gt?: InputMaybe<Scalars['BigInt']>;\n settlements_gte?: InputMaybe<Scalars['BigInt']>;\n settlements_in?: InputMaybe<Array<Scalars['BigInt']>>;\n settlements_lt?: InputMaybe<Scalars['BigInt']>;\n settlements_lte?: InputMaybe<Scalars['BigInt']>;\n settlements_not?: InputMaybe<Scalars['BigInt']>;\n settlements_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n timestamp?: InputMaybe<Scalars['Int']>;\n timestamp_gt?: InputMaybe<Scalars['Int']>;\n timestamp_gte?: InputMaybe<Scalars['Int']>;\n timestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n timestamp_lt?: InputMaybe<Scalars['Int']>;\n timestamp_lte?: InputMaybe<Scalars['Int']>;\n timestamp_not?: InputMaybe<Scalars['Int']>;\n timestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n tokens?: InputMaybe<Array<Scalars['String']>>;\n tokens_contains?: InputMaybe<Array<Scalars['String']>>;\n tokens_contains_nocase?: InputMaybe<Array<Scalars['String']>>;\n tokens_not?: InputMaybe<Array<Scalars['String']>>;\n tokens_not_contains?: InputMaybe<Array<Scalars['String']>>;\n tokens_not_contains_nocase?: InputMaybe<Array<Scalars['String']>>;\n totalTokens?: InputMaybe<Scalars['BigInt']>;\n totalTokens_gt?: InputMaybe<Scalars['BigInt']>;\n totalTokens_gte?: InputMaybe<Scalars['BigInt']>;\n totalTokens_in?: InputMaybe<Array<Scalars['BigInt']>>;\n totalTokens_lt?: InputMaybe<Scalars['BigInt']>;\n totalTokens_lte?: InputMaybe<Scalars['BigInt']>;\n totalTokens_not?: InputMaybe<Scalars['BigInt']>;\n totalTokens_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeEth?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_not?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeUsd?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n};\n\nexport enum DailyTotal_OrderBy {\n FeesEth = 'feesEth',\n FeesUsd = 'feesUsd',\n Id = 'id',\n NumberOfTrades = 'numberOfTrades',\n Orders = 'orders',\n Settlements = 'settlements',\n Timestamp = 'timestamp',\n Tokens = 'tokens',\n TotalTokens = 'totalTokens',\n VolumeEth = 'volumeEth',\n VolumeUsd = 'volumeUsd'\n}\n\nexport type HourlyTotal = {\n __typename?: 'HourlyTotal';\n /** Total fees in Eth */\n feesEth?: Maybe<Scalars['BigDecimal']>;\n /** Total fees in USD */\n feesUsd?: Maybe<Scalars['BigDecimal']>;\n /** Hour timestamp */\n id: Scalars['ID'];\n /** Number of trades */\n numberOfTrades: Scalars['BigInt'];\n /** Total number of orders placed */\n orders: Scalars['BigInt'];\n /** Total number of batches settled */\n settlements: Scalars['BigInt'];\n /** Start hour timestamp */\n timestamp: Scalars['Int'];\n /** Traded tokens */\n tokens: Array<Token>;\n /** Total number of tokens traded */\n totalTokens: Scalars['BigInt'];\n /** Total traded volume in ETH */\n volumeEth?: Maybe<Scalars['BigDecimal']>;\n /** Total traded volume in USD */\n volumeUsd?: Maybe<Scalars['BigDecimal']>;\n};\n\n\nexport type HourlyTotalTokensArgs = {\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Token_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n where?: InputMaybe<Token_Filter>;\n};\n\nexport type HourlyTotal_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n feesEth?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n feesEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_not?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n feesUsd?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n feesUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n numberOfTrades?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_gt?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_gte?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_in?: InputMaybe<Array<Scalars['BigInt']>>;\n numberOfTrades_lt?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_lte?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_not?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n orders?: InputMaybe<Scalars['BigInt']>;\n orders_gt?: InputMaybe<Scalars['BigInt']>;\n orders_gte?: InputMaybe<Scalars['BigInt']>;\n orders_in?: InputMaybe<Array<Scalars['BigInt']>>;\n orders_lt?: InputMaybe<Scalars['BigInt']>;\n orders_lte?: InputMaybe<Scalars['BigInt']>;\n orders_not?: InputMaybe<Scalars['BigInt']>;\n orders_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n settlements?: InputMaybe<Scalars['BigInt']>;\n settlements_gt?: InputMaybe<Scalars['BigInt']>;\n settlements_gte?: InputMaybe<Scalars['BigInt']>;\n settlements_in?: InputMaybe<Array<Scalars['BigInt']>>;\n settlements_lt?: InputMaybe<Scalars['BigInt']>;\n settlements_lte?: InputMaybe<Scalars['BigInt']>;\n settlements_not?: InputMaybe<Scalars['BigInt']>;\n settlements_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n timestamp?: InputMaybe<Scalars['Int']>;\n timestamp_gt?: InputMaybe<Scalars['Int']>;\n timestamp_gte?: InputMaybe<Scalars['Int']>;\n timestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n timestamp_lt?: InputMaybe<Scalars['Int']>;\n timestamp_lte?: InputMaybe<Scalars['Int']>;\n timestamp_not?: InputMaybe<Scalars['Int']>;\n timestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n tokens?: InputMaybe<Array<Scalars['String']>>;\n tokens_contains?: InputMaybe<Array<Scalars['String']>>;\n tokens_contains_nocase?: InputMaybe<Array<Scalars['String']>>;\n tokens_not?: InputMaybe<Array<Scalars['String']>>;\n tokens_not_contains?: InputMaybe<Array<Scalars['String']>>;\n tokens_not_contains_nocase?: InputMaybe<Array<Scalars['String']>>;\n totalTokens?: InputMaybe<Scalars['BigInt']>;\n totalTokens_gt?: InputMaybe<Scalars['BigInt']>;\n totalTokens_gte?: InputMaybe<Scalars['BigInt']>;\n totalTokens_in?: InputMaybe<Array<Scalars['BigInt']>>;\n totalTokens_lt?: InputMaybe<Scalars['BigInt']>;\n totalTokens_lte?: InputMaybe<Scalars['BigInt']>;\n totalTokens_not?: InputMaybe<Scalars['BigInt']>;\n totalTokens_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeEth?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_not?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeUsd?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n};\n\nexport enum HourlyTotal_OrderBy {\n FeesEth = 'feesEth',\n FeesUsd = 'feesUsd',\n Id = 'id',\n NumberOfTrades = 'numberOfTrades',\n Orders = 'orders',\n Settlements = 'settlements',\n Timestamp = 'timestamp',\n Tokens = 'tokens',\n TotalTokens = 'totalTokens',\n VolumeEth = 'volumeEth',\n VolumeUsd = 'volumeUsd'\n}\n\nexport type Order = {\n __typename?: 'Order';\n /** Trade's OrderUid to hex string */\n id: Scalars['ID'];\n /** block's timestamp on invalidate event */\n invalidateTimestamp?: Maybe<Scalars['Int']>;\n /** Boolean value to show if the order is signed */\n isSigned: Scalars['Boolean'];\n /** Boolean value true by default unless is invalidated by the event */\n isValid?: Maybe<Scalars['Boolean']>;\n /** Trade's owner or presign User */\n owner?: Maybe<User>;\n /** block's timestamp on presign event */\n presignTimestamp?: Maybe<Scalars['Int']>;\n /** Array of trades on the order */\n trades?: Maybe<Array<Trade>>;\n /** block's timestamp on trade event */\n tradesTimestamp?: Maybe<Scalars['Int']>;\n};\n\n\nexport type OrderTradesArgs = {\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Trade_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n where?: InputMaybe<Trade_Filter>;\n};\n\n/** Defines the order direction, either ascending or descending */\nexport enum OrderDirection {\n Asc = 'asc',\n Desc = 'desc'\n}\n\nexport type Order_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n invalidateTimestamp?: InputMaybe<Scalars['Int']>;\n invalidateTimestamp_gt?: InputMaybe<Scalars['Int']>;\n invalidateTimestamp_gte?: InputMaybe<Scalars['Int']>;\n invalidateTimestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n invalidateTimestamp_lt?: InputMaybe<Scalars['Int']>;\n invalidateTimestamp_lte?: InputMaybe<Scalars['Int']>;\n invalidateTimestamp_not?: InputMaybe<Scalars['Int']>;\n invalidateTimestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n isSigned?: InputMaybe<Scalars['Boolean']>;\n isSigned_in?: InputMaybe<Array<Scalars['Boolean']>>;\n isSigned_not?: InputMaybe<Scalars['Boolean']>;\n isSigned_not_in?: InputMaybe<Array<Scalars['Boolean']>>;\n isValid?: InputMaybe<Scalars['Boolean']>;\n isValid_in?: InputMaybe<Array<Scalars['Boolean']>>;\n isValid_not?: InputMaybe<Scalars['Boolean']>;\n isValid_not_in?: InputMaybe<Array<Scalars['Boolean']>>;\n owner?: InputMaybe<Scalars['String']>;\n owner_contains?: InputMaybe<Scalars['String']>;\n owner_contains_nocase?: InputMaybe<Scalars['String']>;\n owner_ends_with?: InputMaybe<Scalars['String']>;\n owner_ends_with_nocase?: InputMaybe<Scalars['String']>;\n owner_gt?: InputMaybe<Scalars['String']>;\n owner_gte?: InputMaybe<Scalars['String']>;\n owner_in?: InputMaybe<Array<Scalars['String']>>;\n owner_lt?: InputMaybe<Scalars['String']>;\n owner_lte?: InputMaybe<Scalars['String']>;\n owner_not?: InputMaybe<Scalars['String']>;\n owner_not_contains?: InputMaybe<Scalars['String']>;\n owner_not_contains_nocase?: InputMaybe<Scalars['String']>;\n owner_not_ends_with?: InputMaybe<Scalars['String']>;\n owner_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n owner_not_in?: InputMaybe<Array<Scalars['String']>>;\n owner_not_starts_with?: InputMaybe<Scalars['String']>;\n owner_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n owner_starts_with?: InputMaybe<Scalars['String']>;\n owner_starts_with_nocase?: InputMaybe<Scalars['String']>;\n presignTimestamp?: InputMaybe<Scalars['Int']>;\n presignTimestamp_gt?: InputMaybe<Scalars['Int']>;\n presignTimestamp_gte?: InputMaybe<Scalars['Int']>;\n presignTimestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n presignTimestamp_lt?: InputMaybe<Scalars['Int']>;\n presignTimestamp_lte?: InputMaybe<Scalars['Int']>;\n presignTimestamp_not?: InputMaybe<Scalars['Int']>;\n presignTimestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n tradesTimestamp?: InputMaybe<Scalars['Int']>;\n tradesTimestamp_gt?: InputMaybe<Scalars['Int']>;\n tradesTimestamp_gte?: InputMaybe<Scalars['Int']>;\n tradesTimestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n tradesTimestamp_lt?: InputMaybe<Scalars['Int']>;\n tradesTimestamp_lte?: InputMaybe<Scalars['Int']>;\n tradesTimestamp_not?: InputMaybe<Scalars['Int']>;\n tradesTimestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n};\n\nexport enum Order_OrderBy {\n Id = 'id',\n InvalidateTimestamp = 'invalidateTimestamp',\n IsSigned = 'isSigned',\n IsValid = 'isValid',\n Owner = 'owner',\n PresignTimestamp = 'presignTimestamp',\n Trades = 'trades',\n TradesTimestamp = 'tradesTimestamp'\n}\n\nexport type Pair = {\n __typename?: 'Pair';\n /** Token0-token1 sorted by token0 < token1 */\n id: Scalars['ID'];\n /** The token 0 address lower than token1 */\n token0: Token;\n /** The token 1 address greater than token0 */\n token1: Token;\n /** Total volume of token 0 traded */\n volumeToken0?: Maybe<Scalars['BigInt']>;\n /** Total volume of token 1 traded */\n volumeToken1?: Maybe<Scalars['BigInt']>;\n /** Total volume in Eth */\n volumeTradedEth?: Maybe<Scalars['BigDecimal']>;\n /** Total volume in Usd */\n volumeTradedUsd?: Maybe<Scalars['BigDecimal']>;\n};\n\nexport type PairDaily = {\n __typename?: 'PairDaily';\n /** token0-token1-timestamp sorted by token0 < token1 */\n id: Scalars['ID'];\n /** Start day timestamp */\n timestamp: Scalars['Int'];\n /** The token 0 address lower than token1 */\n token0: Token;\n /** The token 1 address greater than token0 */\n token1: Token;\n /** Total volume of token 0 traded */\n volumeToken0?: Maybe<Scalars['BigInt']>;\n /** Total volume of token 1 traded */\n volumeToken1?: Maybe<Scalars['BigInt']>;\n /** Total volume in Eth */\n volumeTradedEth?: Maybe<Scalars['BigDecimal']>;\n /** Total volume in Usd */\n volumeTradedUsd?: Maybe<Scalars['BigDecimal']>;\n};\n\nexport type PairDaily_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n timestamp?: InputMaybe<Scalars['Int']>;\n timestamp_gt?: InputMaybe<Scalars['Int']>;\n timestamp_gte?: InputMaybe<Scalars['Int']>;\n timestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n timestamp_lt?: InputMaybe<Scalars['Int']>;\n timestamp_lte?: InputMaybe<Scalars['Int']>;\n timestamp_not?: InputMaybe<Scalars['Int']>;\n timestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n token0?: InputMaybe<Scalars['String']>;\n token0_contains?: InputMaybe<Scalars['String']>;\n token0_contains_nocase?: InputMaybe<Scalars['String']>;\n token0_ends_with?: InputMaybe<Scalars['String']>;\n token0_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token0_gt?: InputMaybe<Scalars['String']>;\n token0_gte?: InputMaybe<Scalars['String']>;\n token0_in?: InputMaybe<Array<Scalars['String']>>;\n token0_lt?: InputMaybe<Scalars['String']>;\n token0_lte?: InputMaybe<Scalars['String']>;\n token0_not?: InputMaybe<Scalars['String']>;\n token0_not_contains?: InputMaybe<Scalars['String']>;\n token0_not_contains_nocase?: InputMaybe<Scalars['String']>;\n token0_not_ends_with?: InputMaybe<Scalars['String']>;\n token0_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token0_not_in?: InputMaybe<Array<Scalars['String']>>;\n token0_not_starts_with?: InputMaybe<Scalars['String']>;\n token0_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token0_starts_with?: InputMaybe<Scalars['String']>;\n token0_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token1?: InputMaybe<Scalars['String']>;\n token1_contains?: InputMaybe<Scalars['String']>;\n token1_contains_nocase?: InputMaybe<Scalars['String']>;\n token1_ends_with?: InputMaybe<Scalars['String']>;\n token1_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token1_gt?: InputMaybe<Scalars['String']>;\n token1_gte?: InputMaybe<Scalars['String']>;\n token1_in?: InputMaybe<Array<Scalars['String']>>;\n token1_lt?: InputMaybe<Scalars['String']>;\n token1_lte?: InputMaybe<Scalars['String']>;\n token1_not?: InputMaybe<Scalars['String']>;\n token1_not_contains?: InputMaybe<Scalars['String']>;\n token1_not_contains_nocase?: InputMaybe<Scalars['String']>;\n token1_not_ends_with?: InputMaybe<Scalars['String']>;\n token1_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token1_not_in?: InputMaybe<Array<Scalars['String']>>;\n token1_not_starts_with?: InputMaybe<Scalars['String']>;\n token1_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token1_starts_with?: InputMaybe<Scalars['String']>;\n token1_starts_with_nocase?: InputMaybe<Scalars['String']>;\n volumeToken0?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_gt?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_gte?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeToken0_lt?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_lte?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_not?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeToken1?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_gt?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_gte?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeToken1_lt?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_lte?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_not?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeTradedEth?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeTradedEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_not?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeTradedUsd?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeTradedUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n};\n\nexport enum PairDaily_OrderBy {\n Id = 'id',\n Timestamp = 'timestamp',\n Token0 = 'token0',\n Token1 = 'token1',\n VolumeToken0 = 'volumeToken0',\n VolumeToken1 = 'volumeToken1',\n VolumeTradedEth = 'volumeTradedEth',\n VolumeTradedUsd = 'volumeTradedUsd'\n}\n\nexport type PairHourly = {\n __typename?: 'PairHourly';\n /** token0-token1-timestamp sorted by token0 < token1 */\n id: Scalars['ID'];\n /** Start hour timestamp */\n timestamp: Scalars['Int'];\n /** The token 0 address lower than token1 */\n token0: Token;\n /** The token 1 address greater than token0 */\n token1: Token;\n /** Total volume of token 0 traded */\n volumeToken0?: Maybe<Scalars['BigInt']>;\n /** Total volume of token 1 traded */\n volumeToken1?: Maybe<Scalars['BigInt']>;\n /** Total volume in Eth */\n volumeTradedEth?: Maybe<Scalars['BigDecimal']>;\n /** Total volume in Usd */\n volumeTradedUsd?: Maybe<Scalars['BigDecimal']>;\n};\n\nexport type PairHourly_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n timestamp?: InputMaybe<Scalars['Int']>;\n timestamp_gt?: InputMaybe<Scalars['Int']>;\n timestamp_gte?: InputMaybe<Scalars['Int']>;\n timestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n timestamp_lt?: InputMaybe<Scalars['Int']>;\n timestamp_lte?: InputMaybe<Scalars['Int']>;\n timestamp_not?: InputMaybe<Scalars['Int']>;\n timestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n token0?: InputMaybe<Scalars['String']>;\n token0_contains?: InputMaybe<Scalars['String']>;\n token0_contains_nocase?: InputMaybe<Scalars['String']>;\n token0_ends_with?: InputMaybe<Scalars['String']>;\n token0_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token0_gt?: InputMaybe<Scalars['String']>;\n token0_gte?: InputMaybe<Scalars['String']>;\n token0_in?: InputMaybe<Array<Scalars['String']>>;\n token0_lt?: InputMaybe<Scalars['String']>;\n token0_lte?: InputMaybe<Scalars['String']>;\n token0_not?: InputMaybe<Scalars['String']>;\n token0_not_contains?: InputMaybe<Scalars['String']>;\n token0_not_contains_nocase?: InputMaybe<Scalars['String']>;\n token0_not_ends_with?: InputMaybe<Scalars['String']>;\n token0_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token0_not_in?: InputMaybe<Array<Scalars['String']>>;\n token0_not_starts_with?: InputMaybe<Scalars['String']>;\n token0_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token0_starts_with?: InputMaybe<Scalars['String']>;\n token0_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token1?: InputMaybe<Scalars['String']>;\n token1_contains?: InputMaybe<Scalars['String']>;\n token1_contains_nocase?: InputMaybe<Scalars['String']>;\n token1_ends_with?: InputMaybe<Scalars['String']>;\n token1_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token1_gt?: InputMaybe<Scalars['String']>;\n token1_gte?: InputMaybe<Scalars['String']>;\n token1_in?: InputMaybe<Array<Scalars['String']>>;\n token1_lt?: InputMaybe<Scalars['String']>;\n token1_lte?: InputMaybe<Scalars['String']>;\n token1_not?: InputMaybe<Scalars['String']>;\n token1_not_contains?: InputMaybe<Scalars['String']>;\n token1_not_contains_nocase?: InputMaybe<Scalars['String']>;\n token1_not_ends_with?: InputMaybe<Scalars['String']>;\n token1_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token1_not_in?: InputMaybe<Array<Scalars['String']>>;\n token1_not_starts_with?: InputMaybe<Scalars['String']>;\n token1_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token1_starts_with?: InputMaybe<Scalars['String']>;\n token1_starts_with_nocase?: InputMaybe<Scalars['String']>;\n volumeToken0?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_gt?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_gte?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeToken0_lt?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_lte?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_not?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeToken1?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_gt?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_gte?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeToken1_lt?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_lte?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_not?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeTradedEth?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeTradedEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_not?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeTradedUsd?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeTradedUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n};\n\nexport enum PairHourly_OrderBy {\n Id = 'id',\n Timestamp = 'timestamp',\n Token0 = 'token0',\n Token1 = 'token1',\n VolumeToken0 = 'volumeToken0',\n VolumeToken1 = 'volumeToken1',\n VolumeTradedEth = 'volumeTradedEth',\n VolumeTradedUsd = 'volumeTradedUsd'\n}\n\nexport type Pair_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n token0?: InputMaybe<Scalars['String']>;\n token0_contains?: InputMaybe<Scalars['String']>;\n token0_contains_nocase?: InputMaybe<Scalars['String']>;\n token0_ends_with?: InputMaybe<Scalars['String']>;\n token0_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token0_gt?: InputMaybe<Scalars['String']>;\n token0_gte?: InputMaybe<Scalars['String']>;\n token0_in?: InputMaybe<Array<Scalars['String']>>;\n token0_lt?: InputMaybe<Scalars['String']>;\n token0_lte?: InputMaybe<Scalars['String']>;\n token0_not?: InputMaybe<Scalars['String']>;\n token0_not_contains?: InputMaybe<Scalars['String']>;\n token0_not_contains_nocase?: InputMaybe<Scalars['String']>;\n token0_not_ends_with?: InputMaybe<Scalars['String']>;\n token0_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token0_not_in?: InputMaybe<Array<Scalars['String']>>;\n token0_not_starts_with?: InputMaybe<Scalars['String']>;\n token0_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token0_starts_with?: InputMaybe<Scalars['String']>;\n token0_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token1?: InputMaybe<Scalars['String']>;\n token1_contains?: InputMaybe<Scalars['String']>;\n token1_contains_nocase?: InputMaybe<Scalars['String']>;\n token1_ends_with?: InputMaybe<Scalars['String']>;\n token1_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token1_gt?: InputMaybe<Scalars['String']>;\n token1_gte?: InputMaybe<Scalars['String']>;\n token1_in?: InputMaybe<Array<Scalars['String']>>;\n token1_lt?: InputMaybe<Scalars['String']>;\n token1_lte?: InputMaybe<Scalars['String']>;\n token1_not?: InputMaybe<Scalars['String']>;\n token1_not_contains?: InputMaybe<Scalars['String']>;\n token1_not_contains_nocase?: InputMaybe<Scalars['String']>;\n token1_not_ends_with?: InputMaybe<Scalars['String']>;\n token1_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token1_not_in?: InputMaybe<Array<Scalars['String']>>;\n token1_not_starts_with?: InputMaybe<Scalars['String']>;\n token1_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token1_starts_with?: InputMaybe<Scalars['String']>;\n token1_starts_with_nocase?: InputMaybe<Scalars['String']>;\n volumeToken0?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_gt?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_gte?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeToken0_lt?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_lte?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_not?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeToken1?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_gt?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_gte?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeToken1_lt?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_lte?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_not?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeTradedEth?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeTradedEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_not?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeTradedUsd?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeTradedUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n};\n\nexport enum Pair_OrderBy {\n Id = 'id',\n Token0 = 'token0',\n Token1 = 'token1',\n VolumeToken0 = 'volumeToken0',\n VolumeToken1 = 'volumeToken1',\n VolumeTradedEth = 'volumeTradedEth',\n VolumeTradedUsd = 'volumeTradedUsd'\n}\n\nexport type Query = {\n __typename?: 'Query';\n /** Access to subgraph metadata */\n _meta?: Maybe<_Meta_>;\n bundle?: Maybe<Bundle>;\n bundles: Array<Bundle>;\n dailyTotal?: Maybe<DailyTotal>;\n dailyTotals: Array<DailyTotal>;\n hourlyTotal?: Maybe<HourlyTotal>;\n hourlyTotals: Array<HourlyTotal>;\n order?: Maybe<Order>;\n orders: Array<Order>;\n pair?: Maybe<Pair>;\n pairDailies: Array<PairDaily>;\n pairDaily?: Maybe<PairDaily>;\n pairHourlies: Array<PairHourly>;\n pairHourly?: Maybe<PairHourly>;\n pairs: Array<Pair>;\n settlement?: Maybe<Settlement>;\n settlements: Array<Settlement>;\n token?: Maybe<Token>;\n tokenDailyTotal?: Maybe<TokenDailyTotal>;\n tokenDailyTotals: Array<TokenDailyTotal>;\n tokenHourlyTotal?: Maybe<TokenHourlyTotal>;\n tokenHourlyTotals: Array<TokenHourlyTotal>;\n tokenTradingEvent?: Maybe<TokenTradingEvent>;\n tokenTradingEvents: Array<TokenTradingEvent>;\n tokens: Array<Token>;\n total?: Maybe<Total>;\n totals: Array<Total>;\n trade?: Maybe<Trade>;\n trades: Array<Trade>;\n uniswapPool?: Maybe<UniswapPool>;\n uniswapPools: Array<UniswapPool>;\n user?: Maybe<User>;\n users: Array<User>;\n};\n\n\nexport type Query_MetaArgs = {\n block?: InputMaybe<Block_Height>;\n};\n\n\nexport type QueryBundleArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryBundlesArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Bundle_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Bundle_Filter>;\n};\n\n\nexport type QueryDailyTotalArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryDailyTotalsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<DailyTotal_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<DailyTotal_Filter>;\n};\n\n\nexport type QueryHourlyTotalArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryHourlyTotalsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<HourlyTotal_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<HourlyTotal_Filter>;\n};\n\n\nexport type QueryOrderArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryOrdersArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Order_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Order_Filter>;\n};\n\n\nexport type QueryPairArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryPairDailiesArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<PairDaily_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<PairDaily_Filter>;\n};\n\n\nexport type QueryPairDailyArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryPairHourliesArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<PairHourly_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<PairHourly_Filter>;\n};\n\n\nexport type QueryPairHourlyArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryPairsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Pair_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Pair_Filter>;\n};\n\n\nexport type QuerySettlementArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QuerySettlementsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Settlement_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Settlement_Filter>;\n};\n\n\nexport type QueryTokenArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryTokenDailyTotalArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryTokenDailyTotalsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<TokenDailyTotal_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<TokenDailyTotal_Filter>;\n};\n\n\nexport type QueryTokenHourlyTotalArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryTokenHourlyTotalsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<TokenHourlyTotal_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<TokenHourlyTotal_Filter>;\n};\n\n\nexport type QueryTokenTradingEventArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryTokenTradingEventsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<TokenTradingEvent_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<TokenTradingEvent_Filter>;\n};\n\n\nexport type QueryTokensArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Token_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Token_Filter>;\n};\n\n\nexport type QueryTotalArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryTotalsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Total_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Total_Filter>;\n};\n\n\nexport type QueryTradeArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryTradesArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Trade_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Trade_Filter>;\n};\n\n\nexport type QueryUniswapPoolArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryUniswapPoolsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<UniswapPool_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<UniswapPool_Filter>;\n};\n\n\nexport type QueryUserArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryUsersArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<User_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<User_Filter>;\n};\n\nexport type Settlement = {\n __typename?: 'Settlement';\n /** First trade timestamp */\n firstTradeTimestamp: Scalars['Int'];\n /** TxHash */\n id: Scalars['ID'];\n /** User who solved the settlement */\n solver?: Maybe<User>;\n /** Collection of trades */\n trades?: Maybe<Array<Trade>>;\n /** Transaction hash */\n txHash: Scalars['Bytes'];\n};\n\n\nexport type SettlementTradesArgs = {\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Trade_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n where?: InputMaybe<Trade_Filter>;\n};\n\nexport type Settlement_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n firstTradeTimestamp?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_gt?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_gte?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n firstTradeTimestamp_lt?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_lte?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_not?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n solver?: InputMaybe<Scalars['String']>;\n solver_contains?: InputMaybe<Scalars['String']>;\n solver_contains_nocase?: InputMaybe<Scalars['String']>;\n solver_ends_with?: InputMaybe<Scalars['String']>;\n solver_ends_with_nocase?: InputMaybe<Scalars['String']>;\n solver_gt?: InputMaybe<Scalars['String']>;\n solver_gte?: InputMaybe<Scalars['String']>;\n solver_in?: InputMaybe<Array<Scalars['String']>>;\n solver_lt?: InputMaybe<Scalars['String']>;\n solver_lte?: InputMaybe<Scalars['String']>;\n solver_not?: InputMaybe<Scalars['String']>;\n solver_not_contains?: InputMaybe<Scalars['String']>;\n solver_not_contains_nocase?: InputMaybe<Scalars['String']>;\n solver_not_ends_with?: InputMaybe<Scalars['String']>;\n solver_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n solver_not_in?: InputMaybe<Array<Scalars['String']>>;\n solver_not_starts_with?: InputMaybe<Scalars['String']>;\n solver_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n solver_starts_with?: InputMaybe<Scalars['String']>;\n solver_starts_with_nocase?: InputMaybe<Scalars['String']>;\n txHash?: InputMaybe<Scalars['Bytes']>;\n txHash_contains?: InputMaybe<Scalars['Bytes']>;\n txHash_in?: InputMaybe<Array<Scalars['Bytes']>>;\n txHash_not?: InputMaybe<Scalars['Bytes']>;\n txHash_not_contains?: InputMaybe<Scalars['Bytes']>;\n txHash_not_in?: InputMaybe<Array<Scalars['Bytes']>>;\n};\n\nexport enum Settlement_OrderBy {\n FirstTradeTimestamp = 'firstTradeTimestamp',\n Id = 'id',\n Solver = 'solver',\n Trades = 'trades',\n TxHash = 'txHash'\n}\n\nexport type Subscription = {\n __typename?: 'Subscription';\n /** Access to subgraph metadata */\n _meta?: Maybe<_Meta_>;\n bundle?: Maybe<Bundle>;\n bundles: Array<Bundle>;\n dailyTotal?: Maybe<DailyTotal>;\n dailyTotals: Array<DailyTotal>;\n hourlyTotal?: Maybe<HourlyTotal>;\n hourlyTotals: Array<HourlyTotal>;\n order?: Maybe<Order>;\n orders: Array<Order>;\n pair?: Maybe<Pair>;\n pairDailies: Array<PairDaily>;\n pairDaily?: Maybe<PairDaily>;\n pairHourlies: Array<PairHourly>;\n pairHourly?: Maybe<PairHourly>;\n pairs: Array<Pair>;\n settlement?: Maybe<Settlement>;\n settlements: Array<Settlement>;\n token?: Maybe<Token>;\n tokenDailyTotal?: Maybe<TokenDailyTotal>;\n tokenDailyTotals: Array<TokenDailyTotal>;\n tokenHourlyTotal?: Maybe<TokenHourlyTotal>;\n tokenHourlyTotals: Array<TokenHourlyTotal>;\n tokenTradingEvent?: Maybe<TokenTradingEvent>;\n tokenTradingEvents: Array<TokenTradingEvent>;\n tokens: Array<Token>;\n total?: Maybe<Total>;\n totals: Array<Total>;\n trade?: Maybe<Trade>;\n trades: Array<Trade>;\n uniswapPool?: Maybe<UniswapPool>;\n uniswapPools: Array<UniswapPool>;\n user?: Maybe<User>;\n users: Array<User>;\n};\n\n\nexport type Subscription_MetaArgs = {\n block?: InputMaybe<Block_Height>;\n};\n\n\nexport type SubscriptionBundleArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionBundlesArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Bundle_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Bundle_Filter>;\n};\n\n\nexport type SubscriptionDailyTotalArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionDailyTotalsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<DailyTotal_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<DailyTotal_Filter>;\n};\n\n\nexport type SubscriptionHourlyTotalArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionHourlyTotalsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<HourlyTotal_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<HourlyTotal_Filter>;\n};\n\n\nexport type SubscriptionOrderArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionOrdersArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Order_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Order_Filter>;\n};\n\n\nexport type SubscriptionPairArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionPairDailiesArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<PairDaily_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<PairDaily_Filter>;\n};\n\n\nexport type SubscriptionPairDailyArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionPairHourliesArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<PairHourly_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<PairHourly_Filter>;\n};\n\n\nexport type SubscriptionPairHourlyArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionPairsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Pair_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Pair_Filter>;\n};\n\n\nexport type SubscriptionSettlementArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionSettlementsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Settlement_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Settlement_Filter>;\n};\n\n\nexport type SubscriptionTokenArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionTokenDailyTotalArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionTokenDailyTotalsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<TokenDailyTotal_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<TokenDailyTotal_Filter>;\n};\n\n\nexport type SubscriptionTokenHourlyTotalArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionTokenHourlyTotalsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<TokenHourlyTotal_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<TokenHourlyTotal_Filter>;\n};\n\n\nexport type SubscriptionTokenTradingEventArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionTokenTradingEventsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<TokenTradingEvent_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<TokenTradingEvent_Filter>;\n};\n\n\nexport type SubscriptionTokensArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Token_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Token_Filter>;\n};\n\n\nexport type SubscriptionTotalArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionTotalsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Total_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Total_Filter>;\n};\n\n\nexport type SubscriptionTradeArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionTradesArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Trade_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Trade_Filter>;\n};\n\n\nexport type SubscriptionUniswapPoolArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionUniswapPoolsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<UniswapPool_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<UniswapPool_Filter>;\n};\n\n\nexport type SubscriptionUserArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionUsersArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<User_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<User_Filter>;\n};\n\nexport type Token = {\n __typename?: 'Token';\n /** Token address */\n address: Scalars['Bytes'];\n /** Pools token is in that are allow listed for USD pricing */\n allowedPools: Array<UniswapPool>;\n /** Token decimals fetched by contract call */\n decimals: Scalars['Int'];\n /** First token trade block timestamp */\n firstTradeTimestamp?: Maybe<Scalars['Int']>;\n /** History of trading for this token */\n history: Array<TokenTradingEvent>;\n /** Token address to hexString */\n id: Scalars['ID'];\n /** Token name fetched by ERC20 contract call */\n name: Scalars['String'];\n /** Total trades */\n numberOfTrades: Scalars['Int'];\n /** Derived price in ETH */\n priceEth?: Maybe<Scalars['BigDecimal']>;\n /** Derived price in USD */\n priceUsd?: Maybe<Scalars['BigDecimal']>;\n /** Token symbol fetched by contract call */\n symbol: Scalars['String'];\n /** Total volume managed in CowSwap */\n totalVolume?: Maybe<Scalars['BigInt']>;\n /** Total volume in Eth */\n totalVolumeEth?: Maybe<Scalars['BigDecimal']>;\n /** Total volume in Usd */\n totalVolumeUsd?: Maybe<Scalars['BigDecimal']>;\n};\n\n\nexport type TokenAllowedPoolsArgs = {\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<UniswapPool_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n where?: InputMaybe<UniswapPool_Filter>;\n};\n\n\nexport type TokenHistoryArgs = {\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<TokenTradingEvent_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n where?: InputMaybe<TokenTradingEvent_Filter>;\n};\n\nexport type TokenDailyTotal = {\n __typename?: 'TokenDailyTotal';\n /** Average trade price */\n averagePrice: Scalars['BigDecimal'];\n /** Last trade price */\n closePrice: Scalars['BigDecimal'];\n /** Higher trade price */\n higherPrice: Scalars['BigDecimal'];\n /** TokenAddress + timestamp day */\n id: Scalars['ID'];\n /** Lower trade price */\n lowerPrice: Scalars['BigDecimal'];\n /** First trade price */\n openPrice: Scalars['BigDecimal'];\n /** Start day timestamp */\n timestamp: Scalars['Int'];\n /** Token address */\n token: Token;\n /** Number of trades that day */\n totalTrades: Scalars['BigInt'];\n /** Total volume traded that day in token */\n totalVolume: Scalars['BigInt'];\n /** Total amount traded that day in ETH */\n totalVolumeEth: Scalars['BigDecimal'];\n /** Total amount traded that day in USD */\n totalVolumeUsd: Scalars['BigDecimal'];\n};\n\nexport type TokenDailyTotal_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n averagePrice?: InputMaybe<Scalars['BigDecimal']>;\n averagePrice_gt?: InputMaybe<Scalars['BigDecimal']>;\n averagePrice_gte?: InputMaybe<Scalars['BigDecimal']>;\n averagePrice_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n averagePrice_lt?: InputMaybe<Scalars['BigDecimal']>;\n averagePrice_lte?: InputMaybe<Scalars['BigDecimal']>;\n averagePrice_not?: InputMaybe<Scalars['BigDecimal']>;\n averagePrice_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n closePrice?: InputMaybe<Scalars['BigDecimal']>;\n closePrice_gt?: InputMaybe<Scalars['BigDecimal']>;\n closePrice_gte?: InputMaybe<Scalars['BigDecimal']>;\n closePrice_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n closePrice_lt?: InputMaybe<Scalars['BigDecimal']>;\n closePrice_lte?: InputMaybe<Scalars['BigDecimal']>;\n closePrice_not?: InputMaybe<Scalars['BigDecimal']>;\n closePrice_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n higherPrice?: InputMaybe<Scalars['BigDecimal']>;\n higherPrice_gt?: InputMaybe<Scalars['BigDecimal']>;\n higherPrice_gte?: InputMaybe<Scalars['BigDecimal']>;\n higherPrice_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n higherPrice_lt?: InputMaybe<Scalars['BigDecimal']>;\n higherPrice_lte?: InputMaybe<Scalars['BigDecimal']>;\n higherPrice_not?: InputMaybe<Scalars['BigDecimal']>;\n higherPrice_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n lowerPrice?: InputMaybe<Scalars['BigDecimal']>;\n lowerPrice_gt?: InputMaybe<Scalars['BigDecimal']>;\n lowerPrice_gte?: InputMaybe<Scalars['BigDecimal']>;\n lowerPrice_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n lowerPrice_lt?: InputMaybe<Scalars['BigDecimal']>;\n lowerPrice_lte?: InputMaybe<Scalars['BigDecimal']>;\n lowerPrice_not?: InputMaybe<Scalars['BigDecimal']>;\n lowerPrice_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n openPrice?: InputMaybe<Scalars['BigDecimal']>;\n openPrice_gt?: InputMaybe<Scalars['BigDecimal']>;\n openPrice_gte?: InputMaybe<Scalars['BigDecimal']>;\n openPrice_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n openPrice_lt?: InputMaybe<Scalars['BigDecimal']>;\n openPrice_lte?: InputMaybe<Scalars['BigDecimal']>;\n openPrice_not?: InputMaybe<Scalars['BigDecimal']>;\n openPrice_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n timestamp?: InputMaybe<Scalars['Int']>;\n timestamp_gt?: InputMaybe<Scalars['Int']>;\n timestamp_gte?: InputMaybe<Scalars['Int']>;\n timestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n timestamp_lt?: InputMaybe<Scalars['Int']>;\n timestamp_lte?: InputMaybe<Scalars['Int']>;\n timestamp_not?: InputMaybe<Scalars['Int']>;\n timestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n token?: InputMaybe<Scalars['String']>;\n token_contains?: InputMaybe<Scalars['String']>;\n token_contains_nocase?: InputMaybe<Scalars['String']>;\n token_ends_with?: InputMaybe<Scalars['String']>;\n token_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token_gt?: InputMaybe<Scalars['String']>;\n token_gte?: InputMaybe<Scalars['String']>;\n token_in?: InputMaybe<Array<Scalars['String']>>;\n token_lt?: InputMaybe<Scalars['String']>;\n token_lte?: InputMaybe<Scalars['String']>;\n token_not?: InputMaybe<Scalars['String']>;\n token_not_contains?: InputMaybe<Scalars['String']>;\n token_not_contains_nocase?: InputMaybe<Scalars['String']>;\n token_not_ends_with?: InputMaybe<Scalars['String']>;\n token_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token_not_in?: InputMaybe<Array<Scalars['String']>>;\n token_not_starts_with?: InputMaybe<Scalars['String']>;\n token_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token_starts_with?: InputMaybe<Scalars['String']>;\n token_starts_with_nocase?: InputMaybe<Scalars['String']>;\n totalTrades?: InputMaybe<Scalars['BigInt']>;\n totalTrades_gt?: InputMaybe<Scalars['BigInt']>;\n totalTrades_gte?: InputMaybe<Scalars['BigInt']>;\n totalTrades_in?: InputMaybe<Array<Scalars['BigInt']>>;\n totalTrades_lt?: InputMaybe<Scalars['BigInt']>;\n totalTrades_lte?: InputMaybe<Scalars['BigInt']>;\n totalTrades_not?: InputMaybe<Scalars['BigInt']>;\n totalTrades_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n totalVolume?: InputMaybe<Scalars['BigInt']>;\n totalVolumeEth?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalVolumeEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_not?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalVolumeUsd?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalVolumeUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalVolume_gt?: InputMaybe<Scalars['BigInt']>;\n totalVolume_gte?: InputMaybe<Scalars['BigInt']>;\n totalVolume_in?: InputMaybe<Array<Scalars['BigInt']>>;\n totalVolume_lt?: InputMaybe<Scalars['BigInt']>;\n totalVolume_lte?: InputMaybe<Scalars['BigInt']>;\n totalVolume_not?: InputMaybe<Scalars['BigInt']>;\n totalVolume_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n};\n\nexport enum TokenDailyTotal_OrderBy {\n AveragePrice = 'averagePrice',\n ClosePrice = 'closePrice',\n HigherPrice = 'higherPrice',\n Id = 'id',\n LowerPrice = 'lowerPrice',\n OpenPrice = 'openPrice',\n Timestamp = 'timestamp',\n Token = 'token',\n TotalTrades = 'totalTrades',\n TotalVolume = 'totalVolume',\n TotalVolumeEth = 'totalVolumeEth',\n TotalVolumeUsd = 'totalVolumeUsd'\n}\n\nexport type TokenHourlyTotal = {\n __typename?: 'TokenHourlyTotal';\n /** Average trade price */\n averagePrice: Scalars['BigDecimal'];\n /** Last trade price */\n closePrice: Scalars['BigDecimal'];\n /** Higher trade price */\n higherPrice: Scalars['BigDecimal'];\n /** TokenAddress + timestamp hour */\n id: Scalars['ID'];\n /** Lower trade price */\n lowerPrice: Scalars['BigDecimal'];\n /** First trade price */\n openPrice: Scalars['BigDecimal'];\n /** Start hour timestamp */\n timestamp: Scalars['Int'];\n /** Token address */\n token: Token;\n /** Number of trades that hour */\n totalTrades: Scalars['BigInt'];\n /** Total volume traded that day in token */\n totalVolume: Scalars['BigInt'];\n /** Total amount traded that hour in ETH */\n totalVolumeEth: Scalars['BigDecimal'];\n /** Total amount traded that hour in USD */\n totalVolumeUsd: Scalars['BigDecimal'];\n};\n\nexport type TokenHourlyTotal_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n averagePrice?: InputMaybe<Scalars['BigDecimal']>;\n averagePrice_gt?: InputMaybe<Scalars['BigDecimal']>;\n averagePrice_gte?: InputMaybe<Scalars['BigDecimal']>;\n averagePrice_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n averagePrice_lt?: InputMaybe<Scalars['BigDecimal']>;\n averagePrice_lte?: InputMaybe<Scalars['BigDecimal']>;\n averagePrice_not?: InputMaybe<Scalars['BigDecimal']>;\n averagePrice_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n closePrice?: InputMaybe<Scalars['BigDecimal']>;\n closePrice_gt?: InputMaybe<Scalars['BigDecimal']>;\n closePrice_gte?: InputMaybe<Scalars['BigDecimal']>;\n closePrice_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n closePrice_lt?: InputMaybe<Scalars['BigDecimal']>;\n closePrice_lte?: InputMaybe<Scalars['BigDecimal']>;\n closePrice_not?: InputMaybe<Scalars['BigDecimal']>;\n closePrice_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n higherPrice?: InputMaybe<Scalars['BigDecimal']>;\n higherPrice_gt?: InputMaybe<Scalars['BigDecimal']>;\n higherPrice_gte?: InputMaybe<Scalars['BigDecimal']>;\n higherPrice_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n higherPrice_lt?: InputMaybe<Scalars['BigDecimal']>;\n higherPrice_lte?: InputMaybe<Scalars['BigDecimal']>;\n higherPrice_not?: InputMaybe<Scalars['BigDecimal']>;\n higherPrice_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n lowerPrice?: InputMaybe<Scalars['BigDecimal']>;\n lowerPrice_gt?: InputMaybe<Scalars['BigDecimal']>;\n lowerPrice_gte?: InputMaybe<Scalars['BigDecimal']>;\n lowerPrice_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n lowerPrice_lt?: InputMaybe<Scalars['BigDecimal']>;\n lowerPrice_lte?: InputMaybe<Scalars['BigDecimal']>;\n lowerPrice_not?: InputMaybe<Scalars['BigDecimal']>;\n lowerPrice_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n openPrice?: InputMaybe<Scalars['BigDecimal']>;\n openPrice_gt?: InputMaybe<Scalars['BigDecimal']>;\n openPrice_gte?: InputMaybe<Scalars['BigDecimal']>;\n openPrice_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n openPrice_lt?: InputMaybe<Scalars['BigDecimal']>;\n openPrice_lte?: InputMaybe<Scalars['BigDecimal']>;\n openPrice_not?: InputMaybe<Scalars['BigDecimal']>;\n openPrice_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n timestamp?: InputMaybe<Scalars['Int']>;\n timestamp_gt?: InputMaybe<Scalars['Int']>;\n timestamp_gte?: InputMaybe<Scalars['Int']>;\n timestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n timestamp_lt?: InputMaybe<Scalars['Int']>;\n timestamp_lte?: InputMaybe<Scalars['Int']>;\n timestamp_not?: InputMaybe<Scalars['Int']>;\n timestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n token?: InputMaybe<Scalars['String']>;\n token_contains?: InputMaybe<Scalars['String']>;\n token_contains_nocase?: InputMaybe<Scalars['String']>;\n token_ends_with?: InputMaybe<Scalars['String']>;\n token_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token_gt?: InputMaybe<Scalars['String']>;\n token_gte?: InputMaybe<Scalars['String']>;\n token_in?: InputMaybe<Array<Scalars['String']>>;\n token_lt?: InputMaybe<Scalars['String']>;\n token_lte?: InputMaybe<Scalars['String']>;\n token_not?: InputMaybe<Scalars['String']>;\n token_not_contains?: InputMaybe<Scalars['String']>;\n token_not_contains_nocase?: InputMaybe<Scalars['String']>;\n token_not_ends_with?: InputMaybe<Scalars['String']>;\n token_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token_not_in?: InputMaybe<Array<Scalars['String']>>;\n token_not_starts_with?: InputMaybe<Scalars['String']>;\n token_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token_starts_with?: InputMaybe<Scalars['String']>;\n token_starts_with_nocase?: InputMaybe<Scalars['String']>;\n totalTrades?: InputMaybe<Scalars['BigInt']>;\n totalTrades_gt?: InputMaybe<Scalars['BigInt']>;\n totalTrades_gte?: InputMaybe<Scalars['BigInt']>;\n totalTrades_in?: InputMaybe<Array<Scalars['BigInt']>>;\n totalTrades_lt?: InputMaybe<Scalars['BigInt']>;\n totalTrades_lte?: InputMaybe<Scalars['BigInt']>;\n totalTrades_not?: InputMaybe<Scalars['BigInt']>;\n totalTrades_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n totalVolume?: InputMaybe<Scalars['BigInt']>;\n totalVolumeEth?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalVolumeEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_not?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalVolumeUsd?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalVolumeUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalVolume_gt?: InputMaybe<Scalars['BigInt']>;\n totalVolume_gte?: InputMaybe<Scalars['BigInt']>;\n totalVolume_in?: InputMaybe<Array<Scalars['BigInt']>>;\n totalVolume_lt?: InputMaybe<Scalars['BigInt']>;\n totalVolume_lte?: InputMaybe<Scalars['BigInt']>;\n totalVolume_not?: InputMaybe<Scalars['BigInt']>;\n totalVolume_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n};\n\nexport enum TokenHourlyTotal_OrderBy {\n AveragePrice = 'averagePrice',\n ClosePrice = 'closePrice',\n HigherPrice = 'higherPrice',\n Id = 'id',\n LowerPrice = 'lowerPrice',\n OpenPrice = 'openPrice',\n Timestamp = 'timestamp',\n Token = 'token',\n TotalTrades = 'totalTrades',\n TotalVolume = 'totalVolume',\n TotalVolumeEth = 'totalVolumeEth',\n TotalVolumeUsd = 'totalVolumeUsd'\n}\n\nexport type TokenTradingEvent = {\n __typename?: 'TokenTradingEvent';\n /** Amount in Eth */\n amountEth: Scalars['BigDecimal'];\n /** Amount in Usd */\n amountUsd: Scalars['BigDecimal'];\n /** Id built using token-timestamp */\n id: Scalars['ID'];\n /** Timestamp */\n timestamp: Scalars['Int'];\n /** Token */\n token: Token;\n /** Trade */\n trade: Trade;\n};\n\nexport type TokenTradingEvent_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n amountEth?: InputMaybe<Scalars['BigDecimal']>;\n amountEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n amountEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n amountEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n amountEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n amountEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n amountEth_not?: InputMaybe<Scalars['BigDecimal']>;\n amountEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n amountUsd?: InputMaybe<Scalars['BigDecimal']>;\n amountUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n amountUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n amountUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n amountUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n amountUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n amountUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n amountUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n timestamp?: InputMaybe<Scalars['Int']>;\n timestamp_gt?: InputMaybe<Scalars['Int']>;\n timestamp_gte?: InputMaybe<Scalars['Int']>;\n timestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n timestamp_lt?: InputMaybe<Scalars['Int']>;\n timestamp_lte?: InputMaybe<Scalars['Int']>;\n timestamp_not?: InputMaybe<Scalars['Int']>;\n timestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n token?: InputMaybe<Scalars['String']>;\n token_contains?: InputMaybe<Scalars['String']>;\n token_contains_nocase?: InputMaybe<Scalars['String']>;\n token_ends_with?: InputMaybe<Scalars['String']>;\n token_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token_gt?: InputMaybe<Scalars['String']>;\n token_gte?: InputMaybe<Scalars['String']>;\n token_in?: InputMaybe<Array<Scalars['String']>>;\n token_lt?: InputMaybe<Scalars['String']>;\n token_lte?: InputMaybe<Scalars['String']>;\n token_not?: InputMaybe<Scalars['String']>;\n token_not_contains?: InputMaybe<Scalars['String']>;\n token_not_contains_nocase?: InputMaybe<Scalars['String']>;\n token_not_ends_with?: InputMaybe<Scalars['String']>;\n token_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token_not_in?: InputMaybe<Array<Scalars['String']>>;\n token_not_starts_with?: InputMaybe<Scalars['String']>;\n token_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token_starts_with?: InputMaybe<Scalars['String']>;\n token_starts_with_nocase?: InputMaybe<Scalars['String']>;\n trade?: InputMaybe<Scalars['String']>;\n trade_contains?: InputMaybe<Scalars['String']>;\n trade_contains_nocase?: InputMaybe<Scalars['String']>;\n trade_ends_with?: InputMaybe<Scalars['String']>;\n trade_ends_with_nocase?: InputMaybe<Scalars['String']>;\n trade_gt?: InputMaybe<Scalars['String']>;\n trade_gte?: InputMaybe<Scalars['String']>;\n trade_in?: InputMaybe<Array<Scalars['String']>>;\n trade_lt?: InputMaybe<Scalars['String']>;\n trade_lte?: InputMaybe<Scalars['String']>;\n trade_not?: InputMaybe<Scalars['String']>;\n trade_not_contains?: InputMaybe<Scalars['String']>;\n trade_not_contains_nocase?: InputMaybe<Scalars['String']>;\n trade_not_ends_with?: InputMaybe<Scalars['String']>;\n trade_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n trade_not_in?: InputMaybe<Array<Scalars['String']>>;\n trade_not_starts_with?: InputMaybe<Scalars['String']>;\n trade_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n trade_starts_with?: InputMaybe<Scalars['String']>;\n trade_starts_with_nocase?: InputMaybe<Scalars['String']>;\n};\n\nexport enum TokenTradingEvent_OrderBy {\n AmountEth = 'amountEth',\n AmountUsd = 'amountUsd',\n Id = 'id',\n Timestamp = 'timestamp',\n Token = 'token',\n Trade = 'trade'\n}\n\nexport type Token_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n address?: InputMaybe<Scalars['Bytes']>;\n address_contains?: InputMaybe<Scalars['Bytes']>;\n address_in?: InputMaybe<Array<Scalars['Bytes']>>;\n address_not?: InputMaybe<Scalars['Bytes']>;\n address_not_contains?: InputMaybe<Scalars['Bytes']>;\n address_not_in?: InputMaybe<Array<Scalars['Bytes']>>;\n allowedPools?: InputMaybe<Array<Scalars['String']>>;\n allowedPools_contains?: InputMaybe<Array<Scalars['String']>>;\n allowedPools_contains_nocase?: InputMaybe<Array<Scalars['String']>>;\n allowedPools_not?: InputMaybe<Array<Scalars['String']>>;\n allowedPools_not_contains?: InputMaybe<Array<Scalars['String']>>;\n allowedPools_not_contains_nocase?: InputMaybe<Array<Scalars['String']>>;\n decimals?: InputMaybe<Scalars['Int']>;\n decimals_gt?: InputMaybe<Scalars['Int']>;\n decimals_gte?: InputMaybe<Scalars['Int']>;\n decimals_in?: InputMaybe<Array<Scalars['Int']>>;\n decimals_lt?: InputMaybe<Scalars['Int']>;\n decimals_lte?: InputMaybe<Scalars['Int']>;\n decimals_not?: InputMaybe<Scalars['Int']>;\n decimals_not_in?: InputMaybe<Array<Scalars['Int']>>;\n firstTradeTimestamp?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_gt?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_gte?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n firstTradeTimestamp_lt?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_lte?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_not?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n name?: InputMaybe<Scalars['String']>;\n name_contains?: InputMaybe<Scalars['String']>;\n name_contains_nocase?: InputMaybe<Scalars['String']>;\n name_ends_with?: InputMaybe<Scalars['String']>;\n name_ends_with_nocase?: InputMaybe<Scalars['String']>;\n name_gt?: InputMaybe<Scalars['String']>;\n name_gte?: InputMaybe<Scalars['String']>;\n name_in?: InputMaybe<Array<Scalars['String']>>;\n name_lt?: InputMaybe<Scalars['String']>;\n name_lte?: InputMaybe<Scalars['String']>;\n name_not?: InputMaybe<Scalars['String']>;\n name_not_contains?: InputMaybe<Scalars['String']>;\n name_not_contains_nocase?: InputMaybe<Scalars['String']>;\n name_not_ends_with?: InputMaybe<Scalars['String']>;\n name_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n name_not_in?: InputMaybe<Array<Scalars['String']>>;\n name_not_starts_with?: InputMaybe<Scalars['String']>;\n name_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n name_starts_with?: InputMaybe<Scalars['String']>;\n name_starts_with_nocase?: InputMaybe<Scalars['String']>;\n numberOfTrades?: InputMaybe<Scalars['Int']>;\n numberOfTrades_gt?: InputMaybe<Scalars['Int']>;\n numberOfTrades_gte?: InputMaybe<Scalars['Int']>;\n numberOfTrades_in?: InputMaybe<Array<Scalars['Int']>>;\n numberOfTrades_lt?: InputMaybe<Scalars['Int']>;\n numberOfTrades_lte?: InputMaybe<Scalars['Int']>;\n numberOfTrades_not?: InputMaybe<Scalars['Int']>;\n numberOfTrades_not_in?: InputMaybe<Array<Scalars['Int']>>;\n priceEth?: InputMaybe<Scalars['BigDecimal']>;\n priceEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n priceEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n priceEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n priceEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n priceEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n priceEth_not?: InputMaybe<Scalars['BigDecimal']>;\n priceEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n priceUsd?: InputMaybe<Scalars['BigDecimal']>;\n priceUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n priceUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n priceUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n priceUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n priceUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n priceUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n priceUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n symbol?: InputMaybe<Scalars['String']>;\n symbol_contains?: InputMaybe<Scalars['String']>;\n symbol_contains_nocase?: InputMaybe<Scalars['String']>;\n symbol_ends_with?: InputMaybe<Scalars['String']>;\n symbol_ends_with_nocase?: InputMaybe<Scalars['String']>;\n symbol_gt?: InputMaybe<Scalars['String']>;\n symbol_gte?: InputMaybe<Scalars['String']>;\n symbol_in?: InputMaybe<Array<Scalars['String']>>;\n symbol_lt?: InputMaybe<Scalars['String']>;\n symbol_lte?: InputMaybe<Scalars['String']>;\n symbol_not?: InputMaybe<Scalars['String']>;\n symbol_not_contains?: InputMaybe<Scalars['String']>;\n symbol_not_contains_nocase?: InputMaybe<Scalars['String']>;\n symbol_not_ends_with?: InputMaybe<Scalars['String']>;\n symbol_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n symbol_not_in?: InputMaybe<Array<Scalars['String']>>;\n symbol_not_starts_with?: InputMaybe<Scalars['String']>;\n symbol_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n symbol_starts_with?: InputMaybe<Scalars['String']>;\n symbol_starts_with_nocase?: InputMaybe<Scalars['String']>;\n totalVolume?: InputMaybe<Scalars['BigInt']>;\n totalVolumeEth?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalVolumeEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_not?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalVolumeUsd?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalVolumeUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalVolume_gt?: InputMaybe<Scalars['BigInt']>;\n totalVolume_gte?: InputMaybe<Scalars['BigInt']>;\n totalVolume_in?: InputMaybe<Array<Scalars['BigInt']>>;\n totalVolume_lt?: InputMaybe<Scalars['BigInt']>;\n totalVolume_lte?: InputMaybe<Scalars['BigInt']>;\n totalVolume_not?: InputMaybe<Scalars['BigInt']>;\n totalVolume_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n};\n\nexport enum Token_OrderBy {\n Address = 'address',\n AllowedPools = 'allowedPools',\n Decimals = 'decimals',\n FirstTradeTimestamp = 'firstTradeTimestamp',\n History = 'history',\n Id = 'id',\n Name = 'name',\n NumberOfTrades = 'numberOfTrades',\n PriceEth = 'priceEth',\n PriceUsd = 'priceUsd',\n Symbol = 'symbol',\n TotalVolume = 'totalVolume',\n TotalVolumeEth = 'totalVolumeEth',\n TotalVolumeUsd = 'totalVolumeUsd'\n}\n\nexport type Total = {\n __typename?: 'Total';\n /** Total fees in Eth */\n feesEth?: Maybe<Scalars['BigDecimal']>;\n /** Total fees in USD */\n feesUsd?: Maybe<Scalars['BigDecimal']>;\n /** This is a singleton entity to contain accumulators for all values. Id will be always 1 */\n id: Scalars['ID'];\n /** Number of trades */\n numberOfTrades: Scalars['BigInt'];\n /** Total number of orders placed */\n orders: Scalars['BigInt'];\n /** Total number of batches settled */\n settlements: Scalars['BigInt'];\n /** Total number of tokens traded */\n tokens: Scalars['BigInt'];\n /** Total number of traders */\n traders: Scalars['BigInt'];\n /** Total traded volume in ETH */\n volumeEth?: Maybe<Scalars['BigDecimal']>;\n /** Total traded volume in USD */\n volumeUsd?: Maybe<Scalars['BigDecimal']>;\n};\n\nexport type Total_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n feesEth?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n feesEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_not?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n feesUsd?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n feesUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n numberOfTrades?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_gt?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_gte?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_in?: InputMaybe<Array<Scalars['BigInt']>>;\n numberOfTrades_lt?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_lte?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_not?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n orders?: InputMaybe<Scalars['BigInt']>;\n orders_gt?: InputMaybe<Scalars['BigInt']>;\n orders_gte?: InputMaybe<Scalars['BigInt']>;\n orders_in?: InputMaybe<Array<Scalars['BigInt']>>;\n orders_lt?: InputMaybe<Scalars['BigInt']>;\n orders_lte?: InputMaybe<Scalars['BigInt']>;\n orders_not?: InputMaybe<Scalars['BigInt']>;\n orders_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n settlements?: InputMaybe<Scalars['BigInt']>;\n settlements_gt?: InputMaybe<Scalars['BigInt']>;\n settlements_gte?: InputMaybe<Scalars['BigInt']>;\n settlements_in?: InputMaybe<Array<Scalars['BigInt']>>;\n settlements_lt?: InputMaybe<Scalars['BigInt']>;\n settlements_lte?: InputMaybe<Scalars['BigInt']>;\n settlements_not?: InputMaybe<Scalars['BigInt']>;\n settlements_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n tokens?: InputMaybe<Scalars['BigInt']>;\n tokens_gt?: InputMaybe<Scalars['BigInt']>;\n tokens_gte?: InputMaybe<Scalars['BigInt']>;\n tokens_in?: InputMaybe<Array<Scalars['BigInt']>>;\n tokens_lt?: InputMaybe<Scalars['BigInt']>;\n tokens_lte?: InputMaybe<Scalars['BigInt']>;\n tokens_not?: InputMaybe<Scalars['BigInt']>;\n tokens_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n traders?: InputMaybe<Scalars['BigInt']>;\n traders_gt?: InputMaybe<Scalars['BigInt']>;\n traders_gte?: InputMaybe<Scalars['BigInt']>;\n traders_in?: InputMaybe<Array<Scalars['BigInt']>>;\n traders_lt?: InputMaybe<Scalars['BigInt']>;\n traders_lte?: InputMaybe<Scalars['BigInt']>;\n traders_not?: InputMaybe<Scalars['BigInt']>;\n traders_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeEth?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_not?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeUsd?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n};\n\nexport enum Total_OrderBy {\n FeesEth = 'feesEth',\n FeesUsd = 'feesUsd',\n Id = 'id',\n NumberOfTrades = 'numberOfTrades',\n Orders = 'orders',\n Settlements = 'settlements',\n Tokens = 'tokens',\n Traders = 'traders',\n VolumeEth = 'volumeEth',\n VolumeUsd = 'volumeUsd'\n}\n\nexport type Trade = {\n __typename?: 'Trade';\n /** Trade event buyAmount */\n buyAmount: Scalars['BigInt'];\n /** Buy amount in Eth */\n buyAmountEth?: Maybe<Scalars['BigDecimal']>;\n /** Buy amount in Usd */\n buyAmountUsd?: Maybe<Scalars['BigDecimal']>;\n /** Trade event buyToken */\n buyToken: Token;\n /** Trade's fee amount */\n feeAmount: Scalars['BigInt'];\n /** Transaction's gas price */\n gasPrice: Scalars['BigInt'];\n /** This Id is composed using orderId|txHashString|eventIndex */\n id: Scalars['ID'];\n /** Order */\n order: Order;\n /** Trade event sellAmount */\n sellAmount: Scalars['BigInt'];\n /** Sell amount in Eth */\n sellAmountEth?: Maybe<Scalars['BigDecimal']>;\n /** Sell amount in Usd */\n sellAmountUsd?: Maybe<Scalars['BigDecimal']>;\n /** Trade event sellToken */\n sellToken: Token;\n /** Settlement */\n settlement: Settlement;\n /** Block's timestamp */\n timestamp: Scalars['Int'];\n /** Trade event transaction hash */\n txHash: Scalars['Bytes'];\n};\n\nexport type Trade_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n buyAmount?: InputMaybe<Scalars['BigInt']>;\n buyAmountEth?: InputMaybe<Scalars['BigDecimal']>;\n buyAmountEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n buyAmountEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n buyAmountEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n buyAmountEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n buyAmountEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n buyAmountEth_not?: InputMaybe<Scalars['BigDecimal']>;\n buyAmountEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n buyAmountUsd?: InputMaybe<Scalars['BigDecimal']>;\n buyAmountUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n buyAmountUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n buyAmountUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n buyAmountUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n buyAmountUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n buyAmountUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n buyAmountUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n buyAmount_gt?: InputMaybe<Scalars['BigInt']>;\n buyAmount_gte?: InputMaybe<Scalars['BigInt']>;\n buyAmount_in?: InputMaybe<Array<Scalars['BigInt']>>;\n buyAmount_lt?: InputMaybe<Scalars['BigInt']>;\n buyAmount_lte?: InputMaybe<Scalars['BigInt']>;\n buyAmount_not?: InputMaybe<Scalars['BigInt']>;\n buyAmount_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n buyToken?: InputMaybe<Scalars['String']>;\n buyToken_contains?: InputMaybe<Scalars['String']>;\n buyToken_contains_nocase?: InputMaybe<Scalars['String']>;\n buyToken_ends_with?: InputMaybe<Scalars['String']>;\n buyToken_ends_with_nocase?: InputMaybe<Scalars['String']>;\n buyToken_gt?: InputMaybe<Scalars['String']>;\n buyToken_gte?: InputMaybe<Scalars['String']>;\n buyToken_in?: InputMaybe<Array<Scalars['String']>>;\n buyToken_lt?: InputMaybe<Scalars['String']>;\n buyToken_lte?: InputMaybe<Scalars['String']>;\n buyToken_not?: InputMaybe<Scalars['String']>;\n buyToken_not_contains?: InputMaybe<Scalars['String']>;\n buyToken_not_contains_nocase?: InputMaybe<Scalars['String']>;\n buyToken_not_ends_with?: InputMaybe<Scalars['String']>;\n buyToken_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n buyToken_not_in?: InputMaybe<Array<Scalars['String']>>;\n buyToken_not_starts_with?: InputMaybe<Scalars['String']>;\n buyToken_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n buyToken_starts_with?: InputMaybe<Scalars['String']>;\n buyToken_starts_with_nocase?: InputMaybe<Scalars['String']>;\n feeAmount?: InputMaybe<Scalars['BigInt']>;\n feeAmount_gt?: InputMaybe<Scalars['BigInt']>;\n feeAmount_gte?: InputMaybe<Scalars['BigInt']>;\n feeAmount_in?: InputMaybe<Array<Scalars['BigInt']>>;\n feeAmount_lt?: InputMaybe<Scalars['BigInt']>;\n feeAmount_lte?: InputMaybe<Scalars['BigInt']>;\n feeAmount_not?: InputMaybe<Scalars['BigInt']>;\n feeAmount_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n gasPrice?: InputMaybe<Scalars['BigInt']>;\n gasPrice_gt?: InputMaybe<Scalars['BigInt']>;\n gasPrice_gte?: InputMaybe<Scalars['BigInt']>;\n gasPrice_in?: InputMaybe<Array<Scalars['BigInt']>>;\n gasPrice_lt?: InputMaybe<Scalars['BigInt']>;\n gasPrice_lte?: InputMaybe<Scalars['BigInt']>;\n gasPrice_not?: InputMaybe<Scalars['BigInt']>;\n gasPrice_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n order?: InputMaybe<Scalars['String']>;\n order_contains?: InputMaybe<Scalars['String']>;\n order_contains_nocase?: InputMaybe<Scalars['String']>;\n order_ends_with?: InputMaybe<Scalars['String']>;\n order_ends_with_nocase?: InputMaybe<Scalars['String']>;\n order_gt?: InputMaybe<Scalars['String']>;\n order_gte?: InputMaybe<Scalars['String']>;\n order_in?: InputMaybe<Array<Scalars['String']>>;\n order_lt?: InputMaybe<Scalars['String']>;\n order_lte?: InputMaybe<Scalars['String']>;\n order_not?: InputMaybe<Scalars['String']>;\n order_not_contains?: InputMaybe<Scalars['String']>;\n order_not_contains_nocase?: InputMaybe<Scalars['String']>;\n order_not_ends_with?: InputMaybe<Scalars['String']>;\n order_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n order_not_in?: InputMaybe<Array<Scalars['String']>>;\n order_not_starts_with?: InputMaybe<Scalars['String']>;\n order_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n order_starts_with?: InputMaybe<Scalars['String']>;\n order_starts_with_nocase?: InputMaybe<Scalars['String']>;\n sellAmount?: InputMaybe<Scalars['BigInt']>;\n sellAmountEth?: InputMaybe<Scalars['BigDecimal']>;\n sellAmountEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n sellAmountEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n sellAmountEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n sellAmountEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n sellAmountEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n sellAmountEth_not?: InputMaybe<Scalars['BigDecimal']>;\n sellAmountEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n sellAmountUsd?: InputMaybe<Scalars['BigDecimal']>;\n sellAmountUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n sellAmountUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n sellAmountUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n sellAmountUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n sellAmountUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n sellAmountUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n sellAmountUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n sellAmount_gt?: InputMaybe<Scalars['BigInt']>;\n sellAmount_gte?: InputMaybe<Scalars['BigInt']>;\n sellAmount_in?: InputMaybe<Array<Scalars['BigInt']>>;\n sellAmount_lt?: InputMaybe<Scalars['BigInt']>;\n sellAmount_lte?: InputMaybe<Scalars['BigInt']>;\n sellAmount_not?: InputMaybe<Scalars['BigInt']>;\n sellAmount_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n sellToken?: InputMaybe<Scalars['String']>;\n sellToken_contains?: InputMaybe<Scalars['String']>;\n sellToken_contains_nocase?: InputMaybe<Scalars['String']>;\n sellToken_ends_with?: InputMaybe<Scalars['String']>;\n sellToken_ends_with_nocase?: InputMaybe<Scalars['String']>;\n sellToken_gt?: InputMaybe<Scalars['String']>;\n sellToken_gte?: InputMaybe<Scalars['String']>;\n sellToken_in?: InputMaybe<Array<Scalars['String']>>;\n sellToken_lt?: InputMaybe<Scalars['String']>;\n sellToken_lte?: InputMaybe<Scalars['String']>;\n sellToken_not?: InputMaybe<Scalars['String']>;\n sellToken_not_contains?: InputMaybe<Scalars['String']>;\n sellToken_not_contains_nocase?: InputMaybe<Scalars['String']>;\n sellToken_not_ends_with?: InputMaybe<Scalars['String']>;\n sellToken_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n sellToken_not_in?: InputMaybe<Array<Scalars['String']>>;\n sellToken_not_starts_with?: InputMaybe<Scalars['String']>;\n sellToken_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n sellToken_starts_with?: InputMaybe<Scalars['String']>;\n sellToken_starts_with_nocase?: InputMaybe<Scalars['String']>;\n settlement?: InputMaybe<Scalars['String']>;\n settlement_contains?: InputMaybe<Scalars['String']>;\n settlement_contains_nocase?: InputMaybe<Scalars['String']>;\n settlement_ends_with?: InputMaybe<Scalars['String']>;\n settlement_ends_with_nocase?: InputMaybe<Scalars['String']>;\n settlement_gt?: InputMaybe<Scalars['String']>;\n settlement_gte?: InputMaybe<Scalars['String']>;\n settlement_in?: InputMaybe<Array<Scalars['String']>>;\n settlement_lt?: InputMaybe<Scalars['String']>;\n settlement_lte?: InputMaybe<Scalars['String']>;\n settlement_not?: InputMaybe<Scalars['String']>;\n settlement_not_contains?: InputMaybe<Scalars['String']>;\n settlement_not_contains_nocase?: InputMaybe<Scalars['String']>;\n settlement_not_ends_with?: InputMaybe<Scalars['String']>;\n settlement_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n settlement_not_in?: InputMaybe<Array<Scalars['String']>>;\n settlement_not_starts_with?: InputMaybe<Scalars['String']>;\n settlement_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n settlement_starts_with?: InputMaybe<Scalars['String']>;\n settlement_starts_with_nocase?: InputMaybe<Scalars['String']>;\n timestamp?: InputMaybe<Scalars['Int']>;\n timestamp_gt?: InputMaybe<Scalars['Int']>;\n timestamp_gte?: InputMaybe<Scalars['Int']>;\n timestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n timestamp_lt?: InputMaybe<Scalars['Int']>;\n timestamp_lte?: InputMaybe<Scalars['Int']>;\n timestamp_not?: InputMaybe<Scalars['Int']>;\n timestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n txHash?: InputMaybe<Scalars['Bytes']>;\n txHash_contains?: InputMaybe<Scalars['Bytes']>;\n txHash_in?: InputMaybe<Array<Scalars['Bytes']>>;\n txHash_not?: InputMaybe<Scalars['Bytes']>;\n txHash_not_contains?: InputMaybe<Scalars['Bytes']>;\n txHash_not_in?: InputMaybe<Array<Scalars['Bytes']>>;\n};\n\nexport enum Trade_OrderBy {\n BuyAmount = 'buyAmount',\n BuyAmountEth = 'buyAmountEth',\n BuyAmountUsd = 'buyAmountUsd',\n BuyToken = 'buyToken',\n FeeAmount = 'feeAmount',\n GasPrice = 'gasPrice',\n Id = 'id',\n Order = 'order',\n SellAmount = 'sellAmount',\n SellAmountEth = 'sellAmountEth',\n SellAmountUsd = 'sellAmountUsd',\n SellToken = 'sellToken',\n Settlement = 'settlement',\n Timestamp = 'timestamp',\n TxHash = 'txHash'\n}\n\nexport type UniswapPool = {\n __typename?: 'UniswapPool';\n /** Pool address */\n id: Scalars['ID'];\n /** In range liquidity */\n liquidity: Scalars['BigInt'];\n /** Current tick */\n tick?: Maybe<Scalars['BigInt']>;\n /** Token0 */\n token0: Token;\n /** Token0 per token1 */\n token0Price: Scalars['BigDecimal'];\n /** Token1 */\n token1: Token;\n /** Token1 per token0 */\n token1Price: Scalars['BigDecimal'];\n /** Total token 0 across all ticks */\n totalValueLockedToken0: Scalars['BigDecimal'];\n /** Total token 1 across all ticks */\n totalValueLockedToken1: Scalars['BigDecimal'];\n};\n\nexport type UniswapPool_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n liquidity?: InputMaybe<Scalars['BigInt']>;\n liquidity_gt?: InputMaybe<Scalars['BigInt']>;\n liquidity_gte?: InputMaybe<Scalars['BigInt']>;\n liquidity_in?: InputMaybe<Array<Scalars['BigInt']>>;\n liquidity_lt?: InputMaybe<Scalars['BigInt']>;\n liquidity_lte?: InputMaybe<Scalars['BigInt']>;\n liquidity_not?: InputMaybe<Scalars['BigInt']>;\n liquidity_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n tick?: InputMaybe<Scalars['BigInt']>;\n tick_gt?: InputMaybe<Scalars['BigInt']>;\n tick_gte?: InputMaybe<Scalars['BigInt']>;\n tick_in?: InputMaybe<Array<Scalars['BigInt']>>;\n tick_lt?: InputMaybe<Scalars['BigInt']>;\n tick_lte?: InputMaybe<Scalars['BigInt']>;\n tick_not?: InputMaybe<Scalars['BigInt']>;\n tick_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n token0?: InputMaybe<Scalars['String']>;\n token0Price?: InputMaybe<Scalars['BigDecimal']>;\n token0Price_gt?: InputMaybe<Scalars['BigDecimal']>;\n token0Price_gte?: InputMaybe<Scalars['BigDecimal']>;\n token0Price_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n token0Price_lt?: InputMaybe<Scalars['BigDecimal']>;\n token0Price_lte?: InputMaybe<Scalars['BigDecimal']>;\n token0Price_not?: InputMaybe<Scalars['BigDecimal']>;\n token0Price_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n token0_contains?: InputMaybe<Scalars['String']>;\n token0_contains_nocase?: InputMaybe<Scalars['String']>;\n token0_ends_with?: InputMaybe<Scalars['String']>;\n token0_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token0_gt?: InputMaybe<Scalars['String']>;\n token0_gte?: InputMaybe<Scalars['String']>;\n token0_in?: InputMaybe<Array<Scalars['String']>>;\n token0_lt?: InputMaybe<Scalars['String']>;\n token0_lte?: InputMaybe<Scalars['String']>;\n token0_not?: InputMaybe<Scalars['String']>;\n token0_not_contains?: InputMaybe<Scalars['String']>;\n token0_not_contains_nocase?: InputMaybe<Scalars['String']>;\n token0_not_ends_with?: InputMaybe<Scalars['String']>;\n token0_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token0_not_in?: InputMaybe<Array<Scalars['String']>>;\n token0_not_starts_with?: InputMaybe<Scalars['String']>;\n token0_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token0_starts_with?: InputMaybe<Scalars['String']>;\n token0_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token1?: InputMaybe<Scalars['String']>;\n token1Price?: InputMaybe<Scalars['BigDecimal']>;\n token1Price_gt?: InputMaybe<Scalars['BigDecimal']>;\n token1Price_gte?: InputMaybe<Scalars['BigDecimal']>;\n token1Price_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n token1Price_lt?: InputMaybe<Scalars['BigDecimal']>;\n token1Price_lte?: InputMaybe<Scalars['BigDecimal']>;\n token1Price_not?: InputMaybe<Scalars['BigDecimal']>;\n token1Price_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n token1_contains?: InputMaybe<Scalars['String']>;\n token1_contains_nocase?: InputMaybe<Scalars['String']>;\n token1_ends_with?: InputMaybe<Scalars['String']>;\n token1_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token1_gt?: InputMaybe<Scalars['String']>;\n token1_gte?: InputMaybe<Scalars['String']>;\n token1_in?: InputMaybe<Array<Scalars['String']>>;\n token1_lt?: InputMaybe<Scalars['String']>;\n token1_lte?: InputMaybe<Scalars['String']>;\n token1_not?: InputMaybe<Scalars['String']>;\n token1_not_contains?: InputMaybe<Scalars['String']>;\n token1_not_contains_nocase?: InputMaybe<Scalars['String']>;\n token1_not_ends_with?: InputMaybe<Scalars['String']>;\n token1_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token1_not_in?: InputMaybe<Array<Scalars['String']>>;\n token1_not_starts_with?: InputMaybe<Scalars['String']>;\n token1_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token1_starts_with?: InputMaybe<Scalars['String']>;\n token1_starts_with_nocase?: InputMaybe<Scalars['String']>;\n totalValueLockedToken0?: InputMaybe<Scalars['BigDecimal']>;\n totalValueLockedToken0_gt?: InputMaybe<Scalars['BigDecimal']>;\n totalValueLockedToken0_gte?: InputMaybe<Scalars['BigDecimal']>;\n totalValueLockedToken0_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalValueLockedToken0_lt?: InputMaybe<Scalars['BigDecimal']>;\n totalValueLockedToken0_lte?: InputMaybe<Scalars['BigDecimal']>;\n totalValueLockedToken0_not?: InputMaybe<Scalars['BigDecimal']>;\n totalValueLockedToken0_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalValueLockedToken1?: InputMaybe<Scalars['BigDecimal']>;\n totalValueLockedToken1_gt?: InputMaybe<Scalars['BigDecimal']>;\n totalValueLockedToken1_gte?: InputMaybe<Scalars['BigDecimal']>;\n totalValueLockedToken1_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalValueLockedToken1_lt?: InputMaybe<Scalars['BigDecimal']>;\n totalValueLockedToken1_lte?: InputMaybe<Scalars['BigDecimal']>;\n totalValueLockedToken1_not?: InputMaybe<Scalars['BigDecimal']>;\n totalValueLockedToken1_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n};\n\nexport enum UniswapPool_OrderBy {\n Id = 'id',\n Liquidity = 'liquidity',\n Tick = 'tick',\n Token0 = 'token0',\n Token0Price = 'token0Price',\n Token1 = 'token1',\n Token1Price = 'token1Price',\n TotalValueLockedToken0 = 'totalValueLockedToken0',\n TotalValueLockedToken1 = 'totalValueLockedToken1'\n}\n\nexport type User = {\n __typename?: 'User';\n /** Owner's address */\n address: Scalars['Bytes'];\n /** First trade block timestamp */\n firstTradeTimestamp?: Maybe<Scalars['Int']>;\n /** Trade event order owner */\n id: Scalars['ID'];\n /** Determine if user has solved a settlement */\n isSolver: Scalars['Boolean'];\n /** Solved trades */\n numberOfTrades: Scalars['Int'];\n /** List of orders placed by this user */\n ordersPlaced: Array<Order>;\n /** total amount solved by the user in Eth */\n solvedAmountEth?: Maybe<Scalars['BigDecimal']>;\n /** total amount solved by the user in Usd */\n solvedAmountUsd?: Maybe<Scalars['BigDecimal']>;\n /** total amount traded by the user in Eth */\n tradedAmountEth?: Maybe<Scalars['BigDecimal']>;\n /** total amount traded by the user in Usd */\n tradedAmountUsd?: Maybe<Scalars['BigDecimal']>;\n};\n\n\nexport type UserOrdersPlacedArgs = {\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Order_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n where?: InputMaybe<Order_Filter>;\n};\n\nexport type User_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n address?: InputMaybe<Scalars['Bytes']>;\n address_contains?: InputMaybe<Scalars['Bytes']>;\n address_in?: InputMaybe<Array<Scalars['Bytes']>>;\n address_not?: InputMaybe<Scalars['Bytes']>;\n address_not_contains?: InputMaybe<Scalars['Bytes']>;\n address_not_in?: InputMaybe<Array<Scalars['Bytes']>>;\n firstTradeTimestamp?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_gt?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_gte?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n firstTradeTimestamp_lt?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_lte?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_not?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n isSolver?: InputMaybe<Scalars['Boolean']>;\n isSolver_in?: InputMaybe<Array<Scalars['Boolean']>>;\n isSolver_not?: InputMaybe<Scalars['Boolean']>;\n isSolver_not_in?: InputMaybe<Array<Scalars['Boolean']>>;\n numberOfTrades?: InputMaybe<Scalars['Int']>;\n numberOfTrades_gt?: InputMaybe<Scalars['Int']>;\n numberOfTrades_gte?: InputMaybe<Scalars['Int']>;\n numberOfTrades_in?: InputMaybe<Array<Scalars['Int']>>;\n numberOfTrades_lt?: InputMaybe<Scalars['Int']>;\n numberOfTrades_lte?: InputMaybe<Scalars['Int']>;\n numberOfTrades_not?: InputMaybe<Scalars['Int']>;\n numberOfTrades_not_in?: InputMaybe<Array<Scalars['Int']>>;\n solvedAmountEth?: InputMaybe<Scalars['BigDecimal']>;\n solvedAmountEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n solvedAmountEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n solvedAmountEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n solvedAmountEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n solvedAmountEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n solvedAmountEth_not?: InputMaybe<Scalars['BigDecimal']>;\n solvedAmountEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n solvedAmountUsd?: InputMaybe<Scalars['BigDecimal']>;\n solvedAmountUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n solvedAmountUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n solvedAmountUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n solvedAmountUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n solvedAmountUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n solvedAmountUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n solvedAmountUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n tradedAmountEth?: InputMaybe<Scalars['BigDecimal']>;\n tradedAmountEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n tradedAmountEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n tradedAmountEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n tradedAmountEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n tradedAmountEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n tradedAmountEth_not?: InputMaybe<Scalars['BigDecimal']>;\n tradedAmountEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n tradedAmountUsd?: InputMaybe<Scalars['BigDecimal']>;\n tradedAmountUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n tradedAmountUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n tradedAmountUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n tradedAmountUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n tradedAmountUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n tradedAmountUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n tradedAmountUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n};\n\nexport enum User_OrderBy {\n Address = 'address',\n FirstTradeTimestamp = 'firstTradeTimestamp',\n Id = 'id',\n IsSolver = 'isSolver',\n NumberOfTrades = 'numberOfTrades',\n OrdersPlaced = 'ordersPlaced',\n SolvedAmountEth = 'solvedAmountEth',\n SolvedAmountUsd = 'solvedAmountUsd',\n TradedAmountEth = 'tradedAmountEth',\n TradedAmountUsd = 'tradedAmountUsd'\n}\n\nexport type _Block_ = {\n __typename?: '_Block_';\n /** The hash of the block */\n hash?: Maybe<Scalars['Bytes']>;\n /** The block number */\n number: Scalars['Int'];\n};\n\n/** The type for the top-level _meta field */\nexport type _Meta_ = {\n __typename?: '_Meta_';\n /**\n * Information about a specific subgraph block. The hash of the block\n * will be null if the _meta field has a block constraint that asks for\n * a block number. It will be filled if the _meta field has no block constraint\n * and therefore asks for the latest block\n *\n */\n block: _Block_;\n /** The deployment ID */\n deployment: Scalars['String'];\n /** If `true`, the subgraph encountered indexing errors at some past block */\n hasIndexingErrors: Scalars['Boolean'];\n};\n\nexport enum _SubgraphErrorPolicy_ {\n /** Data will be returned even if the subgraph has indexing errors */\n Allow = 'allow',\n /** If the subgraph has indexing errors, data will be omitted. The default. */\n Deny = 'deny'\n}\n\nexport type TotalsQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type TotalsQuery = { __typename?: 'Query', totals: Array<{ __typename?: 'Total', tokens: any, orders: any, traders: any, settlements: any, volumeUsd?: any | null, volumeEth?: any | null, feesUsd?: any | null, feesEth?: any | null }> };\n\nexport type LastDaysVolumeQueryVariables = Exact<{\n days: Scalars['Int'];\n}>;\n\n\nexport type LastDaysVolumeQuery = { __typename?: 'Query', dailyTotals: Array<{ __typename?: 'DailyTotal', timestamp: number, volumeUsd?: any | null }> };\n\nexport type LastHoursVolumeQueryVariables = Exact<{\n hours: Scalars['Int'];\n}>;\n\n\nexport type LastHoursVolumeQuery = { __typename?: 'Query', hourlyTotals: Array<{ __typename?: 'HourlyTotal', timestamp: number, volumeUsd?: any | null }> };\n","import { Signer } from 'ethers'\nimport log, { LogLevelDesc } from 'loglevel'\nimport { CowError } from './utils/common'\nimport { CowApi, CowSubgraphApi, MetadataApi } from './api'\nimport { SupportedChainId as ChainId } from './constants/chains'\nimport { validateAppDataDocument } from './utils/appData'\nimport { Context, CowContext } from './utils/context'\nimport { signOrder, signOrderCancellation, UnsignedOrder } from './utils/sign'\n\ntype Options = {\n loglevel?: LogLevelDesc\n}\n\nexport class CowSdk<T extends ChainId> {\n context: Context\n cowApi: CowApi\n metadataApi: MetadataApi\n cowSubgraphApi: CowSubgraphApi\n\n constructor(chainId: T, cowContext: CowContext = {}, options: Options = {}) {\n this.context = new Context(chainId, { ...cowContext })\n this.cowApi = new CowApi(this.context)\n this.cowSubgraphApi = new CowSubgraphApi(this.context)\n this.metadataApi = new MetadataApi(this.context)\n log.setLevel(options.loglevel || 'error')\n }\n\n updateChainId = (chainId: ChainId) => {\n this.context.updateChainId(chainId)\n }\n\n validateAppDataDocument = validateAppDataDocument\n\n async signOrder(order: Omit<UnsignedOrder, 'appData'>) {\n const signer = this._checkSigner()\n const chainId = await this.context.chainId\n return signOrder({ ...order, appData: this.context.appDataHash }, chainId, signer)\n }\n\n async signOrderCancellation(orderId: string) {\n const signer = this._checkSigner()\n const chainId = await this.context.chainId\n return signOrderCancellation(orderId, chainId, signer)\n }\n\n _checkSigner(signer: Signer | undefined = this.context.signer) {\n if (!signer) {\n throw new CowError('No signer available')\n }\n\n return signer\n }\n}\n\nexport default CowSdk\n"],"names":["CowError","Error","constructor","message","error_code","super","this","objectToQueryString","o","qs","URLSearchParams","key","Object","keys","value","append","toString","qsResult","logPrefix","SupportedChainId","ALL_SUPPORTED_CHAIN_IDS","MAINNET","RINKEBY","GNOSIS_CHAIN","GPv2Settlement","contractNetworks","GP_SETTLEMENT_CONTRACT_ADDRESS","ChainId","address","_signPayload","payload","signFn","signer","signingMethod","_exit","_temp2","_result","_signature","signature","data","signingScheme","SigningScheme","ETHSIGN","EIP712","_signer","TypedDataV3Signer","IntChainIdTypedDataV4Signer","e","log","error","_temp","then","_signFn","_catch","undefined","code","METHOD_NOT_FOUND_ERROR_CODE","RPC_REQUEST_FAILED_REGEX","test","_signPayload2","METAMASK_STRING_CHAINID_REGEX","_signPayload4","METAMASK_SIGNATURE_ERROR_CODE","V4_ERROR_MSG_REGEX","V3_ERROR_MSG_REGEX","_signPayload7","Promise","resolve","_signOrderCancellation","params","chainId","orderId","domain","_getDomain","signOrderCancellationGp","getSigningSchemeLibValue","_signOrder","order","signOrderGp","signOrder","mapSigningSchema","Map","libraryValue","apiValue","EIP1271","PRESIGN","_getSigningSchemeInfo","ecdaSigningScheme","get","getSigningSchemeApiValue","settlementContract","domainGp","ApiErrorCodes","ApiErrorCodeDetails","GpQuoteErrorCodes","GpQuoteErrorDetails","OperatorError","static","response","action","json","orderPostError","errorType","apiErrorDetails","description","UNHANDLED_GET_ERROR","UNHANDLED_CREATE_ERROR","UNHANDLED_DELETE_ERROR","_mapActionToErrorDetail","_this","status","getErrorMessage","apiError","name","GpQuoteError","quoteErrorDetails","UNHANDLED_ERROR","reject","quoteError","Token","symbol","WRAPPED_NATIVE_TOKEN","NATIVE","toErc20Address","tokenAddress","checkedAddress","_handleQuoteResponse","ok","errorObj","mappedError","NotFound","NoLiquidity","InsufficientLiquidity","SellAmountDoesNotCoverFee","FeeExceedsFrom","UnsupportedToken","mapOperatorErrorToQuoteError","QuoteError","sellToken","buyToken","UNHANDLED_QUOTE_ERROR","UNHANDLED_ORDER_ERROR","CowApi","context","API_NAME","DEFAULT_HEADERS","appDataHash","API_BASE_URL","isDevEnvironment","PROFILE_API_BASE_URL","getProfileData","debug","info","getProfile","errorResponse","getTrades","_this2","owner","limit","offset","qsParams","getOrders","_this3","queryString","getTxOrders","txHash","_this4","getOrder","_this5","getPriceQuoteLegacy","_this6","baseToken","quoteToken","amount","kind","catch","getQuote","_this7","quoteParams","mapNewToLegacyParams","post","sendSignedOrderCancellation","_this8","cancellation","from","delete","orderUid","getErrorFromStatusCode","errorMessage","sendOrder","_this9","fullOrder","appData","_temp4","_result2","uid","_temp3","getOrderLink","getApiBaseUrl","userAddress","receiver","validTo","fallbackAddress","baseParams","partiallyFillable","OrderKind","SELL","sellAmountBeforeFee","BUY","buyAmountAfterFee","_this10","baseUrl","getProfileApiBaseUrl","_this11","fetch","url","method","_this12","headers","body","JSON","stringify","fetchProfile","_this13","TOTALS_QUERY","gql","LAST_DAYS_VOLUME_QUERY","LAST_HOURS_VOLUME_QUERY","subgraphUrls","CowSubgraphApi","clients","createClients","GraphQLClient","getBaseUrl","getTotals","runQuery","totals","getLastDaysVolume","days","getLastHoursVolume","hours","query","variables","request","validateAppDataDocument","appDataDocument","getValidator","ajv","validate","result","errors","errorsText","getSerializedCID","hash","cidVersion","codec","type","length","hexHash","fromHexString","hexString","stringMatch","match","Uint8Array","map","byte","parseInt","replace","uint8array","_interopNamespace","require","CID","decode","toV0","Ajv","appDataSchema","compile","MetadataApi","generateAppDataDoc","metadata","appCode","version","decodeAppData","cidV0","cid","ipfsUri","default","loadIpfsFromCid","cidToAppDataHex","ipfsHash","digest","parse","multihash","Buffer","appDataHexToCid","calculateAppDataHash","validation","calculateIpfsCidV0","doc","docString","of","uploadMetadataDocToIpfs","appDataDoc","pinJSONToIPFS","file","uri","pinataApiKey","pinataApiSecret","pinataContent","pinataMetadata","pinata_api_key","pinata_secret_api_key","details","ipfs","IpfsHash","DefaultCowContext","apiKey","apiSecret","Bundle_OrderBy","DailyTotal_OrderBy","HourlyTotal_OrderBy","OrderDirection","Order_OrderBy","PairDaily_OrderBy","PairHourly_OrderBy","Pair_OrderBy","Settlement_OrderBy","TokenDailyTotal_OrderBy","TokenHourlyTotal_OrderBy","TokenTradingEvent_OrderBy","Token_OrderBy","Total_OrderBy","Trade_OrderBy","UniswapPool_OrderBy","User_OrderBy","_SubgraphErrorPolicy_","Context","defineProperty","_context","writable","_chainId","_classPrivateFieldLooseBase","updateChainId","_classPrivateFieldLoo","provider","getNetwork","network","getAndReconciliateNetwork","_classPrivateFieldLoo2","_classPrivateFieldLoo3","_classPrivateFieldLoo4","CowSdk","cowContext","options","cowApi","metadataApi","cowSubgraphApi","setLevel","loglevel","_checkSigner","signOrderCancellation"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/utils/common.ts","../src/constants/chains.ts","../src/constants/index.ts","../src/utils/sign.ts","../src/api/cow/errors/OperatorError.ts","../src/api/cow/errors/QuoteError.ts","../src/types/index.ts","../src/constants/tokens.ts","../src/utils/tokens.ts","../src/api/cow/index.ts","../src/api/cow-subgraph/queries.ts","../src/api/cow-subgraph/index.ts","../src/utils/appData.ts","../src/api/metadata/index.ts","../src/utils/ipfs.ts","../src/utils/context.ts","../src/api/cow-subgraph/graphql.ts","../src/CowSdk.ts"],"sourcesContent":["export class CowError extends Error {\n error_code?: string\n\n constructor(message: string, error_code?: string) {\n super(message)\n this.error_code = error_code\n }\n}\n\nexport function objectToQueryString(o: { [key: string]: string | number | undefined }): string {\n if (!o) {\n return ''\n }\n\n const qs = new URLSearchParams()\n\n for (const key of Object.keys(o)) {\n const value = o[key]\n if (value) {\n qs.append(key, value.toString())\n }\n }\n\n const qsResult = qs.toString()\n\n return qsResult ? `?${qsResult}` : ''\n}\n\nexport const logPrefix = 'cow-sdk:'\n\nexport function fromHexString(hexString: string) {\n const stringMatch = hexString.match(/.{1,2}/g)\n if (!stringMatch) return\n return new Uint8Array(stringMatch.map((byte) => parseInt(byte, 16)))\n}\n","export enum SupportedChainId {\n MAINNET = 1,\n RINKEBY = 4,\n GNOSIS_CHAIN = 100,\n}\n\nexport const ALL_SUPPORTED_CHAIN_IDS: SupportedChainId[] = [\n SupportedChainId.MAINNET,\n SupportedChainId.RINKEBY,\n SupportedChainId.GNOSIS_CHAIN,\n]\n","import contractNetworks from '@gnosis.pm/gp-v2-contracts/networks.json'\nimport { SupportedChainId as ChainId } from './chains'\n\nconst { GPv2Settlement } = contractNetworks\n\nexport const GP_SETTLEMENT_CONTRACT_ADDRESS: Partial<Record<number, string>> = {\n [ChainId.MAINNET]: GPv2Settlement[ChainId.MAINNET].address,\n [ChainId.RINKEBY]: GPv2Settlement[ChainId.RINKEBY].address,\n [ChainId.GNOSIS_CHAIN]: GPv2Settlement[ChainId.GNOSIS_CHAIN].address,\n}\n\nexport const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'\n\nexport const DEFAULT_APP_DATA_HASH = '0x0000000000000000000000000000000000000000000000000000000000000000'\n\nexport const DEFAULT_IPFS_READ_URI = 'https://gnosis.mypinata.cloud/ipfs'\nexport const DEFAULT_IPFS_WRITE_URI = 'https://api.pinata.cloud'\n","import {\n domain as domainGp,\n signOrder as signOrderGp,\n signOrderCancellation as signOrderCancellationGp,\n EcdsaSignature,\n Order,\n OrderCancellation as OrderCancellationGp,\n Signature,\n TypedDataV3Signer,\n IntChainIdTypedDataV4Signer,\n SigningScheme,\n} from '@gnosis.pm/gp-v2-contracts'\nimport log from 'loglevel'\n\nimport { SupportedChainId as ChainId } from '../constants/chains'\nimport { GP_SETTLEMENT_CONTRACT_ADDRESS } from '../constants'\nimport { TypedDataDomain, Signer } from '@ethersproject/abstract-signer'\nimport { CowError, logPrefix } from './common'\n\n// For error codes, see:\n// - https://eth.wiki/json-rpc/json-rpc-error-codes-improvement-proposal\n// - https://www.jsonrpc.org/specification#error_object\nconst METAMASK_SIGNATURE_ERROR_CODE = -32603\nconst METHOD_NOT_FOUND_ERROR_CODE = -32601\nconst V4_ERROR_MSG_REGEX = /eth_signTypedData_v4 does not exist/i\nconst V3_ERROR_MSG_REGEX = /eth_signTypedData_v3 does not exist/i\nconst RPC_REQUEST_FAILED_REGEX = /RPC request failed/i\nconst METAMASK_STRING_CHAINID_REGEX = /provided chainid .* must match the active chainid/i\n\nexport type UnsignedOrder = Omit<Order, 'receiver'> & { receiver: string }\n\nexport interface SignOrderParams {\n chainId: ChainId\n signer: Signer\n order: UnsignedOrder\n signingScheme: SigningScheme\n}\n\n// posted to /api/v1/orders on Order creation\n// serializable, so no BigNumbers\n// See https://protocol-rinkeby.dev.gnosisdev.com/api/\nexport interface OrderCreation extends UnsignedOrder {\n signingScheme: SigningScheme // signed method\n\n // Signature is used for:\n // - Signature: EIP-712,ETHSIGN\n // - Owner address: for PRESIGN\n signature: string // 65 bytes encoded as hex without `0x` prefix. r + s + v from the spec\n}\n\nexport interface SingOrderCancellationParams {\n chainId: ChainId\n signer: Signer\n orderId: string\n signingScheme: SigningScheme\n}\n\nexport interface OrderCancellation extends OrderCancellationGp {\n signature: string\n signingScheme: SigningScheme\n}\n\nexport type SigningSchemeValue = 'eip712' | 'ethsign' | 'eip1271' | 'presign'\n\ninterface SchemaInfo {\n libraryValue: number\n apiValue: SigningSchemeValue\n}\nconst mapSigningSchema: Map<SigningScheme, SchemaInfo> = new Map([\n [SigningScheme.EIP712, { libraryValue: 0, apiValue: 'eip712' }],\n [SigningScheme.ETHSIGN, { libraryValue: 1, apiValue: 'ethsign' }],\n [SigningScheme.EIP1271, { libraryValue: 2, apiValue: 'eip1271' }],\n [SigningScheme.PRESIGN, { libraryValue: 3, apiValue: 'presign' }],\n])\n\nfunction _getSigningSchemeInfo(ecdaSigningScheme: SigningScheme): SchemaInfo {\n const value = mapSigningSchema.get(ecdaSigningScheme)\n if (value === undefined) {\n throw new CowError('Unknown schema ' + ecdaSigningScheme)\n }\n\n return value\n}\n\ninterface ProviderRpcError extends Error {\n message: string\n code: number\n data?: unknown\n}\n\nfunction isProviderRpcError(error: unknown): error is ProviderRpcError {\n return (error as ProviderRpcError).code !== undefined || (error as ProviderRpcError).message !== undefined\n}\n\nexport function getSigningSchemeApiValue(ecdaSigningScheme: SigningScheme): string {\n return _getSigningSchemeInfo(ecdaSigningScheme).apiValue\n}\n\nexport function getSigningSchemeLibValue(ecdaSigningScheme: SigningScheme): number {\n return _getSigningSchemeInfo(ecdaSigningScheme).libraryValue\n}\n\nfunction _getDomain(chainId: ChainId): TypedDataDomain {\n // Get settlement contract address\n const settlementContract = GP_SETTLEMENT_CONTRACT_ADDRESS[chainId]\n\n if (!settlementContract) {\n throw new CowError('Unsupported network. Settlement contract is not deployed')\n }\n\n return domainGp(chainId, settlementContract)\n}\n\nasync function _signOrder(params: SignOrderParams): Promise<Signature> {\n const { chainId, signer, order, signingScheme } = params\n\n const domain = _getDomain(chainId)\n\n return signOrderGp(domain, order, signer, getSigningSchemeLibValue(signingScheme))\n}\n\nasync function _signOrderCancellation(params: SingOrderCancellationParams): Promise<Signature> {\n const { chainId, signer, signingScheme, orderId } = params\n\n const domain = _getDomain(chainId)\n\n return signOrderCancellationGp(domain, orderId, signer, getSigningSchemeLibValue(signingScheme))\n}\n\nexport type SigningResult = { signature?: string; signingScheme: SigningScheme }\n\nasync function _signPayload(\n payload: Pick<SignOrderParams, 'order' & 'chainId'> | Pick<SingOrderCancellationParams, 'chainId' & 'orderId'>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n signFn: (params: any) => Promise<Signature>,\n signer: Signer,\n signingMethod: 'v4' | 'int_v4' | 'v3' | 'eth_sign' = 'v4'\n): Promise<SigningResult> {\n const signingScheme: SigningScheme = signingMethod === 'eth_sign' ? SigningScheme.ETHSIGN : SigningScheme.EIP712\n let signature: Signature | null = null\n\n let _signer\n try {\n switch (signingMethod) {\n case 'v3':\n _signer = new TypedDataV3Signer(signer)\n break\n case 'int_v4':\n _signer = new IntChainIdTypedDataV4Signer(signer)\n break\n default:\n _signer = signer\n }\n } catch (e) {\n log.error(logPrefix, 'Wallet not supported:', e)\n throw new CowError('Wallet not supported')\n }\n\n try {\n signature = (await signFn({ ...payload, signer: _signer, signingScheme })) as EcdsaSignature // Only ECDSA signing supported for now\n } catch (e) {\n if (!isProviderRpcError(e)) {\n // Some other error signing. Let it bubble up.\n log.error(logPrefix, e)\n throw e\n }\n\n if (e.code === METHOD_NOT_FOUND_ERROR_CODE || RPC_REQUEST_FAILED_REGEX.test(e.message)) {\n // Maybe the wallet returns the proper error code? We can only hope 🤞\n // OR it failed with a generic message, there's no error code set, and we also hope it'll work\n // with other methods...\n switch (signingMethod) {\n case 'v4':\n return _signPayload(payload, signFn, signer, 'v3')\n case 'v3':\n return _signPayload(payload, signFn, signer, 'eth_sign')\n default:\n throw e\n }\n } else if (METAMASK_STRING_CHAINID_REGEX.test(e.message)) {\n // Metamask now enforces chainId to be an integer\n return _signPayload(payload, signFn, signer, 'int_v4')\n } else if (e.code === METAMASK_SIGNATURE_ERROR_CODE) {\n // We tried to sign order the nice way.\n // That works fine for regular MM addresses. Does not work for Hardware wallets, though.\n // See https://github.com/MetaMask/metamask-extension/issues/10240#issuecomment-810552020\n // So, when that specific error occurs, we know this is a problem with MM + HW.\n // Then, we fallback to ETHSIGN.\n return _signPayload(payload, signFn, signer, 'eth_sign')\n } else if (V4_ERROR_MSG_REGEX.test(e.message)) {\n // Failed with `v4`, and the wallet does not set the proper error code\n return _signPayload(payload, signFn, signer, 'v3')\n } else if (V3_ERROR_MSG_REGEX.test(e.message)) {\n // Failed with `v3`, and the wallet does not set the proper error code\n return _signPayload(payload, signFn, signer, 'eth_sign')\n }\n }\n return { signature: signature?.data.toString(), signingScheme }\n}\n/**\n * Returns the signature for the specified order with the signing scheme encoded\n * into the signature.\n * @export\n * @param {UnsignedOrder} order The order to sign.\n * @param {ChainId} chainId The chain Id\n * @param {Signer} signer The owner for the order used to sign.\n * @return {*} Encoded signature including signing scheme for the order.\n */\nexport async function signOrder(order: UnsignedOrder, chainId: ChainId, signer: Signer): Promise<SigningResult> {\n return _signPayload({ order, chainId }, _signOrder, signer)\n}\n\n/**\n * Returns the signature for the Order Cancellation with the signing scheme encoded\n * into the signature.\n *\n * @export\n * @param {string} orderId The unique identifier of the order being cancelled.\n * @param {ChainId} chainId The chain Id\n * @param {Signer} signer The owner for the order used to sign.\n * @return {*} Encoded signature including signing scheme for the order.\n */\nexport async function signOrderCancellation(orderId: string, chainId: ChainId, signer: Signer): Promise<SigningResult> {\n return _signPayload({ orderId, chainId }, _signOrderCancellation, signer)\n}\n","import log from 'loglevel'\nimport { CowError, logPrefix } from '../../../utils/common'\n\ntype ApiActionType = 'get' | 'create' | 'delete'\n\nexport interface ApiErrorObject {\n errorType: ApiErrorCodes\n description: string\n data?: unknown\n}\n\n// Conforms to backend API\n// https://github.com/gnosis/gp-v2-services/blob/d932e11c9a2125fdba239530be7684799f694909/crates/orderbook/openapi.yml#L801\n// and\n// https://github.com/gnosis/gp-v2-services/blob/d932e11c9a2125fdba239530be7684799f694909/crates/orderbook/openapi.yml#L740\nexport enum ApiErrorCodes {\n DuplicateOrder = 'DuplicateOrder',\n InvalidSignature = 'InvalidSignature',\n MissingOrderData = 'MissingOrderData',\n InsufficientValidTo = 'InsufficientValidTo',\n InsufficientAllowance = 'InsufficientAllowance',\n InsufficientBalance = 'InsufficientBalance',\n InsufficientFee = 'InsufficientFee',\n WrongOwner = 'WrongOwner',\n NotFound = 'NotFound',\n OrderNotFound = 'OrderNotFound',\n AlreadyCancelled = 'AlreadyCancelled',\n OrderFullyExecuted = 'OrderFullyExecuted',\n OrderExpired = 'OrderExpired',\n NoLiquidity = 'NoLiquidity',\n UnsupportedToken = 'UnsupportedToken',\n AmountIsZero = 'AmountIsZero',\n SellAmountDoesNotCoverFee = 'SellAmountDoesNotCoverFee',\n TransferEthToContract = 'TransferEthToContract',\n UNHANDLED_GET_ERROR = 'UNHANDLED_GET_ERROR',\n UNHANDLED_CREATE_ERROR = 'UNHANDLED_CREATE_ERROR',\n UNHANDLED_DELETE_ERROR = 'UNHANDLED_DELETE_ERROR',\n}\n\nexport enum ApiErrorCodeDetails {\n DuplicateOrder = 'There was another identical order already submitted. Please try again.',\n InsufficientFee = \"The signed fee is insufficient. It's possible that is higher now due to a change in the gas price, ether price, or the sell token price. Please try again to get an updated fee quote.\",\n InvalidSignature = 'The order signature is invalid. Check whether your Wallet app supports off-chain signing.',\n MissingOrderData = 'The order has missing information',\n InsufficientValidTo = 'The order you are signing is already expired. This can happen if you set a short expiration in the settings and waited too long before signing the transaction. Please try again.',\n InsufficientAllowance = \"The account doesn't have enough funds\",\n InsufficientBalance = 'The account needs to approve the selling token in order to trade',\n WrongOwner = \"The signature is invalid.\\n\\nIt's likely that the signing method provided by your wallet doesn't comply with the standards required by CowSwap.\\n\\nCheck whether your Wallet app supports off-chain signing (EIP-712 or ETHSIGN).\",\n NotFound = 'Token pair selected has insufficient liquidity',\n OrderNotFound = 'The order you are trying to cancel does not exist',\n AlreadyCancelled = 'Order is already cancelled',\n OrderFullyExecuted = 'Order is already filled',\n OrderExpired = 'Order is expired',\n NoLiquidity = 'Token pair selected has insufficient liquidity',\n UnsupportedToken = 'One of the tokens you are trading is unsupported. Please read the FAQ for more info.',\n AmountIsZero = 'Amount is zero',\n SellAmountDoesNotCoverFee = 'Sell amount does not sufficiently cover the current fee',\n TransferEthToContract = 'Sending the native currency to smart contract wallets is not currently supported',\n UNHANDLED_GET_ERROR = 'Order fetch failed. This may be due to a server or network connectivity issue. Please try again later.',\n UNHANDLED_CREATE_ERROR = 'The order was not accepted by the network',\n UNHANDLED_DELETE_ERROR = 'The order cancellation was not accepted by the network',\n}\n\nfunction _mapActionToErrorDetail(action?: ApiActionType) {\n switch (action) {\n case 'get':\n return ApiErrorCodeDetails.UNHANDLED_GET_ERROR\n case 'create':\n return ApiErrorCodeDetails.UNHANDLED_CREATE_ERROR\n case 'delete':\n return ApiErrorCodeDetails.UNHANDLED_DELETE_ERROR\n default:\n log.error(\n logPrefix,\n '[OperatorError::_mapActionToErrorDetails] Uncaught error mapping error action type to server error. Please try again later.'\n )\n return 'Something failed. Please try again later.'\n }\n}\n\nexport default class OperatorError extends CowError {\n name = 'OperatorError'\n description: ApiErrorObject['description']\n\n // Status 400 errors\n // https://github.com/gnosis/gp-v2-services/blob/9014ae55412a356e46343e051aefeb683cc69c41/orderbook/openapi.yml#L563\n static apiErrorDetails = ApiErrorCodeDetails\n\n public static async getErrorMessage(response: Response, action: ApiActionType) {\n try {\n const orderPostError: ApiErrorObject = await response.json()\n\n if (orderPostError.errorType) {\n const errorMessage = OperatorError.apiErrorDetails[orderPostError.errorType]\n // shouldn't fall through as this error constructor expects the error code to exist but just in case\n return errorMessage || orderPostError.errorType\n } else {\n log.error(logPrefix, 'Unknown reason for bad order submission', orderPostError)\n return orderPostError.description\n }\n } catch (error) {\n log.error(logPrefix, 'Error handling a 400 error. Likely a problem deserialising the JSON response')\n return _mapActionToErrorDetail(action)\n }\n }\n static async getErrorFromStatusCode(response: Response, action: 'create' | 'delete') {\n switch (response.status) {\n case 400:\n case 404:\n return this.getErrorMessage(response, action)\n\n case 403:\n return `The order cannot be ${action === 'create' ? 'accepted' : 'cancelled'}. Your account is deny-listed.`\n\n case 429:\n return `The order cannot be ${\n action === 'create' ? 'accepted. Too many order placements' : 'cancelled. Too many order cancellations'\n }. Please, retry in a minute`\n\n case 500:\n default:\n log.error(\n logPrefix,\n `[OperatorError::getErrorFromStatusCode] Error ${\n action === 'create' ? 'creating' : 'cancelling'\n } the order, status code:`,\n response.status || 'unknown'\n )\n return `Error ${action === 'create' ? 'creating' : 'cancelling'} the order`\n }\n }\n constructor(apiError: ApiErrorObject) {\n super(apiError.description, apiError.errorType)\n\n this.description = apiError.description\n this.message = ApiErrorCodeDetails[apiError.errorType]\n }\n}\n\nexport function isValidOperatorError(error: unknown): error is OperatorError {\n return error instanceof OperatorError\n}\n","import log from 'loglevel'\nimport { CowError, logPrefix } from '../../../utils/common'\nimport { ApiErrorCodes, ApiErrorObject } from './OperatorError'\n\nexport interface GpQuoteErrorObject {\n errorType: GpQuoteErrorCodes\n description: string\n data?: unknown\n}\n\n// Conforms to backend API\n// https://github.com/gnosis/gp-v2-services/blob/0bd5f7743bebaa5acd3be13e35ede2326a096f14/orderbook/openapi.yml#L562\nexport enum GpQuoteErrorCodes {\n UnsupportedToken = 'UnsupportedToken',\n InsufficientLiquidity = 'InsufficientLiquidity',\n FeeExceedsFrom = 'FeeExceedsFrom',\n ZeroPrice = 'ZeroPrice',\n UNHANDLED_ERROR = 'UNHANDLED_ERROR',\n}\n\nexport enum GpQuoteErrorDetails {\n UnsupportedToken = 'One of the tokens you are trading is unsupported. Please read the FAQ for more info.',\n InsufficientLiquidity = 'Token pair selected has insufficient liquidity',\n FeeExceedsFrom = 'Current fee exceeds entered \"from\" amount',\n ZeroPrice = 'Quoted price is zero. This is likely due to a significant price difference between the two tokens. Please try increasing amounts.',\n UNHANDLED_ERROR = 'Quote fetch failed. This may be due to a server or network connectivity issue. Please try again later.',\n}\n\nexport function mapOperatorErrorToQuoteError(error?: ApiErrorObject): GpQuoteErrorObject {\n switch (error?.errorType) {\n case ApiErrorCodes.NotFound:\n case ApiErrorCodes.NoLiquidity:\n return {\n errorType: GpQuoteErrorCodes.InsufficientLiquidity,\n description: GpQuoteErrorDetails.InsufficientLiquidity,\n }\n\n case ApiErrorCodes.SellAmountDoesNotCoverFee:\n return {\n errorType: GpQuoteErrorCodes.FeeExceedsFrom,\n description: GpQuoteErrorDetails.FeeExceedsFrom,\n data: error?.data,\n }\n\n case ApiErrorCodes.UnsupportedToken:\n return {\n errorType: GpQuoteErrorCodes.UnsupportedToken,\n description: error.description,\n }\n case ApiErrorCodes.SellAmountDoesNotCoverFee:\n return {\n errorType: GpQuoteErrorCodes.FeeExceedsFrom,\n description: error.description,\n }\n default:\n return { errorType: GpQuoteErrorCodes.UNHANDLED_ERROR, description: GpQuoteErrorDetails.UNHANDLED_ERROR }\n }\n}\n\nexport default class GpQuoteError extends CowError {\n name = 'QuoteErrorObject'\n description: string\n // any data attached\n data?: unknown\n\n // Status 400 errors\n // https://github.com/gnosis/gp-v2-services/blob/9014ae55412a356e46343e051aefeb683cc69c41/orderbook/openapi.yml#L563\n static quoteErrorDetails = GpQuoteErrorDetails\n\n public static async getErrorMessage(response: Response) {\n try {\n const orderPostError: GpQuoteErrorObject = await response.json()\n\n if (orderPostError.errorType) {\n const errorMessage = GpQuoteError.quoteErrorDetails[orderPostError.errorType]\n // shouldn't fall through as this error constructor expects the error code to exist but just in case\n return errorMessage || orderPostError.errorType\n } else {\n log.error(logPrefix, 'Unknown reason for bad quote fetch', orderPostError)\n return orderPostError.description\n }\n } catch (error) {\n log.error(logPrefix, 'Error handling 400/404 error. Likely a problem deserialising the JSON response')\n return GpQuoteError.quoteErrorDetails.UNHANDLED_ERROR\n }\n }\n\n static async getErrorFromStatusCode(response: Response) {\n switch (response.status) {\n case 400:\n case 404:\n return this.getErrorMessage(response)\n\n case 500:\n default:\n log.error(\n logPrefix,\n '[QuoteError::getErrorFromStatusCode] Error fetching quote, status code:',\n response.status || 'unknown'\n )\n return 'Error fetching quote'\n }\n }\n constructor(quoteError: GpQuoteErrorObject) {\n super(quoteError.description, quoteError.errorType)\n\n this.description = quoteError.description\n this.message = GpQuoteError.quoteErrorDetails[quoteError.errorType]\n this.data = quoteError?.data\n }\n}\n\nexport function isValidQuoteError(error: unknown): error is GpQuoteError {\n return error instanceof GpQuoteError\n}\n","export * from '../api/cow/types'\nexport * from '../api/metadata/types'\nexport { OrderKind } from '@gnosis.pm/gp-v2-contracts'\nexport class Token {\n constructor(public symbol: string, public address: string) {}\n}\n","import { SupportedChainId as ChainId } from './chains'\nimport { Token } from '../types'\n\nexport const XDAI_SYMBOL = 'XDAI'\n\nexport const WRAPPED_NATIVE_TOKEN: Record<ChainId, Token> = {\n [ChainId.MAINNET]: new Token('WETH', '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'),\n [ChainId.RINKEBY]: new Token('WETH', '0xc778417E063141139Fce010982780140Aa0cD5Ab'),\n [ChainId.GNOSIS_CHAIN]: new Token('WXDAI', '0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d'),\n}\n\nexport const NATIVE: Record<ChainId, string> = {\n [ChainId.MAINNET]: 'ETH',\n [ChainId.RINKEBY]: 'ETH',\n [ChainId.GNOSIS_CHAIN]: XDAI_SYMBOL,\n}\n","import { SupportedChainId as ChainId } from '../constants/chains'\nimport { NATIVE, WRAPPED_NATIVE_TOKEN } from '../constants/tokens'\n\nexport function toErc20Address(tokenAddress: string, chainId: ChainId): string {\n let checkedAddress = tokenAddress\n\n if (tokenAddress === NATIVE[chainId]) {\n checkedAddress = WRAPPED_NATIVE_TOKEN[chainId].address\n }\n\n return checkedAddress\n}\n","import log from 'loglevel'\nimport fetch from 'cross-fetch'\nimport { OrderKind, QuoteQuery } from '@gnosis.pm/gp-v2-contracts'\nimport { SupportedChainId as ChainId } from '../../constants/chains'\nimport { getSigningSchemeApiValue, OrderCreation } from '../../utils/sign'\nimport OperatorError, { ApiErrorCodeDetails, ApiErrorCodes, ApiErrorObject } from './errors/OperatorError'\nimport QuoteError, {\n GpQuoteErrorCodes,\n GpQuoteErrorObject,\n mapOperatorErrorToQuoteError,\n GpQuoteErrorDetails,\n} from './errors/QuoteError'\nimport { toErc20Address } from '../../utils/tokens'\nimport { FeeQuoteParams, PriceInformation, PriceQuoteParams, SimpleGetQuoteResponse } from './types'\n\nimport { ZERO_ADDRESS } from '../../constants'\nimport {\n GetOrdersParams,\n GetTradesParams,\n OrderCancellationParams,\n OrderID,\n OrderMetaData,\n ProfileData,\n TradeMetaData,\n} from './types'\nimport { CowError, logPrefix, objectToQueryString } from '../../utils/common'\nimport { Context } from '../../utils/context'\n\nfunction getGnosisProtocolUrl(isDev: boolean): Partial<Record<ChainId, string>> {\n if (isDev) {\n return {\n [ChainId.MAINNET]: 'https://barn.api.cow.fi/mainnet/api',\n [ChainId.RINKEBY]: 'https://barn.api.cow.fi/rinkeby/api',\n [ChainId.GNOSIS_CHAIN]: 'https://barn.api.cow.fi/xdai/api',\n }\n }\n\n return {\n [ChainId.MAINNET]: 'https://api.cow.fi/mainnet/api',\n [ChainId.RINKEBY]: 'https://api.cow.fi/rinkeby/api',\n [ChainId.GNOSIS_CHAIN]: 'https://api.cow.fi/xdai/api',\n }\n}\n\nfunction getProfileUrl(isDev: boolean): Partial<Record<ChainId, string>> {\n if (isDev) {\n return {\n [ChainId.MAINNET]: 'https://barn.api.cow.fi/affiliate/api',\n }\n }\n\n return {\n [ChainId.MAINNET]: 'https://api.cow.fi/affiliate/api',\n }\n}\n\nconst UNHANDLED_QUOTE_ERROR: GpQuoteErrorObject = {\n errorType: GpQuoteErrorCodes.UNHANDLED_ERROR,\n description: GpQuoteErrorDetails.UNHANDLED_ERROR,\n}\n\nconst UNHANDLED_ORDER_ERROR: ApiErrorObject = {\n errorType: ApiErrorCodes.UNHANDLED_CREATE_ERROR,\n description: ApiErrorCodeDetails.UNHANDLED_CREATE_ERROR,\n}\n\nasync function _handleQuoteResponse<T = unknown, P extends QuoteQuery = QuoteQuery>(\n response: Response,\n params?: P\n): Promise<T> {\n if (!response.ok) {\n const errorObj: ApiErrorObject = await response.json()\n\n // we need to map the backend error codes to match our own for quotes\n const mappedError = mapOperatorErrorToQuoteError(errorObj)\n const quoteError = new QuoteError(mappedError)\n\n if (params) {\n const { sellToken, buyToken } = params\n log.error(logPrefix, `Error querying fee from API - sellToken: ${sellToken}, buyToken: ${buyToken}`)\n }\n\n throw quoteError\n } else {\n return response.json()\n }\n}\n\nexport class CowApi {\n context: Context\n\n API_NAME = 'CoW Protocol'\n\n constructor(context: Context) {\n this.context = context\n }\n\n get DEFAULT_HEADERS() {\n return { 'Content-Type': 'application/json', 'X-AppId': this.context.appDataHash }\n }\n\n get API_BASE_URL() {\n return getGnosisProtocolUrl(this.context.isDevEnvironment)\n }\n\n get PROFILE_API_BASE_URL(): Partial<Record<ChainId, string>> {\n return getProfileUrl(this.context.isDevEnvironment)\n }\n\n async getProfileData(address: string): Promise<ProfileData | null> {\n const chainId = await this.context.chainId\n log.debug(logPrefix, `[api:${this.API_NAME}] Get profile data for`, chainId, address)\n if (chainId !== ChainId.MAINNET) {\n log.info(logPrefix, 'Profile data is only available for mainnet')\n return null\n }\n\n const response = await this.getProfile(`/profile/${address}`)\n\n if (!response.ok) {\n const errorResponse = await response.json()\n log.error(logPrefix, errorResponse)\n throw new CowError(errorResponse?.description)\n } else {\n return response.json()\n }\n }\n\n async getTrades(params: GetTradesParams): Promise<TradeMetaData[]> {\n const { owner, limit, offset } = params\n const qsParams = objectToQueryString({ owner, limit, offset })\n const chainId = await this.context.chainId\n log.debug(logPrefix, '[util:operator] Get trades for', chainId, owner, { limit, offset })\n try {\n const response = await this.get(`/trades${qsParams}`)\n\n if (!response.ok) {\n const errorResponse = await response.json()\n throw new OperatorError(errorResponse)\n } else {\n return response.json()\n }\n } catch (error) {\n log.error(logPrefix, 'Error getting trades:', error)\n if (error instanceof OperatorError) throw error\n\n throw new CowError('Error getting trades: ' + error)\n }\n }\n\n async getOrders(params: GetOrdersParams): Promise<OrderMetaData[]> {\n const { owner, limit = 1000, offset = 0 } = params\n const queryString = objectToQueryString({ limit, offset })\n const chainId = await this.context.chainId\n log.debug(logPrefix, `[api:${this.API_NAME}] Get orders for `, chainId, owner, limit, offset)\n\n try {\n const response = await this.get(`/account/${owner}/orders/${queryString}`)\n\n if (!response.ok) {\n const errorResponse: ApiErrorObject = await response.json()\n throw new OperatorError(errorResponse)\n } else {\n return response.json()\n }\n } catch (error) {\n log.error(logPrefix, 'Error getting orders information:', error)\n if (error instanceof OperatorError) throw error\n\n throw new OperatorError(UNHANDLED_ORDER_ERROR)\n }\n }\n\n async getTxOrders(txHash: string): Promise<OrderMetaData[]> {\n const chainId = await this.context.chainId\n log.debug(`[api:${this.API_NAME}] Get tx orders for `, chainId, txHash)\n\n try {\n const response = await this.get(`/transactions/${txHash}/orders`)\n\n if (!response.ok) {\n const errorResponse: ApiErrorObject = await response.json()\n throw new OperatorError(errorResponse)\n } else {\n return response.json()\n }\n } catch (error) {\n log.error('Error getting transaction orders information:', error)\n if (error instanceof OperatorError) throw error\n throw new OperatorError(UNHANDLED_ORDER_ERROR)\n }\n }\n\n async getOrder(orderId: string): Promise<OrderMetaData | null> {\n const chainId = await this.context.chainId\n log.debug(logPrefix, `[api:${this.API_NAME}] Get order for `, chainId, orderId)\n try {\n const response = await this.get(`/orders/${orderId}`)\n\n if (!response.ok) {\n const errorResponse: ApiErrorObject = await response.json()\n throw new OperatorError(errorResponse)\n } else {\n return response.json()\n }\n } catch (error) {\n log.error(logPrefix, 'Error getting order information:', error)\n if (error instanceof OperatorError) throw error\n\n throw new OperatorError(UNHANDLED_ORDER_ERROR)\n }\n }\n\n async getPriceQuoteLegacy(params: PriceQuoteParams): Promise<PriceInformation | null> {\n const { baseToken, quoteToken, amount, kind } = params\n const chainId = await this.context.chainId\n log.debug(logPrefix, `[api:${this.API_NAME}] Get price from API`, params, 'for', chainId)\n\n const response = await this.get(\n `/markets/${toErc20Address(baseToken, chainId)}-${toErc20Address(quoteToken, chainId)}/${kind}/${amount}`\n ).catch((error) => {\n log.error(logPrefix, 'Error getting price quote:', error)\n throw new QuoteError(UNHANDLED_QUOTE_ERROR)\n })\n\n return _handleQuoteResponse<PriceInformation | null>(response)\n }\n\n async getQuote(params: FeeQuoteParams): Promise<SimpleGetQuoteResponse> {\n const chainId = await this.context.chainId\n const quoteParams = this.mapNewToLegacyParams(params, chainId)\n const response = await this.post('/quote', quoteParams)\n\n return _handleQuoteResponse<SimpleGetQuoteResponse>(response)\n }\n\n async sendSignedOrderCancellation(params: OrderCancellationParams): Promise<void> {\n const { cancellation, owner: from } = params\n const chainId = await this.context.chainId\n log.debug(logPrefix, `[api:${this.API_NAME}] Delete signed order for network`, chainId, cancellation)\n\n const response = await this.delete(`/orders/${cancellation.orderUid}`, {\n signature: cancellation.signature,\n signingScheme: getSigningSchemeApiValue(cancellation.signingScheme),\n from,\n })\n\n if (!response.ok) {\n // Raise an exception\n const errorMessage = await OperatorError.getErrorFromStatusCode(response, 'delete')\n throw new CowError(errorMessage)\n }\n\n log.debug(logPrefix, `[api:${this.API_NAME}] Cancelled order`, cancellation.orderUid, chainId)\n }\n\n async sendOrder(params: { order: Omit<OrderCreation, 'appData'>; owner: string }): Promise<OrderID> {\n const fullOrder: OrderCreation = { ...params.order, appData: this.context.appDataHash }\n const chainId = await this.context.chainId\n const { owner } = params\n log.debug(logPrefix, `[api:${this.API_NAME}] Post signed order for network`, chainId, fullOrder)\n\n // Call API\n const response = await this.post(`/orders`, {\n ...fullOrder,\n signingScheme: getSigningSchemeApiValue(fullOrder.signingScheme),\n from: owner,\n })\n\n // Handle response\n if (!response.ok) {\n // Raise an exception\n const errorMessage = await OperatorError.getErrorFromStatusCode(response, 'create')\n throw new CowError(errorMessage)\n }\n\n const uid = (await response.json()) as string\n log.debug(logPrefix, `[api:${this.API_NAME}] Success posting the signed order`, uid)\n return uid\n }\n\n getOrderLink(orderId: OrderID): string {\n const baseUrl = this.getApiBaseUrl()\n\n return baseUrl + `/orders/${orderId}`\n }\n\n private mapNewToLegacyParams(params: FeeQuoteParams, chainId: ChainId): QuoteQuery {\n const { amount, kind, userAddress, receiver, validTo, sellToken, buyToken } = params\n const fallbackAddress = userAddress || ZERO_ADDRESS\n\n const baseParams = {\n sellToken: toErc20Address(sellToken, chainId),\n buyToken: toErc20Address(buyToken, chainId),\n from: fallbackAddress,\n receiver: receiver || fallbackAddress,\n appData: this.context.appDataHash,\n validTo,\n partiallyFillable: false,\n }\n\n const finalParams: QuoteQuery =\n kind === OrderKind.SELL\n ? {\n kind: OrderKind.SELL,\n sellAmountBeforeFee: amount,\n ...baseParams,\n }\n : {\n kind: OrderKind.BUY,\n buyAmountAfterFee: amount,\n ...baseParams,\n }\n\n return finalParams\n }\n\n private async getApiBaseUrl(): Promise<string> {\n const chainId = await this.context.chainId\n const baseUrl = this.API_BASE_URL[chainId]\n\n if (!baseUrl) {\n throw new CowError(`Unsupported Network. The ${this.API_NAME} API is not deployed in the Network ` + chainId)\n } else {\n return baseUrl + '/v1'\n }\n }\n\n private async getProfileApiBaseUrl(): Promise<string> {\n const chainId = await this.context.chainId\n const baseUrl = this.PROFILE_API_BASE_URL[chainId]\n\n if (!baseUrl) {\n throw new CowError(`Unsupported Network. The ${this.API_NAME} API is not deployed in the Network ` + chainId)\n } else {\n return baseUrl + '/v1'\n }\n }\n\n private async fetch(url: string, method: 'GET' | 'POST' | 'DELETE', data?: unknown): Promise<Response> {\n const baseUrl = await this.getApiBaseUrl()\n return fetch(baseUrl + url, {\n headers: this.DEFAULT_HEADERS,\n method,\n body: data !== undefined ? JSON.stringify(data) : data,\n })\n }\n\n private async fetchProfile(url: string, method: 'GET' | 'POST' | 'DELETE', data?: unknown): Promise<Response> {\n const baseUrl = await this.getProfileApiBaseUrl()\n return fetch(baseUrl + url, {\n headers: this.DEFAULT_HEADERS,\n method,\n body: data !== undefined ? JSON.stringify(data) : data,\n })\n }\n\n private post(url: string, data: unknown): Promise<Response> {\n return this.fetch(url, 'POST', data)\n }\n\n private get(url: string): Promise<Response> {\n return this.fetch(url, 'GET')\n }\n\n private getProfile(url: string): Promise<Response> {\n return this.fetchProfile(url, 'GET')\n }\n\n private delete(url: string, data: unknown): Promise<Response> {\n return this.fetch(url, 'DELETE', data)\n }\n}\n","import { gql } from 'graphql-request'\n\nexport const TOTALS_QUERY = gql`\n query Totals {\n totals {\n tokens\n orders\n traders\n settlements\n volumeUsd\n volumeEth\n feesUsd\n feesEth\n }\n }\n`\n\nexport const LAST_DAYS_VOLUME_QUERY = gql`\n query LastDaysVolume($days: Int!) {\n dailyTotals(orderBy: timestamp, orderDirection: desc, first: $days) {\n timestamp\n volumeUsd\n }\n }\n`\n\nexport const LAST_HOURS_VOLUME_QUERY = gql`\n query LastHoursVolume($hours: Int!) {\n hourlyTotals(orderBy: timestamp, orderDirection: desc, first: $hours) {\n timestamp\n volumeUsd\n }\n }\n`\n","import log from 'loglevel'\nimport fetch from 'cross-fetch'\nimport { GraphQLClient, Variables } from 'graphql-request'\nimport { DocumentNode } from 'graphql'\nimport { CowError } from '../../utils/common'\nimport { Context } from '../../utils/context'\nimport { SupportedChainId as ChainId } from '../../constants/chains'\nimport { LastDaysVolumeQuery, LastHoursVolumeQuery, TotalsQuery } from './graphql'\nimport { LAST_DAYS_VOLUME_QUERY, LAST_HOURS_VOLUME_QUERY, TOTALS_QUERY } from './queries'\n\nexport const subgraphUrls: Record<ChainId, string> = {\n [ChainId.MAINNET]: 'https://api.thegraph.com/subgraphs/name/cowprotocol/cow',\n [ChainId.RINKEBY]: 'https://api.thegraph.com/subgraphs/name/cowprotocol/cow-rinkeby',\n [ChainId.GNOSIS_CHAIN]: 'https://api.thegraph.com/subgraphs/name/cowprotocol/cow-gc',\n}\n\nexport class CowSubgraphApi {\n context: Context\n clients: Record<ChainId, GraphQLClient>\n\n API_NAME = 'CoW Protocol Subgraph'\n\n constructor(context: Context) {\n this.context = context\n this.clients = this.createClients()\n }\n\n private createClients(): Record<ChainId, GraphQLClient> {\n return {\n [ChainId.MAINNET]: new GraphQLClient(subgraphUrls[ChainId.MAINNET], { fetch }),\n [ChainId.RINKEBY]: new GraphQLClient(subgraphUrls[ChainId.RINKEBY], { fetch }),\n [ChainId.GNOSIS_CHAIN]: new GraphQLClient(subgraphUrls[ChainId.GNOSIS_CHAIN], { fetch }),\n }\n }\n\n async getBaseUrl(): Promise<string> {\n const chainId = await this.context.chainId\n return subgraphUrls[chainId]\n }\n\n async getTotals(): Promise<TotalsQuery['totals'][0]> {\n const chainId = await this.context.chainId\n log.debug(`[subgraph:${this.API_NAME}] Get totals for:`, chainId)\n const response = await this.runQuery<TotalsQuery>(TOTALS_QUERY)\n return response.totals[0]\n }\n\n async getLastDaysVolume(days: number): Promise<LastDaysVolumeQuery> {\n const chainId = await this.context.chainId\n log.debug(`[subgraph:${this.API_NAME}] Get last ${days} days volume for:`, chainId)\n return this.runQuery<LastDaysVolumeQuery>(LAST_DAYS_VOLUME_QUERY, { days })\n }\n\n async getLastHoursVolume(hours: number): Promise<LastHoursVolumeQuery> {\n const chainId = await this.context.chainId\n log.debug(`[subgraph:${this.API_NAME}] Get last ${hours} hours volume for:`, chainId)\n return this.runQuery<LastHoursVolumeQuery>(LAST_HOURS_VOLUME_QUERY, { hours })\n }\n\n async runQuery<T>(query: string | DocumentNode, variables?: Variables): Promise<T> {\n try {\n const chainId = await this.context.chainId\n const client = this.clients[chainId]\n const response = await client.request(query, variables)\n return response\n } catch (error) {\n log.error(error)\n const baseUrl = await this.getBaseUrl()\n throw new CowError(\n `Error running query: ${query}. Variables: ${JSON.stringify(variables)}. API: ${baseUrl}. Inner Error: ${error}`\n )\n }\n }\n}\n","import Ajv, { ValidateFunction } from 'ajv'\nimport { fromHexString } from './common'\nimport { DEFAULT_IPFS_READ_URI } from '../constants'\nimport { AppDataDoc } from '../types'\n\nlet validate: ValidateFunction | undefined\nlet ajv: Ajv\n\ninterface ValidationResult {\n result: boolean\n errors?: string\n}\n\nasync function getValidator(): Promise<{ ajv: Ajv; validate: ValidateFunction }> {\n if (!ajv) {\n ajv = new Ajv()\n }\n\n if (!validate) {\n const appDataSchema = await import('../schemas/appData.schema.json')\n validate = ajv.compile(appDataSchema)\n }\n\n return { ajv, validate }\n}\n\nexport async function getSerializedCID(hash: string): Promise<void | string> {\n const cidVersion = 0x1 //cidv1\n const codec = 0x70 //dag-pb\n const type = 0x12 //sha2-256\n const length = 32 //256 bits\n const _hash = hash.replace(/(^0x)/, '')\n\n const hexHash = fromHexString(_hash)\n\n if (!hexHash) return\n\n const uint8array = Uint8Array.from([cidVersion, codec, type, length, ...hexHash])\n const { CID } = await import('multiformats/cid')\n return CID.decode(uint8array).toV0().toString()\n}\n\nexport async function loadIpfsFromCid(cid: string, ipfsUri = DEFAULT_IPFS_READ_URI): Promise<AppDataDoc> {\n const { default: fetch } = await import('cross-fetch')\n const response = await fetch(`${ipfsUri}/${cid}`)\n\n return await response.json()\n}\n\nexport async function validateAppDataDocument(appDataDocument: unknown): Promise<ValidationResult> {\n const { ajv, validate } = await getValidator()\n const result = !!validate(appDataDocument)\n\n return {\n result,\n errors: ajv.errors ? ajv.errorsText(ajv.errors) : undefined,\n }\n}\n","import log from 'loglevel'\nimport { Context } from '../../utils/context'\nimport { getSerializedCID, loadIpfsFromCid, validateAppDataDocument } from '../../utils/appData'\nimport { calculateIpfsCidV0, pinJSONToIPFS } from '../../utils/ipfs'\nimport { AppDataDoc, IpfsHashInfo, MetadataDoc, OptionalAppDataProperties } from './types'\nimport { CowError } from '../../utils/common'\n\nconst DEFAULT_APP_CODE = 'CowSwap'\nconst DEFAULT_APP_VERSION = '0.3.0'\n\nexport class MetadataApi {\n context: Context\n\n constructor(context: Context) {\n this.context = context\n }\n\n generateAppDataDoc(metadata: MetadataDoc = {}, optionalProperties?: OptionalAppDataProperties): AppDataDoc {\n const { appCode = DEFAULT_APP_CODE, environment } = optionalProperties || {}\n\n return {\n version: DEFAULT_APP_VERSION,\n appCode,\n environment,\n metadata: {\n ...metadata,\n },\n }\n }\n\n async decodeAppData(hash: string): Promise<void | AppDataDoc> {\n try {\n const cidV0 = await getSerializedCID(hash)\n if (!cidV0) throw new CowError('Error getting serialized CID')\n return loadIpfsFromCid(cidV0)\n } catch (e) {\n const error = e as CowError\n log.error('Error decoding AppData:', error)\n throw new CowError('Error decoding AppData: ' + error.message)\n }\n }\n\n async cidToAppDataHex(ipfsHash: string): Promise<string | void> {\n const { CID } = await import('multiformats/cid')\n\n const { digest } = CID.parse(ipfsHash).multihash\n return `0x${Buffer.from(digest).toString('hex')}`\n }\n\n async appDataHexToCid(hash: string): Promise<string | void> {\n const cidV0 = await getSerializedCID(hash)\n if (!cidV0) throw new CowError('Error getting serialized CID')\n return cidV0\n }\n\n /**\n * Calculates appDataHash WITHOUT publishing file to IPFS\n *\n * This method is intended to quickly generate the appDataHash independent\n * of IPFS upload/pinning\n * The hash is deterministic thus uploading it to IPFS will give you the same\n * result\n *\n * WARNING!\n * One important caveat is that - like `uploadMetadataDocToIpfs` method - the\n * calculation is done with a stringified file without a new line at the end.\n * That means that you will get different results if the file is uploaded\n * directly as a file. For example:\n *\n * Consider the content `hello world`.\n *\n * Using IPFS's cli tool to updload a file with the contents above\n * (`ipfs add file`), it'll have the line ending and result in this CIDv0:\n * QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o\n *\n * While using this method - and `uploadMetadataDocToIpfs` - will give you\n * this CIDv0:\n * Qmf412jQZiuVUtdgnB36FXFX7xg5V6KEbSJ4dpQuhkLyfD\n *\n * @param appData\n */\n async calculateAppDataHash(appData: AppDataDoc): Promise<IpfsHashInfo | void> {\n const validation = await validateAppDataDocument(appData)\n if (!validation?.result) {\n throw new CowError('Invalid appData provided', validation?.errors)\n }\n\n try {\n const cidV0 = await calculateIpfsCidV0(appData)\n const appDataHash = await this.cidToAppDataHex(cidV0)\n\n if (!appDataHash) {\n throw new CowError(`Could not extract appDataHash from calculated cidV0 ${cidV0}`)\n }\n\n return { cidV0, appDataHash }\n } catch (e) {\n const error = e as CowError\n throw new CowError('Failed to calculate appDataHash', error.message)\n }\n }\n\n async uploadMetadataDocToIpfs(appDataDoc: AppDataDoc): Promise<string | void> {\n const { IpfsHash } = await pinJSONToIPFS(appDataDoc, this.context.ipfs)\n return this.cidToAppDataHex(IpfsHash)\n }\n}\n","import { CowError } from './common'\nimport { Ipfs } from './context'\nimport { AppDataDoc } from '../api/metadata/types'\nimport { DEFAULT_IPFS_WRITE_URI } from '../constants'\n\ntype PinataPinResponse = {\n IpfsHash: string\n PinSize: number\n Timestamp: string\n}\n\nexport async function pinJSONToIPFS(\n file: unknown,\n { writeUri = DEFAULT_IPFS_WRITE_URI, pinataApiKey = '', pinataApiSecret = '' }: Ipfs\n): Promise<PinataPinResponse> {\n const { default: fetch } = await import('cross-fetch')\n\n if (!pinataApiKey || !pinataApiSecret) {\n throw new CowError('You need to pass IPFS api credentials.')\n }\n\n const body = JSON.stringify({\n pinataContent: file,\n pinataMetadata: { name: 'appData' },\n })\n\n const pinataUrl = `${writeUri}/pinning/pinJSONToIPFS`\n\n const response = await fetch(pinataUrl, {\n method: 'POST',\n body,\n headers: {\n 'Content-Type': 'application/json',\n pinata_api_key: pinataApiKey,\n pinata_secret_api_key: pinataApiSecret,\n },\n })\n\n const data = await response.json()\n\n if (response.status !== 200) {\n throw new Error(data.error.details || data.error)\n }\n\n return data\n}\n\nexport async function calculateIpfsCidV0(doc: AppDataDoc): Promise<string> {\n const docString = JSON.stringify(doc)\n\n const { of } = await import('ipfs-only-hash')\n return of(docString, { cidVersion: 0 })\n}\n","import { Signer } from 'ethers'\nimport log from 'loglevel'\nimport { CowError, logPrefix } from './common'\nimport { SupportedChainId as ChainId } from '../constants/chains'\nimport { DEFAULT_APP_DATA_HASH, DEFAULT_IPFS_READ_URI, DEFAULT_IPFS_WRITE_URI } from '../constants'\n\nexport interface Ipfs {\n uri?: string\n writeUri?: string\n readUri?: string\n pinataApiKey?: string\n pinataApiSecret?: string\n}\n\nexport interface CowContext {\n appDataHash?: string\n isDevEnvironment?: boolean\n signer?: Signer\n ipfs?: Ipfs\n}\n\nexport const DefaultCowContext = {\n appDataHash: DEFAULT_APP_DATA_HASH,\n isDevEnvironment: false,\n ipfs: {\n readUri: DEFAULT_IPFS_READ_URI,\n writeUri: DEFAULT_IPFS_WRITE_URI,\n apiKey: undefined,\n apiSecret: undefined,\n },\n}\n\n/**\n *\n *\n * @export\n * @class Context\n * @implements {Required<CowContext>}\n */\nexport class Context implements Partial<CowContext> {\n #context: CowContext\n #chainId: ChainId\n\n constructor(chainId: ChainId, context: CowContext) {\n this.#chainId = this.updateChainId(chainId)\n this.#context = {\n ...DefaultCowContext,\n ...context,\n ipfs: {\n ...DefaultCowContext.ipfs,\n ...context.ipfs,\n },\n }\n }\n\n updateChainId(chainId: ChainId) {\n if (!ChainId[chainId]) {\n throw new CowError(`Invalid chainId: ${chainId}`)\n }\n\n log.debug(logPrefix, `Updating chainId to: ${chainId}`)\n\n this.#chainId = chainId\n return chainId\n }\n\n get chainId(): Promise<ChainId> {\n const provider = this.#context.signer?.provider\n if (!provider) {\n return Promise.resolve(this.#chainId)\n }\n\n log.debug(logPrefix, 'Getting chainId from provider')\n\n const getAndReconciliateNetwork = async () => {\n const network = await provider.getNetwork()\n const chainId = network.chainId\n\n if (chainId !== this.#chainId) {\n log.debug(\n logPrefix,\n `ChainId mismatch: Provider's chainId: ${chainId} vs Context's chainId: ${\n this.#chainId\n }. Updating Context's chainId`\n )\n this.updateChainId(chainId)\n }\n return chainId\n }\n\n return getAndReconciliateNetwork()\n }\n\n get appDataHash(): string {\n return this.#context.appDataHash ?? DefaultCowContext.appDataHash\n }\n\n get isDevEnvironment(): boolean {\n return this.#context.isDevEnvironment ?? DefaultCowContext.isDevEnvironment\n }\n\n get signer(): Signer | undefined {\n return this.#context.signer\n }\n\n get ipfs(): Ipfs {\n return this.#context.ipfs ?? DefaultCowContext.ipfs\n }\n}\n","export type Maybe<T> = T | null;\nexport type InputMaybe<T> = Maybe<T>;\nexport type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };\nexport type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };\nexport type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n ID: string;\n String: string;\n Boolean: boolean;\n Int: number;\n Float: number;\n BigDecimal: any;\n BigInt: any;\n Bytes: any;\n};\n\nexport type BlockChangedFilter = {\n number_gte: Scalars['Int'];\n};\n\nexport type Block_Height = {\n hash?: InputMaybe<Scalars['Bytes']>;\n number?: InputMaybe<Scalars['Int']>;\n number_gte?: InputMaybe<Scalars['Int']>;\n};\n\nexport type Bundle = {\n __typename?: 'Bundle';\n /** Price of ETH in usd */\n ethPriceUSD: Scalars['BigDecimal'];\n /** Singleton #1 */\n id: Scalars['ID'];\n};\n\nexport type Bundle_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n ethPriceUSD?: InputMaybe<Scalars['BigDecimal']>;\n ethPriceUSD_gt?: InputMaybe<Scalars['BigDecimal']>;\n ethPriceUSD_gte?: InputMaybe<Scalars['BigDecimal']>;\n ethPriceUSD_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n ethPriceUSD_lt?: InputMaybe<Scalars['BigDecimal']>;\n ethPriceUSD_lte?: InputMaybe<Scalars['BigDecimal']>;\n ethPriceUSD_not?: InputMaybe<Scalars['BigDecimal']>;\n ethPriceUSD_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n};\n\nexport enum Bundle_OrderBy {\n EthPriceUsd = 'ethPriceUSD',\n Id = 'id'\n}\n\nexport type DailyTotal = {\n __typename?: 'DailyTotal';\n /** Total fees in Eth */\n feesEth?: Maybe<Scalars['BigDecimal']>;\n /** Total fees in USD */\n feesUsd?: Maybe<Scalars['BigDecimal']>;\n /** Day timestamp */\n id: Scalars['ID'];\n /** Number of trades */\n numberOfTrades: Scalars['BigInt'];\n /** Total number of orders placed */\n orders: Scalars['BigInt'];\n /** Total number of batches settled */\n settlements: Scalars['BigInt'];\n /** Start day timestamp */\n timestamp: Scalars['Int'];\n /** Traded tokens */\n tokens: Array<Token>;\n /** Total number of tokens traded */\n totalTokens: Scalars['BigInt'];\n /** Total traded volume in ETH */\n volumeEth?: Maybe<Scalars['BigDecimal']>;\n /** Total traded volume in USD */\n volumeUsd?: Maybe<Scalars['BigDecimal']>;\n};\n\n\nexport type DailyTotalTokensArgs = {\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Token_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n where?: InputMaybe<Token_Filter>;\n};\n\nexport type DailyTotal_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n feesEth?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n feesEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_not?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n feesUsd?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n feesUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n numberOfTrades?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_gt?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_gte?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_in?: InputMaybe<Array<Scalars['BigInt']>>;\n numberOfTrades_lt?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_lte?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_not?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n orders?: InputMaybe<Scalars['BigInt']>;\n orders_gt?: InputMaybe<Scalars['BigInt']>;\n orders_gte?: InputMaybe<Scalars['BigInt']>;\n orders_in?: InputMaybe<Array<Scalars['BigInt']>>;\n orders_lt?: InputMaybe<Scalars['BigInt']>;\n orders_lte?: InputMaybe<Scalars['BigInt']>;\n orders_not?: InputMaybe<Scalars['BigInt']>;\n orders_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n settlements?: InputMaybe<Scalars['BigInt']>;\n settlements_gt?: InputMaybe<Scalars['BigInt']>;\n settlements_gte?: InputMaybe<Scalars['BigInt']>;\n settlements_in?: InputMaybe<Array<Scalars['BigInt']>>;\n settlements_lt?: InputMaybe<Scalars['BigInt']>;\n settlements_lte?: InputMaybe<Scalars['BigInt']>;\n settlements_not?: InputMaybe<Scalars['BigInt']>;\n settlements_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n timestamp?: InputMaybe<Scalars['Int']>;\n timestamp_gt?: InputMaybe<Scalars['Int']>;\n timestamp_gte?: InputMaybe<Scalars['Int']>;\n timestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n timestamp_lt?: InputMaybe<Scalars['Int']>;\n timestamp_lte?: InputMaybe<Scalars['Int']>;\n timestamp_not?: InputMaybe<Scalars['Int']>;\n timestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n tokens?: InputMaybe<Array<Scalars['String']>>;\n tokens_contains?: InputMaybe<Array<Scalars['String']>>;\n tokens_contains_nocase?: InputMaybe<Array<Scalars['String']>>;\n tokens_not?: InputMaybe<Array<Scalars['String']>>;\n tokens_not_contains?: InputMaybe<Array<Scalars['String']>>;\n tokens_not_contains_nocase?: InputMaybe<Array<Scalars['String']>>;\n totalTokens?: InputMaybe<Scalars['BigInt']>;\n totalTokens_gt?: InputMaybe<Scalars['BigInt']>;\n totalTokens_gte?: InputMaybe<Scalars['BigInt']>;\n totalTokens_in?: InputMaybe<Array<Scalars['BigInt']>>;\n totalTokens_lt?: InputMaybe<Scalars['BigInt']>;\n totalTokens_lte?: InputMaybe<Scalars['BigInt']>;\n totalTokens_not?: InputMaybe<Scalars['BigInt']>;\n totalTokens_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeEth?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_not?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeUsd?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n};\n\nexport enum DailyTotal_OrderBy {\n FeesEth = 'feesEth',\n FeesUsd = 'feesUsd',\n Id = 'id',\n NumberOfTrades = 'numberOfTrades',\n Orders = 'orders',\n Settlements = 'settlements',\n Timestamp = 'timestamp',\n Tokens = 'tokens',\n TotalTokens = 'totalTokens',\n VolumeEth = 'volumeEth',\n VolumeUsd = 'volumeUsd'\n}\n\nexport type HourlyTotal = {\n __typename?: 'HourlyTotal';\n /** Total fees in Eth */\n feesEth?: Maybe<Scalars['BigDecimal']>;\n /** Total fees in USD */\n feesUsd?: Maybe<Scalars['BigDecimal']>;\n /** Hour timestamp */\n id: Scalars['ID'];\n /** Number of trades */\n numberOfTrades: Scalars['BigInt'];\n /** Total number of orders placed */\n orders: Scalars['BigInt'];\n /** Total number of batches settled */\n settlements: Scalars['BigInt'];\n /** Start hour timestamp */\n timestamp: Scalars['Int'];\n /** Traded tokens */\n tokens: Array<Token>;\n /** Total number of tokens traded */\n totalTokens: Scalars['BigInt'];\n /** Total traded volume in ETH */\n volumeEth?: Maybe<Scalars['BigDecimal']>;\n /** Total traded volume in USD */\n volumeUsd?: Maybe<Scalars['BigDecimal']>;\n};\n\n\nexport type HourlyTotalTokensArgs = {\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Token_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n where?: InputMaybe<Token_Filter>;\n};\n\nexport type HourlyTotal_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n feesEth?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n feesEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_not?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n feesUsd?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n feesUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n numberOfTrades?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_gt?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_gte?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_in?: InputMaybe<Array<Scalars['BigInt']>>;\n numberOfTrades_lt?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_lte?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_not?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n orders?: InputMaybe<Scalars['BigInt']>;\n orders_gt?: InputMaybe<Scalars['BigInt']>;\n orders_gte?: InputMaybe<Scalars['BigInt']>;\n orders_in?: InputMaybe<Array<Scalars['BigInt']>>;\n orders_lt?: InputMaybe<Scalars['BigInt']>;\n orders_lte?: InputMaybe<Scalars['BigInt']>;\n orders_not?: InputMaybe<Scalars['BigInt']>;\n orders_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n settlements?: InputMaybe<Scalars['BigInt']>;\n settlements_gt?: InputMaybe<Scalars['BigInt']>;\n settlements_gte?: InputMaybe<Scalars['BigInt']>;\n settlements_in?: InputMaybe<Array<Scalars['BigInt']>>;\n settlements_lt?: InputMaybe<Scalars['BigInt']>;\n settlements_lte?: InputMaybe<Scalars['BigInt']>;\n settlements_not?: InputMaybe<Scalars['BigInt']>;\n settlements_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n timestamp?: InputMaybe<Scalars['Int']>;\n timestamp_gt?: InputMaybe<Scalars['Int']>;\n timestamp_gte?: InputMaybe<Scalars['Int']>;\n timestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n timestamp_lt?: InputMaybe<Scalars['Int']>;\n timestamp_lte?: InputMaybe<Scalars['Int']>;\n timestamp_not?: InputMaybe<Scalars['Int']>;\n timestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n tokens?: InputMaybe<Array<Scalars['String']>>;\n tokens_contains?: InputMaybe<Array<Scalars['String']>>;\n tokens_contains_nocase?: InputMaybe<Array<Scalars['String']>>;\n tokens_not?: InputMaybe<Array<Scalars['String']>>;\n tokens_not_contains?: InputMaybe<Array<Scalars['String']>>;\n tokens_not_contains_nocase?: InputMaybe<Array<Scalars['String']>>;\n totalTokens?: InputMaybe<Scalars['BigInt']>;\n totalTokens_gt?: InputMaybe<Scalars['BigInt']>;\n totalTokens_gte?: InputMaybe<Scalars['BigInt']>;\n totalTokens_in?: InputMaybe<Array<Scalars['BigInt']>>;\n totalTokens_lt?: InputMaybe<Scalars['BigInt']>;\n totalTokens_lte?: InputMaybe<Scalars['BigInt']>;\n totalTokens_not?: InputMaybe<Scalars['BigInt']>;\n totalTokens_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeEth?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_not?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeUsd?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n};\n\nexport enum HourlyTotal_OrderBy {\n FeesEth = 'feesEth',\n FeesUsd = 'feesUsd',\n Id = 'id',\n NumberOfTrades = 'numberOfTrades',\n Orders = 'orders',\n Settlements = 'settlements',\n Timestamp = 'timestamp',\n Tokens = 'tokens',\n TotalTokens = 'totalTokens',\n VolumeEth = 'volumeEth',\n VolumeUsd = 'volumeUsd'\n}\n\nexport type Order = {\n __typename?: 'Order';\n /** Trade's OrderUid to hex string */\n id: Scalars['ID'];\n /** block's timestamp on invalidate event */\n invalidateTimestamp?: Maybe<Scalars['Int']>;\n /** Boolean value to show if the order is signed */\n isSigned?: Maybe<Scalars['Boolean']>;\n /** Boolean value true by default unless is invalidated by the event */\n isValid?: Maybe<Scalars['Boolean']>;\n /** Trade's owner or presign User */\n owner?: Maybe<User>;\n /** block's timestamp on presign event */\n presignTimestamp?: Maybe<Scalars['Int']>;\n /** Array of trades on the order */\n trades?: Maybe<Array<Trade>>;\n /** block's timestamp on trade event */\n tradesTimestamp?: Maybe<Scalars['Int']>;\n};\n\n\nexport type OrderTradesArgs = {\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Trade_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n where?: InputMaybe<Trade_Filter>;\n};\n\n/** Defines the order direction, either ascending or descending */\nexport enum OrderDirection {\n Asc = 'asc',\n Desc = 'desc'\n}\n\nexport type Order_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n invalidateTimestamp?: InputMaybe<Scalars['Int']>;\n invalidateTimestamp_gt?: InputMaybe<Scalars['Int']>;\n invalidateTimestamp_gte?: InputMaybe<Scalars['Int']>;\n invalidateTimestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n invalidateTimestamp_lt?: InputMaybe<Scalars['Int']>;\n invalidateTimestamp_lte?: InputMaybe<Scalars['Int']>;\n invalidateTimestamp_not?: InputMaybe<Scalars['Int']>;\n invalidateTimestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n isSigned?: InputMaybe<Scalars['Boolean']>;\n isSigned_in?: InputMaybe<Array<Scalars['Boolean']>>;\n isSigned_not?: InputMaybe<Scalars['Boolean']>;\n isSigned_not_in?: InputMaybe<Array<Scalars['Boolean']>>;\n isValid?: InputMaybe<Scalars['Boolean']>;\n isValid_in?: InputMaybe<Array<Scalars['Boolean']>>;\n isValid_not?: InputMaybe<Scalars['Boolean']>;\n isValid_not_in?: InputMaybe<Array<Scalars['Boolean']>>;\n owner?: InputMaybe<Scalars['String']>;\n owner_contains?: InputMaybe<Scalars['String']>;\n owner_contains_nocase?: InputMaybe<Scalars['String']>;\n owner_ends_with?: InputMaybe<Scalars['String']>;\n owner_ends_with_nocase?: InputMaybe<Scalars['String']>;\n owner_gt?: InputMaybe<Scalars['String']>;\n owner_gte?: InputMaybe<Scalars['String']>;\n owner_in?: InputMaybe<Array<Scalars['String']>>;\n owner_lt?: InputMaybe<Scalars['String']>;\n owner_lte?: InputMaybe<Scalars['String']>;\n owner_not?: InputMaybe<Scalars['String']>;\n owner_not_contains?: InputMaybe<Scalars['String']>;\n owner_not_contains_nocase?: InputMaybe<Scalars['String']>;\n owner_not_ends_with?: InputMaybe<Scalars['String']>;\n owner_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n owner_not_in?: InputMaybe<Array<Scalars['String']>>;\n owner_not_starts_with?: InputMaybe<Scalars['String']>;\n owner_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n owner_starts_with?: InputMaybe<Scalars['String']>;\n owner_starts_with_nocase?: InputMaybe<Scalars['String']>;\n presignTimestamp?: InputMaybe<Scalars['Int']>;\n presignTimestamp_gt?: InputMaybe<Scalars['Int']>;\n presignTimestamp_gte?: InputMaybe<Scalars['Int']>;\n presignTimestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n presignTimestamp_lt?: InputMaybe<Scalars['Int']>;\n presignTimestamp_lte?: InputMaybe<Scalars['Int']>;\n presignTimestamp_not?: InputMaybe<Scalars['Int']>;\n presignTimestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n tradesTimestamp?: InputMaybe<Scalars['Int']>;\n tradesTimestamp_gt?: InputMaybe<Scalars['Int']>;\n tradesTimestamp_gte?: InputMaybe<Scalars['Int']>;\n tradesTimestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n tradesTimestamp_lt?: InputMaybe<Scalars['Int']>;\n tradesTimestamp_lte?: InputMaybe<Scalars['Int']>;\n tradesTimestamp_not?: InputMaybe<Scalars['Int']>;\n tradesTimestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n};\n\nexport enum Order_OrderBy {\n Id = 'id',\n InvalidateTimestamp = 'invalidateTimestamp',\n IsSigned = 'isSigned',\n IsValid = 'isValid',\n Owner = 'owner',\n PresignTimestamp = 'presignTimestamp',\n Trades = 'trades',\n TradesTimestamp = 'tradesTimestamp'\n}\n\nexport type Pair = {\n __typename?: 'Pair';\n /** Token0-token1 sorted by token0 < token1 */\n id: Scalars['ID'];\n /** The token 0 address lower than token1 */\n token0: Token;\n /** The token 1 address greater than token0 */\n token1: Token;\n /** Total volume of token 0 traded */\n volumeToken0?: Maybe<Scalars['BigInt']>;\n /** Total volume of token 1 traded */\n volumeToken1?: Maybe<Scalars['BigInt']>;\n /** Total volume in Eth */\n volumeTradedEth?: Maybe<Scalars['BigDecimal']>;\n /** Total volume in Usd */\n volumeTradedUsd?: Maybe<Scalars['BigDecimal']>;\n};\n\nexport type PairDaily = {\n __typename?: 'PairDaily';\n /** token0-token1-timestamp sorted by token0 < token1 */\n id: Scalars['ID'];\n /** Start day timestamp */\n timestamp: Scalars['Int'];\n /** The token 0 address lower than token1 */\n token0: Token;\n /** The token 1 address greater than token0 */\n token1: Token;\n /** Total volume of token 0 traded */\n volumeToken0?: Maybe<Scalars['BigInt']>;\n /** Total volume of token 1 traded */\n volumeToken1?: Maybe<Scalars['BigInt']>;\n /** Total volume in Eth */\n volumeTradedEth?: Maybe<Scalars['BigDecimal']>;\n /** Total volume in Usd */\n volumeTradedUsd?: Maybe<Scalars['BigDecimal']>;\n};\n\nexport type PairDaily_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n timestamp?: InputMaybe<Scalars['Int']>;\n timestamp_gt?: InputMaybe<Scalars['Int']>;\n timestamp_gte?: InputMaybe<Scalars['Int']>;\n timestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n timestamp_lt?: InputMaybe<Scalars['Int']>;\n timestamp_lte?: InputMaybe<Scalars['Int']>;\n timestamp_not?: InputMaybe<Scalars['Int']>;\n timestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n token0?: InputMaybe<Scalars['String']>;\n token0_contains?: InputMaybe<Scalars['String']>;\n token0_contains_nocase?: InputMaybe<Scalars['String']>;\n token0_ends_with?: InputMaybe<Scalars['String']>;\n token0_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token0_gt?: InputMaybe<Scalars['String']>;\n token0_gte?: InputMaybe<Scalars['String']>;\n token0_in?: InputMaybe<Array<Scalars['String']>>;\n token0_lt?: InputMaybe<Scalars['String']>;\n token0_lte?: InputMaybe<Scalars['String']>;\n token0_not?: InputMaybe<Scalars['String']>;\n token0_not_contains?: InputMaybe<Scalars['String']>;\n token0_not_contains_nocase?: InputMaybe<Scalars['String']>;\n token0_not_ends_with?: InputMaybe<Scalars['String']>;\n token0_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token0_not_in?: InputMaybe<Array<Scalars['String']>>;\n token0_not_starts_with?: InputMaybe<Scalars['String']>;\n token0_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token0_starts_with?: InputMaybe<Scalars['String']>;\n token0_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token1?: InputMaybe<Scalars['String']>;\n token1_contains?: InputMaybe<Scalars['String']>;\n token1_contains_nocase?: InputMaybe<Scalars['String']>;\n token1_ends_with?: InputMaybe<Scalars['String']>;\n token1_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token1_gt?: InputMaybe<Scalars['String']>;\n token1_gte?: InputMaybe<Scalars['String']>;\n token1_in?: InputMaybe<Array<Scalars['String']>>;\n token1_lt?: InputMaybe<Scalars['String']>;\n token1_lte?: InputMaybe<Scalars['String']>;\n token1_not?: InputMaybe<Scalars['String']>;\n token1_not_contains?: InputMaybe<Scalars['String']>;\n token1_not_contains_nocase?: InputMaybe<Scalars['String']>;\n token1_not_ends_with?: InputMaybe<Scalars['String']>;\n token1_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token1_not_in?: InputMaybe<Array<Scalars['String']>>;\n token1_not_starts_with?: InputMaybe<Scalars['String']>;\n token1_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token1_starts_with?: InputMaybe<Scalars['String']>;\n token1_starts_with_nocase?: InputMaybe<Scalars['String']>;\n volumeToken0?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_gt?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_gte?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeToken0_lt?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_lte?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_not?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeToken1?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_gt?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_gte?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeToken1_lt?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_lte?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_not?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeTradedEth?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeTradedEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_not?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeTradedUsd?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeTradedUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n};\n\nexport enum PairDaily_OrderBy {\n Id = 'id',\n Timestamp = 'timestamp',\n Token0 = 'token0',\n Token1 = 'token1',\n VolumeToken0 = 'volumeToken0',\n VolumeToken1 = 'volumeToken1',\n VolumeTradedEth = 'volumeTradedEth',\n VolumeTradedUsd = 'volumeTradedUsd'\n}\n\nexport type PairHourly = {\n __typename?: 'PairHourly';\n /** token0-token1-timestamp sorted by token0 < token1 */\n id: Scalars['ID'];\n /** Start hour timestamp */\n timestamp: Scalars['Int'];\n /** The token 0 address lower than token1 */\n token0: Token;\n /** The token 1 address greater than token0 */\n token1: Token;\n /** Total volume of token 0 traded */\n volumeToken0?: Maybe<Scalars['BigInt']>;\n /** Total volume of token 1 traded */\n volumeToken1?: Maybe<Scalars['BigInt']>;\n /** Total volume in Eth */\n volumeTradedEth?: Maybe<Scalars['BigDecimal']>;\n /** Total volume in Usd */\n volumeTradedUsd?: Maybe<Scalars['BigDecimal']>;\n};\n\nexport type PairHourly_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n timestamp?: InputMaybe<Scalars['Int']>;\n timestamp_gt?: InputMaybe<Scalars['Int']>;\n timestamp_gte?: InputMaybe<Scalars['Int']>;\n timestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n timestamp_lt?: InputMaybe<Scalars['Int']>;\n timestamp_lte?: InputMaybe<Scalars['Int']>;\n timestamp_not?: InputMaybe<Scalars['Int']>;\n timestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n token0?: InputMaybe<Scalars['String']>;\n token0_contains?: InputMaybe<Scalars['String']>;\n token0_contains_nocase?: InputMaybe<Scalars['String']>;\n token0_ends_with?: InputMaybe<Scalars['String']>;\n token0_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token0_gt?: InputMaybe<Scalars['String']>;\n token0_gte?: InputMaybe<Scalars['String']>;\n token0_in?: InputMaybe<Array<Scalars['String']>>;\n token0_lt?: InputMaybe<Scalars['String']>;\n token0_lte?: InputMaybe<Scalars['String']>;\n token0_not?: InputMaybe<Scalars['String']>;\n token0_not_contains?: InputMaybe<Scalars['String']>;\n token0_not_contains_nocase?: InputMaybe<Scalars['String']>;\n token0_not_ends_with?: InputMaybe<Scalars['String']>;\n token0_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token0_not_in?: InputMaybe<Array<Scalars['String']>>;\n token0_not_starts_with?: InputMaybe<Scalars['String']>;\n token0_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token0_starts_with?: InputMaybe<Scalars['String']>;\n token0_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token1?: InputMaybe<Scalars['String']>;\n token1_contains?: InputMaybe<Scalars['String']>;\n token1_contains_nocase?: InputMaybe<Scalars['String']>;\n token1_ends_with?: InputMaybe<Scalars['String']>;\n token1_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token1_gt?: InputMaybe<Scalars['String']>;\n token1_gte?: InputMaybe<Scalars['String']>;\n token1_in?: InputMaybe<Array<Scalars['String']>>;\n token1_lt?: InputMaybe<Scalars['String']>;\n token1_lte?: InputMaybe<Scalars['String']>;\n token1_not?: InputMaybe<Scalars['String']>;\n token1_not_contains?: InputMaybe<Scalars['String']>;\n token1_not_contains_nocase?: InputMaybe<Scalars['String']>;\n token1_not_ends_with?: InputMaybe<Scalars['String']>;\n token1_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token1_not_in?: InputMaybe<Array<Scalars['String']>>;\n token1_not_starts_with?: InputMaybe<Scalars['String']>;\n token1_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token1_starts_with?: InputMaybe<Scalars['String']>;\n token1_starts_with_nocase?: InputMaybe<Scalars['String']>;\n volumeToken0?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_gt?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_gte?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeToken0_lt?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_lte?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_not?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeToken1?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_gt?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_gte?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeToken1_lt?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_lte?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_not?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeTradedEth?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeTradedEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_not?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeTradedUsd?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeTradedUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n};\n\nexport enum PairHourly_OrderBy {\n Id = 'id',\n Timestamp = 'timestamp',\n Token0 = 'token0',\n Token1 = 'token1',\n VolumeToken0 = 'volumeToken0',\n VolumeToken1 = 'volumeToken1',\n VolumeTradedEth = 'volumeTradedEth',\n VolumeTradedUsd = 'volumeTradedUsd'\n}\n\nexport type Pair_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n token0?: InputMaybe<Scalars['String']>;\n token0_contains?: InputMaybe<Scalars['String']>;\n token0_contains_nocase?: InputMaybe<Scalars['String']>;\n token0_ends_with?: InputMaybe<Scalars['String']>;\n token0_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token0_gt?: InputMaybe<Scalars['String']>;\n token0_gte?: InputMaybe<Scalars['String']>;\n token0_in?: InputMaybe<Array<Scalars['String']>>;\n token0_lt?: InputMaybe<Scalars['String']>;\n token0_lte?: InputMaybe<Scalars['String']>;\n token0_not?: InputMaybe<Scalars['String']>;\n token0_not_contains?: InputMaybe<Scalars['String']>;\n token0_not_contains_nocase?: InputMaybe<Scalars['String']>;\n token0_not_ends_with?: InputMaybe<Scalars['String']>;\n token0_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token0_not_in?: InputMaybe<Array<Scalars['String']>>;\n token0_not_starts_with?: InputMaybe<Scalars['String']>;\n token0_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token0_starts_with?: InputMaybe<Scalars['String']>;\n token0_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token1?: InputMaybe<Scalars['String']>;\n token1_contains?: InputMaybe<Scalars['String']>;\n token1_contains_nocase?: InputMaybe<Scalars['String']>;\n token1_ends_with?: InputMaybe<Scalars['String']>;\n token1_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token1_gt?: InputMaybe<Scalars['String']>;\n token1_gte?: InputMaybe<Scalars['String']>;\n token1_in?: InputMaybe<Array<Scalars['String']>>;\n token1_lt?: InputMaybe<Scalars['String']>;\n token1_lte?: InputMaybe<Scalars['String']>;\n token1_not?: InputMaybe<Scalars['String']>;\n token1_not_contains?: InputMaybe<Scalars['String']>;\n token1_not_contains_nocase?: InputMaybe<Scalars['String']>;\n token1_not_ends_with?: InputMaybe<Scalars['String']>;\n token1_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token1_not_in?: InputMaybe<Array<Scalars['String']>>;\n token1_not_starts_with?: InputMaybe<Scalars['String']>;\n token1_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token1_starts_with?: InputMaybe<Scalars['String']>;\n token1_starts_with_nocase?: InputMaybe<Scalars['String']>;\n volumeToken0?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_gt?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_gte?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeToken0_lt?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_lte?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_not?: InputMaybe<Scalars['BigInt']>;\n volumeToken0_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeToken1?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_gt?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_gte?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeToken1_lt?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_lte?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_not?: InputMaybe<Scalars['BigInt']>;\n volumeToken1_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeTradedEth?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeTradedEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_not?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeTradedUsd?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeTradedUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n volumeTradedUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n};\n\nexport enum Pair_OrderBy {\n Id = 'id',\n Token0 = 'token0',\n Token1 = 'token1',\n VolumeToken0 = 'volumeToken0',\n VolumeToken1 = 'volumeToken1',\n VolumeTradedEth = 'volumeTradedEth',\n VolumeTradedUsd = 'volumeTradedUsd'\n}\n\nexport type Query = {\n __typename?: 'Query';\n /** Access to subgraph metadata */\n _meta?: Maybe<_Meta_>;\n bundle?: Maybe<Bundle>;\n bundles: Array<Bundle>;\n dailyTotal?: Maybe<DailyTotal>;\n dailyTotals: Array<DailyTotal>;\n hourlyTotal?: Maybe<HourlyTotal>;\n hourlyTotals: Array<HourlyTotal>;\n order?: Maybe<Order>;\n orders: Array<Order>;\n pair?: Maybe<Pair>;\n pairDailies: Array<PairDaily>;\n pairDaily?: Maybe<PairDaily>;\n pairHourlies: Array<PairHourly>;\n pairHourly?: Maybe<PairHourly>;\n pairs: Array<Pair>;\n settlement?: Maybe<Settlement>;\n settlements: Array<Settlement>;\n token?: Maybe<Token>;\n tokenDailyTotal?: Maybe<TokenDailyTotal>;\n tokenDailyTotals: Array<TokenDailyTotal>;\n tokenHourlyTotal?: Maybe<TokenHourlyTotal>;\n tokenHourlyTotals: Array<TokenHourlyTotal>;\n tokenTradingEvent?: Maybe<TokenTradingEvent>;\n tokenTradingEvents: Array<TokenTradingEvent>;\n tokens: Array<Token>;\n total?: Maybe<Total>;\n totals: Array<Total>;\n trade?: Maybe<Trade>;\n trades: Array<Trade>;\n uniswapPool?: Maybe<UniswapPool>;\n uniswapPools: Array<UniswapPool>;\n uniswapToken?: Maybe<UniswapToken>;\n uniswapTokens: Array<UniswapToken>;\n user?: Maybe<User>;\n users: Array<User>;\n};\n\n\nexport type Query_MetaArgs = {\n block?: InputMaybe<Block_Height>;\n};\n\n\nexport type QueryBundleArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryBundlesArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Bundle_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Bundle_Filter>;\n};\n\n\nexport type QueryDailyTotalArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryDailyTotalsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<DailyTotal_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<DailyTotal_Filter>;\n};\n\n\nexport type QueryHourlyTotalArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryHourlyTotalsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<HourlyTotal_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<HourlyTotal_Filter>;\n};\n\n\nexport type QueryOrderArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryOrdersArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Order_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Order_Filter>;\n};\n\n\nexport type QueryPairArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryPairDailiesArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<PairDaily_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<PairDaily_Filter>;\n};\n\n\nexport type QueryPairDailyArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryPairHourliesArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<PairHourly_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<PairHourly_Filter>;\n};\n\n\nexport type QueryPairHourlyArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryPairsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Pair_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Pair_Filter>;\n};\n\n\nexport type QuerySettlementArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QuerySettlementsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Settlement_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Settlement_Filter>;\n};\n\n\nexport type QueryTokenArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryTokenDailyTotalArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryTokenDailyTotalsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<TokenDailyTotal_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<TokenDailyTotal_Filter>;\n};\n\n\nexport type QueryTokenHourlyTotalArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryTokenHourlyTotalsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<TokenHourlyTotal_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<TokenHourlyTotal_Filter>;\n};\n\n\nexport type QueryTokenTradingEventArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryTokenTradingEventsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<TokenTradingEvent_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<TokenTradingEvent_Filter>;\n};\n\n\nexport type QueryTokensArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Token_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Token_Filter>;\n};\n\n\nexport type QueryTotalArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryTotalsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Total_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Total_Filter>;\n};\n\n\nexport type QueryTradeArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryTradesArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Trade_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Trade_Filter>;\n};\n\n\nexport type QueryUniswapPoolArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryUniswapPoolsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<UniswapPool_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<UniswapPool_Filter>;\n};\n\n\nexport type QueryUniswapTokenArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryUniswapTokensArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<UniswapToken_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<UniswapToken_Filter>;\n};\n\n\nexport type QueryUserArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type QueryUsersArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<User_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<User_Filter>;\n};\n\nexport type Settlement = {\n __typename?: 'Settlement';\n /** First trade timestamp */\n firstTradeTimestamp: Scalars['Int'];\n /** TxHash */\n id: Scalars['ID'];\n /** User who solved the settlement */\n solver?: Maybe<User>;\n /** Collection of trades */\n trades?: Maybe<Array<Trade>>;\n /** Transaction hash */\n txHash: Scalars['Bytes'];\n};\n\n\nexport type SettlementTradesArgs = {\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Trade_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n where?: InputMaybe<Trade_Filter>;\n};\n\nexport type Settlement_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n firstTradeTimestamp?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_gt?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_gte?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n firstTradeTimestamp_lt?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_lte?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_not?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n solver?: InputMaybe<Scalars['String']>;\n solver_contains?: InputMaybe<Scalars['String']>;\n solver_contains_nocase?: InputMaybe<Scalars['String']>;\n solver_ends_with?: InputMaybe<Scalars['String']>;\n solver_ends_with_nocase?: InputMaybe<Scalars['String']>;\n solver_gt?: InputMaybe<Scalars['String']>;\n solver_gte?: InputMaybe<Scalars['String']>;\n solver_in?: InputMaybe<Array<Scalars['String']>>;\n solver_lt?: InputMaybe<Scalars['String']>;\n solver_lte?: InputMaybe<Scalars['String']>;\n solver_not?: InputMaybe<Scalars['String']>;\n solver_not_contains?: InputMaybe<Scalars['String']>;\n solver_not_contains_nocase?: InputMaybe<Scalars['String']>;\n solver_not_ends_with?: InputMaybe<Scalars['String']>;\n solver_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n solver_not_in?: InputMaybe<Array<Scalars['String']>>;\n solver_not_starts_with?: InputMaybe<Scalars['String']>;\n solver_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n solver_starts_with?: InputMaybe<Scalars['String']>;\n solver_starts_with_nocase?: InputMaybe<Scalars['String']>;\n txHash?: InputMaybe<Scalars['Bytes']>;\n txHash_contains?: InputMaybe<Scalars['Bytes']>;\n txHash_in?: InputMaybe<Array<Scalars['Bytes']>>;\n txHash_not?: InputMaybe<Scalars['Bytes']>;\n txHash_not_contains?: InputMaybe<Scalars['Bytes']>;\n txHash_not_in?: InputMaybe<Array<Scalars['Bytes']>>;\n};\n\nexport enum Settlement_OrderBy {\n FirstTradeTimestamp = 'firstTradeTimestamp',\n Id = 'id',\n Solver = 'solver',\n Trades = 'trades',\n TxHash = 'txHash'\n}\n\nexport type Subscription = {\n __typename?: 'Subscription';\n /** Access to subgraph metadata */\n _meta?: Maybe<_Meta_>;\n bundle?: Maybe<Bundle>;\n bundles: Array<Bundle>;\n dailyTotal?: Maybe<DailyTotal>;\n dailyTotals: Array<DailyTotal>;\n hourlyTotal?: Maybe<HourlyTotal>;\n hourlyTotals: Array<HourlyTotal>;\n order?: Maybe<Order>;\n orders: Array<Order>;\n pair?: Maybe<Pair>;\n pairDailies: Array<PairDaily>;\n pairDaily?: Maybe<PairDaily>;\n pairHourlies: Array<PairHourly>;\n pairHourly?: Maybe<PairHourly>;\n pairs: Array<Pair>;\n settlement?: Maybe<Settlement>;\n settlements: Array<Settlement>;\n token?: Maybe<Token>;\n tokenDailyTotal?: Maybe<TokenDailyTotal>;\n tokenDailyTotals: Array<TokenDailyTotal>;\n tokenHourlyTotal?: Maybe<TokenHourlyTotal>;\n tokenHourlyTotals: Array<TokenHourlyTotal>;\n tokenTradingEvent?: Maybe<TokenTradingEvent>;\n tokenTradingEvents: Array<TokenTradingEvent>;\n tokens: Array<Token>;\n total?: Maybe<Total>;\n totals: Array<Total>;\n trade?: Maybe<Trade>;\n trades: Array<Trade>;\n uniswapPool?: Maybe<UniswapPool>;\n uniswapPools: Array<UniswapPool>;\n uniswapToken?: Maybe<UniswapToken>;\n uniswapTokens: Array<UniswapToken>;\n user?: Maybe<User>;\n users: Array<User>;\n};\n\n\nexport type Subscription_MetaArgs = {\n block?: InputMaybe<Block_Height>;\n};\n\n\nexport type SubscriptionBundleArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionBundlesArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Bundle_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Bundle_Filter>;\n};\n\n\nexport type SubscriptionDailyTotalArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionDailyTotalsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<DailyTotal_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<DailyTotal_Filter>;\n};\n\n\nexport type SubscriptionHourlyTotalArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionHourlyTotalsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<HourlyTotal_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<HourlyTotal_Filter>;\n};\n\n\nexport type SubscriptionOrderArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionOrdersArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Order_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Order_Filter>;\n};\n\n\nexport type SubscriptionPairArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionPairDailiesArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<PairDaily_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<PairDaily_Filter>;\n};\n\n\nexport type SubscriptionPairDailyArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionPairHourliesArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<PairHourly_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<PairHourly_Filter>;\n};\n\n\nexport type SubscriptionPairHourlyArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionPairsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Pair_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Pair_Filter>;\n};\n\n\nexport type SubscriptionSettlementArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionSettlementsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Settlement_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Settlement_Filter>;\n};\n\n\nexport type SubscriptionTokenArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionTokenDailyTotalArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionTokenDailyTotalsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<TokenDailyTotal_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<TokenDailyTotal_Filter>;\n};\n\n\nexport type SubscriptionTokenHourlyTotalArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionTokenHourlyTotalsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<TokenHourlyTotal_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<TokenHourlyTotal_Filter>;\n};\n\n\nexport type SubscriptionTokenTradingEventArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionTokenTradingEventsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<TokenTradingEvent_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<TokenTradingEvent_Filter>;\n};\n\n\nexport type SubscriptionTokensArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Token_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Token_Filter>;\n};\n\n\nexport type SubscriptionTotalArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionTotalsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Total_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Total_Filter>;\n};\n\n\nexport type SubscriptionTradeArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionTradesArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Trade_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<Trade_Filter>;\n};\n\n\nexport type SubscriptionUniswapPoolArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionUniswapPoolsArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<UniswapPool_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<UniswapPool_Filter>;\n};\n\n\nexport type SubscriptionUniswapTokenArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionUniswapTokensArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<UniswapToken_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<UniswapToken_Filter>;\n};\n\n\nexport type SubscriptionUserArgs = {\n block?: InputMaybe<Block_Height>;\n id: Scalars['ID'];\n subgraphError?: _SubgraphErrorPolicy_;\n};\n\n\nexport type SubscriptionUsersArgs = {\n block?: InputMaybe<Block_Height>;\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<User_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n subgraphError?: _SubgraphErrorPolicy_;\n where?: InputMaybe<User_Filter>;\n};\n\nexport type Token = {\n __typename?: 'Token';\n /** Token address */\n address: Scalars['Bytes'];\n /** Token decimals fetched by contract call */\n decimals: Scalars['Int'];\n /** First token trade block timestamp */\n firstTradeTimestamp?: Maybe<Scalars['Int']>;\n /** History of trading for this token */\n history: Array<TokenTradingEvent>;\n /** Token address to hexString */\n id: Scalars['ID'];\n /** Token name fetched by ERC20 contract call */\n name: Scalars['String'];\n /** Total trades */\n numberOfTrades: Scalars['Int'];\n /** Derived price in ETH */\n priceEth?: Maybe<Scalars['BigDecimal']>;\n /** Derived price in USD */\n priceUsd?: Maybe<Scalars['BigDecimal']>;\n /** Token symbol fetched by contract call */\n symbol: Scalars['String'];\n /** Total volume managed in CowSwap */\n totalVolume?: Maybe<Scalars['BigInt']>;\n /** Total volume in Eth */\n totalVolumeEth: Scalars['BigDecimal'];\n /** Total volume in Usd */\n totalVolumeUsd: Scalars['BigDecimal'];\n};\n\n\nexport type TokenHistoryArgs = {\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<TokenTradingEvent_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n where?: InputMaybe<TokenTradingEvent_Filter>;\n};\n\nexport type TokenDailyTotal = {\n __typename?: 'TokenDailyTotal';\n /** Average trade price */\n averagePrice: Scalars['BigDecimal'];\n /** Last trade price */\n closePrice: Scalars['BigDecimal'];\n /** Higher trade price */\n higherPrice: Scalars['BigDecimal'];\n /** TokenAddress + timestamp day */\n id: Scalars['ID'];\n /** Lower trade price */\n lowerPrice: Scalars['BigDecimal'];\n /** First trade price */\n openPrice: Scalars['BigDecimal'];\n /** Start day timestamp */\n timestamp: Scalars['Int'];\n /** Token address */\n token: Token;\n /** Number of trades that day */\n totalTrades: Scalars['BigInt'];\n /** Total volume traded that day in token */\n totalVolume: Scalars['BigInt'];\n /** Total amount traded that day in ETH */\n totalVolumeEth: Scalars['BigDecimal'];\n /** Total amount traded that day in USD */\n totalVolumeUsd: Scalars['BigDecimal'];\n};\n\nexport type TokenDailyTotal_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n averagePrice?: InputMaybe<Scalars['BigDecimal']>;\n averagePrice_gt?: InputMaybe<Scalars['BigDecimal']>;\n averagePrice_gte?: InputMaybe<Scalars['BigDecimal']>;\n averagePrice_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n averagePrice_lt?: InputMaybe<Scalars['BigDecimal']>;\n averagePrice_lte?: InputMaybe<Scalars['BigDecimal']>;\n averagePrice_not?: InputMaybe<Scalars['BigDecimal']>;\n averagePrice_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n closePrice?: InputMaybe<Scalars['BigDecimal']>;\n closePrice_gt?: InputMaybe<Scalars['BigDecimal']>;\n closePrice_gte?: InputMaybe<Scalars['BigDecimal']>;\n closePrice_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n closePrice_lt?: InputMaybe<Scalars['BigDecimal']>;\n closePrice_lte?: InputMaybe<Scalars['BigDecimal']>;\n closePrice_not?: InputMaybe<Scalars['BigDecimal']>;\n closePrice_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n higherPrice?: InputMaybe<Scalars['BigDecimal']>;\n higherPrice_gt?: InputMaybe<Scalars['BigDecimal']>;\n higherPrice_gte?: InputMaybe<Scalars['BigDecimal']>;\n higherPrice_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n higherPrice_lt?: InputMaybe<Scalars['BigDecimal']>;\n higherPrice_lte?: InputMaybe<Scalars['BigDecimal']>;\n higherPrice_not?: InputMaybe<Scalars['BigDecimal']>;\n higherPrice_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n lowerPrice?: InputMaybe<Scalars['BigDecimal']>;\n lowerPrice_gt?: InputMaybe<Scalars['BigDecimal']>;\n lowerPrice_gte?: InputMaybe<Scalars['BigDecimal']>;\n lowerPrice_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n lowerPrice_lt?: InputMaybe<Scalars['BigDecimal']>;\n lowerPrice_lte?: InputMaybe<Scalars['BigDecimal']>;\n lowerPrice_not?: InputMaybe<Scalars['BigDecimal']>;\n lowerPrice_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n openPrice?: InputMaybe<Scalars['BigDecimal']>;\n openPrice_gt?: InputMaybe<Scalars['BigDecimal']>;\n openPrice_gte?: InputMaybe<Scalars['BigDecimal']>;\n openPrice_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n openPrice_lt?: InputMaybe<Scalars['BigDecimal']>;\n openPrice_lte?: InputMaybe<Scalars['BigDecimal']>;\n openPrice_not?: InputMaybe<Scalars['BigDecimal']>;\n openPrice_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n timestamp?: InputMaybe<Scalars['Int']>;\n timestamp_gt?: InputMaybe<Scalars['Int']>;\n timestamp_gte?: InputMaybe<Scalars['Int']>;\n timestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n timestamp_lt?: InputMaybe<Scalars['Int']>;\n timestamp_lte?: InputMaybe<Scalars['Int']>;\n timestamp_not?: InputMaybe<Scalars['Int']>;\n timestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n token?: InputMaybe<Scalars['String']>;\n token_contains?: InputMaybe<Scalars['String']>;\n token_contains_nocase?: InputMaybe<Scalars['String']>;\n token_ends_with?: InputMaybe<Scalars['String']>;\n token_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token_gt?: InputMaybe<Scalars['String']>;\n token_gte?: InputMaybe<Scalars['String']>;\n token_in?: InputMaybe<Array<Scalars['String']>>;\n token_lt?: InputMaybe<Scalars['String']>;\n token_lte?: InputMaybe<Scalars['String']>;\n token_not?: InputMaybe<Scalars['String']>;\n token_not_contains?: InputMaybe<Scalars['String']>;\n token_not_contains_nocase?: InputMaybe<Scalars['String']>;\n token_not_ends_with?: InputMaybe<Scalars['String']>;\n token_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token_not_in?: InputMaybe<Array<Scalars['String']>>;\n token_not_starts_with?: InputMaybe<Scalars['String']>;\n token_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token_starts_with?: InputMaybe<Scalars['String']>;\n token_starts_with_nocase?: InputMaybe<Scalars['String']>;\n totalTrades?: InputMaybe<Scalars['BigInt']>;\n totalTrades_gt?: InputMaybe<Scalars['BigInt']>;\n totalTrades_gte?: InputMaybe<Scalars['BigInt']>;\n totalTrades_in?: InputMaybe<Array<Scalars['BigInt']>>;\n totalTrades_lt?: InputMaybe<Scalars['BigInt']>;\n totalTrades_lte?: InputMaybe<Scalars['BigInt']>;\n totalTrades_not?: InputMaybe<Scalars['BigInt']>;\n totalTrades_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n totalVolume?: InputMaybe<Scalars['BigInt']>;\n totalVolumeEth?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalVolumeEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_not?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalVolumeUsd?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalVolumeUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalVolume_gt?: InputMaybe<Scalars['BigInt']>;\n totalVolume_gte?: InputMaybe<Scalars['BigInt']>;\n totalVolume_in?: InputMaybe<Array<Scalars['BigInt']>>;\n totalVolume_lt?: InputMaybe<Scalars['BigInt']>;\n totalVolume_lte?: InputMaybe<Scalars['BigInt']>;\n totalVolume_not?: InputMaybe<Scalars['BigInt']>;\n totalVolume_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n};\n\nexport enum TokenDailyTotal_OrderBy {\n AveragePrice = 'averagePrice',\n ClosePrice = 'closePrice',\n HigherPrice = 'higherPrice',\n Id = 'id',\n LowerPrice = 'lowerPrice',\n OpenPrice = 'openPrice',\n Timestamp = 'timestamp',\n Token = 'token',\n TotalTrades = 'totalTrades',\n TotalVolume = 'totalVolume',\n TotalVolumeEth = 'totalVolumeEth',\n TotalVolumeUsd = 'totalVolumeUsd'\n}\n\nexport type TokenHourlyTotal = {\n __typename?: 'TokenHourlyTotal';\n /** Average trade price */\n averagePrice: Scalars['BigDecimal'];\n /** Last trade price */\n closePrice: Scalars['BigDecimal'];\n /** Higher trade price */\n higherPrice: Scalars['BigDecimal'];\n /** TokenAddress + timestamp hour */\n id: Scalars['ID'];\n /** Lower trade price */\n lowerPrice: Scalars['BigDecimal'];\n /** First trade price */\n openPrice: Scalars['BigDecimal'];\n /** Start hour timestamp */\n timestamp: Scalars['Int'];\n /** Token address */\n token: Token;\n /** Number of trades that hour */\n totalTrades: Scalars['BigInt'];\n /** Total volume traded that day in token */\n totalVolume: Scalars['BigInt'];\n /** Total amount traded that hour in ETH */\n totalVolumeEth: Scalars['BigDecimal'];\n /** Total amount traded that hour in USD */\n totalVolumeUsd: Scalars['BigDecimal'];\n};\n\nexport type TokenHourlyTotal_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n averagePrice?: InputMaybe<Scalars['BigDecimal']>;\n averagePrice_gt?: InputMaybe<Scalars['BigDecimal']>;\n averagePrice_gte?: InputMaybe<Scalars['BigDecimal']>;\n averagePrice_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n averagePrice_lt?: InputMaybe<Scalars['BigDecimal']>;\n averagePrice_lte?: InputMaybe<Scalars['BigDecimal']>;\n averagePrice_not?: InputMaybe<Scalars['BigDecimal']>;\n averagePrice_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n closePrice?: InputMaybe<Scalars['BigDecimal']>;\n closePrice_gt?: InputMaybe<Scalars['BigDecimal']>;\n closePrice_gte?: InputMaybe<Scalars['BigDecimal']>;\n closePrice_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n closePrice_lt?: InputMaybe<Scalars['BigDecimal']>;\n closePrice_lte?: InputMaybe<Scalars['BigDecimal']>;\n closePrice_not?: InputMaybe<Scalars['BigDecimal']>;\n closePrice_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n higherPrice?: InputMaybe<Scalars['BigDecimal']>;\n higherPrice_gt?: InputMaybe<Scalars['BigDecimal']>;\n higherPrice_gte?: InputMaybe<Scalars['BigDecimal']>;\n higherPrice_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n higherPrice_lt?: InputMaybe<Scalars['BigDecimal']>;\n higherPrice_lte?: InputMaybe<Scalars['BigDecimal']>;\n higherPrice_not?: InputMaybe<Scalars['BigDecimal']>;\n higherPrice_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n lowerPrice?: InputMaybe<Scalars['BigDecimal']>;\n lowerPrice_gt?: InputMaybe<Scalars['BigDecimal']>;\n lowerPrice_gte?: InputMaybe<Scalars['BigDecimal']>;\n lowerPrice_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n lowerPrice_lt?: InputMaybe<Scalars['BigDecimal']>;\n lowerPrice_lte?: InputMaybe<Scalars['BigDecimal']>;\n lowerPrice_not?: InputMaybe<Scalars['BigDecimal']>;\n lowerPrice_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n openPrice?: InputMaybe<Scalars['BigDecimal']>;\n openPrice_gt?: InputMaybe<Scalars['BigDecimal']>;\n openPrice_gte?: InputMaybe<Scalars['BigDecimal']>;\n openPrice_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n openPrice_lt?: InputMaybe<Scalars['BigDecimal']>;\n openPrice_lte?: InputMaybe<Scalars['BigDecimal']>;\n openPrice_not?: InputMaybe<Scalars['BigDecimal']>;\n openPrice_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n timestamp?: InputMaybe<Scalars['Int']>;\n timestamp_gt?: InputMaybe<Scalars['Int']>;\n timestamp_gte?: InputMaybe<Scalars['Int']>;\n timestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n timestamp_lt?: InputMaybe<Scalars['Int']>;\n timestamp_lte?: InputMaybe<Scalars['Int']>;\n timestamp_not?: InputMaybe<Scalars['Int']>;\n timestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n token?: InputMaybe<Scalars['String']>;\n token_contains?: InputMaybe<Scalars['String']>;\n token_contains_nocase?: InputMaybe<Scalars['String']>;\n token_ends_with?: InputMaybe<Scalars['String']>;\n token_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token_gt?: InputMaybe<Scalars['String']>;\n token_gte?: InputMaybe<Scalars['String']>;\n token_in?: InputMaybe<Array<Scalars['String']>>;\n token_lt?: InputMaybe<Scalars['String']>;\n token_lte?: InputMaybe<Scalars['String']>;\n token_not?: InputMaybe<Scalars['String']>;\n token_not_contains?: InputMaybe<Scalars['String']>;\n token_not_contains_nocase?: InputMaybe<Scalars['String']>;\n token_not_ends_with?: InputMaybe<Scalars['String']>;\n token_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token_not_in?: InputMaybe<Array<Scalars['String']>>;\n token_not_starts_with?: InputMaybe<Scalars['String']>;\n token_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token_starts_with?: InputMaybe<Scalars['String']>;\n token_starts_with_nocase?: InputMaybe<Scalars['String']>;\n totalTrades?: InputMaybe<Scalars['BigInt']>;\n totalTrades_gt?: InputMaybe<Scalars['BigInt']>;\n totalTrades_gte?: InputMaybe<Scalars['BigInt']>;\n totalTrades_in?: InputMaybe<Array<Scalars['BigInt']>>;\n totalTrades_lt?: InputMaybe<Scalars['BigInt']>;\n totalTrades_lte?: InputMaybe<Scalars['BigInt']>;\n totalTrades_not?: InputMaybe<Scalars['BigInt']>;\n totalTrades_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n totalVolume?: InputMaybe<Scalars['BigInt']>;\n totalVolumeEth?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalVolumeEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_not?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalVolumeUsd?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalVolumeUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalVolume_gt?: InputMaybe<Scalars['BigInt']>;\n totalVolume_gte?: InputMaybe<Scalars['BigInt']>;\n totalVolume_in?: InputMaybe<Array<Scalars['BigInt']>>;\n totalVolume_lt?: InputMaybe<Scalars['BigInt']>;\n totalVolume_lte?: InputMaybe<Scalars['BigInt']>;\n totalVolume_not?: InputMaybe<Scalars['BigInt']>;\n totalVolume_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n};\n\nexport enum TokenHourlyTotal_OrderBy {\n AveragePrice = 'averagePrice',\n ClosePrice = 'closePrice',\n HigherPrice = 'higherPrice',\n Id = 'id',\n LowerPrice = 'lowerPrice',\n OpenPrice = 'openPrice',\n Timestamp = 'timestamp',\n Token = 'token',\n TotalTrades = 'totalTrades',\n TotalVolume = 'totalVolume',\n TotalVolumeEth = 'totalVolumeEth',\n TotalVolumeUsd = 'totalVolumeUsd'\n}\n\nexport type TokenTradingEvent = {\n __typename?: 'TokenTradingEvent';\n /** Amount in Eth */\n amountEth: Scalars['BigDecimal'];\n /** Amount in Usd */\n amountUsd: Scalars['BigDecimal'];\n /** Id built using token-timestamp */\n id: Scalars['ID'];\n /** Timestamp */\n timestamp: Scalars['Int'];\n /** Token */\n token: Token;\n /** Trade */\n trade: Trade;\n};\n\nexport type TokenTradingEvent_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n amountEth?: InputMaybe<Scalars['BigDecimal']>;\n amountEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n amountEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n amountEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n amountEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n amountEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n amountEth_not?: InputMaybe<Scalars['BigDecimal']>;\n amountEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n amountUsd?: InputMaybe<Scalars['BigDecimal']>;\n amountUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n amountUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n amountUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n amountUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n amountUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n amountUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n amountUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n timestamp?: InputMaybe<Scalars['Int']>;\n timestamp_gt?: InputMaybe<Scalars['Int']>;\n timestamp_gte?: InputMaybe<Scalars['Int']>;\n timestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n timestamp_lt?: InputMaybe<Scalars['Int']>;\n timestamp_lte?: InputMaybe<Scalars['Int']>;\n timestamp_not?: InputMaybe<Scalars['Int']>;\n timestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n token?: InputMaybe<Scalars['String']>;\n token_contains?: InputMaybe<Scalars['String']>;\n token_contains_nocase?: InputMaybe<Scalars['String']>;\n token_ends_with?: InputMaybe<Scalars['String']>;\n token_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token_gt?: InputMaybe<Scalars['String']>;\n token_gte?: InputMaybe<Scalars['String']>;\n token_in?: InputMaybe<Array<Scalars['String']>>;\n token_lt?: InputMaybe<Scalars['String']>;\n token_lte?: InputMaybe<Scalars['String']>;\n token_not?: InputMaybe<Scalars['String']>;\n token_not_contains?: InputMaybe<Scalars['String']>;\n token_not_contains_nocase?: InputMaybe<Scalars['String']>;\n token_not_ends_with?: InputMaybe<Scalars['String']>;\n token_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token_not_in?: InputMaybe<Array<Scalars['String']>>;\n token_not_starts_with?: InputMaybe<Scalars['String']>;\n token_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token_starts_with?: InputMaybe<Scalars['String']>;\n token_starts_with_nocase?: InputMaybe<Scalars['String']>;\n trade?: InputMaybe<Scalars['String']>;\n trade_contains?: InputMaybe<Scalars['String']>;\n trade_contains_nocase?: InputMaybe<Scalars['String']>;\n trade_ends_with?: InputMaybe<Scalars['String']>;\n trade_ends_with_nocase?: InputMaybe<Scalars['String']>;\n trade_gt?: InputMaybe<Scalars['String']>;\n trade_gte?: InputMaybe<Scalars['String']>;\n trade_in?: InputMaybe<Array<Scalars['String']>>;\n trade_lt?: InputMaybe<Scalars['String']>;\n trade_lte?: InputMaybe<Scalars['String']>;\n trade_not?: InputMaybe<Scalars['String']>;\n trade_not_contains?: InputMaybe<Scalars['String']>;\n trade_not_contains_nocase?: InputMaybe<Scalars['String']>;\n trade_not_ends_with?: InputMaybe<Scalars['String']>;\n trade_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n trade_not_in?: InputMaybe<Array<Scalars['String']>>;\n trade_not_starts_with?: InputMaybe<Scalars['String']>;\n trade_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n trade_starts_with?: InputMaybe<Scalars['String']>;\n trade_starts_with_nocase?: InputMaybe<Scalars['String']>;\n};\n\nexport enum TokenTradingEvent_OrderBy {\n AmountEth = 'amountEth',\n AmountUsd = 'amountUsd',\n Id = 'id',\n Timestamp = 'timestamp',\n Token = 'token',\n Trade = 'trade'\n}\n\nexport type Token_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n address?: InputMaybe<Scalars['Bytes']>;\n address_contains?: InputMaybe<Scalars['Bytes']>;\n address_in?: InputMaybe<Array<Scalars['Bytes']>>;\n address_not?: InputMaybe<Scalars['Bytes']>;\n address_not_contains?: InputMaybe<Scalars['Bytes']>;\n address_not_in?: InputMaybe<Array<Scalars['Bytes']>>;\n decimals?: InputMaybe<Scalars['Int']>;\n decimals_gt?: InputMaybe<Scalars['Int']>;\n decimals_gte?: InputMaybe<Scalars['Int']>;\n decimals_in?: InputMaybe<Array<Scalars['Int']>>;\n decimals_lt?: InputMaybe<Scalars['Int']>;\n decimals_lte?: InputMaybe<Scalars['Int']>;\n decimals_not?: InputMaybe<Scalars['Int']>;\n decimals_not_in?: InputMaybe<Array<Scalars['Int']>>;\n firstTradeTimestamp?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_gt?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_gte?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n firstTradeTimestamp_lt?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_lte?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_not?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n name?: InputMaybe<Scalars['String']>;\n name_contains?: InputMaybe<Scalars['String']>;\n name_contains_nocase?: InputMaybe<Scalars['String']>;\n name_ends_with?: InputMaybe<Scalars['String']>;\n name_ends_with_nocase?: InputMaybe<Scalars['String']>;\n name_gt?: InputMaybe<Scalars['String']>;\n name_gte?: InputMaybe<Scalars['String']>;\n name_in?: InputMaybe<Array<Scalars['String']>>;\n name_lt?: InputMaybe<Scalars['String']>;\n name_lte?: InputMaybe<Scalars['String']>;\n name_not?: InputMaybe<Scalars['String']>;\n name_not_contains?: InputMaybe<Scalars['String']>;\n name_not_contains_nocase?: InputMaybe<Scalars['String']>;\n name_not_ends_with?: InputMaybe<Scalars['String']>;\n name_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n name_not_in?: InputMaybe<Array<Scalars['String']>>;\n name_not_starts_with?: InputMaybe<Scalars['String']>;\n name_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n name_starts_with?: InputMaybe<Scalars['String']>;\n name_starts_with_nocase?: InputMaybe<Scalars['String']>;\n numberOfTrades?: InputMaybe<Scalars['Int']>;\n numberOfTrades_gt?: InputMaybe<Scalars['Int']>;\n numberOfTrades_gte?: InputMaybe<Scalars['Int']>;\n numberOfTrades_in?: InputMaybe<Array<Scalars['Int']>>;\n numberOfTrades_lt?: InputMaybe<Scalars['Int']>;\n numberOfTrades_lte?: InputMaybe<Scalars['Int']>;\n numberOfTrades_not?: InputMaybe<Scalars['Int']>;\n numberOfTrades_not_in?: InputMaybe<Array<Scalars['Int']>>;\n priceEth?: InputMaybe<Scalars['BigDecimal']>;\n priceEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n priceEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n priceEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n priceEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n priceEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n priceEth_not?: InputMaybe<Scalars['BigDecimal']>;\n priceEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n priceUsd?: InputMaybe<Scalars['BigDecimal']>;\n priceUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n priceUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n priceUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n priceUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n priceUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n priceUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n priceUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n symbol?: InputMaybe<Scalars['String']>;\n symbol_contains?: InputMaybe<Scalars['String']>;\n symbol_contains_nocase?: InputMaybe<Scalars['String']>;\n symbol_ends_with?: InputMaybe<Scalars['String']>;\n symbol_ends_with_nocase?: InputMaybe<Scalars['String']>;\n symbol_gt?: InputMaybe<Scalars['String']>;\n symbol_gte?: InputMaybe<Scalars['String']>;\n symbol_in?: InputMaybe<Array<Scalars['String']>>;\n symbol_lt?: InputMaybe<Scalars['String']>;\n symbol_lte?: InputMaybe<Scalars['String']>;\n symbol_not?: InputMaybe<Scalars['String']>;\n symbol_not_contains?: InputMaybe<Scalars['String']>;\n symbol_not_contains_nocase?: InputMaybe<Scalars['String']>;\n symbol_not_ends_with?: InputMaybe<Scalars['String']>;\n symbol_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n symbol_not_in?: InputMaybe<Array<Scalars['String']>>;\n symbol_not_starts_with?: InputMaybe<Scalars['String']>;\n symbol_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n symbol_starts_with?: InputMaybe<Scalars['String']>;\n symbol_starts_with_nocase?: InputMaybe<Scalars['String']>;\n totalVolume?: InputMaybe<Scalars['BigInt']>;\n totalVolumeEth?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalVolumeEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_not?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalVolumeUsd?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalVolumeUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n totalVolumeUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalVolume_gt?: InputMaybe<Scalars['BigInt']>;\n totalVolume_gte?: InputMaybe<Scalars['BigInt']>;\n totalVolume_in?: InputMaybe<Array<Scalars['BigInt']>>;\n totalVolume_lt?: InputMaybe<Scalars['BigInt']>;\n totalVolume_lte?: InputMaybe<Scalars['BigInt']>;\n totalVolume_not?: InputMaybe<Scalars['BigInt']>;\n totalVolume_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n};\n\nexport enum Token_OrderBy {\n Address = 'address',\n Decimals = 'decimals',\n FirstTradeTimestamp = 'firstTradeTimestamp',\n History = 'history',\n Id = 'id',\n Name = 'name',\n NumberOfTrades = 'numberOfTrades',\n PriceEth = 'priceEth',\n PriceUsd = 'priceUsd',\n Symbol = 'symbol',\n TotalVolume = 'totalVolume',\n TotalVolumeEth = 'totalVolumeEth',\n TotalVolumeUsd = 'totalVolumeUsd'\n}\n\nexport type Total = {\n __typename?: 'Total';\n /** Total fees in Eth */\n feesEth?: Maybe<Scalars['BigDecimal']>;\n /** Total fees in USD */\n feesUsd?: Maybe<Scalars['BigDecimal']>;\n /** This is a singleton entity to contain accumulators for all values. Id will be always 1 */\n id: Scalars['ID'];\n /** Number of trades */\n numberOfTrades: Scalars['BigInt'];\n /** Total number of orders placed */\n orders: Scalars['BigInt'];\n /** Total number of batches settled */\n settlements: Scalars['BigInt'];\n /** Total number of tokens traded */\n tokens: Scalars['BigInt'];\n /** Total number of traders */\n traders: Scalars['BigInt'];\n /** Total traded volume in ETH */\n volumeEth?: Maybe<Scalars['BigDecimal']>;\n /** Total traded volume in USD */\n volumeUsd?: Maybe<Scalars['BigDecimal']>;\n};\n\nexport type Total_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n feesEth?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n feesEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_not?: InputMaybe<Scalars['BigDecimal']>;\n feesEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n feesUsd?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n feesUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n feesUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n numberOfTrades?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_gt?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_gte?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_in?: InputMaybe<Array<Scalars['BigInt']>>;\n numberOfTrades_lt?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_lte?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_not?: InputMaybe<Scalars['BigInt']>;\n numberOfTrades_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n orders?: InputMaybe<Scalars['BigInt']>;\n orders_gt?: InputMaybe<Scalars['BigInt']>;\n orders_gte?: InputMaybe<Scalars['BigInt']>;\n orders_in?: InputMaybe<Array<Scalars['BigInt']>>;\n orders_lt?: InputMaybe<Scalars['BigInt']>;\n orders_lte?: InputMaybe<Scalars['BigInt']>;\n orders_not?: InputMaybe<Scalars['BigInt']>;\n orders_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n settlements?: InputMaybe<Scalars['BigInt']>;\n settlements_gt?: InputMaybe<Scalars['BigInt']>;\n settlements_gte?: InputMaybe<Scalars['BigInt']>;\n settlements_in?: InputMaybe<Array<Scalars['BigInt']>>;\n settlements_lt?: InputMaybe<Scalars['BigInt']>;\n settlements_lte?: InputMaybe<Scalars['BigInt']>;\n settlements_not?: InputMaybe<Scalars['BigInt']>;\n settlements_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n tokens?: InputMaybe<Scalars['BigInt']>;\n tokens_gt?: InputMaybe<Scalars['BigInt']>;\n tokens_gte?: InputMaybe<Scalars['BigInt']>;\n tokens_in?: InputMaybe<Array<Scalars['BigInt']>>;\n tokens_lt?: InputMaybe<Scalars['BigInt']>;\n tokens_lte?: InputMaybe<Scalars['BigInt']>;\n tokens_not?: InputMaybe<Scalars['BigInt']>;\n tokens_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n traders?: InputMaybe<Scalars['BigInt']>;\n traders_gt?: InputMaybe<Scalars['BigInt']>;\n traders_gte?: InputMaybe<Scalars['BigInt']>;\n traders_in?: InputMaybe<Array<Scalars['BigInt']>>;\n traders_lt?: InputMaybe<Scalars['BigInt']>;\n traders_lte?: InputMaybe<Scalars['BigInt']>;\n traders_not?: InputMaybe<Scalars['BigInt']>;\n traders_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n volumeEth?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_not?: InputMaybe<Scalars['BigDecimal']>;\n volumeEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeUsd?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n volumeUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n volumeUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n};\n\nexport enum Total_OrderBy {\n FeesEth = 'feesEth',\n FeesUsd = 'feesUsd',\n Id = 'id',\n NumberOfTrades = 'numberOfTrades',\n Orders = 'orders',\n Settlements = 'settlements',\n Tokens = 'tokens',\n Traders = 'traders',\n VolumeEth = 'volumeEth',\n VolumeUsd = 'volumeUsd'\n}\n\nexport type Trade = {\n __typename?: 'Trade';\n /** Trade event buyAmount */\n buyAmount: Scalars['BigInt'];\n /** Buy amount in Eth */\n buyAmountEth?: Maybe<Scalars['BigDecimal']>;\n /** Buy amount in Usd */\n buyAmountUsd?: Maybe<Scalars['BigDecimal']>;\n /** Trade event buyToken */\n buyToken: Token;\n /** Trade's fee amount */\n feeAmount: Scalars['BigInt'];\n /** Transaction's gas price */\n gasPrice: Scalars['BigInt'];\n /** This Id is composed using orderId|txHashString|eventIndex */\n id: Scalars['ID'];\n /** Order */\n order: Order;\n /** Trade event sellAmount */\n sellAmount: Scalars['BigInt'];\n /** Sell amount in Eth */\n sellAmountEth?: Maybe<Scalars['BigDecimal']>;\n /** Sell amount in Usd */\n sellAmountUsd?: Maybe<Scalars['BigDecimal']>;\n /** Trade event sellToken */\n sellToken: Token;\n /** Settlement */\n settlement: Settlement;\n /** Block's timestamp */\n timestamp: Scalars['Int'];\n /** Trade event transaction hash */\n txHash: Scalars['Bytes'];\n};\n\nexport type Trade_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n buyAmount?: InputMaybe<Scalars['BigInt']>;\n buyAmountEth?: InputMaybe<Scalars['BigDecimal']>;\n buyAmountEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n buyAmountEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n buyAmountEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n buyAmountEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n buyAmountEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n buyAmountEth_not?: InputMaybe<Scalars['BigDecimal']>;\n buyAmountEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n buyAmountUsd?: InputMaybe<Scalars['BigDecimal']>;\n buyAmountUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n buyAmountUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n buyAmountUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n buyAmountUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n buyAmountUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n buyAmountUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n buyAmountUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n buyAmount_gt?: InputMaybe<Scalars['BigInt']>;\n buyAmount_gte?: InputMaybe<Scalars['BigInt']>;\n buyAmount_in?: InputMaybe<Array<Scalars['BigInt']>>;\n buyAmount_lt?: InputMaybe<Scalars['BigInt']>;\n buyAmount_lte?: InputMaybe<Scalars['BigInt']>;\n buyAmount_not?: InputMaybe<Scalars['BigInt']>;\n buyAmount_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n buyToken?: InputMaybe<Scalars['String']>;\n buyToken_contains?: InputMaybe<Scalars['String']>;\n buyToken_contains_nocase?: InputMaybe<Scalars['String']>;\n buyToken_ends_with?: InputMaybe<Scalars['String']>;\n buyToken_ends_with_nocase?: InputMaybe<Scalars['String']>;\n buyToken_gt?: InputMaybe<Scalars['String']>;\n buyToken_gte?: InputMaybe<Scalars['String']>;\n buyToken_in?: InputMaybe<Array<Scalars['String']>>;\n buyToken_lt?: InputMaybe<Scalars['String']>;\n buyToken_lte?: InputMaybe<Scalars['String']>;\n buyToken_not?: InputMaybe<Scalars['String']>;\n buyToken_not_contains?: InputMaybe<Scalars['String']>;\n buyToken_not_contains_nocase?: InputMaybe<Scalars['String']>;\n buyToken_not_ends_with?: InputMaybe<Scalars['String']>;\n buyToken_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n buyToken_not_in?: InputMaybe<Array<Scalars['String']>>;\n buyToken_not_starts_with?: InputMaybe<Scalars['String']>;\n buyToken_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n buyToken_starts_with?: InputMaybe<Scalars['String']>;\n buyToken_starts_with_nocase?: InputMaybe<Scalars['String']>;\n feeAmount?: InputMaybe<Scalars['BigInt']>;\n feeAmount_gt?: InputMaybe<Scalars['BigInt']>;\n feeAmount_gte?: InputMaybe<Scalars['BigInt']>;\n feeAmount_in?: InputMaybe<Array<Scalars['BigInt']>>;\n feeAmount_lt?: InputMaybe<Scalars['BigInt']>;\n feeAmount_lte?: InputMaybe<Scalars['BigInt']>;\n feeAmount_not?: InputMaybe<Scalars['BigInt']>;\n feeAmount_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n gasPrice?: InputMaybe<Scalars['BigInt']>;\n gasPrice_gt?: InputMaybe<Scalars['BigInt']>;\n gasPrice_gte?: InputMaybe<Scalars['BigInt']>;\n gasPrice_in?: InputMaybe<Array<Scalars['BigInt']>>;\n gasPrice_lt?: InputMaybe<Scalars['BigInt']>;\n gasPrice_lte?: InputMaybe<Scalars['BigInt']>;\n gasPrice_not?: InputMaybe<Scalars['BigInt']>;\n gasPrice_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n order?: InputMaybe<Scalars['String']>;\n order_contains?: InputMaybe<Scalars['String']>;\n order_contains_nocase?: InputMaybe<Scalars['String']>;\n order_ends_with?: InputMaybe<Scalars['String']>;\n order_ends_with_nocase?: InputMaybe<Scalars['String']>;\n order_gt?: InputMaybe<Scalars['String']>;\n order_gte?: InputMaybe<Scalars['String']>;\n order_in?: InputMaybe<Array<Scalars['String']>>;\n order_lt?: InputMaybe<Scalars['String']>;\n order_lte?: InputMaybe<Scalars['String']>;\n order_not?: InputMaybe<Scalars['String']>;\n order_not_contains?: InputMaybe<Scalars['String']>;\n order_not_contains_nocase?: InputMaybe<Scalars['String']>;\n order_not_ends_with?: InputMaybe<Scalars['String']>;\n order_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n order_not_in?: InputMaybe<Array<Scalars['String']>>;\n order_not_starts_with?: InputMaybe<Scalars['String']>;\n order_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n order_starts_with?: InputMaybe<Scalars['String']>;\n order_starts_with_nocase?: InputMaybe<Scalars['String']>;\n sellAmount?: InputMaybe<Scalars['BigInt']>;\n sellAmountEth?: InputMaybe<Scalars['BigDecimal']>;\n sellAmountEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n sellAmountEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n sellAmountEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n sellAmountEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n sellAmountEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n sellAmountEth_not?: InputMaybe<Scalars['BigDecimal']>;\n sellAmountEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n sellAmountUsd?: InputMaybe<Scalars['BigDecimal']>;\n sellAmountUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n sellAmountUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n sellAmountUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n sellAmountUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n sellAmountUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n sellAmountUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n sellAmountUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n sellAmount_gt?: InputMaybe<Scalars['BigInt']>;\n sellAmount_gte?: InputMaybe<Scalars['BigInt']>;\n sellAmount_in?: InputMaybe<Array<Scalars['BigInt']>>;\n sellAmount_lt?: InputMaybe<Scalars['BigInt']>;\n sellAmount_lte?: InputMaybe<Scalars['BigInt']>;\n sellAmount_not?: InputMaybe<Scalars['BigInt']>;\n sellAmount_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n sellToken?: InputMaybe<Scalars['String']>;\n sellToken_contains?: InputMaybe<Scalars['String']>;\n sellToken_contains_nocase?: InputMaybe<Scalars['String']>;\n sellToken_ends_with?: InputMaybe<Scalars['String']>;\n sellToken_ends_with_nocase?: InputMaybe<Scalars['String']>;\n sellToken_gt?: InputMaybe<Scalars['String']>;\n sellToken_gte?: InputMaybe<Scalars['String']>;\n sellToken_in?: InputMaybe<Array<Scalars['String']>>;\n sellToken_lt?: InputMaybe<Scalars['String']>;\n sellToken_lte?: InputMaybe<Scalars['String']>;\n sellToken_not?: InputMaybe<Scalars['String']>;\n sellToken_not_contains?: InputMaybe<Scalars['String']>;\n sellToken_not_contains_nocase?: InputMaybe<Scalars['String']>;\n sellToken_not_ends_with?: InputMaybe<Scalars['String']>;\n sellToken_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n sellToken_not_in?: InputMaybe<Array<Scalars['String']>>;\n sellToken_not_starts_with?: InputMaybe<Scalars['String']>;\n sellToken_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n sellToken_starts_with?: InputMaybe<Scalars['String']>;\n sellToken_starts_with_nocase?: InputMaybe<Scalars['String']>;\n settlement?: InputMaybe<Scalars['String']>;\n settlement_contains?: InputMaybe<Scalars['String']>;\n settlement_contains_nocase?: InputMaybe<Scalars['String']>;\n settlement_ends_with?: InputMaybe<Scalars['String']>;\n settlement_ends_with_nocase?: InputMaybe<Scalars['String']>;\n settlement_gt?: InputMaybe<Scalars['String']>;\n settlement_gte?: InputMaybe<Scalars['String']>;\n settlement_in?: InputMaybe<Array<Scalars['String']>>;\n settlement_lt?: InputMaybe<Scalars['String']>;\n settlement_lte?: InputMaybe<Scalars['String']>;\n settlement_not?: InputMaybe<Scalars['String']>;\n settlement_not_contains?: InputMaybe<Scalars['String']>;\n settlement_not_contains_nocase?: InputMaybe<Scalars['String']>;\n settlement_not_ends_with?: InputMaybe<Scalars['String']>;\n settlement_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n settlement_not_in?: InputMaybe<Array<Scalars['String']>>;\n settlement_not_starts_with?: InputMaybe<Scalars['String']>;\n settlement_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n settlement_starts_with?: InputMaybe<Scalars['String']>;\n settlement_starts_with_nocase?: InputMaybe<Scalars['String']>;\n timestamp?: InputMaybe<Scalars['Int']>;\n timestamp_gt?: InputMaybe<Scalars['Int']>;\n timestamp_gte?: InputMaybe<Scalars['Int']>;\n timestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n timestamp_lt?: InputMaybe<Scalars['Int']>;\n timestamp_lte?: InputMaybe<Scalars['Int']>;\n timestamp_not?: InputMaybe<Scalars['Int']>;\n timestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n txHash?: InputMaybe<Scalars['Bytes']>;\n txHash_contains?: InputMaybe<Scalars['Bytes']>;\n txHash_in?: InputMaybe<Array<Scalars['Bytes']>>;\n txHash_not?: InputMaybe<Scalars['Bytes']>;\n txHash_not_contains?: InputMaybe<Scalars['Bytes']>;\n txHash_not_in?: InputMaybe<Array<Scalars['Bytes']>>;\n};\n\nexport enum Trade_OrderBy {\n BuyAmount = 'buyAmount',\n BuyAmountEth = 'buyAmountEth',\n BuyAmountUsd = 'buyAmountUsd',\n BuyToken = 'buyToken',\n FeeAmount = 'feeAmount',\n GasPrice = 'gasPrice',\n Id = 'id',\n Order = 'order',\n SellAmount = 'sellAmount',\n SellAmountEth = 'sellAmountEth',\n SellAmountUsd = 'sellAmountUsd',\n SellToken = 'sellToken',\n Settlement = 'settlement',\n Timestamp = 'timestamp',\n TxHash = 'txHash'\n}\n\nexport type UniswapPool = {\n __typename?: 'UniswapPool';\n /** Pool address */\n id: Scalars['ID'];\n /** In range liquidity */\n liquidity: Scalars['BigInt'];\n /** Current tick */\n tick?: Maybe<Scalars['BigInt']>;\n /** Token0 */\n token0: UniswapToken;\n /** Token0 per token1 */\n token0Price: Scalars['BigDecimal'];\n /** Token1 */\n token1: UniswapToken;\n /** Token1 per token0 */\n token1Price: Scalars['BigDecimal'];\n /** Total token 0 across all ticks */\n totalValueLockedToken0: Scalars['BigDecimal'];\n /** Total token 1 across all ticks */\n totalValueLockedToken1: Scalars['BigDecimal'];\n};\n\nexport type UniswapPool_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n liquidity?: InputMaybe<Scalars['BigInt']>;\n liquidity_gt?: InputMaybe<Scalars['BigInt']>;\n liquidity_gte?: InputMaybe<Scalars['BigInt']>;\n liquidity_in?: InputMaybe<Array<Scalars['BigInt']>>;\n liquidity_lt?: InputMaybe<Scalars['BigInt']>;\n liquidity_lte?: InputMaybe<Scalars['BigInt']>;\n liquidity_not?: InputMaybe<Scalars['BigInt']>;\n liquidity_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n tick?: InputMaybe<Scalars['BigInt']>;\n tick_gt?: InputMaybe<Scalars['BigInt']>;\n tick_gte?: InputMaybe<Scalars['BigInt']>;\n tick_in?: InputMaybe<Array<Scalars['BigInt']>>;\n tick_lt?: InputMaybe<Scalars['BigInt']>;\n tick_lte?: InputMaybe<Scalars['BigInt']>;\n tick_not?: InputMaybe<Scalars['BigInt']>;\n tick_not_in?: InputMaybe<Array<Scalars['BigInt']>>;\n token0?: InputMaybe<Scalars['String']>;\n token0Price?: InputMaybe<Scalars['BigDecimal']>;\n token0Price_gt?: InputMaybe<Scalars['BigDecimal']>;\n token0Price_gte?: InputMaybe<Scalars['BigDecimal']>;\n token0Price_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n token0Price_lt?: InputMaybe<Scalars['BigDecimal']>;\n token0Price_lte?: InputMaybe<Scalars['BigDecimal']>;\n token0Price_not?: InputMaybe<Scalars['BigDecimal']>;\n token0Price_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n token0_contains?: InputMaybe<Scalars['String']>;\n token0_contains_nocase?: InputMaybe<Scalars['String']>;\n token0_ends_with?: InputMaybe<Scalars['String']>;\n token0_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token0_gt?: InputMaybe<Scalars['String']>;\n token0_gte?: InputMaybe<Scalars['String']>;\n token0_in?: InputMaybe<Array<Scalars['String']>>;\n token0_lt?: InputMaybe<Scalars['String']>;\n token0_lte?: InputMaybe<Scalars['String']>;\n token0_not?: InputMaybe<Scalars['String']>;\n token0_not_contains?: InputMaybe<Scalars['String']>;\n token0_not_contains_nocase?: InputMaybe<Scalars['String']>;\n token0_not_ends_with?: InputMaybe<Scalars['String']>;\n token0_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token0_not_in?: InputMaybe<Array<Scalars['String']>>;\n token0_not_starts_with?: InputMaybe<Scalars['String']>;\n token0_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token0_starts_with?: InputMaybe<Scalars['String']>;\n token0_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token1?: InputMaybe<Scalars['String']>;\n token1Price?: InputMaybe<Scalars['BigDecimal']>;\n token1Price_gt?: InputMaybe<Scalars['BigDecimal']>;\n token1Price_gte?: InputMaybe<Scalars['BigDecimal']>;\n token1Price_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n token1Price_lt?: InputMaybe<Scalars['BigDecimal']>;\n token1Price_lte?: InputMaybe<Scalars['BigDecimal']>;\n token1Price_not?: InputMaybe<Scalars['BigDecimal']>;\n token1Price_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n token1_contains?: InputMaybe<Scalars['String']>;\n token1_contains_nocase?: InputMaybe<Scalars['String']>;\n token1_ends_with?: InputMaybe<Scalars['String']>;\n token1_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token1_gt?: InputMaybe<Scalars['String']>;\n token1_gte?: InputMaybe<Scalars['String']>;\n token1_in?: InputMaybe<Array<Scalars['String']>>;\n token1_lt?: InputMaybe<Scalars['String']>;\n token1_lte?: InputMaybe<Scalars['String']>;\n token1_not?: InputMaybe<Scalars['String']>;\n token1_not_contains?: InputMaybe<Scalars['String']>;\n token1_not_contains_nocase?: InputMaybe<Scalars['String']>;\n token1_not_ends_with?: InputMaybe<Scalars['String']>;\n token1_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n token1_not_in?: InputMaybe<Array<Scalars['String']>>;\n token1_not_starts_with?: InputMaybe<Scalars['String']>;\n token1_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n token1_starts_with?: InputMaybe<Scalars['String']>;\n token1_starts_with_nocase?: InputMaybe<Scalars['String']>;\n totalValueLockedToken0?: InputMaybe<Scalars['BigDecimal']>;\n totalValueLockedToken0_gt?: InputMaybe<Scalars['BigDecimal']>;\n totalValueLockedToken0_gte?: InputMaybe<Scalars['BigDecimal']>;\n totalValueLockedToken0_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalValueLockedToken0_lt?: InputMaybe<Scalars['BigDecimal']>;\n totalValueLockedToken0_lte?: InputMaybe<Scalars['BigDecimal']>;\n totalValueLockedToken0_not?: InputMaybe<Scalars['BigDecimal']>;\n totalValueLockedToken0_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalValueLockedToken1?: InputMaybe<Scalars['BigDecimal']>;\n totalValueLockedToken1_gt?: InputMaybe<Scalars['BigDecimal']>;\n totalValueLockedToken1_gte?: InputMaybe<Scalars['BigDecimal']>;\n totalValueLockedToken1_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n totalValueLockedToken1_lt?: InputMaybe<Scalars['BigDecimal']>;\n totalValueLockedToken1_lte?: InputMaybe<Scalars['BigDecimal']>;\n totalValueLockedToken1_not?: InputMaybe<Scalars['BigDecimal']>;\n totalValueLockedToken1_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n};\n\nexport enum UniswapPool_OrderBy {\n Id = 'id',\n Liquidity = 'liquidity',\n Tick = 'tick',\n Token0 = 'token0',\n Token0Price = 'token0Price',\n Token1 = 'token1',\n Token1Price = 'token1Price',\n TotalValueLockedToken0 = 'totalValueLockedToken0',\n TotalValueLockedToken1 = 'totalValueLockedToken1'\n}\n\nexport type UniswapToken = {\n __typename?: 'UniswapToken';\n /** Token address */\n address: Scalars['Bytes'];\n /** Pools token is in that are allow listed for USD pricing */\n allowedPools: Array<UniswapToken>;\n /** Token decimals fetched by contract call */\n decimals: Scalars['Int'];\n /** Token address to hexString */\n id: Scalars['ID'];\n /** Token name fetched by ERC20 contract call */\n name: Scalars['String'];\n /** Derived price in ETH */\n priceEth?: Maybe<Scalars['BigDecimal']>;\n /** Derived price in USD */\n priceUsd?: Maybe<Scalars['BigDecimal']>;\n /** Token symbol fetched by contract call */\n symbol: Scalars['String'];\n};\n\n\nexport type UniswapTokenAllowedPoolsArgs = {\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<UniswapToken_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n where?: InputMaybe<UniswapToken_Filter>;\n};\n\nexport type UniswapToken_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n address?: InputMaybe<Scalars['Bytes']>;\n address_contains?: InputMaybe<Scalars['Bytes']>;\n address_in?: InputMaybe<Array<Scalars['Bytes']>>;\n address_not?: InputMaybe<Scalars['Bytes']>;\n address_not_contains?: InputMaybe<Scalars['Bytes']>;\n address_not_in?: InputMaybe<Array<Scalars['Bytes']>>;\n allowedPools?: InputMaybe<Array<Scalars['String']>>;\n allowedPools_contains?: InputMaybe<Array<Scalars['String']>>;\n allowedPools_contains_nocase?: InputMaybe<Array<Scalars['String']>>;\n allowedPools_not?: InputMaybe<Array<Scalars['String']>>;\n allowedPools_not_contains?: InputMaybe<Array<Scalars['String']>>;\n allowedPools_not_contains_nocase?: InputMaybe<Array<Scalars['String']>>;\n decimals?: InputMaybe<Scalars['Int']>;\n decimals_gt?: InputMaybe<Scalars['Int']>;\n decimals_gte?: InputMaybe<Scalars['Int']>;\n decimals_in?: InputMaybe<Array<Scalars['Int']>>;\n decimals_lt?: InputMaybe<Scalars['Int']>;\n decimals_lte?: InputMaybe<Scalars['Int']>;\n decimals_not?: InputMaybe<Scalars['Int']>;\n decimals_not_in?: InputMaybe<Array<Scalars['Int']>>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n name?: InputMaybe<Scalars['String']>;\n name_contains?: InputMaybe<Scalars['String']>;\n name_contains_nocase?: InputMaybe<Scalars['String']>;\n name_ends_with?: InputMaybe<Scalars['String']>;\n name_ends_with_nocase?: InputMaybe<Scalars['String']>;\n name_gt?: InputMaybe<Scalars['String']>;\n name_gte?: InputMaybe<Scalars['String']>;\n name_in?: InputMaybe<Array<Scalars['String']>>;\n name_lt?: InputMaybe<Scalars['String']>;\n name_lte?: InputMaybe<Scalars['String']>;\n name_not?: InputMaybe<Scalars['String']>;\n name_not_contains?: InputMaybe<Scalars['String']>;\n name_not_contains_nocase?: InputMaybe<Scalars['String']>;\n name_not_ends_with?: InputMaybe<Scalars['String']>;\n name_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n name_not_in?: InputMaybe<Array<Scalars['String']>>;\n name_not_starts_with?: InputMaybe<Scalars['String']>;\n name_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n name_starts_with?: InputMaybe<Scalars['String']>;\n name_starts_with_nocase?: InputMaybe<Scalars['String']>;\n priceEth?: InputMaybe<Scalars['BigDecimal']>;\n priceEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n priceEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n priceEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n priceEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n priceEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n priceEth_not?: InputMaybe<Scalars['BigDecimal']>;\n priceEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n priceUsd?: InputMaybe<Scalars['BigDecimal']>;\n priceUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n priceUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n priceUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n priceUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n priceUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n priceUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n priceUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n symbol?: InputMaybe<Scalars['String']>;\n symbol_contains?: InputMaybe<Scalars['String']>;\n symbol_contains_nocase?: InputMaybe<Scalars['String']>;\n symbol_ends_with?: InputMaybe<Scalars['String']>;\n symbol_ends_with_nocase?: InputMaybe<Scalars['String']>;\n symbol_gt?: InputMaybe<Scalars['String']>;\n symbol_gte?: InputMaybe<Scalars['String']>;\n symbol_in?: InputMaybe<Array<Scalars['String']>>;\n symbol_lt?: InputMaybe<Scalars['String']>;\n symbol_lte?: InputMaybe<Scalars['String']>;\n symbol_not?: InputMaybe<Scalars['String']>;\n symbol_not_contains?: InputMaybe<Scalars['String']>;\n symbol_not_contains_nocase?: InputMaybe<Scalars['String']>;\n symbol_not_ends_with?: InputMaybe<Scalars['String']>;\n symbol_not_ends_with_nocase?: InputMaybe<Scalars['String']>;\n symbol_not_in?: InputMaybe<Array<Scalars['String']>>;\n symbol_not_starts_with?: InputMaybe<Scalars['String']>;\n symbol_not_starts_with_nocase?: InputMaybe<Scalars['String']>;\n symbol_starts_with?: InputMaybe<Scalars['String']>;\n symbol_starts_with_nocase?: InputMaybe<Scalars['String']>;\n};\n\nexport enum UniswapToken_OrderBy {\n Address = 'address',\n AllowedPools = 'allowedPools',\n Decimals = 'decimals',\n Id = 'id',\n Name = 'name',\n PriceEth = 'priceEth',\n PriceUsd = 'priceUsd',\n Symbol = 'symbol'\n}\n\nexport type User = {\n __typename?: 'User';\n /** Owner's address */\n address: Scalars['Bytes'];\n /** First trade block timestamp */\n firstTradeTimestamp?: Maybe<Scalars['Int']>;\n /** Trade event order owner */\n id: Scalars['ID'];\n /** Determine if user has solved a settlement */\n isSolver: Scalars['Boolean'];\n /** Solved trades */\n numberOfTrades: Scalars['Int'];\n /** List of orders placed by this user */\n ordersPlaced: Array<Order>;\n /** total amount solved by the user in Eth */\n solvedAmountEth?: Maybe<Scalars['BigDecimal']>;\n /** total amount solved by the user in Usd */\n solvedAmountUsd?: Maybe<Scalars['BigDecimal']>;\n /** total amount traded by the user in Eth */\n tradedAmountEth?: Maybe<Scalars['BigDecimal']>;\n /** total amount traded by the user in Usd */\n tradedAmountUsd?: Maybe<Scalars['BigDecimal']>;\n};\n\n\nexport type UserOrdersPlacedArgs = {\n first?: InputMaybe<Scalars['Int']>;\n orderBy?: InputMaybe<Order_OrderBy>;\n orderDirection?: InputMaybe<OrderDirection>;\n skip?: InputMaybe<Scalars['Int']>;\n where?: InputMaybe<Order_Filter>;\n};\n\nexport type User_Filter = {\n /** Filter for the block changed event. */\n _change_block?: InputMaybe<BlockChangedFilter>;\n address?: InputMaybe<Scalars['Bytes']>;\n address_contains?: InputMaybe<Scalars['Bytes']>;\n address_in?: InputMaybe<Array<Scalars['Bytes']>>;\n address_not?: InputMaybe<Scalars['Bytes']>;\n address_not_contains?: InputMaybe<Scalars['Bytes']>;\n address_not_in?: InputMaybe<Array<Scalars['Bytes']>>;\n firstTradeTimestamp?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_gt?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_gte?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_in?: InputMaybe<Array<Scalars['Int']>>;\n firstTradeTimestamp_lt?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_lte?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_not?: InputMaybe<Scalars['Int']>;\n firstTradeTimestamp_not_in?: InputMaybe<Array<Scalars['Int']>>;\n id?: InputMaybe<Scalars['ID']>;\n id_gt?: InputMaybe<Scalars['ID']>;\n id_gte?: InputMaybe<Scalars['ID']>;\n id_in?: InputMaybe<Array<Scalars['ID']>>;\n id_lt?: InputMaybe<Scalars['ID']>;\n id_lte?: InputMaybe<Scalars['ID']>;\n id_not?: InputMaybe<Scalars['ID']>;\n id_not_in?: InputMaybe<Array<Scalars['ID']>>;\n isSolver?: InputMaybe<Scalars['Boolean']>;\n isSolver_in?: InputMaybe<Array<Scalars['Boolean']>>;\n isSolver_not?: InputMaybe<Scalars['Boolean']>;\n isSolver_not_in?: InputMaybe<Array<Scalars['Boolean']>>;\n numberOfTrades?: InputMaybe<Scalars['Int']>;\n numberOfTrades_gt?: InputMaybe<Scalars['Int']>;\n numberOfTrades_gte?: InputMaybe<Scalars['Int']>;\n numberOfTrades_in?: InputMaybe<Array<Scalars['Int']>>;\n numberOfTrades_lt?: InputMaybe<Scalars['Int']>;\n numberOfTrades_lte?: InputMaybe<Scalars['Int']>;\n numberOfTrades_not?: InputMaybe<Scalars['Int']>;\n numberOfTrades_not_in?: InputMaybe<Array<Scalars['Int']>>;\n solvedAmountEth?: InputMaybe<Scalars['BigDecimal']>;\n solvedAmountEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n solvedAmountEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n solvedAmountEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n solvedAmountEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n solvedAmountEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n solvedAmountEth_not?: InputMaybe<Scalars['BigDecimal']>;\n solvedAmountEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n solvedAmountUsd?: InputMaybe<Scalars['BigDecimal']>;\n solvedAmountUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n solvedAmountUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n solvedAmountUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n solvedAmountUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n solvedAmountUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n solvedAmountUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n solvedAmountUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n tradedAmountEth?: InputMaybe<Scalars['BigDecimal']>;\n tradedAmountEth_gt?: InputMaybe<Scalars['BigDecimal']>;\n tradedAmountEth_gte?: InputMaybe<Scalars['BigDecimal']>;\n tradedAmountEth_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n tradedAmountEth_lt?: InputMaybe<Scalars['BigDecimal']>;\n tradedAmountEth_lte?: InputMaybe<Scalars['BigDecimal']>;\n tradedAmountEth_not?: InputMaybe<Scalars['BigDecimal']>;\n tradedAmountEth_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n tradedAmountUsd?: InputMaybe<Scalars['BigDecimal']>;\n tradedAmountUsd_gt?: InputMaybe<Scalars['BigDecimal']>;\n tradedAmountUsd_gte?: InputMaybe<Scalars['BigDecimal']>;\n tradedAmountUsd_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n tradedAmountUsd_lt?: InputMaybe<Scalars['BigDecimal']>;\n tradedAmountUsd_lte?: InputMaybe<Scalars['BigDecimal']>;\n tradedAmountUsd_not?: InputMaybe<Scalars['BigDecimal']>;\n tradedAmountUsd_not_in?: InputMaybe<Array<Scalars['BigDecimal']>>;\n};\n\nexport enum User_OrderBy {\n Address = 'address',\n FirstTradeTimestamp = 'firstTradeTimestamp',\n Id = 'id',\n IsSolver = 'isSolver',\n NumberOfTrades = 'numberOfTrades',\n OrdersPlaced = 'ordersPlaced',\n SolvedAmountEth = 'solvedAmountEth',\n SolvedAmountUsd = 'solvedAmountUsd',\n TradedAmountEth = 'tradedAmountEth',\n TradedAmountUsd = 'tradedAmountUsd'\n}\n\nexport type _Block_ = {\n __typename?: '_Block_';\n /** The hash of the block */\n hash?: Maybe<Scalars['Bytes']>;\n /** The block number */\n number: Scalars['Int'];\n};\n\n/** The type for the top-level _meta field */\nexport type _Meta_ = {\n __typename?: '_Meta_';\n /**\n * Information about a specific subgraph block. The hash of the block\n * will be null if the _meta field has a block constraint that asks for\n * a block number. It will be filled if the _meta field has no block constraint\n * and therefore asks for the latest block\n *\n */\n block: _Block_;\n /** The deployment ID */\n deployment: Scalars['String'];\n /** If `true`, the subgraph encountered indexing errors at some past block */\n hasIndexingErrors: Scalars['Boolean'];\n};\n\nexport enum _SubgraphErrorPolicy_ {\n /** Data will be returned even if the subgraph has indexing errors */\n Allow = 'allow',\n /** If the subgraph has indexing errors, data will be omitted. The default. */\n Deny = 'deny'\n}\n\nexport type TotalsQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type TotalsQuery = { __typename?: 'Query', totals: Array<{ __typename?: 'Total', tokens: any, orders: any, traders: any, settlements: any, volumeUsd?: any | null, volumeEth?: any | null, feesUsd?: any | null, feesEth?: any | null }> };\n\nexport type LastDaysVolumeQueryVariables = Exact<{\n days: Scalars['Int'];\n}>;\n\n\nexport type LastDaysVolumeQuery = { __typename?: 'Query', dailyTotals: Array<{ __typename?: 'DailyTotal', timestamp: number, volumeUsd?: any | null }> };\n\nexport type LastHoursVolumeQueryVariables = Exact<{\n hours: Scalars['Int'];\n}>;\n\n\nexport type LastHoursVolumeQuery = { __typename?: 'Query', hourlyTotals: Array<{ __typename?: 'HourlyTotal', timestamp: number, volumeUsd?: any | null }> };\n","import { Signer } from 'ethers'\nimport log, { LogLevelDesc } from 'loglevel'\nimport { CowError } from './utils/common'\nimport { CowApi, CowSubgraphApi, MetadataApi } from './api'\nimport { SupportedChainId as ChainId } from './constants/chains'\nimport { validateAppDataDocument } from './utils/appData'\nimport { Context, CowContext } from './utils/context'\nimport { signOrder, signOrderCancellation, UnsignedOrder } from './utils/sign'\n\ntype Options = {\n loglevel?: LogLevelDesc\n}\n\nexport class CowSdk<T extends ChainId> {\n context: Context\n cowApi: CowApi\n metadataApi: MetadataApi\n cowSubgraphApi: CowSubgraphApi\n\n constructor(chainId: T, cowContext: CowContext = {}, options: Options = {}) {\n this.context = new Context(chainId, { ...cowContext })\n this.cowApi = new CowApi(this.context)\n this.cowSubgraphApi = new CowSubgraphApi(this.context)\n this.metadataApi = new MetadataApi(this.context)\n log.setLevel(options.loglevel || 'error')\n }\n\n updateChainId = (chainId: ChainId) => {\n this.context.updateChainId(chainId)\n }\n\n validateAppDataDocument = validateAppDataDocument\n\n async signOrder(order: Omit<UnsignedOrder, 'appData'>) {\n const signer = this._checkSigner()\n const chainId = await this.context.chainId\n return signOrder({ ...order, appData: this.context.appDataHash }, chainId, signer)\n }\n\n async signOrderCancellation(orderId: string) {\n const signer = this._checkSigner()\n const chainId = await this.context.chainId\n return signOrderCancellation(orderId, chainId, signer)\n }\n\n _checkSigner(signer: Signer | undefined = this.context.signer) {\n if (!signer) {\n throw new CowError('No signer available')\n }\n\n return signer\n }\n}\n\nexport default CowSdk\n"],"names":["CowError","Error","constructor","message","error_code","super","this","objectToQueryString","o","qs","URLSearchParams","key","Object","keys","value","append","toString","qsResult","logPrefix","SupportedChainId","ALL_SUPPORTED_CHAIN_IDS","MAINNET","RINKEBY","GNOSIS_CHAIN","GPv2Settlement","contractNetworks","GP_SETTLEMENT_CONTRACT_ADDRESS","ChainId","address","_signPayload","payload","signFn","signer","signingMethod","_exit","_temp2","_result","_signature","signature","data","signingScheme","SigningScheme","ETHSIGN","EIP712","_signer","TypedDataV3Signer","IntChainIdTypedDataV4Signer","e","log","error","_temp","then","_signFn","_catch","undefined","code","METHOD_NOT_FOUND_ERROR_CODE","RPC_REQUEST_FAILED_REGEX","test","_signPayload2","METAMASK_STRING_CHAINID_REGEX","_signPayload4","METAMASK_SIGNATURE_ERROR_CODE","V4_ERROR_MSG_REGEX","V3_ERROR_MSG_REGEX","_signPayload7","Promise","resolve","_signOrderCancellation","params","chainId","orderId","domain","_getDomain","signOrderCancellationGp","getSigningSchemeLibValue","_signOrder","order","signOrderGp","signOrder","mapSigningSchema","Map","libraryValue","apiValue","EIP1271","PRESIGN","_getSigningSchemeInfo","ecdaSigningScheme","get","getSigningSchemeApiValue","settlementContract","domainGp","ApiErrorCodes","ApiErrorCodeDetails","GpQuoteErrorCodes","GpQuoteErrorDetails","OperatorError","static","response","action","json","orderPostError","errorType","apiErrorDetails","description","UNHANDLED_GET_ERROR","UNHANDLED_CREATE_ERROR","UNHANDLED_DELETE_ERROR","_mapActionToErrorDetail","_this","status","getErrorMessage","apiError","name","GpQuoteError","quoteErrorDetails","UNHANDLED_ERROR","reject","quoteError","Token","symbol","WRAPPED_NATIVE_TOKEN","NATIVE","toErc20Address","tokenAddress","checkedAddress","_handleQuoteResponse","ok","errorObj","mappedError","NotFound","NoLiquidity","InsufficientLiquidity","SellAmountDoesNotCoverFee","FeeExceedsFrom","UnsupportedToken","mapOperatorErrorToQuoteError","QuoteError","sellToken","buyToken","UNHANDLED_QUOTE_ERROR","UNHANDLED_ORDER_ERROR","CowApi","context","API_NAME","DEFAULT_HEADERS","appDataHash","API_BASE_URL","isDevEnvironment","PROFILE_API_BASE_URL","getProfileData","debug","info","getProfile","errorResponse","getTrades","_this2","owner","limit","offset","qsParams","getOrders","_this3","queryString","getTxOrders","txHash","_this4","getOrder","_this5","getPriceQuoteLegacy","_this6","baseToken","quoteToken","amount","kind","catch","getQuote","_this7","quoteParams","mapNewToLegacyParams","post","sendSignedOrderCancellation","_this8","cancellation","from","delete","orderUid","getErrorFromStatusCode","errorMessage","sendOrder","_this9","fullOrder","appData","_temp4","_result2","uid","_temp3","getOrderLink","getApiBaseUrl","userAddress","receiver","validTo","fallbackAddress","baseParams","partiallyFillable","OrderKind","SELL","sellAmountBeforeFee","BUY","buyAmountAfterFee","_this10","baseUrl","getProfileApiBaseUrl","_this11","fetch","url","method","_this12","headers","body","JSON","stringify","fetchProfile","_this13","TOTALS_QUERY","gql","LAST_DAYS_VOLUME_QUERY","LAST_HOURS_VOLUME_QUERY","subgraphUrls","CowSubgraphApi","clients","createClients","GraphQLClient","getBaseUrl","getTotals","runQuery","totals","getLastDaysVolume","days","getLastHoursVolume","hours","query","variables","request","validateAppDataDocument","appDataDocument","getValidator","ajv","validate","result","errors","errorsText","getSerializedCID","hash","cidVersion","codec","type","length","hexHash","fromHexString","hexString","stringMatch","match","Uint8Array","map","byte","parseInt","replace","uint8array","_interopNamespace","require","CID","decode","toV0","Ajv","appDataSchema","compile","DEFAULT_APP_CODE","MetadataApi","generateAppDataDoc","metadata","optionalProperties","appCode","environment","version","decodeAppData","cidV0","cid","ipfsUri","default","loadIpfsFromCid","cidToAppDataHex","ipfsHash","digest","parse","multihash","Buffer","appDataHexToCid","calculateAppDataHash","validation","doc","docString","of","calculateIpfsCidV0","uploadMetadataDocToIpfs","appDataDoc","file","writeUri","pinataApiKey","pinataApiSecret","pinataContent","pinataMetadata","pinata_api_key","pinata_secret_api_key","details","pinJSONToIPFS","ipfs","IpfsHash","DefaultCowContext","readUri","apiKey","apiSecret","Bundle_OrderBy","DailyTotal_OrderBy","HourlyTotal_OrderBy","OrderDirection","Order_OrderBy","PairDaily_OrderBy","PairHourly_OrderBy","Pair_OrderBy","Settlement_OrderBy","TokenDailyTotal_OrderBy","TokenHourlyTotal_OrderBy","TokenTradingEvent_OrderBy","Token_OrderBy","Total_OrderBy","Trade_OrderBy","UniswapPool_OrderBy","UniswapToken_OrderBy","User_OrderBy","_SubgraphErrorPolicy_","_context","_classPrivateFieldLooseKey","_chainId","Context","defineProperty","writable","_classPrivateFieldLooseBase","updateChainId","_classPrivateFieldLoo","provider","getNetwork","network","getAndReconciliateNetwork","_classPrivateFieldLoo2","_classPrivateFieldLoo3","_classPrivateFieldLoo4","CowSdk","cowContext","options","cowApi","metadataApi","cowSubgraphApi","setLevel","loglevel","_checkSigner","signOrderCancellation"],"mappings":"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"}