@covalenthq/client-sdk 1.0.0 → 1.0.2
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/cjs/index.js +9 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/services/BaseService.d.ts +17 -1
- package/dist/cjs/services/CovalentClient.d.ts +1 -1
- package/dist/cjs/util/types/BaseServiceTypes.d.ts +16 -0
- package/dist/es/index.js +9 -1
- package/dist/es/index.js.map +1 -1
- package/dist/es/services/BaseService.d.ts +17 -1
- package/dist/es/services/CovalentClient.d.ts +1 -1
- package/dist/es/util/types/BaseServiceTypes.d.ts +16 -0
- package/dist/esm/index.js +9 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/services/BaseService.d.ts +17 -1
- package/dist/esm/services/CovalentClient.d.ts +1 -1
- package/dist/esm/util/types/BaseServiceTypes.d.ts +16 -0
- package/dist/services/BaseService.d.ts +17 -1
- package/dist/services/BaseService.js +8 -0
- package/dist/services/BaseService.js.map +1 -1
- package/dist/services/CovalentClient.d.ts +1 -1
- package/dist/services/CovalentClient.js +1 -1
- package/dist/util/types/BaseServiceTypes.d.ts +16 -0
- package/package.json +1 -1
package/dist/es/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/util/backoff.ts","../../node_modules/yocto-queue/index.js","../../node_modules/p-limit/index.js","../../src/util/ApiHelpers.ts","../../src/util/ApiKeyValidator.ts","../../src/services/SecurityService.ts","../../src/services/BalanceService.ts","../../src/services/BaseService.ts","../../src/services/NftService.ts","../../src/services/PricingService.ts","../../src/services/TransactionService.ts","../../src/services/XykService.ts","../../src/services/CovalentClient.ts","../../src/util/CalculatePrettyBalance.ts","../../src/util/prettifyCurrency.ts","../../src/util/Chains.ts"],"sourcesContent":["import { Source, userAgent } from \"../services/CovalentClient\";\nimport { debugOutput } from \"./ApiHelpers\";\n\nexport const DEFAULT_BACKOFF_MAX_RETRIES = 5;\nexport const BASE_DELAY_MS = 1000; // Base delay in milliseconds\n \n\nexport class ExponentialBackoff<T> {\n retryCount = 1;\n _apiKey: string;\n _debug: boolean;\n\n constructor(apiKey: string, debug: boolean, private maxRetries = DEFAULT_BACKOFF_MAX_RETRIES) {\n this._apiKey = apiKey;\n this._debug = debug;\n }\n\n async backOff(url: string, source: Source): Promise<T> {\n try {\n\n let startTime;\n if (this._debug) {\n startTime = new Date();\n }\n\n const response = await fetch(url, {\n headers: {\n \"Authorization\": `Bearer ${this._apiKey}`,\n \"X-Requested-With\": source ? source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n });\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if (response.status === null || response.status === 429) {\n throw new Error(`Received status code: ${response.status ?? 429}`);\n } else {\n return response.json();\n } \n } catch (error) {\n if (error.message.includes(`Received status code: 429`) && this.retryCount < this.maxRetries) {\n this.retryCount++;\n const delayMs = Math.pow(2, this.retryCount) * BASE_DELAY_MS;\n await new Promise((resolve) => setTimeout(resolve, delayMs));\n return this.backOff(url, source);\n }\n return Promise.reject(\n new Error(`Max retries exceeded: ${this.maxRetries}`)\n );\n }\n }\n\n // to reset the numAttempts for another request\n public setNumAttempts(retryCount: number) {\n this.retryCount = retryCount;\n }\n\n}\n","class Node {\n\t/// value;\n\t/// next;\n\n\tconstructor(value) {\n\t\tthis.value = value;\n\n\t\t// TODO: Remove this when targeting Node.js 12.\n\t\tthis.next = undefined;\n\t}\n}\n\nclass Queue {\n\t// TODO: Use private class fields when targeting Node.js 12.\n\t// #_head;\n\t// #_tail;\n\t// #_size;\n\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tenqueue(value) {\n\t\tconst node = new Node(value);\n\n\t\tif (this._head) {\n\t\t\tthis._tail.next = node;\n\t\t\tthis._tail = node;\n\t\t} else {\n\t\t\tthis._head = node;\n\t\t\tthis._tail = node;\n\t\t}\n\n\t\tthis._size++;\n\t}\n\n\tdequeue() {\n\t\tconst current = this._head;\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._head = this._head.next;\n\t\tthis._size--;\n\t\treturn current.value;\n\t}\n\n\tclear() {\n\t\tthis._head = undefined;\n\t\tthis._tail = undefined;\n\t\tthis._size = 0;\n\t}\n\n\tget size() {\n\t\treturn this._size;\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tlet current = this._head;\n\n\t\twhile (current) {\n\t\t\tyield current.value;\n\t\t\tcurrent = current.next;\n\t\t}\n\t}\n}\n\nmodule.exports = Queue;\n","'use strict';\nconst Queue = require('yocto-queue');\n\nconst pLimit = concurrency => {\n\tif (!((Number.isInteger(concurrency) || concurrency === Infinity) && concurrency > 0)) {\n\t\tthrow new TypeError('Expected `concurrency` to be a number from 1 and up');\n\t}\n\n\tconst queue = new Queue();\n\tlet activeCount = 0;\n\n\tconst next = () => {\n\t\tactiveCount--;\n\n\t\tif (queue.size > 0) {\n\t\t\tqueue.dequeue()();\n\t\t}\n\t};\n\n\tconst run = async (fn, resolve, ...args) => {\n\t\tactiveCount++;\n\n\t\tconst result = (async () => fn(...args))();\n\n\t\tresolve(result);\n\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\tnext();\n\t};\n\n\tconst enqueue = (fn, resolve, ...args) => {\n\t\tqueue.enqueue(run.bind(null, fn, resolve, ...args));\n\n\t\t(async () => {\n\t\t\t// This function needs to wait until the next microtask before comparing\n\t\t\t// `activeCount` to `concurrency`, because `activeCount` is updated asynchronously\n\t\t\t// when the run function is dequeued and called. The comparison in the if-statement\n\t\t\t// needs to happen asynchronously as well to get an up-to-date value for `activeCount`.\n\t\t\tawait Promise.resolve();\n\n\t\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\t\tqueue.dequeue()();\n\t\t\t}\n\t\t})();\n\t};\n\n\tconst generator = (fn, ...args) => new Promise(resolve => {\n\t\tenqueue(fn, resolve, ...args);\n\t});\n\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.size\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue: () => {\n\t\t\t\tqueue.clear();\n\t\t\t}\n\t\t}\n\t});\n\n\treturn generator;\n};\n\nmodule.exports = pLimit;\n","import { ExponentialBackoff } from \"./backoff\";\nimport { Response, Source, userAgent } from \"../services/CovalentClient\";\nimport pLimit from \"p-limit\";\n\nexport function checkAndModifyResponse(jsonObj: any): void {\n for (const key in jsonObj) {\n if (key === 'next_update_at') {\n delete jsonObj[key];\n } else if (typeof jsonObj[key] === 'object') {\n checkAndModifyResponse(jsonObj[key]);\n }\n }\n}\n\nexport async function debugOutput(url: string, responseStatus: number, startTime: Date | undefined) {\n let endTime;\n let elapsedTime;\n if (startTime === undefined) {\n return;\n }\n endTime = new Date();\n elapsedTime = endTime.getTime() - startTime.getTime();\n\n console.log(\"[DEBUG]\" + \" |\" + \" Request URL: \" + url + \" |\" + \" Response code: \" + responseStatus + \" |\" + \" Response time: \" + elapsedTime.toFixed(2) + \"ms\");\n\n}\n\ntype Constructor<T> = new (...args: any[]) => T;\n\nexport async function* paginateEndpoint<T1, T2>(url: string, apiKey: string, urlsParams: URLSearchParams, dataClassConstructor: Constructor<T1>, debug: boolean, threadCount: number, enableRetry: boolean, source: Source): AsyncIterable<T1> {\n let hasNext = true;\n let response: globalThis.Response;\n let data: Response<T2>;\n const backoff = new ExponentialBackoff<Response<T2>>(apiKey, debug);\n let page_number = 0;\n const LIMIT = pLimit(threadCount);\n while (hasNext) {\n try {\n let startTime;\n if (debug) {\n startTime = new Date();\n }\n\n const link = urlsParams.get(\"page-number\") ? `${url}?${urlsParams}` : `${url}?${urlsParams}&page-number=${page_number}`;\n\n response = await LIMIT(() => fetch(urlsParams.get(\"page-number\") ? `${url}?${urlsParams}` : `${url}?${urlsParams}&page-number=${page_number}`, {\n headers: {\n \"Authorization\": `Bearer ${apiKey}`,\n \"X-Requested-With\": source ? source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await LIMIT(() => backoff.backOff(response ? response.url : link, source));\n } catch (error) {\n hasNext = false;\n throw new Error(`An error occurred ${response ? response.status : 429}: ${error.message}`);\n }\n } else {\n data = await response.json();\n }\n \n for (const tx of (data.data as any).items) {\n const dataClass = new dataClassConstructor(tx);\n yield dataClass;\n \n }\n backoff.setNumAttempts(1);\n if (!data.error) {\n if ((data.data !== null) && (data.data as any).pagination !== null && (data.data as any).pagination.has_more === false) {\n hasNext = false;\n }\n if (urlsParams.get(\"page-number\")) {\n const next_page = parseInt(urlsParams.get(\"page-number\")) + 1;\n urlsParams.set(\"page-number\", next_page.toString());\n } else {\n page_number = page_number + 1;\n }\n } else {\n hasNext = false;\n }\n \n \n } catch (error) {\n hasNext = false;\n if (error.message.includes(\"An error occurred 429\")) {\n throw new Error(error.message);\n }\n throw new Error(`An error occurred ${data ? data.error_code : response ? response.status : \"Unknown Error Code\"}: ${data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : \"Unknown Error\"}`);\n }\n }\n}","export class ApiKeyValidator {\n readonly _apiKey: string;\n // Regular expression patterns\n private static readonly _apiKeyV1Pattern = /^ckey_([a-f0-9]{27})$/;\n private static readonly _apiKeyV2Pattern = /^cqt_(wF|rQ)([bcdfghjkmpqrtvwxyBCDFGHJKMPQRTVWXY346789]{26})$/;\n\n static readonly INVALID_API_KEY_MESSAGE = \"Invalid or missing API key (sign up at covalenthq.com/platform)\";\n\n constructor(apiKey: string) {\n this._apiKey = apiKey;\n }\n\n isValidApiKey(): boolean {\n return ApiKeyValidator._apiKeyV1Pattern.test(this._apiKey) || ApiKeyValidator._apiKeyV2Pattern.test(this._apiKey);\n }\n}","import { Chain, Quote, userAgent, Response, ChainID, Source } from \"./CovalentClient\";\nimport { debugOutput } from \"../util/ApiHelpers\";\nimport { parseISO } from \"date-fns\";\nimport { ExponentialBackoff } from \"../util/backoff\";\nimport pLimit from \"p-limit\";\nimport { Chains } from \"../util/Chains\";\nimport { ApiKeyValidator } from \"../util/ApiKeyValidator\";\n\nclass ApprovalsResponse {\n /** * The requested address. */\n address: string;\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: TokensApprovalItem[];\n\n constructor(data: ApprovalsResponse) {\n this.address = data.address;\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.quote_currency = data.quote_currency;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: TokensApprovalItem) => new TokensApprovalItem(itemData)) : null;\n }\n}\nclass TokensApprovalItem {\n /** * The address for the token that has approvals. */\n token_address: string;\n /** * The name for the token that has approvals. */\n token_address_label: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n ticker_symbol: string;\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The contract logo URL. */\n logo_url: string;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n /** * Wallet balance of the token. */\n balance: bigint | null;\n /** * Value of the wallet balance of the token. */\n balance_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_balance_quote: string;\n /** * Total amount at risk across all spenders. */\n value_at_risk: string;\n /** * Value of total amount at risk across all spenders. */\n value_at_risk_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_value_at_risk_quote: string;\n /** * Contracts with non-zero approvals for this token. */\n spenders: TokenSpenderItem[];\n\n constructor(data: TokensApprovalItem) {\n this.token_address = data.token_address;\n this.token_address_label = data.token_address_label;\n this.ticker_symbol = data.ticker_symbol;\n this.contract_decimals = data.contract_decimals;\n this.logo_url = data.logo_url;\n this.quote_rate = data.quote_rate;\n this.balance = data.balance && data.balance !== null ? BigInt(data.balance) : null;\n this.balance_quote = data.balance_quote;\n this.pretty_balance_quote = data.pretty_balance_quote;\n this.value_at_risk = data.value_at_risk;\n this.value_at_risk_quote = data.value_at_risk_quote;\n this.pretty_value_at_risk_quote = data.pretty_value_at_risk_quote;\n this.spenders = data.spenders && data.spenders !== null ? data.spenders.map((itemData: TokenSpenderItem) => new TokenSpenderItem(itemData)) : null;\n }\n}\nclass TokenSpenderItem {\n /** * The height of the block. */\n block_height: number;\n /** * The offset is the position of the tx in the block. */\n tx_offset: number;\n /** * The offset is the position of the log entry within an event log.\" */\n log_offset: number;\n /** * The block signed timestamp in UTC. */\n block_signed_at: Date;\n /** * Most recent transaction that updated approval amounts for the token. */\n tx_hash: string;\n /** * Address of the contract with approval for the token. */\n spender_address: string;\n /** * Name of the contract with approval for the token. */\n spender_address_label: string;\n /** * Remaining number of tokens granted to the spender by the approval. */\n allowance: string;\n /** * Value of the remaining allowance specified by the approval. */\n allowance_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_allowance_quote: string;\n /** * Amount at risk for spender. */\n value_at_risk: string;\n /** * Value of amount at risk for spender. */\n value_at_risk_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_value_at_risk_quote: string;\n risk_factor: string;\n\n constructor(data: TokenSpenderItem) {\n this.block_height = data.block_height;\n this.tx_offset = data.tx_offset;\n this.log_offset = data.log_offset;\n this.block_signed_at = data.block_signed_at && data.block_signed_at !== null ? parseISO(data.block_signed_at.toString()) : null;\n this.tx_hash = data.tx_hash;\n this.spender_address = data.spender_address;\n this.spender_address_label = data.spender_address_label;\n this.allowance = data.allowance;\n this.allowance_quote = data.allowance_quote;\n this.pretty_allowance_quote = data.pretty_allowance_quote;\n this.value_at_risk = data.value_at_risk;\n this.value_at_risk_quote = data.value_at_risk_quote;\n this.pretty_value_at_risk_quote = data.pretty_value_at_risk_quote;\n this.risk_factor = data.risk_factor;\n \n }\n}\n\nclass NftApprovalsResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * The requested address. */\n address: string;\n /** * List of response items. */\n items: NftApprovalsItem[];\n\n constructor(data: NftApprovalsResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.address = data.address;\n this.items = data.items && data.items !== null ? data.items.map((itemData: NftApprovalsItem) => new NftApprovalsItem(itemData)) : null;\n }\n}\nclass NftApprovalsItem {\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * The label of the contract address. */\n contract_address_label: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * List of asset balances held by the user. */\n token_balances: NftApprovalBalance[];\n /** * Contracts with non-zero approvals for this token. */\n spenders: NftApprovalSpender[];\n\n constructor(data: NftApprovalsItem) {\n this.contract_address = data.contract_address;\n this.contract_address_label = data.contract_address_label;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.token_balances = data.token_balances && data.token_balances !== null ? data.token_balances.map((itemData: NftApprovalBalance) => new NftApprovalBalance(itemData)) : null;\n this.spenders = data.spenders && data.spenders !== null ? data.spenders.map((itemData: NftApprovalSpender) => new NftApprovalSpender(itemData)) : null;\n }\n}\nclass NftApprovalBalance {\n /** * The token's id. */\n token_id: bigint | null;\n /** * The NFT's token balance. */\n token_balance: bigint | null;\n\n constructor(data: NftApprovalBalance) {\n this.token_id = data.token_id && data.token_id !== null ? BigInt(data.token_id) : null;\n this.token_balance = data.token_balance && data.token_balance !== null ? BigInt(data.token_balance) : null;\n \n }\n}\nclass NftApprovalSpender {\n /** * The height of the block. */\n block_height: number;\n /** * The offset is the position of the tx in the block. */\n tx_offset: number;\n /** * The offset is the position of the log entry within an event log.\" */\n log_offset: number;\n /** * The block signed timestamp in UTC. */\n block_signed_at: Date;\n /** * Most recent transaction that updated approval amounts for the token. */\n tx_hash: string;\n /** * Address of the contract with approval for the token. */\n spender_address: string;\n /** * Name of the contract with approval for the token. */\n spender_address_label: string;\n /** * The token ids approved. */\n token_ids_approved: string;\n /** * Remaining number of tokens granted to the spender by the approval. */\n allowance: string;\n\n constructor(data: NftApprovalSpender) {\n this.block_height = data.block_height;\n this.tx_offset = data.tx_offset;\n this.log_offset = data.log_offset;\n this.block_signed_at = data.block_signed_at && data.block_signed_at !== null ? parseISO(data.block_signed_at.toString()) : null;\n this.tx_hash = data.tx_hash;\n this.spender_address = data.spender_address;\n this.spender_address_label = data.spender_address_label;\n this.token_ids_approved = data.token_ids_approved;\n this.allowance = data.allowance;\n \n }\n}\n\n/**\n * Approvals API\n * \n */\n\nexport class SecurityService {\n private LIMIT;\n constructor(private apiKey: string, private debug: boolean = false, private threadCount: number = 3, private is_key_valid: boolean, private enableRetry: boolean = true, private source: Source) {\n this.LIMIT = pLimit(this.threadCount);\n }\n \n\n\n /**\n *\n * Commonly used to get a list of approvals across all token contracts categorized by spenders for a wallet’s assets.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n *\n */\n public async getApprovals(chainName: Chain | Chains | ChainID, walletAddress: string): Promise<Response<ApprovalsResponse>> {\n let success = false;\n let data: Response<ApprovalsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<ApprovalsResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n const url = `https://api.covalenthq.com/v1/${chainName}/approvals/${walletAddress}/?${urlParams}`;\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/approvals/${walletAddress}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n \n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new ApprovalsResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n /**\n *\n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n \n *\n */\n public async getNftApprovals(chainName: Chain | Chains | ChainID, walletAddress: string): Promise<Response<NftApprovalsResponse>> {\n let success = false;\n let data: Response<NftApprovalsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NftApprovalsResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n const url = `https://api.covalenthq.com/v1/${chainName}/nft/approvals/${walletAddress}/?${urlParams}`;\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n \n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/nft/approvals/${walletAddress}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n \n const dataClass = new NftApprovalsResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n } \n\n}\n \n ","import { Chain, Quote, userAgent, Response, ChainID, Source } from \"./CovalentClient\";\nimport { debugOutput, paginateEndpoint } from \"../util/ApiHelpers\";\nimport { parseISO } from \"date-fns\";\nimport { ExponentialBackoff } from \"../util/backoff\";\nimport pLimit from \"p-limit\";\nimport { Chains } from \"../util/Chains\";\nimport { ApiKeyValidator } from \"../util/ApiKeyValidator\";\n\nclass BalancesResponse {\n /** * The requested address. */\n address: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * List of response items. */\n items: BalanceItem[];\n\n constructor(data: BalancesResponse) {\n this.address = data.address;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.quote_currency = data.quote_currency;\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: BalanceItem) => new BalanceItem(itemData)) : null;\n }\n}\nclass BalanceItem {\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * A display-friendly name for the contract. */\n contract_display_name: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The contract logo URL. */\n logo_url: string;\n /** * The contract logo URLs. */\n logo_urls: LogoUrls;\n /** * The timestamp when the token was transferred. */\n last_transferred_at: Date;\n /** * Indicates if a token is the chain's native gas token, eg: ETH on Ethereum. */\n native_token: boolean;\n /** * One of `cryptocurrency`, `stablecoin`, `nft` or `dust`. */\n type: string;\n /** * Denotes whether the token is suspected spam. */\n is_spam: boolean;\n /** * The asset balance. Use `contract_decimals` to scale this balance for display purposes. */\n balance: bigint | null;\n /** * The 24h asset balance. Use `contract_decimals` to scale this balance for display purposes. */\n balance_24h: bigint | null;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n /** * The 24h exchange rate for the requested quote currency. */\n quote_rate_24h: number;\n /** * The current balance converted to fiat in `quote-currency`. */\n quote: number;\n /** * The 24h balance converted to fiat in `quote-currency`. */\n quote_24h: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_quote: string;\n /** * A prettier version of the 24h quote for rendering purposes. */\n pretty_quote_24h: string;\n /** * The protocol metadata. */\n protocol_metadata: ProtocolMetadata;\n /** * NFT-specific data. */\n nft_data: BalanceNftData[];\n\n constructor(data: BalanceItem) {\n this.contract_decimals = data.contract_decimals;\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.contract_display_name = data.contract_display_name;\n this.supports_erc = data.supports_erc;\n this.logo_url = data.logo_url;\n this.last_transferred_at = data.last_transferred_at && data.last_transferred_at !== null ? parseISO(data.last_transferred_at.toString()) : null;\n this.native_token = data.native_token;\n this.type = data.type;\n this.is_spam = data.is_spam;\n this.balance = data.balance && data.balance !== null ? BigInt(data.balance) : null;\n this.balance_24h = data.balance_24h && data.balance_24h !== null ? BigInt(data.balance_24h) : null;\n this.quote_rate = data.quote_rate;\n this.quote_rate_24h = data.quote_rate_24h;\n this.quote = data.quote;\n this.quote_24h = data.quote_24h;\n this.pretty_quote = data.pretty_quote;\n this.pretty_quote_24h = data.pretty_quote_24h;\n this.logo_urls = data.logo_urls && data.logo_urls !== null ? new LogoUrls(data.logo_urls) : null;\n this.protocol_metadata = data.protocol_metadata && data.protocol_metadata !== null ? new ProtocolMetadata(data.protocol_metadata) : null;\n this.nft_data = data.nft_data && data.nft_data !== null ? data.nft_data.map((itemData: BalanceNftData) => new BalanceNftData(itemData)) : null;\n }\n}\nclass LogoUrls {\n /** * The token logo URL. */\n token_logo_url: string;\n /** * The protocol logo URL. */\n protocol_logo_url: string;\n /** * The chain logo URL. */\n chain_logo_url: string;\n\n constructor(data: LogoUrls) {\n this.token_logo_url = data.token_logo_url;\n this.protocol_logo_url = data.protocol_logo_url;\n this.chain_logo_url = data.chain_logo_url;\n \n }\n}\nclass ProtocolMetadata {\n /** * The name of the protocol. */\n protocol_name: string;\n\n constructor(data: ProtocolMetadata) {\n this.protocol_name = data.protocol_name;\n \n }\n}\n\nclass BalanceNftData {\n /** * The token's id. */\n token_id: bigint | null;\n /** * The count of the number of NFTs with this ID. */\n token_balance: bigint | null;\n /** * External URL for additional metadata. */\n token_url: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The latest price value on chain of the token ID. */\n token_price_wei: bigint | null;\n /** * The latest quote_rate of the token ID denominated in unscaled ETH. */\n token_quote_rate_eth: string;\n /** * The address of the original owner of this NFT. */\n original_owner: string;\n external_data: NftExternalDataV1;\n /** * The current owner of this NFT. */\n owner: string;\n /** * The address of the current owner of this NFT. */\n owner_address: string;\n /** * When set to true, this NFT has been Burned. */\n burned: boolean;\n\n constructor(data: BalanceNftData) {\n this.token_id = data.token_id && data.token_id !== null ? BigInt(data.token_id) : null;\n this.token_balance = data.token_balance && data.token_balance !== null ? BigInt(data.token_balance) : null;\n this.token_url = data.token_url;\n this.supports_erc = data.supports_erc;\n this.token_price_wei = data.token_price_wei && data.token_price_wei !== null ? BigInt(data.token_price_wei) : null;\n this.token_quote_rate_eth = data.token_quote_rate_eth;\n this.original_owner = data.original_owner;\n this.owner = data.owner;\n this.owner_address = data.owner_address;\n this.burned = data.burned;\n this.external_data = data.external_data && data.external_data !== null ? new NftExternalDataV1(data.external_data) : null;\n }\n}\nclass NftExternalDataV1 {\n name: string;\n description: string;\n image: string;\n image_256: string;\n image_512: string;\n image_1024: string;\n animation_url: string;\n external_url: string;\n attributes: NftCollectionAttribute[];\n owner: string;\n\n constructor(data: NftExternalDataV1) {\n this.name = data.name;\n this.description = data.description;\n this.image = data.image;\n this.image_256 = data.image_256;\n this.image_512 = data.image_512;\n this.image_1024 = data.image_1024;\n this.animation_url = data.animation_url;\n this.external_url = data.external_url;\n this.owner = data.owner;\n this.attributes = data.attributes && data.attributes !== null ? data.attributes.map((itemData: NftCollectionAttribute) => new NftCollectionAttribute(itemData)) : null;\n }\n}\nclass NftCollectionAttribute {\n trait_type: string;\n value: string;\n\n constructor(data: NftCollectionAttribute) {\n this.trait_type = data.trait_type;\n this.value = data.value;\n \n }\n}\nclass PortfolioResponse {\n /** * The requested address. */\n address: string;\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: PortfolioItem[];\n\n constructor(data: PortfolioResponse) {\n this.address = data.address;\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.quote_currency = data.quote_currency;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: PortfolioItem) => new PortfolioItem(itemData)) : null;\n }\n}\nclass PortfolioItem {\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * The contract logo URL. */\n logo_url: string;\n holdings: HoldingItem[];\n\n constructor(data: PortfolioItem) {\n this.contract_address = data.contract_address;\n this.contract_decimals = data.contract_decimals;\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.logo_url = data.logo_url;\n this.holdings = data.holdings && data.holdings !== null ? data.holdings.map((itemData: HoldingItem) => new HoldingItem(itemData)) : null;\n }\n}\nclass HoldingItem {\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n timestamp: Date;\n close: OhlcItem;\n high: OhlcItem;\n low: OhlcItem;\n open: OhlcItem;\n\n constructor(data: HoldingItem) {\n this.quote_rate = data.quote_rate;\n this.timestamp = data.timestamp && data.timestamp !== null ? parseISO(data.timestamp.toString()) : null;\n this.close = data.close && data.close !== null ? new OhlcItem(data.close) : null;\n this.high = data.high && data.high !== null ? new OhlcItem(data.high) : null;\n this.low = data.low && data.low !== null ? new OhlcItem(data.low) : null;\n this.open = data.open && data.open !== null ? new OhlcItem(data.open) : null;\n }\n}\nclass OhlcItem {\n /** * The asset balance. Use `contract_decimals` to scale this balance for display purposes. */\n balance: bigint | null;\n /** * The current balance converted to fiat in `quote-currency`. */\n quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_quote: string;\n\n constructor(data: OhlcItem) {\n this.balance = data.balance && data.balance !== null ? BigInt(data.balance) : null;\n this.quote = data.quote;\n this.pretty_quote = data.pretty_quote;\n \n }\n}\nclass Erc20TransfersResponse {\n /** * The requested address. */\n address: string;\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: BlockTransactionWithContractTransfers[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: Erc20TransfersResponse) {\n this.address = data.address;\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.quote_currency = data.quote_currency;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: BlockTransactionWithContractTransfers) => new BlockTransactionWithContractTransfers(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass BlockTransactionWithContractTransfers {\n /** * The block signed timestamp in UTC. */\n block_signed_at: Date;\n /** * The height of the block. */\n block_height: number;\n /** * The hash of the block. Use it to remove transactions from re-org-ed blocks. */\n block_hash: string;\n /** * The requested transaction hash. */\n tx_hash: string;\n /** * The offset is the position of the tx in the block. */\n tx_offset: number;\n /** * Whether or not transaction is successful. */\n successful: boolean;\n /** * The address of the miner. */\n miner_address: string;\n /** * The sender's wallet address. */\n from_address: string;\n /** * The label of `from` address. */\n from_address_label: string;\n /** * The receiver's wallet address. */\n to_address: string;\n /** * The label of `to` address. */\n to_address_label: string;\n /** * The value attached to this tx. */\n value: bigint | null;\n /** * The value attached in `quote-currency` to this tx. */\n value_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_value_quote: string;\n /** * The requested chain native gas token metadata. */\n gas_metadata: ContractMetadata;\n gas_offered: number;\n /** * The gas spent for this tx. */\n gas_spent: number;\n /** * The gas price at the time of this tx. */\n gas_price: number;\n /** * The transaction's gas_price * gas_spent, denoted in wei. */\n fees_paid: bigint | null;\n /** * The gas spent in `quote-currency` denomination. */\n gas_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_gas_quote: string;\n /** * The native gas exchange rate for the requested `quote-currency`. */\n gas_quote_rate: number;\n transfers: TokenTransferItem[];\n\n constructor(data: BlockTransactionWithContractTransfers) {\n this.block_signed_at = data.block_signed_at && data.block_signed_at !== null ? parseISO(data.block_signed_at.toString()) : null;\n this.block_height = data.block_height;\n this.block_hash = data.block_hash;\n this.tx_hash = data.tx_hash;\n this.tx_offset = data.tx_offset;\n this.successful = data.successful;\n this.miner_address = data.miner_address;\n this.from_address = data.from_address;\n this.from_address_label = data.from_address_label;\n this.to_address = data.to_address;\n this.to_address_label = data.to_address_label;\n this.value = data.value && data.value !== null ? BigInt(data.value) : null;\n this.value_quote = data.value_quote;\n this.pretty_value_quote = data.pretty_value_quote;\n this.gas_offered = data.gas_offered;\n this.gas_spent = data.gas_spent;\n this.gas_price = data.gas_price;\n this.fees_paid = data.fees_paid && data.fees_paid !== null ? BigInt(data.fees_paid) : null;\n this.gas_quote = data.gas_quote;\n this.pretty_gas_quote = data.pretty_gas_quote;\n this.gas_quote_rate = data.gas_quote_rate;\n this.gas_metadata = data.gas_metadata && data.gas_metadata !== null ? new ContractMetadata(data.gas_metadata) : null;\n this.transfers = data.transfers && data.transfers !== null ? data.transfers.map((itemData: TokenTransferItem) => new TokenTransferItem(itemData)) : null;\n }\n}\nclass Pagination {\n /** * True is there is another page. */\n has_more: boolean;\n /** * The requested page number. */\n page_number: number;\n /** * The requested number of items on the current page. */\n page_size: number;\n /** * The total number of items across all pages for this request. */\n total_count: number;\n\n constructor(data: Pagination) {\n this.has_more = data.has_more;\n this.page_number = data.page_number;\n this.page_size = data.page_size;\n this.total_count = data.total_count;\n \n }\n}\nclass ContractMetadata {\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The contract logo URL. */\n logo_url: string;\n\n constructor(data: ContractMetadata) {\n this.contract_decimals = data.contract_decimals;\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.supports_erc = data.supports_erc;\n this.logo_url = data.logo_url;\n \n }\n}\nclass Explorer {\n /** * The name of the explorer. */\n label: string;\n /** * The URL of the explorer. */\n url: string;\n\n constructor(data: Explorer) {\n this.label = data.label;\n this.url = data.url;\n \n }\n}\nclass TokenTransferItem {\n /** * The block signed timestamp in UTC. */\n block_signed_at: Date;\n /** * The requested transaction hash. */\n tx_hash: string;\n /** * The sender's wallet address. */\n from_address: string;\n /** * The label of `from` address. */\n from_address_label: string;\n /** * The receiver's wallet address. */\n to_address: string;\n /** * The label of `to` address. */\n to_address_label: string;\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * The contract logo URL. */\n logo_url: string;\n /** * Categorizes token transactions as either `transfer-in` or `transfer-out`, indicating whether tokens are being received or sent from an account. */\n transfer_type: string;\n /** * The delta attached to this transfer. */\n delta: bigint | null;\n /** * The asset balance. Use `contract_decimals` to scale this balance for display purposes. */\n balance: bigint | null;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n /** * The current delta converted to fiat in `quote-currency`. */\n delta_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_delta_quote: string;\n /** * The current balance converted to fiat in `quote-currency`. */\n balance_quote: number;\n /** * Additional details on which transfer events were invoked. Defaults to `true`. */\n method_calls: MethodCallsForTransfers[];\n /** * The explorer links for this transaction. */\n explorers: Explorer[];\n\n constructor(data: TokenTransferItem) {\n this.block_signed_at = data.block_signed_at && data.block_signed_at !== null ? parseISO(data.block_signed_at.toString()) : null;\n this.tx_hash = data.tx_hash;\n this.from_address = data.from_address;\n this.from_address_label = data.from_address_label;\n this.to_address = data.to_address;\n this.to_address_label = data.to_address_label;\n this.contract_decimals = data.contract_decimals;\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.logo_url = data.logo_url;\n this.transfer_type = data.transfer_type;\n this.delta = data.delta && data.delta !== null ? BigInt(data.delta) : null;\n this.balance = data.balance && data.balance !== null ? BigInt(data.balance) : null;\n this.quote_rate = data.quote_rate;\n this.delta_quote = data.delta_quote;\n this.pretty_delta_quote = data.pretty_delta_quote;\n this.balance_quote = data.balance_quote;\n this.method_calls = data.method_calls && data.method_calls !== null ? data.method_calls.map((itemData: MethodCallsForTransfers) => new MethodCallsForTransfers(itemData)) : null;\n this.explorers = data.explorers && data.explorers !== null ? data.explorers.map((itemData: Explorer) => new Explorer(itemData)) : null;\n }\n}\nclass MethodCallsForTransfers {\n /** * The address of the sender. */\n sender_address: string;\n method: string;\n\n constructor(data: MethodCallsForTransfers) {\n this.sender_address = data.sender_address;\n this.method = data.method;\n \n }\n}\nclass TokenHoldersResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: TokenHolder[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: TokenHoldersResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: TokenHolder) => new TokenHolder(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass TokenHolder {\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The contract logo URL. */\n logo_url: string;\n /** * The requested address. */\n address: string;\n /** * The asset balance. Use `contract_decimals` to scale this balance for display purposes. */\n balance: bigint | null;\n /** * Total supply of this token. */\n total_supply: bigint | null;\n /** * The height of the block. */\n block_height: number;\n\n constructor(data: TokenHolder) {\n this.contract_decimals = data.contract_decimals;\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.supports_erc = data.supports_erc;\n this.logo_url = data.logo_url;\n this.address = data.address;\n this.balance = data.balance && data.balance !== null ? BigInt(data.balance) : null;\n this.total_supply = data.total_supply && data.total_supply !== null ? BigInt(data.total_supply) : null;\n this.block_height = data.block_height;\n \n }\n}\nclass HistoricalBalancesResponse {\n /** * The requested address. */\n address: string;\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: HistoricalBalanceItem[];\n\n constructor(data: HistoricalBalancesResponse) {\n this.address = data.address;\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.quote_currency = data.quote_currency;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: HistoricalBalanceItem) => new HistoricalBalanceItem(itemData)) : null;\n }\n}\nclass HistoricalBalanceItem {\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The contract logo URL. */\n logo_url: string;\n /** * The height of the block. */\n block_height: number;\n /** * The block height when the token was last transferred. */\n last_transferred_block_height: number;\n contract_display_name: string;\n /** * The timestamp when the token was transferred. */\n last_transferred_at: Date;\n /** * Indicates if a token is the chain's native gas token, eg: ETH on Ethereum. */\n native_token: boolean;\n /** * One of `cryptocurrency`, `stablecoin`, `nft` or `dust`. */\n type: string;\n /** * Denotes whether the token is suspected spam. */\n is_spam: boolean;\n /** * The asset balance. Use `contract_decimals` to scale this balance for display purposes. */\n balance: bigint | null;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n /** * The current balance converted to fiat in `quote-currency`. */\n quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_quote: string;\n /** * The protocol metadata. */\n protocol_metadata: ProtocolMetadata;\n /** * NFT-specific data. */\n nft_data: BalanceNftData[];\n\n constructor(data: HistoricalBalanceItem) {\n this.contract_decimals = data.contract_decimals;\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.supports_erc = data.supports_erc;\n this.logo_url = data.logo_url;\n this.block_height = data.block_height;\n this.last_transferred_block_height = data.last_transferred_block_height;\n this.contract_display_name = data.contract_display_name;\n this.last_transferred_at = data.last_transferred_at && data.last_transferred_at !== null ? parseISO(data.last_transferred_at.toString()) : null;\n this.native_token = data.native_token;\n this.type = data.type;\n this.is_spam = data.is_spam;\n this.balance = data.balance && data.balance !== null ? BigInt(data.balance) : null;\n this.quote_rate = data.quote_rate;\n this.quote = data.quote;\n this.pretty_quote = data.pretty_quote;\n this.protocol_metadata = data.protocol_metadata && data.protocol_metadata !== null ? new ProtocolMetadata(data.protocol_metadata) : null;\n this.nft_data = data.nft_data && data.nft_data !== null ? data.nft_data.map((itemData: BalanceNftData) => new BalanceNftData(itemData)) : null;\n }\n}\n\nclass TokenBalanceNativeResponse {\n /** * The requested address. */\n address: string;\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: NativeBalanceItem[];\n\n constructor(data: TokenBalanceNativeResponse) {\n this.address = data.address;\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.quote_currency = data.quote_currency;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: NativeBalanceItem) => new NativeBalanceItem(itemData)) : null;\n }\n}\nclass NativeBalanceItem {\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The contract logo URL. */\n logo_url: string;\n /** * The height of the block. */\n block_height: number;\n /** * The asset balance. Use `contract_decimals` to scale this balance for display purposes. */\n balance: bigint | null;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n /** * The current balance converted to fiat in `quote-currency`. */\n quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_quote: string;\n\n constructor(data: NativeBalanceItem) {\n this.contract_decimals = data.contract_decimals;\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.supports_erc = data.supports_erc;\n this.logo_url = data.logo_url;\n this.block_height = data.block_height;\n this.balance = data.balance && data.balance !== null ? BigInt(data.balance) : null;\n this.quote_rate = data.quote_rate;\n this.quote = data.quote;\n this.pretty_quote = data.pretty_quote;\n \n }\n}\n\nexport interface GetTokenBalancesForWalletAddressQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * If `true`, NFTs will be included in the response. */\n nft?: boolean;\n /** * If `true`, only NFTs that have been cached will be included in the response. Helpful for faster response times. */\n noNftFetch?: boolean;\n /** * If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`. */\n noSpam?: boolean;\n /** * If `true`, the response shape is limited to a list of collections and token ids, omitting metadata and asset information. Helpful for faster response times and wallets holding a large number of NFTs. */\n noNftAssetMetadata?: boolean;\n}\nexport interface GetHistoricalPortfolioForWalletAddressQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * The number of days to return data for. Defaults to 30 days. */\n days?: number;\n}\nexport interface GetErc20TransfersForWalletAddressQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * The requested contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically. */\n contractAddress?: string;\n /** * The block height to start from, defaults to `0`. */\n startingBlock?: number;\n /** * The block height to end at, defaults to current block height. */\n endingBlock?: number;\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n /** * 0-indexed page number to begin pagination. */\n pageNumber?: number;\n}\nexport interface GetTokenHoldersV2ForTokenAddressQueryParamOpts {\n /** * Ending block to define a block range. Omitting this parameter defaults to the latest block height. */\n blockHeight?: number | string;\n /** * Ending date to define a block range (YYYY-MM-DD). Omitting this parameter defaults to the current date. */\n date?: string;\n /** * Number of items per page. Note: Currently, only values of `100` and `1000` are supported. Omitting this parameter defaults to 100. */\n pageSize?: number;\n /** * 0-indexed page number to begin pagination. */\n pageNumber?: number;\n}\nexport interface GetHistoricalTokenBalancesForWalletAddressQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * If `true`, NFTs will be included in the response. */\n nft?: boolean;\n /** * If `true`, only NFTs that have been cached will be included in the response. Helpful for faster response times. */\n noNftFetch?: boolean;\n /** * If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`. */\n noSpam?: boolean;\n /** * If `true`, the response shape is limited to a list of collections and token ids, omitting metadata and asset information. Helpful for faster response times and wallets holding a large number of NFTs. */\n noNftAssetMetadata?: boolean;\n /** * Ending block to define a block range. Omitting this parameter defaults to the latest block height. */\n blockHeight?: number | string;\n /** * Ending date to define a block range (YYYY-MM-DD). Omitting this parameter defaults to the current date. */\n date?: string;\n}\nexport interface GetNativeTokenBalanceQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * Ending block to define a block range. Omitting this parameter defaults to the latest block height. */\n blockHeight?: number | string;\n}\n/**\n * Balances APIs\n * \n */\nexport class BalanceService {\n private LIMIT;\n constructor(private apiKey: string, private debug: boolean = false, private threadCount: number = 3, private is_key_valid: boolean, private enableRetry: boolean = true, private source: Source) {\n this.LIMIT = pLimit(this.threadCount);\n }\n\n\n /**\n *\n * Commonly used to fetch the native, fungible (ERC20), and non-fungible (ERC721 & ERC1155) tokens held by an address. Response includes spot prices and other metadata.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetTokenBalancesForWalletAddressQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `nft`: If `true`, NFTs will be included in the response.\n * - `noNftFetch`: If `true`, only NFTs that have been cached will be included in the response. Helpful for faster response times.\n * - `noSpam`: If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`.\n * - `noNftAssetMetadata`: If `true`, the response shape is limited to a list of collections and token ids, omitting metadata and asset information. Helpful for faster response times and wallets holding a large number of NFTs.\n *\n */\n public async getTokenBalancesForWalletAddress(chainName: Chain | Chains | ChainID, walletAddress: string, queryParamOpts?: GetTokenBalancesForWalletAddressQueryParamOpts): Promise<Response<BalancesResponse>> {\n let success = false;\n let data: Response<BalancesResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<BalancesResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.nft !== undefined) {\n urlParams.append(\"nft\", queryParamOpts?.nft.toString());\n }\n \n if (queryParamOpts?.noNftFetch !== undefined) {\n urlParams.append(\"no-nft-fetch\", queryParamOpts?.noNftFetch.toString());\n }\n \n if (queryParamOpts?.noSpam !== undefined) {\n urlParams.append(\"no-spam\", queryParamOpts?.noSpam.toString());\n }\n \n if (queryParamOpts?.noNftAssetMetadata !== undefined) {\n urlParams.append(\"no-nft-asset-metadata\", queryParamOpts?.noNftAssetMetadata.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/balances_v2/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/balances_v2/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n \n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new BalancesResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to render a daily portfolio balance for an address broken down by the token. The timeframe is user-configurable, defaults to 30 days.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetHistoricalPortfolioForWalletAddressQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `days`: The number of days to return data for. Defaults to 30 days.\n *\n */\n public async getHistoricalPortfolioForWalletAddress(chainName: Chain | Chains | ChainID, walletAddress: string, queryParamOpts?: GetHistoricalPortfolioForWalletAddressQueryParamOpts): Promise<Response<PortfolioResponse>> {\n let success = false;\n let data: Response<PortfolioResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<PortfolioResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.days !== undefined) {\n urlParams.append(\"days\", queryParamOpts?.days.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/portfolio_v2/?${urlParams}`;\n \n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/portfolio_v2/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new PortfolioResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to render the transfer-in and transfer-out of a token along with historical prices from an address.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetErc20TransfersForWalletAddressQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `contractAddress`: The requested contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * - `startingBlock`: The block height to start from, defaults to `0`.\n * - `endingBlock`: The block height to end at, defaults to current block height.\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async* getErc20TransfersForWalletAddress(chainName: Chain | Chains | ChainID, walletAddress: string, queryParamOpts?: GetErc20TransfersForWalletAddressQueryParamOpts): AsyncIterable<BlockTransactionWithContractTransfers> {\n let success = false;\n let res: BlockTransactionWithContractTransfers;\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n throw new Error(`An error occurred 401: ${ApiKeyValidator.INVALID_API_KEY_MESSAGE}`);\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.contractAddress !== undefined) {\n urlParams.append(\"contract-address\", queryParamOpts?.contractAddress.toString());\n }\n \n if (queryParamOpts?.startingBlock !== undefined) {\n urlParams.append(\"starting-block\", queryParamOpts?.startingBlock.toString());\n }\n \n if (queryParamOpts?.endingBlock !== undefined) {\n urlParams.append(\"ending-block\", queryParamOpts?.endingBlock.toString());\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n\n for await (res of paginateEndpoint<BlockTransactionWithContractTransfers, Erc20TransfersResponse>(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transfers_v2/`, this.apiKey, urlParams, BlockTransactionWithContractTransfers, this.debug, this.threadCount, this.enableRetry, this.source)) {\n yield res;\n }\n\n success = true;\n } catch (error) {\n success = true;\n throw new Error(error.message);\n }\n }\n }\n\n /**\n *\n * Commonly used to render the transfer-in and transfer-out of a token along with historical prices from an address.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetErc20TransfersForWalletAddressQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `contractAddress`: The requested contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * - `startingBlock`: The block height to start from, defaults to `0`.\n * - `endingBlock`: The block height to end at, defaults to current block height.\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async getErc20TransfersForWalletAddressByPage(chainName: Chain | Chains | ChainID, walletAddress: string, queryParamOpts?: GetErc20TransfersForWalletAddressQueryParamOpts): Promise<Response<Erc20TransfersResponse>> {\n let success = false;\n let data: Response<Erc20TransfersResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<Erc20TransfersResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.contractAddress !== undefined) {\n urlParams.append(\"contract-address\", queryParamOpts?.contractAddress.toString());\n }\n \n if (queryParamOpts?.startingBlock !== undefined) {\n urlParams.append(\"starting-block\", queryParamOpts?.startingBlock.toString());\n }\n \n if (queryParamOpts?.endingBlock !== undefined) {\n urlParams.append(\"ending-block\", queryParamOpts?.endingBlock.toString());\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transfers_v2/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transfers_v2/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new Erc20TransfersResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get a list of all the token holders for a specified ERC20 or ERC721 token. Returns historic token holders when block-height is set (defaults to `latest`). Useful for building pie charts of token holders.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} tokenAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetTokenHoldersV2ForTokenAddressQueryParamOpts} queryParamOpts\n * - `blockHeight`: Ending block to define a block range. Omitting this parameter defaults to the latest block height.\n * - `pageSize`: Number of items per page. Note: Currently, only values of `100` and `1000` are supported. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n * - `date`: Ending date to define a block range (YYYY-MM-DD). Omitting this parameter defaults to the current date.\n * \n */\n public async* getTokenHoldersV2ForTokenAddress(chainName: Chain | Chains | ChainID, tokenAddress: string, queryParamOpts?: GetTokenHoldersV2ForTokenAddressQueryParamOpts): AsyncIterable<TokenHolder> {\n let success = false;\n let res: TokenHolder;\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n throw new Error(`An error occurred 401: ${ApiKeyValidator.INVALID_API_KEY_MESSAGE}`);\n }\n \n if (queryParamOpts?.blockHeight !== undefined) {\n urlParams.append(\"block-height\", queryParamOpts?.blockHeight.toString());\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n\n if (queryParamOpts?.date !== undefined) {\n urlParams.append(\"date\", queryParamOpts?.date.toString());\n }\n\n for await (res of paginateEndpoint<TokenHolder, TokenHoldersResponse>(`https://api.covalenthq.com/v1/${chainName}/tokens/${tokenAddress}/token_holders_v2/`, this.apiKey, urlParams, TokenHolder, this.debug, this.threadCount, this.enableRetry, this.source)) {\n yield res;\n }\n\n success = true;\n } catch (error) {\n success = true;\n throw new Error(error.message);\n }\n }\n }\n\n /**\n *\n * Commonly used to get a list of all the token holders for a specified ERC20 or ERC721 token. Returns historic token holders when block-height is set (defaults to `latest`). Useful for building pie charts of token holders.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} tokenAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetTokenHoldersV2ForTokenAddressQueryParamOpts} queryParamOpts\n * - `blockHeight`: Ending block to define a block range. Omitting this parameter defaults to the latest block height.\n * - `pageSize`: Number of items per page. Note: Currently, only values of `100` and `1000` are supported. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n * - `date`: Ending date to define a block range (YYYY-MM-DD). Omitting this parameter defaults to the current date.\n *\n */\n public async getTokenHoldersV2ForTokenAddressByPage(chainName: Chain | Chains | ChainID, tokenAddress: string, queryParamOpts?: GetTokenHoldersV2ForTokenAddressQueryParamOpts): Promise<Response<TokenHoldersResponse>> {\n let success = false;\n let data: Response<TokenHoldersResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TokenHoldersResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.blockHeight !== undefined) {\n urlParams.append(\"block-height\", queryParamOpts?.blockHeight.toString());\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n\n if (queryParamOpts?.date !== undefined) {\n urlParams.append(\"date\", queryParamOpts?.date.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/tokens/${tokenAddress}/token_holders_v2/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/tokens/${tokenAddress}/token_holders_v2/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TokenHoldersResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n /**\n *\n * Commonly used to fetch the historical native, fungible (ERC20), and non-fungible (ERC721 & ERC1155) tokens held by an address at a given block height or date. Response includes daily prices and other metadata.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetHistoricalTokenBalancesForWalletAddressQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `nft`: If `true`, NFTs will be included in the response.\n * - `noNftFetch`: If `true`, only NFTs that have been cached will be included in the response. Helpful for faster response times.\n * - `noSpam`: If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`.\n * - `noNftAssetMetadata`: If `true`, the response shape is limited to a list of collections and token ids, omitting metadata and asset information. Helpful for faster response times and wallets holding a large number of NFTs.\n * - `blockHeight`: Ending block to define a block range. Omitting this parameter defaults to the latest block height.\n * - `date`: Ending date to define a block range (YYYY-MM-DD). Omitting this parameter defaults to the current date.\n *\n */\n public async getHistoricalTokenBalancesForWalletAddress(chainName: Chain | Chains | ChainID, walletAddress: string, queryParamOpts?: GetHistoricalTokenBalancesForWalletAddressQueryParamOpts): Promise<Response<HistoricalBalancesResponse>> {\n let success = false;\n let data: Response<HistoricalBalancesResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<HistoricalBalancesResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.nft !== undefined) {\n urlParams.append(\"nft\", queryParamOpts?.nft.toString());\n }\n \n if (queryParamOpts?.noNftFetch !== undefined) {\n urlParams.append(\"no-nft-fetch\", queryParamOpts?.noNftFetch.toString());\n }\n \n if (queryParamOpts?.noSpam !== undefined) {\n urlParams.append(\"no-spam\", queryParamOpts?.noSpam.toString());\n }\n \n if (queryParamOpts?.noNftAssetMetadata !== undefined) {\n urlParams.append(\"no-nft-asset-metadata\", queryParamOpts?.noNftAssetMetadata.toString());\n }\n \n if (queryParamOpts?.blockHeight !== undefined) {\n urlParams.append(\"block-height\", queryParamOpts?.blockHeight.toString());\n }\n \n if (queryParamOpts?.date !== undefined) {\n urlParams.append(\"date\", queryParamOpts?.date.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/historical_balances/?${urlParams}`;\n \n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/historical_balances/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new HistoricalBalancesResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n \n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n /**\n *\n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetNativeTokenBalanceQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `blockHeight`: Ending block to define a block range. Omitting this parameter defaults to the latest block height.\n *\n */\n public async getNativeTokenBalance(chainName: Chain | Chains | ChainID, walletAddress: string, queryParamOpts?: GetNativeTokenBalanceQueryParamOpts): Promise<Response<TokenBalanceNativeResponse>> {\n let success = false;\n let data: Response<TokenBalanceNativeResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TokenBalanceNativeResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.blockHeight !== undefined) {\n urlParams.append(\"block-height\", queryParamOpts?.blockHeight.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/balances_native/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n \n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/balances_native/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n \n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n \n const dataClass = new TokenBalanceNativeResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n}","import { Chain, Quote, userAgent, Response, ChainID, Source } from \"./CovalentClient\";\nimport { debugOutput, paginateEndpoint } from \"../util/ApiHelpers\";\nimport { parseISO } from \"date-fns\";\nimport { ExponentialBackoff } from \"../util/backoff\";\nimport pLimit from \"p-limit\";\nimport { Chains } from \"../util/Chains\";\nimport { ApiKeyValidator } from \"../util/ApiKeyValidator\";\n\nclass BlockResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: Block[];\n\n constructor(data: BlockResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: Block) => new Block(itemData)) : null;\n }\n}\nclass Block {\n /** * The hash of the block. */\n block_hash: string;\n /** * The block signed timestamp in UTC. */\n signed_at: Date;\n /** * The block height. */\n height: number;\n /** * The parent block hash. */\n block_parent_hash: string;\n /** * Extra data written to the block. */\n extra_data: string;\n /** * The address of the miner. */\n miner_address: string;\n /** * The associated mining cost. */\n mining_cost: number;\n /** * The associated gas used. */\n gas_used: number;\n /** * The associated gas limit. */\n gas_limit: number;\n /** * The link to the related tx by block endpoint. */\n transactions_link: string;\n\n constructor(data: Block) {\n this.block_hash = data.block_hash;\n this.signed_at = data.signed_at && data.signed_at !== null ? parseISO(data.signed_at.toString()) : null;\n this.height = data.height;\n this.block_parent_hash = data.block_parent_hash;\n this.extra_data = data.extra_data;\n this.miner_address = data.miner_address;\n this.mining_cost = data.mining_cost;\n this.gas_used = data.gas_used;\n this.gas_limit = data.gas_limit;\n this.transactions_link = data.transactions_link;\n }\n}\nclass ResolvedAddress {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: ResolvedAddressItem[];\n\n constructor(data: ResolvedAddress) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: ResolvedAddressItem) => new ResolvedAddressItem(itemData)) : null;\n }\n}\nclass ResolvedAddressItem {\n /** * The requested address. */\n address: string;\n name: string;\n\n constructor(data: ResolvedAddressItem) {\n this.address = data.address;\n this.name = data.name;\n \n }\n}\nclass BlockHeightsResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: BlockHeights[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: BlockHeightsResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: BlockHeights) => new BlockHeights(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass BlockHeights {\n /** * The block signed timestamp in UTC. */\n signed_at: Date;\n /** * The block height. */\n height: number;\n\n constructor(data: BlockHeights) {\n this.signed_at = data.signed_at && data.signed_at !== null ? parseISO(data.signed_at.toString()) : null;\n this.height = data.height;\n \n }\n}\nclass Pagination {\n /** * True is there is another page. */\n has_more: boolean;\n /** * The requested page number. */\n page_number: number;\n /** * The requested number of items on the current page. */\n page_size: number;\n /** * The total number of items across all pages for this request. */\n total_count: number;\n\n constructor(data: Pagination) {\n this.has_more = data.has_more;\n this.page_number = data.page_number;\n this.page_size = data.page_size;\n this.total_count = data.total_count;\n \n }\n}\nclass GetLogsResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: GetLogsEvent[];\n\n constructor(data: GetLogsResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: GetLogsEvent) => new GetLogsEvent(itemData)) : null;\n }\n}\nclass GetLogsEvent {\n /** * The block signed timestamp in UTC. */\n block_signed_at: Date;\n /** * The height of the block. */\n block_height: number;\n /** * The hash of the block. */\n block_hash: string;\n /** * The offset is the position of the tx in the block. */\n tx_offset: number;\n /** * The offset is the position of the log entry within an event log. */\n log_offset: number;\n /** * The requested transaction hash. */\n tx_hash: string;\n /** * The log topics in raw data. */\n raw_log_topics: string[];\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n sender_contract_decimals: number;\n /** * The name of the sender. */\n sender_name: string;\n /** * The ticker symbol for the sender. This field is set by a developer and non-unique across a network. */\n sender_contract_ticker_symbol: string;\n /** * The address of the sender. */\n sender_address: string;\n /** * The label of the sender address. */\n sender_address_label: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The contract logo URL. */\n sender_logo_url: string;\n /** * The address of the deployed UniswapV2 like factory contract for this DEX. */\n sender_factory_address: string;\n /** * The log events in raw. */\n raw_log_data: string;\n /** * The decoded item. */\n decoded: DecodedItem;\n\n constructor(data: GetLogsEvent) {\n this.block_signed_at = data.block_signed_at && data.block_signed_at !== null ? parseISO(data.block_signed_at.toString()) : null;\n this.block_height = data.block_height;\n this.block_hash = data.block_hash;\n this.tx_offset = data.tx_offset;\n this.log_offset = data.log_offset;\n this.tx_hash = data.tx_hash;\n this.raw_log_topics = data.raw_log_topics;\n this.sender_contract_decimals = data.sender_contract_decimals;\n this.sender_name = data.sender_name;\n this.sender_contract_ticker_symbol = data.sender_contract_ticker_symbol;\n this.sender_address = data.sender_address;\n this.sender_address_label = data.sender_address_label;\n this.supports_erc = data.supports_erc;\n this.sender_logo_url = data.sender_logo_url;\n this.sender_factory_address = data.sender_factory_address;\n this.raw_log_data = data.raw_log_data;\n this.decoded = data.decoded && data.decoded !== null ? new DecodedItem(data.decoded) : null;\n }\n}\nclass DecodedItem {\n name: string;\n signature: string;\n params: Param[];\n\n constructor(data: DecodedItem) {\n this.name = data.name;\n this.signature = data.signature;\n this.params = data.params && data.params !== null ? data.params.map((itemData: Param) => new Param(itemData)) : null;\n }\n}\nclass Param {\n name: string;\n type: string;\n indexed: boolean;\n decoded: boolean;\n value: string;\n\n constructor(data: Param) {\n this.name = data.name;\n this.type = data.type;\n this.indexed = data.indexed;\n this.decoded = data.decoded;\n this.value = data.value;\n \n }\n}\nclass LogEventsByAddressResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: LogEvent[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: LogEventsByAddressResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: LogEvent) => new LogEvent(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass LogEvent {\n /** * The block signed timestamp in UTC. */\n block_signed_at: Date;\n /** * The height of the block. */\n block_height: number;\n /** * The offset is the position of the tx in the block. */\n tx_offset: number;\n /** * The offset is the position of the log entry within an event log. */\n log_offset: number;\n /** * The requested transaction hash. */\n tx_hash: string;\n /** * The log topics in raw data. */\n raw_log_topics: string[];\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n sender_contract_decimals: number;\n /** * The name of the sender. */\n sender_name: string;\n sender_contract_ticker_symbol: string;\n /** * The address of the sender. */\n sender_address: string;\n /** * The label of the sender address. */\n sender_address_label: string;\n /** * The contract logo URL. */\n sender_logo_url: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The address of the deployed UniswapV2 like factory contract for this DEX. */\n sender_factory_address: string;\n /** * The log events in raw. */\n raw_log_data: string;\n /** * The decoded item. */\n decoded: DecodedItem;\n\n constructor(data: LogEvent) {\n this.block_signed_at = data.block_signed_at && data.block_signed_at !== null ? parseISO(data.block_signed_at.toString()) : null;\n this.block_height = data.block_height;\n this.tx_offset = data.tx_offset;\n this.log_offset = data.log_offset;\n this.tx_hash = data.tx_hash;\n this.raw_log_topics = data.raw_log_topics;\n this.sender_contract_decimals = data.sender_contract_decimals;\n this.sender_name = data.sender_name;\n this.sender_contract_ticker_symbol = data.sender_contract_ticker_symbol;\n this.sender_address = data.sender_address;\n this.sender_address_label = data.sender_address_label;\n this.sender_logo_url = data.sender_logo_url;\n this.supports_erc = data.supports_erc;\n this.sender_factory_address = data.sender_factory_address;\n this.raw_log_data = data.raw_log_data;\n this.decoded = data.decoded && data.decoded !== null ? new DecodedItem(data.decoded) : null;\n }\n}\nclass LogEventsByTopicHashResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: LogEvent[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: LogEventsByTopicHashResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: LogEvent) => new LogEvent(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass AllChainsResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * List of response items. */\n items: ChainItem[];\n\n constructor(data: AllChainsResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: ChainItem) => new ChainItem(itemData)) : null;\n }\n}\nclass ChainItem {\n /** * The chain name eg: `eth-mainnet`. */\n name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n /** * True if the chain is a testnet. */\n is_testnet: boolean;\n /** * Schema name to use for direct SQL. */\n db_schema_name: string;\n /** * The chains label eg: `Ethereum Mainnet`. */\n label: string;\n /** * The category label eg: `Ethereum`. */\n category_label: string;\n /** * A svg logo url for the chain. */\n logo_url: string;\n /** * A black png logo url for the chain. */\n black_logo_url: string;\n /** * A white png logo url for the chain. */\n white_logo_url: string;\n /** * The color theme for the chain. */\n color_theme: ColorTheme;\n /** * True if the chain is an AppChain. */\n is_appchain: boolean;\n /** * The ChainItem the appchain is a part of. */\n appchain_of: ChainItem;\n\n constructor(data: ChainItem) {\n this.name = data.name;\n this.chain_id = data.chain_id;\n this.is_testnet = data.is_testnet;\n this.db_schema_name = data.db_schema_name;\n this.label = data.label;\n this.category_label = data.category_label;\n this.logo_url = data.logo_url;\n this.black_logo_url = data.black_logo_url;\n this.white_logo_url = data.white_logo_url;\n this.is_appchain = data.is_appchain;\n this.color_theme = data.color_theme && data.color_theme !== null ? new ColorTheme(data.color_theme) : null;\n this.appchain_of = data.appchain_of && data.appchain_of !== null ? new ChainItem(data.appchain_of) : null;\n }\n}\nclass ColorTheme {\n /** * The red color code. */\n red: number;\n /** * The green color code. */\n green: number;\n /** * The blue color code. */\n blue: number;\n /** * The alpha color code. */\n alpha: number;\n /** * The hexadecimal color code. */\n hex: string;\n /** * The color represented in css rgb() functional notation. */\n css_rgb: string;\n\n constructor(data: ColorTheme) {\n this.red = data.red;\n this.green = data.green;\n this.blue = data.blue;\n this.alpha = data.alpha;\n this.hex = data.hex;\n this.css_rgb = data.css_rgb;\n \n }\n}\nclass AllChainsStatusResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * List of response items. */\n items: ChainStatusItem[];\n\n constructor(data: AllChainsStatusResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: ChainStatusItem) => new ChainStatusItem(itemData)) : null;\n }\n}\nclass ChainStatusItem {\n /** * The chain name eg: `eth-mainnet`. */\n name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n /** * True if the chain is a testnet. */\n is_testnet: boolean;\n /** * A svg logo url for the chain. */\n logo_url: string;\n /** * A black png logo url for the chain. */\n black_logo_url: string;\n /** * A white png logo url for the chain. */\n white_logo_url: string;\n /** * True if the chain is an AppChain. */\n is_appchain: boolean;\n /** * The height of the lastest block available. */\n synced_block_height: number;\n /** * The signed timestamp of lastest block available. */\n synced_blocked_signed_at: Date;\n /** * True if the chain has data and ready for querying. */\n has_data: boolean;\n\n constructor(data: ChainStatusItem) {\n this.name = data.name;\n this.chain_id = data.chain_id;\n this.is_testnet = data.is_testnet;\n this.logo_url = data.logo_url;\n this.black_logo_url = data.black_logo_url;\n this.white_logo_url = data.white_logo_url;\n this.is_appchain = data.is_appchain;\n this.synced_block_height = data.synced_block_height;\n this.synced_blocked_signed_at = data.synced_blocked_signed_at && data.synced_blocked_signed_at !== null ? parseISO(data.synced_blocked_signed_at.toString()) : null;\n this.has_data = data.has_data;\n \n }\n}\nclass ChainActivityResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested address. */\n address: string;\n /** * List of response items. */\n items: ChainActivityEvent[];\n\n constructor(data: ChainActivityResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.address = data.address;\n this.items = data.items && data.items !== null ? data.items.map((itemData: ChainActivityEvent) => new ChainActivityEvent(itemData)) : null;\n }\n}\nclass ChainActivityEvent extends ChainItem {\n /** * The timestamp when the address was last seen on the chain. */\n last_seen_at: Date;\n\n constructor(data: ChainActivityEvent) {\n super(data);\n this.last_seen_at = data.last_seen_at && data.last_seen_at !== null ? parseISO(data.last_seen_at.toString()) : null;\n }\n}\n\nclass GasPricesResponse {\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested event type. */\n event_type: string;\n /** * The exchange rate for the requested quote currency. */\n gas_quote_rate: number;\n /** * The lowest gas fee for the latest block height. */\n base_fee: bigint | null;\n /** * List of response items. */\n items: PriceItem[];\n\n constructor(data: GasPricesResponse) {\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.quote_currency = data.quote_currency;\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.event_type = data.event_type;\n this.gas_quote_rate = data.gas_quote_rate;\n this.base_fee = data.base_fee && data.base_fee !== null ? BigInt(data.base_fee) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: PriceItem) => new PriceItem(itemData)) : null;\n }\n}\nclass PriceItem {\n /** * The average gas price, in WEI, for the time interval. */\n gas_price: string;\n /** * The average gas spent for the time interval. */\n gas_spent: string;\n /** * The average gas spent in `quote-currency` denomination for the time interval. */\n gas_quote: number;\n /** * Other fees, when applicable. For example: OP chain L1 fees. */\n other_fees: OtherFees;\n /** * The sum of the L1 and L2 gas spent, in quote-currency, for the specified time interval. */\n total_gas_quote: number;\n /** * A prettier version of the total average gas spent, in quote-currency, for the specified time interval, for rendering purposes. */\n pretty_total_gas_quote: string;\n /** * The specified time interval. */\n interval: string;\n\n constructor(data: PriceItem) {\n this.gas_price = data.gas_price;\n this.gas_spent = data.gas_spent;\n this.gas_quote = data.gas_quote;\n this.total_gas_quote = data.total_gas_quote;\n this.pretty_total_gas_quote = data.pretty_total_gas_quote;\n this.interval = data.interval;\n this.other_fees = data.other_fees && data.other_fees !== null ? new OtherFees(data.other_fees) : null;\n }\n}\nclass OtherFees {\n /** * The calculated L1 gas spent, when applicable, in quote-currency, for the specified time interval. */\n l1_gas_quote: number;\n\n constructor(data: OtherFees) {\n this.l1_gas_quote = data.l1_gas_quote;\n \n }\n}\n\nexport interface GetBlockHeightsQueryParamOpts {\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n /** * 0-indexed page number to begin pagination. */\n pageNumber?: number;\n}\nexport interface GetLogsQueryParamOpts {\n /** * The first block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`. */\n startingBlock?: number;\n /** * The last block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`. */\n endingBlock?: string;\n /** * The address of the log events sender contract. */\n address?: string;\n /** * The topic hash(es) to retrieve logs with. */\n topics?: string;\n /** * The block hash to retrieve logs for. */\n blockHash?: string;\n /** * Omit decoded log events. */\n skipDecode?: boolean;\n}\nexport interface GetLogEventsByAddressQueryParamOpts {\n /** * The first block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`. */\n startingBlock?: number;\n /** * The last block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`. */\n endingBlock?: string;\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n /** * 0-indexed page number to begin pagination. */\n pageNumber?: number;\n}\nexport interface GetLogEventsByTopicHashQueryParamOpts {\n /** * The first block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`. */\n startingBlock?: number;\n /** * The last block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`. */\n endingBlock?: string;\n /** * Additional topic hash(es) to filter on - padded & unpadded address fields are supported. Separate multiple topics with a comma. */\n secondaryTopics?: string;\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n /** * 0-indexed page number to begin pagination. */\n pageNumber?: number;\n}\nexport interface GetAddressActivityQueryParamOpts {\n /** * Set to true to include testnets with activity in the response. By default, it's set to `false` and only returns mainnet activity. */\n testnets?: boolean;\n}\nexport interface GetGasPricesQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n}\n/**\n * Class A - Base\n * \n */\nexport class BaseService {\n private LIMIT;\n constructor(private apiKey: string, private debug: boolean = false, private threadCount: number = 3, private is_key_valid: boolean, private enableRetry: boolean = true, private source: Source) {\n this.LIMIT = pLimit(this.threadCount);\n }\n \n /**\n *\n * Commonly used to fetch and render a single block for a block explorer.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} blockHeight - The block height or `latest` for the latest block available.\n *\n */\n public async getBlock(chainName: Chain | Chains | ChainID, blockHeight: string): Promise<Response<BlockResponse>> {\n let success = false;\n let data: Response<BlockResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<BlockResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/block_v2/${blockHeight}/?${urlParams}`;\n \n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/block_v2/${blockHeight}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new BlockResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n \n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to resolve ENS, RNS and Unstoppable Domains addresses.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n *\n */\n public async getResolvedAddress(chainName: Chain | Chains | ChainID, walletAddress: string): Promise<Response<ResolvedAddress>> {\n let success = false;\n let data: Response<ResolvedAddress>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<ResolvedAddress>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/resolve_address/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/resolve_address/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new ResolvedAddress(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n \n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get all the block heights within a particular date range. Useful for rendering a display where you sort blocks by day.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} startDate - The start date in YYYY-MM-DD format.\n * @param {string} endDate - The end date in YYYY-MM-DD format.\n * @param {GetBlockHeightsQueryParamOpts} queryParamOpts\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async* getBlockHeights(chainName: Chain | Chains | ChainID, startDate: string, endDate: string, queryParamOpts?: GetBlockHeightsQueryParamOpts): AsyncIterable<Block> {\n let success = false;\n let res: Block;\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n throw new Error(`An error occurred 401: ${ApiKeyValidator.INVALID_API_KEY_MESSAGE}`);\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n\n for await (res of paginateEndpoint<Block, BlockHeightsResponse>(`https://api.covalenthq.com/v1/${chainName}/block_v2/${startDate}/${endDate}/`, this.apiKey, urlParams, Block, this.debug, this.threadCount, this.enableRetry, this.source)) {\n yield res;\n }\n\n success = true;\n } catch (error) {\n success = true;\n throw new Error(error.message);\n }\n }\n }\n\n /**\n *\n * Commonly used to get all the block heights within a particular date range. Useful for rendering a display where you sort blocks by day.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} startDate - The start date in YYYY-MM-DD format.\n * @param {string} endDate - The end date in YYYY-MM-DD format.\n * @param {GetBlockHeightsQueryParamOpts} queryParamOpts\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async getBlockHeightsByPage(chainName: Chain | Chains | ChainID, startDate: string, endDate: string, queryParamOpts?: GetBlockHeightsQueryParamOpts): Promise<Response<BlockHeightsResponse>> {\n let success = false;\n let data: Response<BlockHeightsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<BlockHeightsResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/block_v2/${startDate}/${endDate}/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/block_v2/${startDate}/${endDate}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new BlockHeightsResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get all the event logs of the latest block, or for a range of blocks. Includes sender contract metadata as well as decoded logs.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {GetLogsQueryParamOpts} queryParamOpts\n * - `startingBlock`: The first block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`.\n * - `endingBlock`: The last block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`.\n * - `address`: The address of the log events sender contract.\n * - `topics`: The topic hash(es) to retrieve logs with.\n * - `blockHash`: The block hash to retrieve logs for.\n * - `skipDecode`: Omit decoded log events.\n *\n */\n public async getLogs(chainName: Chain | Chains | ChainID, queryParamOpts?: GetLogsQueryParamOpts): Promise<Response<GetLogsResponse>> {\n let success = false;\n let data: Response<GetLogsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<GetLogsResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.startingBlock !== undefined) {\n urlParams.append(\"starting-block\", queryParamOpts?.startingBlock.toString());\n }\n \n if (queryParamOpts?.endingBlock !== undefined) {\n urlParams.append(\"ending-block\", queryParamOpts?.endingBlock.toString());\n }\n \n if (queryParamOpts?.address !== undefined) {\n urlParams.append(\"address\", queryParamOpts?.address.toString());\n }\n \n if (queryParamOpts?.topics !== undefined) {\n urlParams.append(\"topics\", queryParamOpts?.topics.toString());\n }\n \n if (queryParamOpts?.blockHash !== undefined) {\n urlParams.append(\"block-hash\", queryParamOpts?.blockHash.toString());\n }\n \n if (queryParamOpts?.skipDecode !== undefined) {\n urlParams.append(\"skip-decode\", queryParamOpts?.skipDecode.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/events/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/events/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new GetLogsResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get all the event logs emitted from a particular contract address. Useful for building dashboards that examine on-chain interactions.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} contractAddress - The requested contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetLogEventsByAddressQueryParamOpts} queryParamOpts\n * - `startingBlock`: The first block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`.\n * - `endingBlock`: The last block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`.\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async* getLogEventsByAddress(chainName: Chain | Chains | ChainID, contractAddress: string, queryParamOpts?: GetLogEventsByAddressQueryParamOpts): AsyncIterable<LogEvent> {\n let success = false;\n let res: LogEvent;\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n throw new Error(`An error occurred 401: ${ApiKeyValidator.INVALID_API_KEY_MESSAGE}`);\n }\n \n if (queryParamOpts?.startingBlock !== undefined) {\n urlParams.append(\"starting-block\", queryParamOpts?.startingBlock.toString());\n }\n \n if (queryParamOpts?.endingBlock !== undefined) {\n urlParams.append(\"ending-block\", queryParamOpts?.endingBlock.toString());\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n \n\n for await (res of paginateEndpoint<LogEvent, LogEventsByAddressResponse>(`https://api.covalenthq.com/v1/${chainName}/events/address/${contractAddress}/`, this.apiKey, urlParams, LogEvent, this.debug, this.threadCount, this.enableRetry, this.source)) {\n yield res;\n }\n\n success = true;\n } catch (error) {\n success = true;\n throw new Error(error.message);\n }\n }\n }\n\n /**\n *\n * Commonly used to get all the event logs emitted from a particular contract address. Useful for building dashboards that examine on-chain interactions.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} contractAddress - The requested contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetLogEventsByAddressQueryParamOpts} queryParamOpts\n * - `startingBlock`: The first block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`.\n * - `endingBlock`: The last block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`.\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async getLogEventsByAddressByPage(chainName: Chain | Chains | ChainID, contractAddress: string, queryParamOpts?: GetLogEventsByAddressQueryParamOpts): Promise<Response<LogEventsByAddressResponse>> {\n let success = false;\n let data: Response<LogEventsByAddressResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<LogEventsByAddressResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.startingBlock !== undefined) {\n urlParams.append(\"starting-block\", queryParamOpts?.startingBlock.toString());\n }\n \n if (queryParamOpts?.endingBlock !== undefined) {\n urlParams.append(\"ending-block\", queryParamOpts?.endingBlock.toString());\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/events/address/${contractAddress}/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/events/address/${contractAddress}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new LogEventsByAddressResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get all event logs of the same topic hash across all contracts within a particular chain. Useful for cross-sectional analysis of event logs that are emitted on-chain.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} topicHash - The endpoint will return event logs that contain this topic hash.\n * @param {GetLogEventsByTopicHashQueryParamOpts} queryParamOpts\n * - `startingBlock`: The first block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`.\n * - `endingBlock`: The last block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`.\n * - `secondaryTopics`: Additional topic hash(es) to filter on - padded & unpadded address fields are supported. Separate multiple topics with a comma.\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async* getLogEventsByTopicHash(chainName: Chain | Chains | ChainID, topicHash: string, queryParamOpts?: GetLogEventsByTopicHashQueryParamOpts): AsyncIterable<LogEvent> {\n let success = false;\n let res: LogEvent;\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n throw new Error(`An error occurred 401: ${ApiKeyValidator.INVALID_API_KEY_MESSAGE}`);\n }\n \n if (queryParamOpts?.startingBlock !== undefined) {\n urlParams.append(\"starting-block\", queryParamOpts?.startingBlock.toString());\n }\n \n if (queryParamOpts?.endingBlock !== undefined) {\n urlParams.append(\"ending-block\", queryParamOpts?.endingBlock.toString());\n }\n \n if (queryParamOpts?.secondaryTopics !== undefined) {\n urlParams.append(\"secondary-topics\", queryParamOpts?.secondaryTopics.toString());\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n \n\n for await (res of paginateEndpoint<LogEvent, LogEventsByTopicHashResponse>(`https://api.covalenthq.com/v1/${chainName}/events/topics/${topicHash}/`, this.apiKey, urlParams, LogEvent, this.debug, this.threadCount, this.enableRetry, this.source)) {\n yield res;\n }\n\n success = true;\n } catch (error) {\n success = true;\n throw new Error(error.message);\n }\n }\n }\n\n /**\n *\n * Commonly used to get all event logs of the same topic hash across all contracts within a particular chain. Useful for cross-sectional analysis of event logs that are emitted on-chain.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} topicHash - The endpoint will return event logs that contain this topic hash.\n * @param {GetLogEventsByTopicHashQueryParamOpts} queryParamOpts\n * - `startingBlock`: The first block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`.\n * - `endingBlock`: The last block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`.\n * - `secondaryTopics`: Additional topic hash(es) to filter on - padded & unpadded address fields are supported. Separate multiple topics with a comma.\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async getLogEventsByTopicHashByPage(chainName: Chain | Chains | ChainID, topicHash: string, queryParamOpts?: GetLogEventsByTopicHashQueryParamOpts): Promise<Response<LogEventsByTopicHashResponse>> {\n let success = false;\n let data: Response<LogEventsByTopicHashResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<LogEventsByTopicHashResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.startingBlock !== undefined) {\n urlParams.append(\"starting-block\", queryParamOpts?.startingBlock.toString());\n }\n \n if (queryParamOpts?.endingBlock !== undefined) {\n urlParams.append(\"ending-block\", queryParamOpts?.endingBlock.toString());\n }\n \n if (queryParamOpts?.secondaryTopics !== undefined) {\n urlParams.append(\"secondary-topics\", queryParamOpts?.secondaryTopics.toString());\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/events/topics/${topicHash}/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/events/topics/${topicHash}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new LogEventsByTopicHashResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to build internal dashboards for all supported chains on Covalent.\n * \n *\n */\n public async getAllChains(): Promise<Response<AllChainsResponse>> {\n let success = false;\n let data: Response<AllChainsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<AllChainsResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n const url = `https://api.covalenthq.com/v1/chains/?${urlParams}`;\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/chains/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new AllChainsResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to build internal status dashboards of all supported chains.\n * \n *\n */\n public async getAllChainStatus(): Promise<Response<AllChainsStatusResponse>> {\n let success = false;\n let data: Response<AllChainsStatusResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<AllChainsStatusResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/chains/status/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/chains/status/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new AllChainsStatusResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to locate chains which an address is active on with a single API call.\n * \n * @param {string} walletAddress - The requested wallet address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetAddressActivityQueryParamOpts} queryParamOpts\n * - `testnets`: Set to true to include testnets with activity in the response. By default, it's set to `false` and only returns mainnet activity.\n *\n */\n public async getAddressActivity(walletAddress: string, queryParamOpts?: GetAddressActivityQueryParamOpts): Promise<Response<ChainActivityResponse>> {\n let success = false;\n let data: Response<ChainActivityResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<ChainActivityResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.testnets !== undefined) {\n urlParams.append(\"testnets\", queryParamOpts?.testnets.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/address/${walletAddress}/activity/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/address/${walletAddress}/activity/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new ChainActivityResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n /**\n *\n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} eventType - The desired event type to retrieve gas prices for. Supports `erc20` transfer events, `uniswapv3` swap events and `nativetokens` transfers.\n * @param {GetGasPricesQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n *\n */\n public async getGasPrices(chainName: Chain | Chains | ChainID, eventType: string, queryParamOpts?: GetGasPricesQueryParamOpts): Promise<Response<GasPricesResponse>> {\n let success = false;\n let data: Response<GasPricesResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<GasPricesResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/event/${eventType}/gas_prices/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n \n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/event/${eventType}/gas_prices/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new GasPricesResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n\n}\n \n ","import { Chain, Quote, userAgent, Response, ChainID, Source } from \"./CovalentClient\";\nimport { debugOutput, paginateEndpoint } from \"../util/ApiHelpers\";\nimport { parseISO } from \"date-fns\";\nimport { ExponentialBackoff } from \"../util/backoff\";\nimport pLimit from \"p-limit\";\nimport { Chains } from \"../util/Chains\";\nimport { ApiKeyValidator } from \"../util/ApiKeyValidator\";\n\nclass ChainCollectionResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: ChainCollectionItem[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: ChainCollectionResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: ChainCollectionItem) => new ChainCollectionItem(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass ChainCollectionItem {\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * Denotes whether the token is suspected spam. Supports `eth-mainnet` and `matic-mainnet`. */\n is_spam: boolean;\n token_total_supply: number;\n cached_metadata_count: number;\n cached_asset_count: number;\n last_scraped_at: Date;\n\n constructor(data: ChainCollectionItem) {\n this.contract_address = data.contract_address;\n this.contract_name = data.contract_name;\n this.is_spam = data.is_spam;\n this.token_total_supply = data.token_total_supply;\n this.cached_metadata_count = data.cached_metadata_count;\n this.cached_asset_count = data.cached_asset_count;\n this.last_scraped_at = data.last_scraped_at && data.last_scraped_at !== null ? parseISO(data.last_scraped_at.toString()) : null;\n \n }\n}\nclass Pagination {\n /** * True is there is another page. */\n has_more: boolean;\n /** * The requested page number. */\n page_number: number;\n /** * The requested number of items on the current page. */\n page_size: number;\n /** * The total number of items across all pages for this request. */\n total_count: number;\n\n constructor(data: Pagination) {\n this.has_more = data.has_more;\n this.page_number = data.page_number;\n this.page_size = data.page_size;\n this.total_count = data.total_count;\n \n }\n}\nclass NftAddressBalanceNftResponse {\n /** * The requested address. */\n address: string;\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * List of response items. */\n items: NftTokenContractBalanceItem[];\n\n constructor(data: NftAddressBalanceNftResponse) {\n this.address = data.address;\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: NftTokenContractBalanceItem) => new NftTokenContractBalanceItem(itemData)) : null;\n }\n}\nclass NftTokenContractBalanceItem {\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * Denotes whether the token is suspected spam. Supports `eth-mainnet` and `matic-mainnet`. */\n is_spam: boolean;\n last_transfered_at: Date;\n /** * The asset balance. Use `contract_decimals` to scale this balance for display purposes. */\n balance: bigint | null;\n balance_24h: string;\n type: string;\n /** * The current floor price converted to fiat in `quote-currency`. The floor price is determined by the last minimum sale price within the last 30 days across all the supported markets where the collection is sold on. */\n floor_price_quote: number;\n /** * A prettier version of the floor price quote for rendering purposes. */\n pretty_floor_price_quote: string;\n /** * The current floor price in native currency. The floor price is determined by the last minimum sale price within the last 30 days across all the supported markets where the collection is sold on. */\n floor_price_native_quote: number;\n nft_data: NftData[];\n\n constructor(data: NftTokenContractBalanceItem) {\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.supports_erc = data.supports_erc;\n this.is_spam = data.is_spam;\n this.last_transfered_at = data.last_transfered_at && data.last_transfered_at !== null ? parseISO(data.last_transfered_at.toString()) : null;\n this.balance = data.balance && data.balance !== null ? BigInt(data.balance) : null;\n this.balance_24h = data.balance_24h;\n this.type = data.type;\n this.floor_price_quote = data.floor_price_quote;\n this.pretty_floor_price_quote = data.pretty_floor_price_quote;\n this.floor_price_native_quote = data.floor_price_native_quote;\n this.nft_data = data.nft_data && data.nft_data !== null ? data.nft_data.map((itemData: NftData) => new NftData(itemData)) : null;\n }\n}\nclass NftData {\n /** * The token's id. */\n token_id: bigint | null;\n token_url: string;\n /** * The original minter. */\n original_owner: string;\n /** * The current holder of this NFT. */\n current_owner: string;\n external_data: NftExternalData;\n /** * If `true`, the asset data is available from the Covalent CDN. */\n asset_cached: boolean;\n /** * If `true`, the image data is available from the Covalent CDN. */\n image_cached: boolean;\n\n constructor(data: NftData) {\n this.token_id = data.token_id && data.token_id !== null ? BigInt(data.token_id) : null;\n this.token_url = data.token_url;\n this.original_owner = data.original_owner;\n this.current_owner = data.current_owner;\n this.asset_cached = data.asset_cached;\n this.image_cached = data.image_cached;\n this.external_data = data.external_data && data.external_data !== null ? new NftExternalData(data.external_data) : null;\n }\n}\nclass NftExternalData {\n name: string;\n description: string;\n asset_url: string;\n asset_file_extension: string;\n asset_mime_type: string;\n asset_size_bytes: string;\n image: string;\n image_256: string;\n image_512: string;\n image_1024: string;\n animation_url: string;\n external_url: string;\n attributes: NftCollectionAttribute[];\n\n constructor(data: NftExternalData) {\n this.name = data.name;\n this.description = data.description;\n this.asset_url = data.asset_url;\n this.asset_file_extension = data.asset_file_extension;\n this.asset_mime_type = data.asset_mime_type;\n this.asset_size_bytes = data.asset_size_bytes;\n this.image = data.image;\n this.image_256 = data.image_256;\n this.image_512 = data.image_512;\n this.image_1024 = data.image_1024;\n this.animation_url = data.animation_url;\n this.external_url = data.external_url;\n this.attributes = data.attributes && data.attributes !== null ? data.attributes.map((itemData: NftCollectionAttribute) => new NftCollectionAttribute(itemData)) : null;\n }\n}\nclass NftCollectionAttribute {\n trait_type: string;\n value: string;\n\n constructor(data: NftCollectionAttribute) {\n this.trait_type = data.trait_type;\n this.value = data.value;\n \n }\n}\nclass NftMetadataResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * List of response items. */\n items: NftTokenContract[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: NftMetadataResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: NftTokenContract) => new NftTokenContract(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass NftTokenContract {\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * Denotes whether the token is suspected spam. Supports `eth-mainnet` and `matic-mainnet`. */\n is_spam: boolean;\n type: string;\n nft_data: NftData;\n\n constructor(data: NftTokenContract) {\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.is_spam = data.is_spam;\n this.type = data.type;\n this.nft_data = data.nft_data && data.nft_data !== null ? new NftData(data.nft_data) : null;\n }\n}\nclass NftTransactionsResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: NftTransaction[];\n\n constructor(data: NftTransactionsResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: NftTransaction) => new NftTransaction(itemData)) : null;\n }\n}\nclass NftTransaction {\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * The contract logo URL. */\n logo_url: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n nft_transactions: NftTransactionItem[];\n /** * Denotes whether the token is suspected spam. Supports `eth-mainnet` and `matic-mainnet`. */\n is_spam: boolean;\n\n constructor(data: NftTransaction) {\n this.contract_decimals = data.contract_decimals;\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.logo_url = data.logo_url;\n this.contract_address = data.contract_address;\n this.supports_erc = data.supports_erc;\n this.is_spam = data.is_spam;\n this.nft_transactions = data.nft_transactions && data.nft_transactions !== null ? data.nft_transactions.map((itemData: NftTransactionItem) => new NftTransactionItem(itemData)) : null;\n }\n}\nclass NftTransactionItem {\n /** * The block signed timestamp in UTC. */\n block_signed_at: Date;\n /** * The height of the block. */\n block_height: number;\n /** * The requested transaction hash. */\n tx_hash: string;\n /** * The offset is the position of the tx in the block. */\n tx_offset: number;\n /** * Whether or not transaction is successful. */\n successful: boolean;\n /** * The sender's wallet address. */\n from_address: string;\n /** * The label of `from` address. */\n from_address_label: string;\n /** * The receiver's wallet address. */\n to_address: string;\n /** * The label of `to` address. */\n to_address_label: string;\n /** * The value attached to this tx. */\n value: bigint | null;\n /** * The value attached in `quote-currency` to this tx. */\n value_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_value_quote: string;\n gas_offered: number;\n /** * The gas spent for this tx. */\n gas_spent: number;\n /** * The gas price at the time of this tx. */\n gas_price: number;\n /** * The total transaction fees (gas_price * gas_spent) paid for this tx, denoted in wei. */\n fees_paid: bigint | null;\n /** * The gas spent in `quote-currency` denomination. */\n gas_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_gas_quote: string;\n gas_quote_rate: number;\n /** * The log events. */\n log_events: LogEvent[];\n\n constructor(data: NftTransactionItem) {\n this.block_signed_at = data.block_signed_at && data.block_signed_at !== null ? parseISO(data.block_signed_at.toString()) : null;\n this.block_height = data.block_height;\n this.tx_hash = data.tx_hash;\n this.tx_offset = data.tx_offset;\n this.successful = data.successful;\n this.from_address = data.from_address;\n this.from_address_label = data.from_address_label;\n this.to_address = data.to_address;\n this.to_address_label = data.to_address_label;\n this.value = data.value && data.value !== null ? BigInt(data.value) : null;\n this.value_quote = data.value_quote;\n this.pretty_value_quote = data.pretty_value_quote;\n this.gas_offered = data.gas_offered;\n this.gas_spent = data.gas_spent;\n this.gas_price = data.gas_price;\n this.fees_paid = data.fees_paid && data.fees_paid !== null ? BigInt(data.fees_paid) : null;\n this.gas_quote = data.gas_quote;\n this.pretty_gas_quote = data.pretty_gas_quote;\n this.gas_quote_rate = data.gas_quote_rate;\n this.log_events = data.log_events && data.log_events !== null ? data.log_events.map((itemData: LogEvent) => new LogEvent(itemData)) : null;\n }\n}\nclass LogEvent {\n /** * The block signed timestamp in UTC. */\n block_signed_at: Date;\n /** * The height of the block. */\n block_height: number;\n /** * The offset is the position of the tx in the block. */\n tx_offset: number;\n /** * The offset is the position of the log entry within an event log. */\n log_offset: number;\n /** * The requested transaction hash. */\n tx_hash: string;\n /** * The log topics in raw data. */\n raw_log_topics: string[];\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n sender_contract_decimals: number;\n /** * The name of the sender. */\n sender_name: string;\n sender_contract_ticker_symbol: string;\n /** * The address of the sender. */\n sender_address: string;\n /** * The label of the sender address. */\n sender_address_label: string;\n /** * The contract logo URL. */\n sender_logo_url: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The address of the deployed UniswapV2 like factory contract for this DEX. */\n sender_factory_address: string;\n /** * The log events in raw. */\n raw_log_data: string;\n /** * The decoded item. */\n decoded: DecodedItem;\n\n constructor(data: LogEvent) {\n this.block_signed_at = data.block_signed_at && data.block_signed_at !== null ? parseISO(data.block_signed_at.toString()) : null;\n this.block_height = data.block_height;\n this.tx_offset = data.tx_offset;\n this.log_offset = data.log_offset;\n this.tx_hash = data.tx_hash;\n this.raw_log_topics = data.raw_log_topics;\n this.sender_contract_decimals = data.sender_contract_decimals;\n this.sender_name = data.sender_name;\n this.sender_contract_ticker_symbol = data.sender_contract_ticker_symbol;\n this.sender_address = data.sender_address;\n this.sender_address_label = data.sender_address_label;\n this.sender_logo_url = data.sender_logo_url;\n this.supports_erc = data.supports_erc;\n this.sender_factory_address = data.sender_factory_address;\n this.raw_log_data = data.raw_log_data;\n this.decoded = data.decoded && data.decoded !== null ? new DecodedItem(data.decoded) : null;\n }\n}\nclass DecodedItem {\n name: string;\n signature: string;\n params: Param[];\n\n constructor(data: DecodedItem) {\n this.name = data.name;\n this.signature = data.signature;\n this.params = data.params && data.params !== null ? data.params.map((itemData: Param) => new Param(itemData)) : null;\n }\n}\nclass Param {\n name: string;\n type: string;\n indexed: boolean;\n decoded: boolean;\n value: string;\n\n constructor(data: Param) {\n this.name = data.name;\n this.type = data.type;\n this.indexed = data.indexed;\n this.decoded = data.decoded;\n this.value = data.value;\n \n }\n}\nclass NftCollectionTraitsResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * List of response items. */\n items: NftTrait[];\n\n constructor(data: NftCollectionTraitsResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: NftTrait) => new NftTrait(itemData)) : null;\n }\n}\nclass NftTrait {\n name: string;\n\n constructor(data: NftTrait) {\n this.name = data.name;\n \n }\n}\nclass NftCollectionAttributesForTraitResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * List of response items. */\n items: NftSummaryAttribute[];\n\n constructor(data: NftCollectionAttributesForTraitResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: NftSummaryAttribute) => new NftSummaryAttribute(itemData)) : null;\n }\n}\nclass NftSummaryAttribute {\n trait_type: string;\n values: NftAttribute[];\n unique_values: number;\n\n constructor(data: NftSummaryAttribute) {\n this.trait_type = data.trait_type;\n this.unique_values = data.unique_values;\n this.values = data.values && data.values !== null ? data.values.map((itemData: NftAttribute) => new NftAttribute(itemData)) : null;\n }\n}\nclass NftAttribute {\n value: string;\n count: number;\n\n constructor(data: NftAttribute) {\n this.value = data.value;\n this.count = data.count;\n \n }\n}\nclass NftCollectionTraitSummaryResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * List of response items. */\n items: NftTraitSummary[];\n\n constructor(data: NftCollectionTraitSummaryResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: NftTraitSummary) => new NftTraitSummary(itemData)) : null;\n }\n}\nclass NftTraitSummary {\n /** * Trait name */\n name: string;\n /** * Type of the value of the trait. */\n value_type: string;\n /** * Populated for `numeric` traits. */\n value_numeric: NftTraitNumeric;\n /** * Populated for `string` traits. */\n value_string: NftTraitString;\n attributes: NftSummaryAttribute[];\n\n constructor(data: NftTraitSummary) {\n this.name = data.name;\n this.value_type = data.value_type;\n this.value_numeric = data.value_numeric && data.value_numeric !== null ? new NftTraitNumeric(data.value_numeric) : null;\n this.value_string = data.value_string && data.value_string !== null ? new NftTraitString(data.value_string) : null;\n this.attributes = data.attributes && data.attributes !== null ? data.attributes.map((itemData: NftSummaryAttribute) => new NftSummaryAttribute(itemData)) : null;\n }\n}\nclass NftTraitNumeric {\n min: number;\n max: number;\n\n constructor(data: NftTraitNumeric) {\n this.min = data.min;\n this.max = data.max;\n \n }\n}\nclass NftTraitString {\n /** * String value */\n value: string;\n /** * Number of distinct tokens that have this trait value. */\n token_count: number;\n /** * Percentage of tokens in the collection that have this trait. */\n trait_percentage: number;\n\n constructor(data: NftTraitString) {\n this.value = data.value;\n this.token_count = data.token_count;\n this.trait_percentage = data.trait_percentage;\n \n }\n}\nclass NftOwnershipForCollectionResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested address. */\n address: string;\n /** * The requested collection. */\n collection: string;\n /** * Denotes whether the token is suspected spam. Supports `eth-mainnet` and `matic-mainnet`. */\n is_spam: boolean;\n /** * List of response items. */\n items: NftOwnershipForCollectionItem[];\n\n constructor(data: NftOwnershipForCollectionResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.address = data.address;\n this.collection = data.collection;\n this.is_spam = data.is_spam;\n this.items = data.items && data.items !== null ? data.items.map((itemData: NftOwnershipForCollectionItem) => new NftOwnershipForCollectionItem(itemData)) : null;\n }\n}\nclass NftOwnershipForCollectionItem {\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * The token's id. */\n token_id: bigint | null;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n last_transfered_at: Date;\n /** * Nft balance. */\n balance: bigint | null;\n balance_24h: string;\n type: string;\n nft_data: NftData;\n\n constructor(data: NftOwnershipForCollectionItem) {\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.token_id = data.token_id && data.token_id !== null ? BigInt(data.token_id) : null;\n this.supports_erc = data.supports_erc;\n this.last_transfered_at = data.last_transfered_at && data.last_transfered_at !== null ? parseISO(data.last_transfered_at.toString()) : null;\n this.balance = data.balance && data.balance !== null ? BigInt(data.balance) : null;\n this.balance_24h = data.balance_24h;\n this.type = data.type;\n this.nft_data = data.nft_data && data.nft_data !== null ? new NftData(data.nft_data) : null;\n }\n}\nclass NftMarketSaleCountResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested address. */\n address: string;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * List of response items. */\n items: MarketSaleCountItem[];\n\n constructor(data: NftMarketSaleCountResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.address = data.address;\n this.quote_currency = data.quote_currency;\n this.chain_name = data.chain_name;\n this.chain_id = data.chain_id;\n this.items = data.items && data.items !== null ? data.items.map((itemData: MarketSaleCountItem) => new MarketSaleCountItem(itemData)) : null;\n }\n}\nclass MarketSaleCountItem {\n /** * The timestamp of the date of sale. */\n date: Date;\n /** * The total amount of sales for the current day. */\n sale_count: number;\n\n constructor(data: MarketSaleCountItem) {\n this.date = data.date && data.date !== null ? parseISO(data.date.toString()) : null;\n this.sale_count = data.sale_count;\n \n }\n}\nclass NftMarketVolumeResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested address. */\n address: string;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * List of response items. */\n items: MarketVolumeItem[];\n\n constructor(data: NftMarketVolumeResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.address = data.address;\n this.quote_currency = data.quote_currency;\n this.chain_name = data.chain_name;\n this.chain_id = data.chain_id;\n this.items = data.items && data.items !== null ? data.items.map((itemData: MarketVolumeItem) => new MarketVolumeItem(itemData)) : null;\n }\n}\nclass MarketVolumeItem {\n /** * The timestamp of the date of sale. */\n date: Date;\n /** * The ticker symbol for the native currency. */\n native_ticker_symbol: string;\n /** * The contract name of the native currency. */\n native_name: string;\n /** * The current volume converted to fiat in `quote-currency`. */\n volume_quote: number;\n /** * The current volume in native currency. */\n volume_native_quote: number;\n /** * A prettier version of the volume quote for rendering purposes. */\n pretty_volume_quote: string;\n\n constructor(data: MarketVolumeItem) {\n this.date = data.date && data.date !== null ? parseISO(data.date.toString()) : null;\n this.native_ticker_symbol = data.native_ticker_symbol;\n this.native_name = data.native_name;\n this.volume_quote = data.volume_quote;\n this.volume_native_quote = data.volume_native_quote;\n this.pretty_volume_quote = data.pretty_volume_quote;\n \n }\n}\nclass NftMarketFloorPriceResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested address. */\n address: string;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * List of response items. */\n items: MarketFloorPriceItem[];\n\n constructor(data: NftMarketFloorPriceResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.address = data.address;\n this.quote_currency = data.quote_currency;\n this.chain_name = data.chain_name;\n this.chain_id = data.chain_id;\n this.items = data.items && data.items !== null ? data.items.map((itemData: MarketFloorPriceItem) => new MarketFloorPriceItem(itemData)) : null;\n }\n}\nclass MarketFloorPriceItem {\n /** * The timestamp of the date of sale. */\n date: Date;\n /** * The ticker symbol for the native currency. */\n native_ticker_symbol: string;\n /** * The contract name of the native currency. */\n native_name: string;\n /** * The current floor price in native currency. */\n floor_price_native_quote: number;\n /** * The current floor price converted to fiat in `quote-currency`. */\n floor_price_quote: number;\n /** * A prettier version of the floor price quote for rendering purposes. */\n pretty_floor_price_quote: string;\n\n constructor(data: MarketFloorPriceItem) {\n this.date = data.date && data.date !== null ? parseISO(data.date.toString()) : null;\n this.native_ticker_symbol = data.native_ticker_symbol;\n this.native_name = data.native_name;\n this.floor_price_native_quote = data.floor_price_native_quote;\n this.floor_price_quote = data.floor_price_quote;\n this.pretty_floor_price_quote = data.pretty_floor_price_quote;\n \n }\n}\n\nexport interface GetChainCollectionsQueryParamOpts {\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n /** * 0-indexed page number to begin pagination. */\n pageNumber?: number;\n /** * If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`. */\n noSpam?: boolean;\n}\nexport interface GetNftsForAddressQueryParamOpts {\n /** * If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`. */\n noSpam?: boolean;\n /** * If `true`, the response shape is limited to a list of collections and token ids, omitting metadata and asset information. Helpful for faster response times and wallets holding a large number of NFTs. */\n noNftAssetMetadata?: boolean;\n /** * By default, this endpoint only works on chains where we've cached the assets and the metadata. When set to `true`, the API will fetch metadata from upstream servers even if it's not cached - the downside being that the upstream server can block or rate limit the call and therefore resulting in time outs or slow response times on the Covalent side. */\n withUncached?: boolean;\n}\nexport interface GetTokenIdsForContractWithMetadataQueryParamOpts {\n /** * Omit metadata. */\n noMetadata?: boolean;\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n /** * 0-indexed page number to begin pagination. */\n pageNumber?: number;\n /** * Filters NFTs based on a specific trait. If this filter is used, the API will return all NFTs with the specified trait. Accepts comma-separated values, is case-sensitive, and requires proper URL encoding. */\n traitsFilter?: string;\n /** * Filters NFTs based on a specific trait value. If this filter is used, the API will return all NFTs with the specified trait value. If used with \"traits-filter\", only NFTs matching both filters will be returned. Accepts comma-separated values, is case-sensitive, and requires proper URL encoding. */\n valuesFilter?: string;\n /** * By default, this endpoint only works on chains where we've cached the assets and the metadata. When set to `true`, the API will fetch metadata from upstream servers even if it's not cached - the downside being that the upstream server can block or rate limit the call and therefore resulting in time outs or slow response times on the Covalent side. */\n withUncached?: boolean;\n}\nexport interface GetNftMetadataForGivenTokenIdForContractQueryParamOpts {\n /** * Omit metadata. */\n noMetadata?: boolean;\n /** * By default, this endpoint only works on chains where we've cached the assets and the metadata. When set to `true`, the API will fetch metadata from upstream servers even if it's not cached - the downside being that the upstream server can block or rate limit the call and therefore resulting in time outs or slow response times on the Covalent side. */\n withUncached?: boolean;\n}\nexport interface GetNftTransactionsForContractTokenIdQueryParamOpts {\n /** * If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`. */\n noSpam?: boolean;\n}\nexport interface CheckOwnershipInNftQueryParamOpts {\n /** * Filters NFTs based on a specific trait. If this filter is used, the API will return all NFTs with the specified trait. Must be used with \"values-filter\", is case-sensitive, and requires proper URL encoding. */\n traitsFilter?: string;\n /** * Filters NFTs based on a specific trait value. If this filter is used, the API will return all NFTs with the specified trait value. Must be used with \"traits-filter\", is case-sensitive, and requires proper URL encoding. */\n valuesFilter?: string;\n}\nexport interface GetNftMarketSaleCountQueryParamOpts {\n /** * The number of days to return data for. Request up 365 days. Defaults to 30 days. */\n days?: number;\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n}\nexport interface GetNftMarketVolumeQueryParamOpts {\n /** * The number of days to return data for. Request up 365 days. Defaults to 30 days. */\n days?: number;\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n}\nexport interface GetNftMarketFloorPriceQueryParamOpts {\n /** * The number of days to return data for. Request up 365 days. Defaults to 30 days. */\n days?: number;\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n}\n\n/**\n * NFT APIs\n * \n */\nexport class NftService {\n private LIMIT;\n constructor(private apiKey: string, private debug: boolean = false, private threadCount: number = 3, private is_key_valid: boolean, private enableRetry: boolean = true, private source: Source) {\n this.LIMIT = pLimit(this.threadCount);\n }\n\n\n /**\n *\n * Commonly used to fetch the list of NFT collections with downloaded and cached off chain data like token metadata and asset files.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {GetChainCollectionsQueryParamOpts} queryParamOpts\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n * - `noSpam`: If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`.\n *\n */\n public async* getChainCollections(chainName: Chain | Chains | ChainID, queryParamOpts?: GetChainCollectionsQueryParamOpts): AsyncIterable<ChainCollectionItem> {\n let success = false;\n let res: ChainCollectionItem;\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n throw new Error(`An error occurred 401: ${ApiKeyValidator.INVALID_API_KEY_MESSAGE}`);\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n \n if (queryParamOpts?.noSpam !== undefined) {\n urlParams.append(\"no-spam\", queryParamOpts?.noSpam.toString());\n }\n\n for await (res of paginateEndpoint<ChainCollectionItem, ChainCollectionResponse>(`https://api.covalenthq.com/v1/${chainName}/nft/collections/`, this.apiKey, urlParams, ChainCollectionItem, this.debug, this.threadCount, this.enableRetry, this.source)) {\n yield res;\n }\n\n success = true;\n } catch (error) {\n success = true;\n throw new Error(error.message);\n }\n }\n }\n\n /**\n *\n * Commonly used to fetch the list of NFT collections with downloaded and cached off chain data like token metadata and asset files.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {GetChainCollectionsQueryParamOpts} queryParamOpts\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n * - `noSpam`: If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`.\n *\n */\n public async getChainCollectionsByPage(chainName: Chain | Chains | ChainID, queryParamOpts?: GetChainCollectionsQueryParamOpts): Promise<Response<ChainCollectionResponse>> {\n let success = false;\n let data: Response<ChainCollectionResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<ChainCollectionResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n \n if (queryParamOpts?.noSpam !== undefined) {\n urlParams.append(\"no-spam\", queryParamOpts?.noSpam.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/nft/collections/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/nft/collections/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new ChainCollectionResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to render the NFTs (including ERC721 and ERC1155) held by an address.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetNftsForAddressQueryParamOpts} queryParamOpts\n * - `noSpam`: If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`.\n * - `noNftAssetMetadata`: If `true`, the response shape is limited to a list of collections and token ids, omitting metadata and asset information. Helpful for faster response times and wallets holding a large number of NFTs.\n * - `withUncached`: By default, this endpoint only works on chains where we've cached the assets and the metadata. When set to `true`, the API will fetch metadata from upstream servers even if it's not cached - the downside being that the upstream server can block or rate limit the call and therefore resulting in time outs or slow response times on the Covalent side.\n *\n */\n public async getNftsForAddress(chainName: Chain | Chains | ChainID, walletAddress: string, queryParamOpts?: GetNftsForAddressQueryParamOpts): Promise<Response<NftAddressBalanceNftResponse>> {\n let success = false;\n let data: Response<NftAddressBalanceNftResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NftAddressBalanceNftResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.noSpam !== undefined) {\n urlParams.append(\"no-spam\", queryParamOpts?.noSpam.toString());\n }\n \n if (queryParamOpts?.noNftAssetMetadata !== undefined) {\n urlParams.append(\"no-nft-asset-metadata\", queryParamOpts?.noNftAssetMetadata.toString());\n }\n \n if (queryParamOpts?.withUncached !== undefined) {\n urlParams.append(\"with-uncached\", queryParamOpts?.withUncached.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/balances_nft/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/balances_nft/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new NftAddressBalanceNftResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get NFT token IDs with metadata from a collection. Useful for building NFT card displays.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} contractAddress - The requested contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetTokenIdsForContractWithMetadataQueryParamOpts} queryParamOpts\n * - `noMetadata`: Omit metadata.\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n * - `traitsFilter`: Filters NFTs based on a specific trait. If this filter is used, the API will return all NFTs with the specified trait. Accepts comma-separated values, is case-sensitive, and requires proper URL encoding.\n * - `valuesFilter`: Filters NFTs based on a specific trait value. If this filter is used, the API will return all NFTs with the specified trait value. If used with \"traits-filter\", only NFTs matching both filters will be returned. Accepts comma-separated values, is case-sensitive, and requires proper URL encoding.\n * - `withUncached`: By default, this endpoint only works on chains where we've cached the assets and the metadata. When set to `true`, the API will fetch metadata from upstream servers even if it's not cached - the downside being that the upstream server can block or rate limit the call and therefore resulting in time outs or slow response times on the Covalent side.\n *\n */\n public async* getTokenIdsForContractWithMetadata(chainName: Chain | Chains | ChainID, contractAddress: string, queryParamOpts?: GetTokenIdsForContractWithMetadataQueryParamOpts): AsyncIterable<NftTokenContract> {\n let success = false;\n let res: NftTokenContract;\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n throw new Error(`An error occurred 401: ${ApiKeyValidator.INVALID_API_KEY_MESSAGE}`);\n }\n \n if (queryParamOpts?.noMetadata !== undefined) {\n urlParams.append(\"no-metadata\", queryParamOpts?.noMetadata.toString());\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n \n if (queryParamOpts?.traitsFilter !== undefined) {\n urlParams.append(\"traits-filter\", queryParamOpts?.traitsFilter.toString());\n }\n \n if (queryParamOpts?.valuesFilter !== undefined) {\n urlParams.append(\"values-filter\", queryParamOpts?.valuesFilter.toString());\n }\n \n if (queryParamOpts?.withUncached !== undefined) {\n urlParams.append(\"with-uncached\", queryParamOpts?.withUncached.toString());\n }\n \n\n for await (res of paginateEndpoint<NftTokenContract, NftMetadataResponse>(`https://api.covalenthq.com/v1/${chainName}/nft/${contractAddress}/metadata/`, this.apiKey, urlParams, NftTokenContract, this.debug, this.threadCount, this.enableRetry, this.source)) {\n yield res;\n }\n\n success = true;\n } catch (error) {\n success = true;\n throw new Error(error.message);\n }\n }\n }\n\n /**\n *\n * Commonly used to get NFT token IDs with metadata from a collection. Useful for building NFT card displays.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} contractAddress - The requested contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetTokenIdsForContractWithMetadataQueryParamOpts} queryParamOpts\n * - `noMetadata`: Omit metadata.\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n * - `traitsFilter`: Filters NFTs based on a specific trait. If this filter is used, the API will return all NFTs with the specified trait. Accepts comma-separated values, is case-sensitive, and requires proper URL encoding.\n * - `valuesFilter`: Filters NFTs based on a specific trait value. If this filter is used, the API will return all NFTs with the specified trait value. If used with \"traits-filter\", only NFTs matching both filters will be returned. Accepts comma-separated values, is case-sensitive, and requires proper URL encoding.\n * - `withUncached`: By default, this endpoint only works on chains where we've cached the assets and the metadata. When set to `true`, the API will fetch metadata from upstream servers even if it's not cached - the downside being that the upstream server can block or rate limit the call and therefore resulting in time outs or slow response times on the Covalent side.\n *\n */\n public async getTokenIdsForContractWithMetadataByPage(chainName: Chain | Chains | ChainID, contractAddress: string, queryParamOpts?: GetTokenIdsForContractWithMetadataQueryParamOpts): Promise<Response<NftMetadataResponse>> {\n let success = false;\n let data: Response<NftMetadataResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NftMetadataResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.noMetadata !== undefined) {\n urlParams.append(\"no-metadata\", queryParamOpts?.noMetadata.toString());\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n \n if (queryParamOpts?.traitsFilter !== undefined) {\n urlParams.append(\"traits-filter\", queryParamOpts?.traitsFilter.toString());\n }\n \n if (queryParamOpts?.valuesFilter !== undefined) {\n urlParams.append(\"values-filter\", queryParamOpts?.valuesFilter.toString());\n }\n \n if (queryParamOpts?.withUncached !== undefined) {\n urlParams.append(\"with-uncached\", queryParamOpts?.withUncached.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/nft/${contractAddress}/metadata/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/nft/${contractAddress}/metadata/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new NftMetadataResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get a single NFT metadata by token ID from a collection. Useful for building NFT card displays.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} contractAddress - The requested contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {string} tokenId - The requested token ID.\n * @param {GetNftMetadataForGivenTokenIdForContractQueryParamOpts} queryParamOpts\n * - `noMetadata`: Omit metadata.\n * - `withUncached`: By default, this endpoint only works on chains where we've cached the assets and the metadata. When set to `true`, the API will fetch metadata from upstream servers even if it's not cached - the downside being that the upstream server can block or rate limit the call and therefore resulting in time outs or slow response times on the Covalent side.\n *\n */\n public async getNftMetadataForGivenTokenIdForContract(chainName: Chain | Chains | ChainID, contractAddress: string, tokenId: string, queryParamOpts?: GetNftMetadataForGivenTokenIdForContractQueryParamOpts): Promise<Response<NftMetadataResponse>> {\n let success = false;\n let data: Response<NftMetadataResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NftMetadataResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.noMetadata !== undefined) {\n urlParams.append(\"no-metadata\", queryParamOpts?.noMetadata.toString());\n }\n \n if (queryParamOpts?.withUncached !== undefined) {\n urlParams.append(\"with-uncached\", queryParamOpts?.withUncached.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/nft/${contractAddress}/metadata/${tokenId}/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/nft/${contractAddress}/metadata/${tokenId}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new NftMetadataResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get all transactions of an NFT token. Useful for building a transaction history table or price chart.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} contractAddress - The requested contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {string} tokenId - The requested token ID.\n * @param {GetNftTransactionsForContractTokenIdQueryParamOpts} queryParamOpts\n * - `noSpam`: If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`.\n *\n */\n public async getNftTransactionsForContractTokenId(chainName: Chain | Chains | ChainID, contractAddress: string, tokenId: string, queryParamOpts?: GetNftTransactionsForContractTokenIdQueryParamOpts): Promise<Response<NftTransactionsResponse>> {\n let success = false;\n let data: Response<NftTransactionsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NftTransactionsResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.noSpam !== undefined) {\n urlParams.append(\"no-spam\", queryParamOpts?.noSpam.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/tokens/${contractAddress}/nft_transactions/${tokenId}/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/tokens/${contractAddress}/nft_transactions/${tokenId}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new NftTransactionsResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to fetch and render the traits of a collection as seen in rarity calculators.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} collectionContract - The requested collection address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n *\n */\n public async getTraitsForCollection(chainName: Chain | Chains | ChainID, collectionContract: string): Promise<Response<NftCollectionTraitsResponse>> {\n let success = false;\n let data: Response<NftCollectionTraitsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NftCollectionTraitsResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/nft/${collectionContract}/traits/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/nft/${collectionContract}/traits/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new NftCollectionTraitsResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get the count of unique values for traits within an NFT collection.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} collectionContract - The requested collection address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {string} trait - The requested trait.\n *\n */\n public async getAttributesForTraitInCollection(chainName: Chain | Chains | ChainID, collectionContract: string, trait: string): Promise<Response<NftCollectionAttributesForTraitResponse>> {\n let success = false;\n let data: Response<NftCollectionAttributesForTraitResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NftCollectionAttributesForTraitResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/nft/${collectionContract}/traits/${trait}/attributes/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/nft/${collectionContract}/traits/${trait}/attributes/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new NftCollectionAttributesForTraitResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to calculate rarity scores for a collection based on its traits.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} collectionContract - The requested collection address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n *\n */\n public async getCollectionTraitsSummary(chainName: Chain | Chains | ChainID, collectionContract: string): Promise<Response<NftCollectionTraitSummaryResponse>> {\n let success = false;\n let data: Response<NftCollectionTraitSummaryResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NftCollectionTraitSummaryResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/nft/${collectionContract}/traits_summary/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/nft/${collectionContract}/traits_summary/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new NftCollectionTraitSummaryResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to verify ownership of NFTs (including ERC-721 and ERC-1155) within a collection.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {string} collectionContract - The requested collection address.\n * @param {CheckOwnershipInNftQueryParamOpts} queryParamOpts\n * - `traitsFilter`: Filters NFTs based on a specific trait. If this filter is used, the API will return all NFTs with the specified trait. Must be used with \"values-filter\", is case-sensitive, and requires proper URL encoding.\n * - `valuesFilter`: Filters NFTs based on a specific trait value. If this filter is used, the API will return all NFTs with the specified trait value. Must be used with \"traits-filter\", is case-sensitive, and requires proper URL encoding.\n *\n */\n public async checkOwnershipInNft(chainName: Chain | Chains | ChainID, walletAddress: string, collectionContract: string, queryParamOpts?: CheckOwnershipInNftQueryParamOpts): Promise<Response<NftOwnershipForCollectionResponse>> {\n let success = false;\n let data: Response<NftOwnershipForCollectionResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NftOwnershipForCollectionResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n if (queryParamOpts?.traitsFilter !== undefined) {\n urlParams.append(\"traits-filter\", queryParamOpts?.traitsFilter.toString());\n }\n \n if (queryParamOpts?.valuesFilter !== undefined) {\n urlParams.append(\"values-filter\", queryParamOpts?.valuesFilter.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/collection/${collectionContract}/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/collection/${collectionContract}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new NftOwnershipForCollectionResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to verify ownership of a specific token (ERC-721 or ERC-1155) within a collection.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {string} collectionContract - The requested collection address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {string} tokenId - The requested token ID.\n *\n */\n public async checkOwnershipInNftForSpecificTokenId(chainName: Chain | Chains | ChainID, walletAddress: string, collectionContract: string, tokenId: string): Promise<Response<NftOwnershipForCollectionResponse>> {\n let success = false;\n let data: Response<NftOwnershipForCollectionResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NftOwnershipForCollectionResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/collection/${collectionContract}/token/${tokenId}/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/collection/${collectionContract}/token/${tokenId}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new NftOwnershipForCollectionResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n \n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n /**\n *\n * Commonly used to build a time-series chart of the sales count of an NFT collection.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} contractAddress - The requested contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetNftMarketSaleCountQueryParamOpts} queryParamOpts\n * - `days`: The number of days to return data for. Request up 365 days. Defaults to 30 days.\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n *\n */\n public async getNftMarketSaleCount(chainName: Chain | Chains | ChainID, contractAddress: string, queryParamOpts?: GetNftMarketSaleCountQueryParamOpts): Promise<Response<NftMarketSaleCountResponse>> {\n let success = false;\n let data: Response<NftMarketSaleCountResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NftMarketSaleCountResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.days !== undefined) {\n urlParams.append(\"days\", queryParamOpts?.days.toString());\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/nft_market/${contractAddress}/sale_count/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n \n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/nft_market/${contractAddress}/sale_count/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n \n const dataClass = new NftMarketSaleCountResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to build a time-series chart of the transaction volume of an NFT collection.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} contractAddress - The requested contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetNftMarketVolumeQueryParamOpts} queryParamOpts\n * - `days`: The number of days to return data for. Request up 365 days. Defaults to 30 days.\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n *\n */\n public async getNftMarketVolume(chainName: Chain | Chains | ChainID, contractAddress: string, queryParamOpts?: GetNftMarketVolumeQueryParamOpts): Promise<Response<NftMarketVolumeResponse>> {\n let success = false;\n let data: Response<NftMarketVolumeResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NftMarketVolumeResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.days !== undefined) {\n urlParams.append(\"days\", queryParamOpts?.days.toString());\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/nft_market/${contractAddress}/volume/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/nft_market/${contractAddress}/volume/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new NftMarketVolumeResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to render a price floor chart for an NFT collection.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} contractAddress - The requested contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetNftMarketFloorPriceQueryParamOpts} queryParamOpts\n * - `days`: The number of days to return data for. Request up 365 days. Defaults to 30 days.\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n *\n */\n public async getNftMarketFloorPrice(chainName: Chain | Chains | ChainID, contractAddress: string, queryParamOpts?: GetNftMarketFloorPriceQueryParamOpts): Promise<Response<NftMarketFloorPriceResponse>> {\n let success = false;\n let data: Response<NftMarketFloorPriceResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NftMarketFloorPriceResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.days !== undefined) {\n urlParams.append(\"days\", queryParamOpts?.days.toString());\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/nft_market/${contractAddress}/floor_price/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n } \n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/nft_market/${contractAddress}/floor_price/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n \n const dataClass = new NftMarketFloorPriceResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n\n}\n \n ","import { Chain, ChainID, Quote, Source, userAgent } from \"./CovalentClient\";\nimport { debugOutput } from \"../util/ApiHelpers\";\nimport { parseISO } from \"date-fns\";\nimport { ExponentialBackoff } from \"../util/backoff\";\nimport pLimit from \"p-limit\";\nimport { Chains } from \"../util/Chains\";\nimport { ApiKeyValidator } from \"../util/ApiKeyValidator\";\n\nclass TokenPricesResponse {\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The contract logo URL. */\n logo_url: string;\n update_at: Date;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The contract logo URLs. */\n logo_urls: LogoUrls;\n /** * List of response items. */\n prices: Price[];\n /** * List of response items. */\n items: Price[];\n\n constructor(data: TokenPricesResponse) {\n this.contract_decimals = data.contract_decimals;\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.supports_erc = data.supports_erc;\n this.logo_url = data.logo_url;\n this.update_at = data.update_at && data.update_at !== null ? parseISO(data.update_at.toString()) : null;\n this.quote_currency = data.quote_currency;\n this.logo_urls = data.logo_urls && data.logo_urls !== null ? new LogoUrls(data.logo_urls) : null;\n this.prices = data.prices && data.prices !== null ? data.prices.map((itemData: Price) => new Price(itemData)) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: Price) => new Price(itemData)) : null;\n }\n}\nclass LogoUrls {\n /** * The token logo URL. */\n token_logo_url: string;\n /** * The protocol logo URL. */\n protocol_logo_url: string;\n /** * The chain logo URL. */\n chain_logo_url: string;\n\n constructor(data: LogoUrls) {\n this.token_logo_url = data.token_logo_url;\n this.protocol_logo_url = data.protocol_logo_url;\n this.chain_logo_url = data.chain_logo_url;\n }\n}\nclass Price {\n contract_metadata: ContractMetadata;\n /** * The date of the price capture. */\n date: Date;\n /** * The price in the requested `quote-currency`. */\n price: number;\n /** * A prettier version of the price for rendering purposes. */\n pretty_price: string;\n\n constructor(data: Price) {\n this.date = data.date && data.date !== null ? parseISO(data.date.toString()) : null;\n this.price = data.price;\n this.pretty_price = data.pretty_price;\n this.contract_metadata = data.contract_metadata && data.contract_metadata !== null ? new ContractMetadata(data.contract_metadata) : null;\n }\n}\nclass ContractMetadata {\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The contract logo URL. */\n logo_url: string;\n\n constructor(data: ContractMetadata) {\n this.contract_decimals = data.contract_decimals;\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.supports_erc = data.supports_erc;\n this.logo_url = data.logo_url;\n \n }\n}\n\nexport interface GetTokenPricesQueryParamOpts {\n /** * The start day of the historical price range (YYYY-MM-DD). */\n from?: string;\n /** * The end day of the historical price range (YYYY-MM-DD). */\n to?: string;\n /** * Sort the prices in chronological ascending order. By default, it's set to `false` and returns prices in chronological descending order. */\n pricesAtAsc?: boolean;\n}\n/**\n * Pricing APIs\n * \n */\n\nexport class Response<T> {\n data: Array<T>;\n error: boolean;\n error_code: number;\n error_message: string;\n}\n\nexport class PricingService {\n private LIMIT;\n constructor(private apiKey: string, private debug: boolean = false, private threadCount: number = 3, private is_key_valid: boolean, private enableRetry: boolean = true, private source: Source) {\n this.LIMIT = pLimit(this.threadCount);\n }\n\n\n /**\n *\n * Commonly used to get historic prices of a token between date ranges. Supports native tokens.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} quoteCurrency - The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * @param {string} contractAddress - Contract address for the token. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically. Supports multiple contract addresses separated by commas.\n * @param {GetTokenPricesQueryParamOpts} queryParamOpts\n * - `from`: The start day of the historical price range (YYYY-MM-DD).\n * - `to`: The end day of the historical price range (YYYY-MM-DD).\n * - `pricesAtAsc`: Sort the prices in chronological ascending order. By default, it's set to `false` and returns prices in chronological descending order.\n *\n */\n public async getTokenPrices(chainName: Chain | Chains | ChainID, quoteCurrency: Quote, contractAddress: string, queryParamOpts?: GetTokenPricesQueryParamOpts): Promise<Response<TokenPricesResponse>> {\n let success = false;\n let data: Response<TokenPricesResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TokenPricesResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.from !== undefined) {\n urlParams.append(\"from\", queryParamOpts?.from.toString());\n }\n \n if (queryParamOpts?.to !== undefined) {\n urlParams.append(\"to\", queryParamOpts?.to.toString());\n }\n \n if (queryParamOpts?.pricesAtAsc !== undefined) {\n urlParams.append(\"prices-at-asc\", queryParamOpts?.pricesAtAsc.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/pricing/historical_by_addresses_v2/${chainName}/${quoteCurrency}/${contractAddress}/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/pricing/historical_by_addresses_v2/${chainName}/${quoteCurrency}/${contractAddress}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const res: TokenPricesResponse[] = [];\n data.data.forEach((e) => {\n const dataClass = new TokenPricesResponse(e);\n \n res.push(dataClass);\n });\n success = true;\n return {\n data: res,\n error: data.error,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n\n}\n \n ","import { Chain, Quote, userAgent, Response, ChainID, Source } from \"./CovalentClient\";\nimport { debugOutput } from \"../util/ApiHelpers\";\nimport { parseISO } from \"date-fns\";\nimport { ExponentialBackoff } from \"../util/backoff\";\nimport pLimit from \"p-limit\";\nimport { Chains } from \"../util/Chains\";\nimport { ApiKeyValidator } from \"../util/ApiKeyValidator\";\n\nclass TransactionResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: Transaction[];\n\n constructor(data: TransactionResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: Transaction) => new Transaction(itemData)) : null;\n }\n}\nclass Transaction {\n /** * The block signed timestamp in UTC. */\n block_signed_at: Date;\n /** * The height of the block. */\n block_height: number;\n /** * The hash of the block. Use it to remove transactions from re-org-ed blocks. */\n block_hash: string;\n /** * The requested transaction hash. */\n tx_hash: string;\n /** * The offset is the position of the tx in the block. */\n tx_offset: number;\n /** * Indicates whether a transaction failed or succeeded. */\n successful: boolean;\n /** * The sender's wallet address. */\n from_address: string;\n /** * The address of the miner. */\n miner_address: string;\n /** * The label of `from` address. */\n from_address_label: string;\n /** * The receiver's wallet address. */\n to_address: string;\n /** * The label of `to` address. */\n to_address_label: string;\n /** * The value attached to this tx. */\n value: bigint | null;\n /** * The value attached in `quote-currency` to this tx. */\n value_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_value_quote: string;\n /** * The requested chain native gas token metadata. */\n gas_metadata: ContractMetadata;\n gas_offered: number;\n /** * The gas spent for this tx. */\n gas_spent: number;\n /** * The gas price at the time of this tx. */\n gas_price: number;\n /** * The total transaction fees (`gas_price` * `gas_spent`) paid for this tx, denoted in wei. */\n fees_paid: bigint | null;\n /** * The gas spent in `quote-currency` denomination. */\n gas_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_gas_quote: string;\n /** * The native gas exchange rate for the requested `quote-currency`. */\n gas_quote_rate: number;\n /** * The explorer links for this transaction. */\n explorers: Explorer[];\n /** * The details for the dex transaction. */\n dex_details: DexReport[];\n /** * The details for the NFT sale transaction. */\n nft_sale_details: NftSalesReport[];\n /** * The details for the lending protocol transaction. */\n lending_details: LendingReport[];\n /** * The log events. */\n log_events: LogEvent[];\n /** * The details related to the safe transaction. */\n safe_details: SafeDetails[];\n\n constructor(data: Transaction) {\n this.block_signed_at = data.block_signed_at && data.block_signed_at !== null ? parseISO(data.block_signed_at.toString()) : null;\n this.block_height = data.block_height;\n this.block_hash = data.block_hash;\n this.tx_hash = data.tx_hash;\n this.tx_offset = data.tx_offset;\n this.successful = data.successful;\n this.from_address = data.from_address;\n this.miner_address = data.miner_address;\n this.from_address_label = data.from_address_label;\n this.to_address = data.to_address;\n this.to_address_label = data.to_address_label;\n this.value = data.value && data.value !== null ? BigInt(data.value) : null;\n this.value_quote = data.value_quote;\n this.pretty_value_quote = data.pretty_value_quote;\n this.gas_offered = data.gas_offered;\n this.gas_spent = data.gas_spent;\n this.gas_price = data.gas_price;\n this.fees_paid = data.fees_paid && data.fees_paid !== null ? BigInt(data.fees_paid) : null;\n this.gas_quote = data.gas_quote;\n this.pretty_gas_quote = data.pretty_gas_quote;\n this.gas_quote_rate = data.gas_quote_rate;\n this.gas_metadata = data.gas_metadata && data.gas_metadata !== null ? new ContractMetadata(data.gas_metadata) : null;\n this.explorers = data.explorers && data.explorers !== null ? data.explorers.map((itemData: Explorer) => new Explorer(itemData)) : null;\n this.dex_details = data.dex_details && data.dex_details !== null ? data.dex_details.map((itemData: DexReport) => new DexReport(itemData)) : null;\n this.nft_sale_details = data.nft_sale_details && data.nft_sale_details !== null ? data.nft_sale_details.map((itemData: NftSalesReport) => new NftSalesReport(itemData)) : null;\n this.lending_details = data.lending_details && data.lending_details !== null ? data.lending_details.map((itemData: LendingReport) => new LendingReport(itemData)) : null;\n this.log_events = data.log_events && data.log_events !== null ? data.log_events.map((itemData: LogEvent) => new LogEvent(itemData)) : null;\n this.safe_details = data.safe_details && data.safe_details !== null ? data.safe_details.map((itemData: SafeDetails) => new SafeDetails(itemData)) : null;\n }\n}\nclass ContractMetadata {\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The contract logo URL. */\n logo_url: string;\n\n constructor(data: ContractMetadata) {\n this.contract_decimals = data.contract_decimals;\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.supports_erc = data.supports_erc;\n this.logo_url = data.logo_url;\n \n }\n}\nclass Explorer {\n /** * The name of the explorer. */\n label: string;\n /** * The URL of the explorer. */\n url: string;\n\n constructor(data: Explorer) {\n this.label = data.label;\n this.url = data.url;\n \n }\n}\nclass DexReport {\n /** * The offset is the position of the log entry within an event log. */\n log_offset: number;\n /** * Stores the name of the protocol that facilitated the event. */\n protocol_name: string;\n /** * Stores the contract address of the protocol that facilitated the event. */\n protocol_address: string;\n /** * The protocol logo URL. */\n protocol_logo_url: string;\n /** * Stores the aggregator responsible for the event. */\n aggregator_name: string;\n /** * Stores the contract address of the aggregator responsible for the event. */\n aggregator_address: string;\n /** * DEXs often have multiple version - e.g Uniswap V1, V2 and V3. The `version` field allows you to look at a specific version of the DEX. */\n version: number;\n /** * Similarly to the `version` field, `fork_version` gives you the version of the forked DEX. For example, most DEXs are a fork of Uniswap V2; therefore, `fork` = `aave` & `fork_version` = `2` */\n fork_version: number;\n /** * Many DEXs are a fork of an already established DEX. The fork field allows you to see which DEX has been forked. */\n fork: string;\n /** * Stores the event taking place - e.g `swap`, `add_liquidity` and `remove_liquidity`. */\n event: string;\n /** * Stores the address of the pair that the user interacts with. */\n pair_address: string;\n pair_lp_fee_bps: number;\n lp_token_address: string;\n lp_token_ticker: string;\n lp_token_num_decimals: number;\n lp_token_name: string;\n lp_token_value: string;\n exchange_rate_usd: number;\n /** * Stores the address of token 0 in the specific pair. */\n token_0_address: string;\n /** * Stores the ticker symbol of token 0 in the specific pair. */\n token_0_ticker: string;\n /** * Stores the number of contract decimals of token 0 in the specific pair. */\n token_0_num_decimals: number;\n /** * Stores the contract name of token 0 in the specific pair. */\n token_0_name: string;\n /** * Stores the address of token 1 in the specific pair. */\n token_1_address: string;\n /** * Stores the ticker symbol of token 1 in the specific pair. */\n token_1_ticker: string;\n /** * Stores the number of contract decimals of token 1 in the specific pair. */\n token_1_num_decimals: number;\n /** * Stores the contract name of token 1 in the specific pair. */\n token_1_name: string;\n /** * Stores the amount of token 0 used in the transaction. For example, 1 ETH, 100 USDC, 30 UNI, etc. */\n token_0_amount: string;\n token_0_quote_rate: number;\n token_0_usd_quote: number;\n pretty_token_0_usd_quote: string;\n token_0_logo_url: string;\n /** * Stores the amount of token 1 used in the transaction. For example, 1 ETH, 100 USDC, 30 UNI, etc. */\n token_1_amount: string;\n token_1_quote_rate: number;\n token_1_usd_quote: number;\n pretty_token_1_usd_quote: string;\n token_1_logo_url: string;\n /** * Stores the wallet address that initiated the transaction (i.e the wallet paying the gas fee). */\n sender: string;\n /** * Stores the recipient of the transaction - recipients can be other wallets or smart contracts. For example, if you want to Swap tokens on Uniswap, the Uniswap router would typically be the recipient of the transaction. */\n recipient: string;\n\n constructor(data: DexReport) {\n this.log_offset = data.log_offset;\n this.protocol_name = data.protocol_name;\n this.protocol_address = data.protocol_address;\n this.protocol_logo_url = data.protocol_logo_url;\n this.aggregator_name = data.aggregator_name;\n this.aggregator_address = data.aggregator_address;\n this.version = data.version;\n this.fork_version = data.fork_version;\n this.fork = data.fork;\n this.event = data.event;\n this.pair_address = data.pair_address;\n this.pair_lp_fee_bps = data.pair_lp_fee_bps;\n this.lp_token_address = data.lp_token_address;\n this.lp_token_ticker = data.lp_token_ticker;\n this.lp_token_num_decimals = data.lp_token_num_decimals;\n this.lp_token_name = data.lp_token_name;\n this.lp_token_value = data.lp_token_value;\n this.exchange_rate_usd = data.exchange_rate_usd;\n this.token_0_address = data.token_0_address;\n this.token_0_ticker = data.token_0_ticker;\n this.token_0_num_decimals = data.token_0_num_decimals;\n this.token_0_name = data.token_0_name;\n this.token_1_address = data.token_1_address;\n this.token_1_ticker = data.token_1_ticker;\n this.token_1_num_decimals = data.token_1_num_decimals;\n this.token_1_name = data.token_1_name;\n this.token_0_amount = data.token_0_amount;\n this.token_0_quote_rate = data.token_0_quote_rate;\n this.token_0_usd_quote = data.token_0_usd_quote;\n this.pretty_token_0_usd_quote = data.pretty_token_0_usd_quote;\n this.token_0_logo_url = data.token_0_logo_url;\n this.token_1_amount = data.token_1_amount;\n this.token_1_quote_rate = data.token_1_quote_rate;\n this.token_1_usd_quote = data.token_1_usd_quote;\n this.pretty_token_1_usd_quote = data.pretty_token_1_usd_quote;\n this.token_1_logo_url = data.token_1_logo_url;\n this.sender = data.sender;\n this.recipient = data.recipient;\n \n }\n}\nclass NftSalesReport {\n /** * The offset is the position of the log entry within an event log. */\n log_offset: number;\n /** * Stores the topic event hash. All events have a unique topic event hash. */\n topic0: string;\n /** * Stores the contract address of the protocol that facilitated the event. */\n protocol_contract_address: string;\n /** * Stores the name of the protocol that facilitated the event. */\n protocol_name: string;\n /** * The protocol logo URL. */\n protocol_logo_url: string;\n /** * Stores the address of the transaction recipient. */\n to: string;\n /** * Stores the address of the transaction sender. */\n from: string;\n /** * Stores the address selling the NFT. */\n maker: string;\n /** * Stores the address buying the NFT. */\n taker: string;\n /** * Stores the NFTs token ID. All NFTs have a token ID. Within a collection, these token IDs are unique. If the NFT is transferred to another owner, the token id remains the same, as this number is its identifier within a collection. For example, if a collection has 10K NFTs then an NFT in that collection can have a token ID from 1-10K. */\n token_id: string;\n /** * Stores the address of the collection. For example, [Bored Ape Yacht Club](https://etherscan.io/token/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d) */\n collection_address: string;\n /** * Stores the name of the collection. */\n collection_name: string;\n /** * Stores the address of the token used to purchase the NFT. */\n token_address: string;\n /** * Stores the name of the token used to purchase the NFT. */\n token_name: string;\n /** * Stores the ticker symbol of the token used to purchase the NFT. */\n ticker_symbol: string;\n /** * Stores the number decimal of the token used to purchase the NFT. */\n num_decimals: number;\n contract_quote_rate: number;\n /** * The token amount used to purchase the NFT. For example, if the user purchased an NFT for 1 ETH. The `nft_token_price` field will hold `1`. */\n nft_token_price: number;\n /** * The USD amount used to purchase the NFT. */\n nft_token_price_usd: number;\n pretty_nft_token_price_usd: string;\n /** * The price of the NFT denominated in the chains native token. Even if a seller sells their NFT for DAI or MANA, this field denominates the price in the native token (e.g. ETH, AVAX, FTM, etc.) */\n nft_token_price_native: number;\n pretty_nft_token_price_native: string;\n /** * Stores the number of NFTs involved in the sale. It's quick routine to see multiple NFTs involved in a single sale. */\n token_count: number;\n num_token_ids_sold_per_sale: number;\n num_token_ids_sold_per_tx: number;\n num_collections_sold_per_sale: number;\n num_collections_sold_per_tx: number;\n trade_type: string;\n trade_group_type: string;\n\n constructor(data: NftSalesReport) {\n this.log_offset = data.log_offset;\n this.topic0 = data.topic0;\n this.protocol_contract_address = data.protocol_contract_address;\n this.protocol_name = data.protocol_name;\n this.protocol_logo_url = data.protocol_logo_url;\n this.to = data.to;\n this.from = data.from;\n this.maker = data.maker;\n this.taker = data.taker;\n this.token_id = data.token_id;\n this.collection_address = data.collection_address;\n this.collection_name = data.collection_name;\n this.token_address = data.token_address;\n this.token_name = data.token_name;\n this.ticker_symbol = data.ticker_symbol;\n this.num_decimals = data.num_decimals;\n this.contract_quote_rate = data.contract_quote_rate;\n this.nft_token_price = data.nft_token_price;\n this.nft_token_price_usd = data.nft_token_price_usd;\n this.pretty_nft_token_price_usd = data.pretty_nft_token_price_usd;\n this.nft_token_price_native = data.nft_token_price_native;\n this.pretty_nft_token_price_native = data.pretty_nft_token_price_native;\n this.token_count = data.token_count;\n this.num_token_ids_sold_per_sale = data.num_token_ids_sold_per_sale;\n this.num_token_ids_sold_per_tx = data.num_token_ids_sold_per_tx;\n this.num_collections_sold_per_sale = data.num_collections_sold_per_sale;\n this.num_collections_sold_per_tx = data.num_collections_sold_per_tx;\n this.trade_type = data.trade_type;\n this.trade_group_type = data.trade_group_type;\n \n }\n}\nclass LendingReport {\n /** * The offset is the position of the log entry within an event log. */\n log_offset: number;\n /** * Stores the name of the lending protocol that facilitated the event. */\n protocol_name: string;\n /** * Stores the contract address of the lending protocol that facilitated the event. */\n protocol_address: string;\n /** * The protocol logo URL. */\n protocol_logo_url: string;\n /** * Lending protocols often have multiple version (e.g. Aave V1, V2 and V3). The `version` field allows you to look at a specific version of the Lending protocol. */\n version: string;\n /** * Many lending protocols are a fork of an already established protocol. The fork column allows you to see which lending protocol has been forked. */\n fork: string;\n /** * Similarly to the `version` column, `fork_version` gives you the version of the forked lending protocol. For example, most lending protocols in the space are a fork of Aave V2; therefore, `fork` = `aave` & `fork_version` = `2` */\n fork_version: string;\n /** * Stores the event taking place - e.g `borrow`, `deposit`, `liquidation`, 'repay' and 'withdraw'. */\n event: string;\n /** * Stores the name of the LP token issued by the lending protocol. LP tokens can be debt or interest bearing tokens. */\n lp_token_name: string;\n /** * Stores the number decimal of the LP token. */\n lp_decimals: number;\n /** * Stores the ticker symbol of the LP token. */\n lp_ticker_symbol: string;\n /** * Stores the token address of the LP token. */\n lp_token_address: string;\n /** * Stores the amount of LP token used in the event (e.g. 1 aETH, 100 cUSDC, etc). */\n lp_token_amount: number;\n /** * Stores the total USD amount of all the LP Token used in the event. */\n lp_token_price: number;\n /** * Stores the exchange rate between the LP and underlying token. */\n exchange_rate: number;\n /** * Stores the USD price of the LP Token used in the event. */\n exchange_rate_usd: number;\n /** * Stores the name of the token going into the lending protocol (e.g the token getting deposited). */\n token_name_in: string;\n /** * Stores the number decimal of the token going into the lending protocol. */\n token_decimal_in: number;\n /** * Stores the address of the token going into the lending protocol. */\n token_address_in: string;\n /** * Stores the ticker symbol of the token going into the lending protocol. */\n token_ticker_in: string;\n /** * Stores the logo URL of the token going into the lending protocol. */\n token_logo_in: string;\n /** * Stores the amount of tokens going into the lending protocol (e.g 1 ETH, 100 USDC, etc). */\n token_amount_in: number;\n /** * Stores the total USD amount of all tokens going into the lending protocol. */\n amount_in_usd: number;\n pretty_amount_in_usd: string;\n /** * Stores the name of the token going out of the lending protocol (e.g the token getting deposited). */\n token_name_out: string;\n /** * Stores the number decimal of the token going out of the lending protocol. */\n token_decimals_out: number;\n /** * Stores the address of the token going out of the lending protocol. */\n token_address_out: string;\n /** * Stores the ticker symbol of the token going out of the lending protocol. */\n token_ticker_out: string;\n /** * Stores the logo URL of the token going out of the lending protocol. */\n token_logo_out: string;\n /** * Stores the amount of tokens going out of the lending protocol (e.g 1 ETH, 100 USDC, etc). */\n token_amount_out: number;\n /** * Stores the total USD amount of all tokens going out of the lending protocol. */\n amount_out_usd: number;\n pretty_amount_out_usd: string;\n /** * Stores the type of loan the user is taking out. Lending protocols enable you to take out a stable or variable loan. Only relevant to borrow events. */\n borrow_rate_mode: number;\n /** * Stores the interest rate of the loan. Only relevant to borrow events. */\n borrow_rate: number;\n on_behalf_of: string;\n /** * Stores the wallet address liquidating the loan. Only relevant to liquidation events. */\n liquidator: string;\n /** * Stores the wallet address of the user initiating the event. */\n user: string;\n\n constructor(data: LendingReport) {\n this.log_offset = data.log_offset;\n this.protocol_name = data.protocol_name;\n this.protocol_address = data.protocol_address;\n this.protocol_logo_url = data.protocol_logo_url;\n this.version = data.version;\n this.fork = data.fork;\n this.fork_version = data.fork_version;\n this.event = data.event;\n this.lp_token_name = data.lp_token_name;\n this.lp_decimals = data.lp_decimals;\n this.lp_ticker_symbol = data.lp_ticker_symbol;\n this.lp_token_address = data.lp_token_address;\n this.lp_token_amount = data.lp_token_amount;\n this.lp_token_price = data.lp_token_price;\n this.exchange_rate = data.exchange_rate;\n this.exchange_rate_usd = data.exchange_rate_usd;\n this.token_name_in = data.token_name_in;\n this.token_decimal_in = data.token_decimal_in;\n this.token_address_in = data.token_address_in;\n this.token_ticker_in = data.token_ticker_in;\n this.token_logo_in = data.token_logo_in;\n this.token_amount_in = data.token_amount_in;\n this.amount_in_usd = data.amount_in_usd;\n this.pretty_amount_in_usd = data.pretty_amount_in_usd;\n this.token_name_out = data.token_name_out;\n this.token_decimals_out = data.token_decimals_out;\n this.token_address_out = data.token_address_out;\n this.token_ticker_out = data.token_ticker_out;\n this.token_logo_out = data.token_logo_out;\n this.token_amount_out = data.token_amount_out;\n this.amount_out_usd = data.amount_out_usd;\n this.pretty_amount_out_usd = data.pretty_amount_out_usd;\n this.borrow_rate_mode = data.borrow_rate_mode;\n this.borrow_rate = data.borrow_rate;\n this.on_behalf_of = data.on_behalf_of;\n this.liquidator = data.liquidator;\n this.user = data.user;\n \n }\n}\nclass LogEvent {\n /** * The block signed timestamp in UTC. */\n block_signed_at: Date;\n /** * The height of the block. */\n block_height: number;\n /** * The offset is the position of the tx in the block. */\n tx_offset: number;\n /** * The offset is the position of the log entry within an event log. */\n log_offset: number;\n /** * The requested transaction hash. */\n tx_hash: string;\n /** * The log topics in raw data. */\n raw_log_topics: string[];\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n sender_contract_decimals: number;\n /** * The name of the sender. */\n sender_name: string;\n sender_contract_ticker_symbol: string;\n /** * The address of the sender. */\n sender_address: string;\n /** * The label of the sender address. */\n sender_address_label: string;\n /** * The contract logo URL. */\n sender_logo_url: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The address of the deployed UniswapV2 like factory contract for this DEX. */\n sender_factory_address: string;\n /** * The log events in raw. */\n raw_log_data: string;\n /** * The decoded item. */\n decoded: DecodedItem;\n\n constructor(data: LogEvent) {\n this.block_signed_at = data.block_signed_at && data.block_signed_at !== null ? parseISO(data.block_signed_at.toString()) : null;\n this.block_height = data.block_height;\n this.tx_offset = data.tx_offset;\n this.log_offset = data.log_offset;\n this.tx_hash = data.tx_hash;\n this.raw_log_topics = data.raw_log_topics;\n this.sender_contract_decimals = data.sender_contract_decimals;\n this.sender_name = data.sender_name;\n this.sender_contract_ticker_symbol = data.sender_contract_ticker_symbol;\n this.sender_address = data.sender_address;\n this.sender_address_label = data.sender_address_label;\n this.sender_logo_url = data.sender_logo_url;\n this.supports_erc = data.supports_erc;\n this.sender_factory_address = data.sender_factory_address;\n this.raw_log_data = data.raw_log_data;\n this.decoded = data.decoded && data.decoded !== null ? new DecodedItem(data.decoded) : null;\n }\n}\nclass SafeDetails {\n /** * The address that signed the safe transaction. */\n owner_address: string;\n /** * The signature of the owner for the safe transaction. */\n signature: string;\n /** * The type of safe signature used. */\n signature_type: string;\n\n constructor(data: SafeDetails) {\n this.owner_address = data.owner_address;\n this.signature = data.signature;\n this.signature_type = data.signature_type;\n \n }\n}\nclass DecodedItem {\n name: string;\n signature: string;\n params: Param[];\n\n constructor(data: DecodedItem) {\n this.name = data.name;\n this.signature = data.signature;\n this.params = data.params && data.params !== null ? data.params.map((itemData: Param) => new Param(itemData)) : null;\n }\n}\nclass Param {\n name: string;\n type: string;\n indexed: boolean;\n decoded: boolean;\n value: string;\n\n constructor(data: Param) {\n this.name = data.name;\n this.type = data.type;\n this.indexed = data.indexed;\n this.decoded = data.decoded;\n this.value = data.value;\n \n }\n}\nclass RecentTransactionsResponse {\n /** * The requested address. */\n address: string;\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * The current page of the response. */\n current_page: number;\n links: PaginationLinks;\n /** * List of response items. */\n items: Transaction[];\n\n constructor(data: RecentTransactionsResponse, private _debug: boolean, private _apiKey: string, private _threadCount: number, private _urlParams: URLSearchParams, private _enableRetry: boolean, private _source: Source) {\n this.address = data.address;\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.quote_currency = data.quote_currency;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.current_page = data.current_page;\n this.links = data.links && data.links !== null ? new PaginationLinks(data.links) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: Transaction) => new Transaction(itemData)) : null;\n }\n\n async prev(): Promise<Response<RecentTransactionsResponse>> {\n let success = false;\n let data: Response<RecentTransactionsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<RecentTransactionsResponse>>(this._apiKey, this._debug);\n const LIMIT = pLimit(this._threadCount);\n while (!success) {\n try {\n\n let startTime;\n if (this._debug) {\n startTime = new Date();\n }\n\n if (this.links.prev === null) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: 400,\n error_message: \"Invalid URL: URL link cannot be null\"\n }\n }\n\n const url = `${this.links.prev}?${this._urlParams}`;\n\n response = await LIMIT(() => fetch(`${this.links.prev}?${this._urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this._apiKey}`,\n \"X-Requested-With\": this._source ? this._source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this._enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await LIMIT(() => backoff.backOff(response ? response.url : url, this._source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new RecentTransactionsResponse(data.data, this._debug, this._apiKey, this._threadCount, this._urlParams, this._enableRetry, this._source);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n async next(): Promise<Response<RecentTransactionsResponse>> {\n let success = false;\n let data: Response<RecentTransactionsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<RecentTransactionsResponse>>(this._apiKey, this._debug);\n const LIMIT = pLimit(this._threadCount);\n while (!success) {\n try {\n\n let startTime;\n if (this._debug) {\n startTime = new Date();\n }\n\n if (this.links.next === null) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: 400,\n error_message: \"Invalid URL: URL link cannot be null\"\n }\n }\n\n const url = `${this.links.next}?${this._urlParams}`;\n\n response = await LIMIT(() => fetch(`${this.links.next}?${this._urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this._apiKey}`,\n \"X-Requested-With\": this._source ? this._source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this._enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await LIMIT(() => backoff.backOff(response ? response.url : url, this._source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new RecentTransactionsResponse(data.data, this._debug, this._apiKey, this._threadCount, this._urlParams, this._enableRetry, this._source);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n}\nclass PaginationLinks {\n /** * URL link to the next page. */\n prev: string;\n /** * URL link to the previous page. */\n next: string;\n\n constructor(data: PaginationLinks) {\n this.prev = data.prev;\n this.next = data.next; \n }\n}\nclass TransactionsBlockPageResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n links: PaginationLinks;\n /** * List of response items. */\n items: Transaction[];\n\n constructor(data: TransactionsBlockPageResponse, private _debug: boolean, private _apiKey: string, private _threadCount: number, private _urlParams: URLSearchParams, private _enableRetry: boolean, private _source: Source) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.links = data.links && data.links !== null ? new PaginationLinks(data.links) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: Transaction) => new Transaction(itemData)) : null;\n }\n\n async prev(): Promise<Response<TransactionsBlockPageResponse>> {\n let success = false;\n let data: Response<TransactionsBlockPageResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsBlockPageResponse>>(this._apiKey, this._debug);\n const LIMIT = pLimit(this._threadCount);\n while (!success) {\n try {\n\n let startTime;\n if (this._debug) {\n startTime = new Date();\n }\n\n if (this.links.prev === null) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: 400,\n error_message: \"Invalid URL: URL link cannot be null\"\n }\n }\n\n const url = `${this.links.prev}?${this._urlParams}`;\n\n response = await LIMIT(() => fetch(`${this.links.prev}?${this._urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this._apiKey}`,\n \"X-Requested-With\": this._source ? this._source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this._enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await LIMIT(() => backoff.backOff(response ? response.url : url, this._source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionsBlockPageResponse(data.data, this._debug, this._apiKey, this._threadCount, this._urlParams, this._enableRetry, this._source);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n async next(): Promise<Response<TransactionsBlockPageResponse>> {\n let success = false;\n let data: Response<TransactionsBlockPageResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsBlockPageResponse>>(this._apiKey, this._debug);\n const LIMIT = pLimit(this._threadCount);\n while (!success) {\n try {\n\n let startTime;\n if (this._debug) {\n startTime = new Date();\n }\n\n if (this.links.next === null) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: 400,\n error_message: \"Invalid URL: URL link cannot be null\"\n }\n }\n\n const url = `${this.links.next}?${this._urlParams}`;\n\n response = await LIMIT(() => fetch(`${this.links.next}?${this._urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this._apiKey}`,\n \"X-Requested-With\": this._source ? this._source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this._enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await LIMIT(() => backoff.backOff(response ? response.url : url, this._source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionsBlockPageResponse(data.data, this._debug, this._apiKey, this._threadCount, this._urlParams, this._enableRetry, this._source);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n\n}\nclass TransactionsBlockResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: Transaction[];\n\n constructor(data: TransactionsBlockResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: Transaction) => new Transaction(itemData)) : null;\n }\n}\nclass TransactionsSummaryResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested address. */\n address: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: TransactionsSummary[];\n\n constructor(data: TransactionsSummaryResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.address = data.address;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: TransactionsSummary) => new TransactionsSummary(itemData)) : null;\n }\n}\nclass GasSummary {\n /** * The total number of transactions sent by the address. */\n total_sent_count: number;\n /** * The total transaction fees paid by the address, denoted in wei. */\n total_fees_paid: bigint | null;\n /** * The total transaction fees paid by the address, denoted in `quote-currency`. */\n total_gas_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_total_gas_quote: string;\n /** * The average gas quote per transaction. */\n average_gas_quote_per_tx: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_average_gas_quote_per_tx: string;\n /** * The requested chain native gas token metadata. */\n gas_metadata: ContractMetadata;\n\n constructor(data: GasSummary) {\n this.total_sent_count = data.total_sent_count;\n this.total_fees_paid = data.total_fees_paid && data.total_fees_paid !== null ? BigInt(data.total_fees_paid) : null;\n this.total_gas_quote = data.total_gas_quote;\n this.pretty_total_gas_quote = data.pretty_total_gas_quote;\n this.average_gas_quote_per_tx = data.average_gas_quote_per_tx;\n this.pretty_average_gas_quote_per_tx = data.pretty_average_gas_quote_per_tx;\n this.gas_metadata = data.gas_metadata && data.gas_metadata !== null ? new ContractMetadata(data.gas_metadata) : null;\n }\n}\nclass TransactionsSummary {\n /** * The total number of transactions. */\n total_count: number;\n /** * The earliest transaction detected. */\n earliest_transaction: TransactionSummary;\n /** * The latest transaction detected. */\n latest_transaction: TransactionSummary;\n /** * The gas summary for the transactions. */\n gas_summary: GasSummary;\n\n constructor(data: TransactionsSummary) {\n this.total_count = data.total_count;\n this.earliest_transaction = data.earliest_transaction && data.earliest_transaction !== null ? new TransactionSummary(data.earliest_transaction) : null;\n this.latest_transaction = data.latest_transaction && data.latest_transaction !== null ? new TransactionSummary(data.latest_transaction) : null;\n this.gas_summary = data.gas_summary && data.gas_summary !== null ? new GasSummary(data.gas_summary) : null;\n }\n}\nclass TransactionSummary {\n /** * The block signed timestamp in UTC. */\n block_signed_at: Date;\n /** * The requested transaction hash. */\n tx_hash: string;\n /** * The link to the transaction details using the Covalent API. */\n tx_detail_link: string;\n\n constructor(data: TransactionSummary) {\n this.block_signed_at = data.block_signed_at && data.block_signed_at !== null ? parseISO(data.block_signed_at.toString()) : null;\n this.tx_hash = data.tx_hash;\n this.tx_detail_link = data.tx_detail_link;\n \n }\n}\nclass TransactionsResponse {\n /** * The requested address. */\n address: string;\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * The current page of the response. */\n current_page: number;\n links: PaginationLinks;\n /** * List of response items. */\n items: Transaction[];\n\n constructor(data: TransactionsResponse, private _debug: boolean, private _apiKey: string, private _threadCount: number, private _urlParams: URLSearchParams, private _enableRetry: boolean, private _source: Source) {\n this.address = data.address;\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.quote_currency = data.quote_currency;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.current_page = data.current_page;\n this.links = data.links && data.links !== null ? new PaginationLinks(data.links) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: Transaction) => new Transaction(itemData)) : null;\n }\n\n async prev(): Promise<Response<TransactionsResponse>> {\n let success = false;\n let data: Response<TransactionsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsResponse>>(this._apiKey, this._debug);\n const LIMIT = pLimit(this._threadCount);\n while (!success) {\n try {\n\n let startTime;\n if (this._debug) {\n startTime = new Date();\n }\n\n if (this.links.prev === null) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: 400,\n error_message: \"Invalid URL: URL link cannot be null\"\n }\n }\n\n const url = `${this.links.prev}?${this._urlParams}`;\n\n response = await LIMIT(() => fetch(`${this.links.prev}?${this._urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this._apiKey}`,\n \"X-Requested-With\": this._source ? this._source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this._enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await LIMIT(() => backoff.backOff(response ? response.url : url, this._source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionsResponse(data.data, this._debug, this._apiKey, this._threadCount, this._urlParams, this._enableRetry, this._source);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n async next(): Promise<Response<TransactionsResponse>> {\n let success = false;\n let data: Response<TransactionsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsResponse>>(this._apiKey, this._debug);\n const LIMIT = pLimit(this._threadCount);\n while (!success) {\n try {\n\n let startTime;\n if (this._debug) {\n startTime = new Date();\n }\n\n if (this.links.next === null) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: 400,\n error_message: \"Invalid URL: URL link cannot be null\"\n }\n }\n\n const url = `${this.links.next}?${this._urlParams}`;\n\n response = await LIMIT(() => fetch(`${this.links.next}?${this._urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this._apiKey}`,\n \"X-Requested-With\": this._source ? this._source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this._enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await LIMIT(() => backoff.backOff(response ? response.url : url, this._source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionsResponse(data.data, this._debug, this._apiKey, this._threadCount, this._urlParams, this._enableRetry, this._source);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n}\nclass TransactionsTimeBucketResponse {\n /** * The requested address. */\n address: string;\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n complete: boolean;\n /** * The current bucket of the response. */\n current_bucket: number;\n links: PaginationLinks;\n /** * List of response items. */\n items: Transaction[];\n\n constructor(data: TransactionsTimeBucketResponse, private _debug: boolean, private _apiKey: string, private _threadCount: number, private _urlParams: URLSearchParams, private _enableRetry: boolean, private _source: Source) {\n this.address = data.address;\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.quote_currency = data.quote_currency;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.complete = data.complete;\n this.current_bucket = data.current_bucket;\n this.links = data.links && data.links !== null ? new PaginationLinks(data.links) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: Transaction) => new Transaction(itemData)) : null;\n }\n\n async prev(): Promise<Response<TransactionsTimeBucketResponse>> {\n let success = false;\n let data: Response<TransactionsTimeBucketResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsTimeBucketResponse>>(this._apiKey, this._debug);\n const LIMIT = pLimit(this._threadCount);\n while (!success) {\n try {\n\n let startTime;\n if (this._debug) {\n startTime = new Date();\n }\n\n if (this.links.prev === null) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: 400,\n error_message: \"Invalid URL: URL link cannot be null\"\n }\n }\n\n const url = `${this.links.prev}?${this._urlParams}`;\n\n response = await LIMIT(() => fetch(`${this.links.prev}?${this._urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this._apiKey}`,\n \"X-Requested-With\": this._source ? this._source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this._enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await LIMIT(() => backoff.backOff(response ? response.url : url, this._source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionsTimeBucketResponse(data.data, this._debug, this._apiKey, this._threadCount, this._urlParams, this._enableRetry, this._source);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n async next(): Promise<Response<TransactionsTimeBucketResponse>> {\n let success = false;\n let data: Response<TransactionsTimeBucketResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsTimeBucketResponse>>(this._apiKey, this._debug);\n const LIMIT = pLimit(this._threadCount);\n while (!success) {\n try {\n\n let startTime;\n if (this._debug) {\n startTime = new Date();\n }\n\n if (this.links.next === null) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: 400,\n error_message: \"Invalid URL: URL link cannot be null\"\n }\n }\n\n const url = `${this.links.next}?${this._urlParams}`;\n\n response = await LIMIT(() => fetch(`${this.links.next}?${this._urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this._apiKey}`,\n \"X-Requested-With\": this._source ? this._source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this._enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await LIMIT(() => backoff.backOff(response ? response.url : url, this._source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionsTimeBucketResponse(data.data, this._debug, this._apiKey, this._threadCount, this._urlParams, this._enableRetry, this._source);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n}\n\nexport interface GetTransactionQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * Omit log events. */\n noLogs?: boolean;\n /** * Decoded DEX details including protocol (e.g. Uniswap), event (e.g 'add_liquidity') and tokens involved with historical prices. Additional 0.05 credits charged if data available. */\n withDex?: boolean;\n /** * Decoded NFT sales details including marketplace (e.g. Opensea) and cached media links. Additional 0.05 credits charged if data available. */\n withNftSales?: boolean;\n /** * Decoded lending details including protocol (e.g. Aave), event (e.g. 'deposit') and tokens involved with prices. Additional 0.05 credits charged if data available. */\n withLending?: boolean;\n /** * Include safe details. */\n withSafe?: boolean;\n}\nexport interface GetAllTransactionsForAddressQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * Omit log events. */\n noLogs?: boolean;\n /** * Sort the transactions in ascending chronological order. By default, it's set to `false` and returns transactions in descending chronological order. */\n blockSignedAtAsc?: boolean;\n /** * Include safe details. */\n withSafe?: boolean;\n}\nexport interface GetTransactionsForBlockQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * Omit log events. */\n noLogs?: boolean;\n /** * Include safe details. */\n withSafe?: boolean;\n}\nexport interface GetTransactionsForAddressV3QueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * Omit log events. */\n noLogs?: boolean;\n /** * Sort the transactions in ascending chronological order. By default, it's set to `false` and returns transactions in descending chronological order. */\n blockSignedAtAsc?: boolean;\n /** * Include safe details. */\n withSafe?: boolean;\n}\nexport interface GetTimeBucketTransactionsForAddressQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * Omit log events. */\n noLogs?: boolean;\n /** * Include safe details. */\n withSafe?: boolean;\n}\nexport interface GetTransactionsForBlockHashByPageQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * Omit log events. */\n noLogs?: boolean;\n /** * Include safe details. */\n withSafe?: boolean;\n}\nexport interface GetTransactionsForBlockHashQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * Omit log events. */\n noLogs?: boolean;\n /** * Include safe details. */\n withSafe?: boolean;\n}\nexport interface GetTransactionSummaryQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * Include gas summary details. Additional charge of 1 credit when true. Response times may be impacted for wallets with millions of transactions. */\n withGas?: boolean;\n}\n\n/**\n * Transactions APIs\n * \n */\n\nasync function* paginateEndpoint(url: string, apiKey: string, urlsParams: URLSearchParams, debug: boolean, threadCount: number, enableRetry: boolean, source: Source): AsyncIterable<Transaction> {\n let hasNext = true;\n let response: globalThis.Response;\n let data: Response<RecentTransactionsResponse>;\n const backoff = new ExponentialBackoff<Response<RecentTransactionsResponse>>(apiKey, debug);\n const LIMIT = pLimit(threadCount);\n while (hasNext) {\n try {\n\n let startTime;\n if (debug) {\n startTime = new Date();\n }\n\n response = await LIMIT(() => fetch(`${url}?${urlsParams}`, {\n headers: {\n \"Authorization\": `Bearer ${apiKey}`,\n \"X-Requested-With\": source ? source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n \n if ((enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await LIMIT(() => backoff.backOff(response ? response.url : `${url}?${urlsParams}`, this.source));\n } catch (error) {\n hasNext = false;\n throw new Error(`An error occurred ${response ? response.status : 429}: ${error.message}`);\n }\n } else {\n data = await response.json();\n }\n \n for (const tx of data.data.items) {\n const dataClass = new Transaction(tx);\n \n yield dataClass;\n }\n backoff.setNumAttempts(1);\n if (!data.error) {\n if ((data.data !== null) && data.data.links.prev === null) {\n hasNext = false;\n }\n url = data.data !== null ? data.data.links.prev : \"\";\n } else {\n hasNext = false;\n }\n\n } catch (error) {\n hasNext = false;\n if (error.message.includes(\"An error occurred 429\")) {\n throw new Error(error.message);\n }\n throw new Error(`An error occurred ${data ? data.error_code : response ? response.status : \"Unknown Error Code\"}: ${data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : \"Unknown Error\"}`);\n }\n }\n \n}\n \nexport class TransactionService {\n private LIMIT;\n constructor(private apiKey: string, private debug: boolean = false, private threadCount: number = 3, private is_key_valid: boolean, private enableRetry: boolean = true, private source: Source) {\n this.LIMIT = pLimit(this.threadCount);\n }\n\n\n /**\n *\n * Commonly used to fetch and render a single transaction including its decoded log events. Additionally return semantically decoded information for DEX trades, lending and NFT sales.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} txHash - The transaction hash.\n * @param {GetTransactionQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `noLogs`: Omit log events.\n * - `withDex`: Decoded DEX details including protocol (e.g. Uniswap), event (e.g 'add_liquidity') and tokens involved with historical prices. Additional 0.05 credits charged if data available.\n * - `withNftSales`: Decoded NFT sales details including marketplace (e.g. Opensea) and cached media links. Additional 0.05 credits charged if data available.\n * - `withLending`: Decoded lending details including protocol (e.g. Aave), event (e.g. 'deposit') and tokens involved with prices. Additional 0.05 credits charged if data available.\n * - `withSafe`: Include safe details.\n * \n */\n public async getTransaction(chainName: Chain | Chains | ChainID, txHash: string, queryParamOpts?: GetTransactionQueryParamOpts): Promise<Response<TransactionResponse>> {\n let success = false;\n let data: Response<TransactionResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.noLogs !== undefined) {\n urlParams.append(\"no-logs\", queryParamOpts?.noLogs.toString());\n }\n \n if (queryParamOpts?.withDex !== undefined) {\n urlParams.append(\"with-dex\", queryParamOpts?.withDex.toString());\n }\n \n if (queryParamOpts?.withNftSales !== undefined) {\n urlParams.append(\"with-nft-sales\", queryParamOpts?.withNftSales.toString());\n }\n \n if (queryParamOpts?.withLending !== undefined) {\n urlParams.append(\"with-lending\", queryParamOpts?.withLending.toString());\n }\n\n if (queryParamOpts?.withSafe !== undefined) {\n urlParams.append(\"with-safe\", queryParamOpts?.withSafe.toString());\n }\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/transaction_v2/${txHash}/?${urlParams}`;\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/transaction_v2/${txHash}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to fetch and render the most recent transactions involving an address. Frequently seen in wallet applications.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetAllTransactionsForAddressQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `noLogs`: Omit log events.\n * - `blockSignedAtAsc`: Sort the transactions in ascending chronological order. By default, it's set to `false` and returns transactions in descending chronological order.\n * - `withSafe`: Include safe details.\n * \n */\n public async* getAllTransactionsForAddress(chainName: Chain | Chains | ChainID, walletAddress: string, queryParamOpts?: GetAllTransactionsForAddressQueryParamOpts): AsyncIterable<Transaction> {\n let success = false;\n let tx: Transaction;\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n throw new Error(`An error occurred 401: ${ApiKeyValidator.INVALID_API_KEY_MESSAGE}`);\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.noLogs !== undefined) {\n urlParams.append(\"no-logs\", queryParamOpts?.noLogs.toString());\n }\n \n if (queryParamOpts?.blockSignedAtAsc !== undefined) {\n urlParams.append(\"block-signed-at-asc\", queryParamOpts?.blockSignedAtAsc.toString());\n }\n\n if (queryParamOpts?.withSafe !== undefined) {\n urlParams.append(\"with-safe\", queryParamOpts?.withSafe.toString());\n }\n\n for await (tx of paginateEndpoint(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transactions_v3/`, this.apiKey, urlParams, this.debug, this.threadCount, this.enableRetry, this.source)) {\n yield tx;\n }\n\n success = true;\n } catch (error) {\n success = true;\n throw new Error(error.message);\n }\n }\n }\n\n /**\n *\n * Commonly used to fetch and render the most recent transactions involving an address. Frequently seen in wallet applications.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetAllTransactionsForAddressQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `noLogs`: Omit log events.\n * - `blockSignedAtAsc`: Sort the transactions in ascending chronological order. By default, it's set to `false` and returns transactions in descending chronological order.\n * - `withSafe`: Include safe details.\n * \n */\n public async getAllTransactionsForAddressByPage(chainName: Chain | Chains | ChainID, walletAddress: string, queryParamOpts?: GetAllTransactionsForAddressQueryParamOpts): Promise<Response<RecentTransactionsResponse>> {\n let success = false;\n let data: Response<RecentTransactionsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<RecentTransactionsResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.noLogs !== undefined) {\n urlParams.append(\"no-logs\", queryParamOpts?.noLogs.toString());\n }\n \n if (queryParamOpts?.blockSignedAtAsc !== undefined) {\n urlParams.append(\"block-signed-at-asc\", queryParamOpts?.blockSignedAtAsc.toString());\n }\n\n if (queryParamOpts?.withSafe !== undefined) {\n urlParams.append(\"with-safe\", queryParamOpts?.withSafe.toString());\n }\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transactions_v3/?${urlParams}`;\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transactions_v3/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new RecentTransactionsResponse(data.data, this.debug, this.apiKey, this.threadCount, urlParams, this.enableRetry, this.source);\n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to fetch all transactions including their decoded log events in a block and further flag interesting wallets or transactions.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {number} blockHeight - The requested block height.\n * @param {GetTransactionsForBlockQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `noLogs`: Omit log events.\n * - `withSafe`: Include safe details.\n *\n */\n public async getTransactionsForBlock(chainName: Chain | Chains | ChainID, blockHeight: number | string, queryParamOpts?: GetTransactionsForBlockQueryParamOpts): Promise<Response<TransactionsBlockResponse>> {\n let success = false;\n let data: Response<TransactionsBlockResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsBlockResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.noLogs !== undefined) {\n urlParams.append(\"no-logs\", queryParamOpts?.noLogs.toString());\n }\n\n if (queryParamOpts?.withSafe !== undefined) {\n urlParams.append(\"with-safe\", queryParamOpts?.withSafe.toString());\n }\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/block/${blockHeight}/transactions_v3/?${urlParams}`;\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/block/${blockHeight}/transactions_v3/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionsBlockResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to fetch the earliest and latest transactions, and the transaction count for a wallet. Calculate the age of the wallet and the time it has been idle and quickly gain insights into their engagement with web3.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetTransactionSummaryQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `withGas`: Include gas summary details. Additional charge of 1 credit when true. Response times may be impacted for wallets with millions of transactions.\n *\n */\n public async getTransactionSummary(chainName: Chain | Chains | ChainID, walletAddress: string, queryParamOpts?: GetTransactionSummaryQueryParamOpts): Promise<Response<TransactionsSummaryResponse>> {\n let success = false;\n let data: Response<TransactionsSummaryResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsSummaryResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.withGas !== undefined) {\n urlParams.append(\"with-gas\", queryParamOpts?.withGas.toString());\n }\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transactions_summary/?${urlParams}`;\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transactions_summary/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionsSummaryResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n /**\n *\n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {number} page - The requested page, 0-indexed.\n * @param {GetTransactionsForAddressV3QueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `noLogs`: Omit log events.\n * - `blockSignedAtAsc`: Sort the transactions in ascending chronological order. By default, it's set to `false` and returns transactions in descending chronological order.\n * - `withSafe`: Include safe details.\n *\n */\n public async getTransactionsForAddressV3(chainName: Chain | Chains | ChainID, walletAddress: string, page: number, queryParamOpts?: GetTransactionsForAddressV3QueryParamOpts): Promise<Response<TransactionsResponse>> {\n let success = false;\n let data: Response<TransactionsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.noLogs !== undefined) {\n urlParams.append(\"no-logs\", queryParamOpts?.noLogs.toString());\n }\n \n if (queryParamOpts?.blockSignedAtAsc !== undefined) {\n urlParams.append(\"block-signed-at-asc\", queryParamOpts?.blockSignedAtAsc.toString());\n }\n \n if (queryParamOpts?.withSafe !== undefined) {\n urlParams.append(\"with-safe\", queryParamOpts?.withSafe.toString());\n }\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transactions_v3/page/${page}/?${urlParams}`;\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transactions_v3/page/${page}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n \n const dataClass = new TransactionsResponse(data.data, this.debug, this.apiKey, this.threadCount, urlParams, this.enableRetry, this.source);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n /**\n *\n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {number} timeBucket - The 0-indexed 15-minute time bucket. E.g. 27 Feb 2023 05:23 GMT = 1677475383 (Unix time). 1677475383/900=1863861 timeBucket.\n * @param {GetTimeBucketTransactionsForAddressQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `noLogs`: Omit log events.\n * - `withSafe`: Include safe details.\n *\n */\n public async getTimeBucketTransactionsForAddress(chainName: Chain | Chains | ChainID, walletAddress: string, timeBucket: number, queryParamOpts?: GetTimeBucketTransactionsForAddressQueryParamOpts): Promise<Response<TransactionsTimeBucketResponse>> {\n let success = false;\n let data: Response<TransactionsTimeBucketResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsTimeBucketResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.noLogs !== undefined) {\n urlParams.append(\"no-logs\", queryParamOpts?.noLogs.toString());\n }\n \n if (queryParamOpts?.withSafe !== undefined) {\n urlParams.append(\"with-safe\", queryParamOpts?.withSafe.toString());\n }\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n } \n \n const url = `https://api.covalenthq.com/v1/${chainName}/bulk/transactions/${walletAddress}/${timeBucket}/?${urlParams}`;\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/bulk/transactions/${walletAddress}/${timeBucket}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n \n const dataClass = new TransactionsTimeBucketResponse(data.data, this.debug, this.apiKey, this.threadCount, urlParams, this.enableRetry, this.source);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n /**\n *\n * Commonly used to fetch all transactions including their decoded log events in a block and further flag interesting wallets or transactions.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} blockHash - The requested block hash.\n * @param {number} page - The requested 0-indexed page number.\n * @param {GetTransactionsForBlockHashByPageQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `noLogs`: Omit log events.\n * - `withSafe`: Include safe details.\n *\n */\n public async getTransactionsForBlockHashByPage(chainName: Chain | Chains | ChainID, blockHash: string, page: number, queryParamOpts?: GetTransactionsForBlockHashByPageQueryParamOpts): Promise<Response<TransactionsBlockPageResponse>> {\n let success = false;\n let data: Response<TransactionsBlockPageResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsBlockPageResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.noLogs !== undefined) {\n urlParams.append(\"no-logs\", queryParamOpts?.noLogs.toString());\n }\n \n if (queryParamOpts?.withSafe !== undefined) {\n urlParams.append(\"with-safe\", queryParamOpts?.withSafe.toString());\n }\n \n\n const url = `https://api.covalenthq.com/v1/${chainName}/block_hash/${blockHash}/transactions_v3/page/${page}/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/block_hash/${blockHash}/transactions_v3/page/${page}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionsBlockPageResponse(data.data, this.debug, this.apiKey, this.threadCount, urlParams, this.enableRetry, this.source);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to fetch all transactions including their decoded log events in a block and further flag interesting wallets or transactions.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} blockHash - The requested block hash.\n * @param {GetTransactionsForBlockHashQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `noLogs`: Omit log events.\n * - `withSafe`: Include safe details.\n *\n */\n public async getTransactionsForBlockHash(chainName: Chain | Chains | ChainID, blockHash: string, queryParamOpts?: GetTransactionsForBlockHashQueryParamOpts): Promise<Response<TransactionsBlockResponse>> {\n let success = false;\n let data: Response<TransactionsBlockResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsBlockResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.noLogs !== undefined) {\n urlParams.append(\"no-logs\", queryParamOpts?.noLogs.toString());\n }\n \n if (queryParamOpts?.withSafe !== undefined) {\n urlParams.append(\"with-safe\", queryParamOpts?.withSafe.toString());\n }\n \n\n const url = `https://api.covalenthq.com/v1/${chainName}/block_hash/${blockHash}/transactions_v3/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/block_hash/${blockHash}/transactions_v3/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionsBlockResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n\n}\n \n ","import { Chain, Quote, userAgent, Response, ChainID, Source } from \"./CovalentClient\";\nimport { debugOutput } from \"../util/ApiHelpers\";\nimport { parseISO } from \"date-fns\";\nimport { ExponentialBackoff } from \"../util/backoff\";\nimport pLimit from \"p-limit\";\nimport { Chains } from \"../util/Chains\";\nimport { ApiKeyValidator } from \"../util/ApiKeyValidator\";\n\n\nclass PoolResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: Pool[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: PoolResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: Pool) => new Pool(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass Pool {\n /** * The pair address. */\n exchange: string;\n swap_count_24h: number;\n /** * The total liquidity converted to fiat in `quote-currency`. */\n total_liquidity_quote: number;\n volume_24h_quote: number;\n fee_24h_quote: number;\n /** * Total supply of this pool token. */\n total_supply: bigint | null;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n /** * A prettier version of the total liquidity quote for rendering purposes. */\n pretty_total_liquidity_quote: string;\n /** * A prettier version of the volume 24h quote for rendering purposes. */\n pretty_volume_24h_quote: string;\n /** * A prettier version of the fee 24h quote for rendering purposes. */\n pretty_fee_24h_quote: string;\n /** * A prettier version of the volume 7d quote for rendering purposes. */\n pretty_volume_7d_quote: string;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n volume_7d_quote: number;\n annualized_fee: number;\n token_0: Token;\n token_1: Token;\n\n constructor(data: Pool) {\n this.exchange = data.exchange;\n this.swap_count_24h = data.swap_count_24h;\n this.total_liquidity_quote = data.total_liquidity_quote;\n this.volume_24h_quote = data.volume_24h_quote;\n this.fee_24h_quote = data.fee_24h_quote;\n this.total_supply = data.total_supply && data.total_supply !== null ? BigInt(data.total_supply) : null;\n this.quote_rate = data.quote_rate;\n this.pretty_total_liquidity_quote = data.pretty_total_liquidity_quote;\n this.pretty_volume_24h_quote = data.pretty_volume_24h_quote;\n this.pretty_fee_24h_quote = data.pretty_fee_24h_quote;\n this.pretty_volume_7d_quote = data.pretty_volume_7d_quote;\n this.chain_name = data.chain_name;\n this.chain_id = data.chain_id;\n this.dex_name = data.dex_name;\n this.volume_7d_quote = data.volume_7d_quote;\n this.annualized_fee = data.annualized_fee;\n this.token_0 = data.token_0 && data.token_0 !== null ? new Token(data.token_0) : null;\n this.token_1 = data.token_1 && data.token_1 !== null ? new Token(data.token_1) : null;\n }\n}\nclass Pagination {\n /** * True is there is another page. */\n has_more: boolean;\n /** * The requested page number. */\n page_number: number;\n /** * The requested number of items on the current page. */\n page_size: number;\n /** * The total number of items across all pages for this request. */\n total_count: number;\n\n constructor(data: Pagination) {\n this.has_more = data.has_more;\n this.page_number = data.page_number;\n this.page_size = data.page_size;\n this.total_count = data.total_count;\n \n }\n}\nclass Explorer {\n /** * The name of the explorer. */\n label: string;\n /** * The URL of the explorer. */\n url: string;\n\n constructor(data: Explorer) {\n this.label = data.label;\n this.url = data.url;\n \n }\n}\nclass Token {\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n volume_in_24h: string;\n volume_out_24h: string;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n reserve: string;\n /** * The contract logo URL. */\n logo_url: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n volume_in_7d: string;\n volume_out_7d: string;\n\n constructor(data: Token) {\n this.contract_address = data.contract_address;\n this.contract_name = data.contract_name;\n this.volume_in_24h = data.volume_in_24h;\n this.volume_out_24h = data.volume_out_24h;\n this.quote_rate = data.quote_rate;\n this.reserve = data.reserve;\n this.logo_url = data.logo_url;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_decimals = data.contract_decimals;\n this.volume_in_7d = data.volume_in_7d;\n this.volume_out_7d = data.volume_out_7d;\n \n }\n}\nclass PoolToDexResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested address. */\n address: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: PoolToDexItem[];\n\n constructor(data: PoolToDexResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.address = data.address;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: PoolToDexItem) => new PoolToDexItem(itemData)) : null;\n }\n}\nclass SupportedDex {\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n /** * A display-friendly name for the dex. */\n display_name: string;\n /** * The dex logo URL. */\n logo_url: string;\n factory_contract_address: string;\n router_contract_addresses: string[];\n swap_fee: number;\n\n constructor(data: SupportedDex) {\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.dex_name = data.dex_name;\n this.display_name = data.display_name;\n this.logo_url = data.logo_url;\n this.factory_contract_address = data.factory_contract_address;\n this.router_contract_addresses = data.router_contract_addresses;\n this.swap_fee = data.swap_fee;\n }\n}\nclass PoolToDexItem extends SupportedDex {\n /** * The dex logo URL. */\n logo_url: string;\n\n constructor(data: PoolToDexItem) {\n super(data);\n this.logo_url = data.logo_url;\n }\n}\nclass PoolByAddressResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: PoolWithTimeseries[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: PoolByAddressResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: PoolWithTimeseries) => new PoolWithTimeseries(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass PoolWithTimeseries {\n /** * The pair address. */\n exchange: string;\n /** * A list of explorers for this address. */\n explorers: Explorer[];\n swap_count_24h: number;\n /** * The total liquidity converted to fiat in `quote-currency`. */\n total_liquidity_quote: number;\n volume_24h_quote: number;\n fee_24h_quote: number;\n /** * Total supply of this pool token. */\n total_supply: bigint | null;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n volume_7d_quote: number;\n annualized_fee: number;\n /** * A prettier version of the total liquidity quote for rendering purposes. */\n pretty_total_liquidity_quote: string;\n /** * A prettier version of the volume 24h quote for rendering purposes. */\n pretty_volume_24h_quote: string;\n /** * A prettier version of the fee 24h quote for rendering purposes. */\n pretty_fee_24h_quote: string;\n /** * A prettier version of the volume 7d quote for rendering purposes. */\n pretty_volume_7d_quote: string;\n token_0: Token;\n token_1: Token;\n token_0_reserve_quote: number;\n token_1_reserve_quote: number;\n volume_timeseries_7d: VolumeTimeseries[];\n volume_timeseries_30d: VolumeTimeseries[];\n liquidity_timeseries_7d: LiquidityTimeseries[];\n liquidity_timeseries_30d: LiquidityTimeseries[];\n price_timeseries_7d: PriceTimeseries[];\n price_timeseries_30d: PriceTimeseries[];\n\n constructor(data: PoolWithTimeseries) {\n this.exchange = data.exchange;\n this.swap_count_24h = data.swap_count_24h;\n this.total_liquidity_quote = data.total_liquidity_quote;\n this.volume_24h_quote = data.volume_24h_quote;\n this.fee_24h_quote = data.fee_24h_quote;\n this.total_supply = data.total_supply && data.total_supply !== null ? BigInt(data.total_supply) : null;\n this.quote_rate = data.quote_rate;\n this.chain_id = data.chain_id;\n this.dex_name = data.dex_name;\n this.volume_7d_quote = data.volume_7d_quote;\n this.annualized_fee = data.annualized_fee;\n this.pretty_total_liquidity_quote = data.pretty_total_liquidity_quote;\n this.pretty_volume_24h_quote = data.pretty_volume_24h_quote;\n this.pretty_fee_24h_quote = data.pretty_fee_24h_quote;\n this.pretty_volume_7d_quote = data.pretty_volume_7d_quote;\n this.token_0_reserve_quote = data.token_0_reserve_quote;\n this.token_1_reserve_quote = data.token_1_reserve_quote;\n this.explorers = data.explorers && data.explorers !== null ? data.explorers.map((itemData: Explorer) => new Explorer(itemData)) : null;\n this.token_0 = data.token_0 && data.token_0 !== null ? new Token(data.token_0) : null;\n this.token_1 = data.token_1 && data.token_1 !== null ? new Token(data.token_1) : null;\n this.volume_timeseries_7d = data.volume_timeseries_7d && data.volume_timeseries_7d !== null ? data.volume_timeseries_7d.map((itemData: VolumeTimeseries) => new VolumeTimeseries(itemData)) : null;\n this.volume_timeseries_30d = data.volume_timeseries_30d && data.volume_timeseries_30d !== null ? data.volume_timeseries_30d.map((itemData: VolumeTimeseries) => new VolumeTimeseries(itemData)) : null;\n this.liquidity_timeseries_7d = data.liquidity_timeseries_7d && data.liquidity_timeseries_7d !== null ? data.liquidity_timeseries_7d.map((itemData: LiquidityTimeseries) => new LiquidityTimeseries(itemData)) : null;\n this.liquidity_timeseries_30d = data.liquidity_timeseries_30d && data.liquidity_timeseries_30d !== null ? data.liquidity_timeseries_30d.map((itemData: LiquidityTimeseries) => new LiquidityTimeseries(itemData)) : null;\n this.price_timeseries_7d = data.price_timeseries_7d && data.price_timeseries_7d !== null ? data.price_timeseries_7d.map((itemData: PriceTimeseries) => new PriceTimeseries(itemData)) : null;\n this.price_timeseries_30d = data.price_timeseries_30d && data.price_timeseries_30d !== null ? data.price_timeseries_30d.map((itemData: PriceTimeseries) => new PriceTimeseries(itemData)) : null;\n }\n}\nclass VolumeTimeseries {\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n dt: Date;\n /** * The pair address. */\n exchange: string;\n sum_amount0in: string;\n sum_amount0out: string;\n sum_amount1in: string;\n sum_amount1out: string;\n volume_quote: number;\n /** * A prettier version of the volume quote for rendering purposes. */\n pretty_volume_quote: string;\n token_0_quote_rate: number;\n token_1_quote_rate: number;\n swap_count_24: number;\n\n constructor(data: VolumeTimeseries) {\n this.dex_name = data.dex_name;\n this.chain_id = data.chain_id;\n this.dt = data.dt && data.dt !== null ? parseISO(data.dt.toString()) : null;\n this.exchange = data.exchange;\n this.sum_amount0in = data.sum_amount0in;\n this.sum_amount0out = data.sum_amount0out;\n this.sum_amount1in = data.sum_amount1in;\n this.sum_amount1out = data.sum_amount1out;\n this.volume_quote = data.volume_quote;\n this.pretty_volume_quote = data.pretty_volume_quote;\n this.token_0_quote_rate = data.token_0_quote_rate;\n this.token_1_quote_rate = data.token_1_quote_rate;\n this.swap_count_24 = data.swap_count_24;\n \n }\n}\nclass LiquidityTimeseries {\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n dt: Date;\n /** * The pair address. */\n exchange: string;\n r0_c: string;\n r1_c: string;\n liquidity_quote: number;\n /** * A prettier version of the liquidity quote for rendering purposes. */\n pretty_liquidity_quote: string;\n token_0_quote_rate: number;\n token_1_quote_rate: number;\n\n constructor(data: LiquidityTimeseries) {\n this.dex_name = data.dex_name;\n this.chain_id = data.chain_id;\n this.dt = data.dt && data.dt !== null ? parseISO(data.dt.toString()) : null;\n this.exchange = data.exchange;\n this.r0_c = data.r0_c;\n this.r1_c = data.r1_c;\n this.liquidity_quote = data.liquidity_quote;\n this.pretty_liquidity_quote = data.pretty_liquidity_quote;\n this.token_0_quote_rate = data.token_0_quote_rate;\n this.token_1_quote_rate = data.token_1_quote_rate;\n \n }\n}\nclass PriceTimeseries {\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n dt: Date;\n /** * The pair address. */\n exchange: string;\n price_of_token0_in_token1: number;\n /** * A prettier version of the price token0 for rendering purposes. */\n pretty_price_of_token0_in_token1: string;\n price_of_token0_in_token1_description: string;\n price_of_token1_in_token0: number;\n /** * A prettier version of the price token1 for rendering purposes. */\n pretty_price_of_token1_in_token0: string;\n price_of_token1_in_token0_description: string;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n price_of_token0_in_quote_currency: number;\n price_of_token1_in_quote_currency: number;\n\n constructor(data: PriceTimeseries) {\n this.dex_name = data.dex_name;\n this.chain_id = data.chain_id;\n this.dt = data.dt && data.dt !== null ? parseISO(data.dt.toString()) : null;\n this.exchange = data.exchange;\n this.price_of_token0_in_token1 = data.price_of_token0_in_token1;\n this.pretty_price_of_token0_in_token1 = data.pretty_price_of_token0_in_token1;\n this.price_of_token0_in_token1_description = data.price_of_token0_in_token1_description;\n this.price_of_token1_in_token0 = data.price_of_token1_in_token0;\n this.pretty_price_of_token1_in_token0 = data.pretty_price_of_token1_in_token0;\n this.price_of_token1_in_token0_description = data.price_of_token1_in_token0_description;\n this.quote_currency = data.quote_currency;\n this.price_of_token0_in_quote_currency = data.price_of_token0_in_quote_currency;\n this.price_of_token1_in_quote_currency = data.price_of_token1_in_quote_currency;\n \n }\n}\nclass PoolsDexDataResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested address. */\n address: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * List of response items. */\n items: PoolsDexDataItem[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: PoolsDexDataResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.address = data.address;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.quote_currency = data.quote_currency;\n this.items = data.items && data.items !== null ? data.items.map((itemData: PoolsDexDataItem) => new PoolsDexDataItem(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass PoolsDexDataItem {\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n /** * The pair address. */\n exchange: string;\n /** * The combined ticker symbol of token0 and token1 separated with a hypen. */\n exchange_ticker_symbol: string;\n /** * The dex logo URL for the pair address. */\n exchange_logo_url: string;\n /** * The list of explorers for the token address. */\n explorers: Explorer[];\n /** * The total liquidity converted to fiat in `quote-currency`. */\n total_liquidity_quote: number;\n /** * A prettier version of the total liquidity quote for rendering purposes. */\n pretty_total_liquidity_quote: string;\n /** * The volume 24h converted to fiat in `quote-currency`. */\n volume_24h_quote: number;\n /** * The volume 7d converted to fiat in `quote-currency`. */\n volume_7d_quote: number;\n /** * The fee 24h converted to fiat in `quote-currency`. */\n fee_24h_quote: number;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n /** * A prettier version of the quote rate for rendering purposes. */\n pretty_quote_rate: string;\n /** * The annual fee percentage. */\n annualized_fee: number;\n /** * A prettier version of the volume 24h quote for rendering purposes. */\n pretty_volume_24h_quote: string;\n /** * A prettier version of the volume 7d quote for rendering purposes. */\n pretty_volume_7d_quote: string;\n /** * A prettier version of the fee 24h quote for rendering purposes. */\n pretty_fee_24h_quote: string;\n /** * Token0's contract metadata and reserve data. */\n token_0: PoolsDexToken;\n /** * Token1's contract metadata and reserve data. */\n token_1: PoolsDexToken;\n\n constructor(data: PoolsDexDataItem) {\n this.dex_name = data.dex_name;\n this.exchange = data.exchange;\n this.exchange_ticker_symbol = data.exchange_ticker_symbol;\n this.exchange_logo_url = data.exchange_logo_url;\n this.total_liquidity_quote = data.total_liquidity_quote;\n this.pretty_total_liquidity_quote = data.pretty_total_liquidity_quote;\n this.volume_24h_quote = data.volume_24h_quote;\n this.volume_7d_quote = data.volume_7d_quote;\n this.fee_24h_quote = data.fee_24h_quote;\n this.quote_rate = data.quote_rate;\n this.pretty_quote_rate = data.pretty_quote_rate;\n this.annualized_fee = data.annualized_fee;\n this.pretty_volume_24h_quote = data.pretty_volume_24h_quote;\n this.pretty_volume_7d_quote = data.pretty_volume_7d_quote;\n this.pretty_fee_24h_quote = data.pretty_fee_24h_quote;\n this.explorers = data.explorers && data.explorers !== null ? data.explorers.map((itemData: Explorer) => new Explorer(itemData)) : null;\n this.token_0 = data.token_0 && data.token_0 !== null ? new PoolsDexToken(data.token_0) : null;\n this.token_1 = data.token_1 && data.token_1 !== null ? new PoolsDexToken(data.token_1) : null;\n }\n}\nclass PoolsDexToken {\n /** * The reserves for the token. */\n reserve: string;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * The contract logo URL. */\n logo_url: string;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n\n constructor(data: PoolsDexToken) {\n this.reserve = data.reserve;\n this.contract_name = data.contract_name;\n this.contract_decimals = data.contract_decimals;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.logo_url = data.logo_url;\n this.quote_rate = data.quote_rate;\n \n }\n}\nclass AddressExchangeBalancesResponse {\n /** * The requested address. */\n address: string;\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: UniswapLikeBalanceItem[];\n\n constructor(data: AddressExchangeBalancesResponse) {\n this.address = data.address;\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: UniswapLikeBalanceItem) => new UniswapLikeBalanceItem(itemData)) : null;\n }\n}\nclass UniswapLikeBalanceItem {\n token_0: UniswapLikeToken;\n token_1: UniswapLikeToken;\n pool_token: UniswapLikeTokenWithSupply;\n\n constructor(data: UniswapLikeBalanceItem) {\n \n this.token_0 = data.token_0 && data.token_0 !== null ? new UniswapLikeToken(data.token_0) : null;\n this.token_1 = data.token_1 && data.token_1 !== null ? new UniswapLikeToken(data.token_1) : null;\n this.pool_token = data.pool_token && data.pool_token !== null ? new UniswapLikeTokenWithSupply(data.pool_token) : null;\n }\n}\nclass UniswapLikeToken {\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * The contract logo URL. */\n logo_url: string;\n /** * The asset balance. Use `contract_decimals` to scale this balance for display purposes. */\n balance: bigint | null;\n quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_quote: string;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n\n constructor(data: UniswapLikeToken) {\n this.contract_decimals = data.contract_decimals;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.logo_url = data.logo_url;\n this.balance = data.balance && data.balance !== null ? BigInt(data.balance) : null;\n this.quote = data.quote;\n this.pretty_quote = data.pretty_quote;\n this.quote_rate = data.quote_rate;\n \n }\n}\nclass UniswapLikeTokenWithSupply {\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * The contract logo URL. */\n logo_url: string;\n /** * The asset balance. Use `contract_decimals` to scale this balance for display purposes. */\n balance: bigint | null;\n quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_quote: string;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n /** * Total supply of this pool token. */\n total_supply: bigint | null;\n\n constructor(data: UniswapLikeTokenWithSupply) {\n this.contract_decimals = data.contract_decimals;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.logo_url = data.logo_url;\n this.balance = data.balance && data.balance !== null ? BigInt(data.balance) : null;\n this.quote = data.quote;\n this.pretty_quote = data.pretty_quote;\n this.quote_rate = data.quote_rate;\n this.total_supply = data.total_supply && data.total_supply !== null ? BigInt(data.total_supply) : null;\n \n }\n}\nclass NetworkExchangeTokensResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: TokenV2Volume[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: NetworkExchangeTokensResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: TokenV2Volume) => new TokenV2Volume(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass TokenV2Volume {\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n total_liquidity: string;\n total_volume_24h: string;\n /** * The contract logo URL. */\n logo_url: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n swap_count_24h: number;\n /** * The list of explorers for the token address. */\n explorers: Explorer[];\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n /** * The 24h exchange rate for the requested quote currency. */\n quote_rate_24h: number;\n /** * A prettier version of the exchange rate for rendering purposes. */\n pretty_quote_rate: string;\n /** * A prettier version of the 24h exchange rate for rendering purposes. */\n pretty_quote_rate_24h: string;\n /** * A prettier version of the total liquidity quote for rendering purposes. */\n pretty_total_liquidity_quote: string;\n /** * A prettier version of the 24h volume quote for rendering purposes. */\n pretty_total_volume_24h_quote: string;\n /** * The total liquidity converted to fiat in `quote-currency`. */\n total_liquidity_quote: number;\n /** * The total volume 24h converted to fiat in `quote-currency`. */\n total_volume_24h_quote: number;\n\n constructor(data: TokenV2Volume) {\n this.chain_name = data.chain_name;\n this.chain_id = data.chain_id;\n this.dex_name = data.dex_name;\n this.contract_address = data.contract_address;\n this.contract_name = data.contract_name;\n this.total_liquidity = data.total_liquidity;\n this.total_volume_24h = data.total_volume_24h;\n this.logo_url = data.logo_url;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_decimals = data.contract_decimals;\n this.swap_count_24h = data.swap_count_24h;\n this.quote_rate = data.quote_rate;\n this.quote_rate_24h = data.quote_rate_24h;\n this.pretty_quote_rate = data.pretty_quote_rate;\n this.pretty_quote_rate_24h = data.pretty_quote_rate_24h;\n this.pretty_total_liquidity_quote = data.pretty_total_liquidity_quote;\n this.pretty_total_volume_24h_quote = data.pretty_total_volume_24h_quote;\n this.total_liquidity_quote = data.total_liquidity_quote;\n this.total_volume_24h_quote = data.total_volume_24h_quote;\n this.explorers = data.explorers && data.explorers !== null ? data.explorers.map((itemData: Explorer) => new Explorer(itemData)) : null;\n }\n}\nclass NetworkExchangeTokenViewResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: TokenV2VolumeWithChartData[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: NetworkExchangeTokenViewResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: TokenV2VolumeWithChartData) => new TokenV2VolumeWithChartData(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass TokenV2VolumeWithChartData {\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * A list of explorers for this address. */\n explorers: Explorer[];\n /** * The total liquidity unscaled value. */\n total_liquidity: string;\n /** * The total volume 24h unscaled value. */\n total_volume_24h: string;\n /** * The contract logo URL. */\n logo_url: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The total amount of swaps in the last 24h. */\n swap_count_24h: number;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n /** * The 24h exchange rate for the requested quote currency. */\n quote_rate_24h: number;\n /** * A prettier version of the exchange rate for rendering purposes. */\n pretty_quote_rate: string;\n /** * A prettier version of the 24h exchange rate for rendering purposes. */\n pretty_quote_rate_24h: string;\n /** * A prettier version of the total liquidity quote for rendering purposes. */\n pretty_total_liquidity_quote: string;\n /** * A prettier version of the 24h volume quote for rendering purposes. */\n pretty_total_volume_24h_quote: string;\n /** * The total liquidity converted to fiat in `quote-currency`. */\n total_liquidity_quote: number;\n /** * The total volume 24h converted to fiat in `quote-currency`. */\n total_volume_24h_quote: number;\n /** * The number of transactions in the last 24h. */\n transactions_24h: number;\n volume_timeseries_7d: VolumeTokenTimeseries[];\n volume_timeseries_30d: VolumeTokenTimeseries[];\n liquidity_timeseries_7d: LiquidityTokenTimeseries[];\n liquidity_timeseries_30d: LiquidityTokenTimeseries[];\n price_timeseries_7d: PriceTokenTimeseries[];\n price_timeseries_30d: PriceTokenTimeseries[];\n\n constructor(data: TokenV2VolumeWithChartData) {\n this.chain_name = data.chain_name;\n this.chain_id = data.chain_id;\n this.dex_name = data.dex_name;\n this.contract_address = data.contract_address;\n this.contract_name = data.contract_name;\n this.total_liquidity = data.total_liquidity;\n this.total_volume_24h = data.total_volume_24h;\n this.logo_url = data.logo_url;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_decimals = data.contract_decimals;\n this.swap_count_24h = data.swap_count_24h;\n this.quote_rate = data.quote_rate;\n this.quote_rate_24h = data.quote_rate_24h;\n this.pretty_quote_rate = data.pretty_quote_rate;\n this.pretty_quote_rate_24h = data.pretty_quote_rate_24h;\n this.pretty_total_liquidity_quote = data.pretty_total_liquidity_quote;\n this.pretty_total_volume_24h_quote = data.pretty_total_volume_24h_quote;\n this.total_liquidity_quote = data.total_liquidity_quote;\n this.total_volume_24h_quote = data.total_volume_24h_quote;\n this.transactions_24h = data.transactions_24h;\n this.explorers = data.explorers && data.explorers !== null ? data.explorers.map((itemData: Explorer) => new Explorer(itemData)) : null;\n this.volume_timeseries_7d = data.volume_timeseries_7d && data.volume_timeseries_7d !== null ? data.volume_timeseries_7d.map((itemData: VolumeTokenTimeseries) => new VolumeTokenTimeseries(itemData)) : null;\n this.volume_timeseries_30d = data.volume_timeseries_30d && data.volume_timeseries_30d !== null ? data.volume_timeseries_30d.map((itemData: VolumeTokenTimeseries) => new VolumeTokenTimeseries(itemData)) : null;\n this.liquidity_timeseries_7d = data.liquidity_timeseries_7d && data.liquidity_timeseries_7d !== null ? data.liquidity_timeseries_7d.map((itemData: LiquidityTokenTimeseries) => new LiquidityTokenTimeseries(itemData)) : null;\n this.liquidity_timeseries_30d = data.liquidity_timeseries_30d && data.liquidity_timeseries_30d !== null ? data.liquidity_timeseries_30d.map((itemData: LiquidityTokenTimeseries) => new LiquidityTokenTimeseries(itemData)) : null;\n this.price_timeseries_7d = data.price_timeseries_7d && data.price_timeseries_7d !== null ? data.price_timeseries_7d.map((itemData: PriceTokenTimeseries) => new PriceTokenTimeseries(itemData)) : null;\n this.price_timeseries_30d = data.price_timeseries_30d && data.price_timeseries_30d !== null ? data.price_timeseries_30d.map((itemData: PriceTokenTimeseries) => new PriceTokenTimeseries(itemData)) : null;\n }\n}\nclass VolumeTokenTimeseries {\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n /** * The current date. */\n dt: Date;\n /** * The total volume unscaled for this day. */\n total_volume: string;\n /** * The volume in `quote-currency` denomination. */\n volume_quote: number;\n /** * A prettier version of the volume quote for rendering purposes. */\n pretty_volume_quote: string;\n\n constructor(data: VolumeTokenTimeseries) {\n this.dex_name = data.dex_name;\n this.chain_id = data.chain_id;\n this.dt = data.dt && data.dt !== null ? parseISO(data.dt.toString()) : null;\n this.total_volume = data.total_volume;\n this.volume_quote = data.volume_quote;\n this.pretty_volume_quote = data.pretty_volume_quote;\n \n }\n}\nclass LiquidityTokenTimeseries {\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n /** * The current date. */\n dt: Date;\n /** * The total liquidity unscaled up to this day. */\n total_liquidity: string;\n /** * The liquidity in `quote-currency` denomination. */\n liquidity_quote: number;\n /** * A prettier version of the liquidity quote for rendering purposes. */\n pretty_liquidity_quote: string;\n\n constructor(data: LiquidityTokenTimeseries) {\n this.dex_name = data.dex_name;\n this.chain_id = data.chain_id;\n this.dt = data.dt && data.dt !== null ? parseISO(data.dt.toString()) : null;\n this.total_liquidity = data.total_liquidity;\n this.liquidity_quote = data.liquidity_quote;\n this.pretty_liquidity_quote = data.pretty_liquidity_quote;\n \n }\n}\nclass PriceTokenTimeseries {\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n /** * The current date. */\n dt: Date;\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quote_currency: string;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n /** * A prettier version of the exchange rate for rendering purposes. */\n pretty_quote_rate: string;\n\n constructor(data: PriceTokenTimeseries) {\n this.dex_name = data.dex_name;\n this.chain_id = data.chain_id;\n this.dt = data.dt && data.dt !== null ? parseISO(data.dt.toString()) : null;\n this.quote_currency = data.quote_currency;\n this.quote_rate = data.quote_rate;\n this.pretty_quote_rate = data.pretty_quote_rate;\n \n }\n}\nclass SupportedDexesResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * List of response items. */\n items: SupportedDex[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: SupportedDexesResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: SupportedDex) => new SupportedDex(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass SingleNetworkExchangeTokenResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: PoolWithTimeseries[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: SingleNetworkExchangeTokenResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: PoolWithTimeseries) => new PoolWithTimeseries(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass TransactionsForAccountAddressResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: ExchangeTransaction[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: TransactionsForAccountAddressResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: ExchangeTransaction) => new ExchangeTransaction(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass ExchangeTransaction {\n /** * The block signed timestamp in UTC. */\n block_signed_at: Date;\n /** * The requested transaction hash. */\n tx_hash: string;\n act: string;\n /** * The requested address. */\n address: string;\n /** * A list of explorers for this transaction. */\n explorers: Explorer[];\n amount_0: string;\n amount_1: string;\n amount_0_in: string;\n amount_0_out: string;\n amount_1_in: string;\n amount_1_out: string;\n to_address: string;\n from_address: string;\n sender_address: string;\n total_quote: number;\n /** * A prettier version of the total quote for rendering purposes. */\n pretty_total_quote: string;\n /** * The value attached to this tx. */\n value: bigint | null;\n /** * The value attached in `quote-currency` to this tx. */\n value_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_value_quote: string;\n /** * The requested chain native gas token metadata. */\n gas_metadata: ContractMetadata;\n /** * The amount of gas supplied for this tx. */\n gas_offered: number;\n /** * The gas spent for this tx. */\n gas_spent: number;\n /** * The gas price at the time of this tx. */\n gas_price: number;\n /** * The total transaction fees (`gas_price` * `gas_spent`) paid for this tx, denoted in wei. */\n fees_paid: bigint | null;\n /** * The gas spent in `quote-currency` denomination. */\n gas_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_gas_quote: string;\n /** * The native gas exchange rate for the requested `quote-currency`. */\n gas_quote_rate: number;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n token_0: PoolToken;\n token_1: PoolToken;\n token_0_quote_rate: number;\n token_1_quote_rate: number;\n\n constructor(data: ExchangeTransaction) {\n this.block_signed_at = data.block_signed_at && data.block_signed_at !== null ? parseISO(data.block_signed_at.toString()) : null;\n this.tx_hash = data.tx_hash;\n this.act = data.act;\n this.address = data.address;\n this.amount_0 = data.amount_0;\n this.amount_1 = data.amount_1;\n this.amount_0_in = data.amount_0_in;\n this.amount_0_out = data.amount_0_out;\n this.amount_1_in = data.amount_1_in;\n this.amount_1_out = data.amount_1_out;\n this.to_address = data.to_address;\n this.from_address = data.from_address;\n this.sender_address = data.sender_address;\n this.total_quote = data.total_quote;\n this.pretty_total_quote = data.pretty_total_quote;\n this.value = data.value && data.value !== null ? BigInt(data.value) : null;\n this.value_quote = data.value_quote;\n this.pretty_value_quote = data.pretty_value_quote;\n this.gas_offered = data.gas_offered;\n this.gas_spent = data.gas_spent;\n this.gas_price = data.gas_price;\n this.fees_paid = data.fees_paid && data.fees_paid !== null ? BigInt(data.fees_paid) : null;\n this.gas_quote = data.gas_quote;\n this.pretty_gas_quote = data.pretty_gas_quote;\n this.gas_quote_rate = data.gas_quote_rate;\n this.quote_currency = data.quote_currency;\n this.token_0_quote_rate = data.token_0_quote_rate;\n this.token_1_quote_rate = data.token_1_quote_rate;\n this.explorers = data.explorers && data.explorers !== null ? data.explorers.map((itemData: Explorer) => new Explorer(itemData)) : null;\n this.gas_metadata = data.gas_metadata && data.gas_metadata !== null ? new ContractMetadata(data.gas_metadata) : null;\n this.token_0 = data.token_0 && data.token_0 !== null ? new PoolToken(data.token_0) : null;\n this.token_1 = data.token_1 && data.token_1 !== null ? new PoolToken(data.token_1) : null;\n }\n}\nclass ContractMetadata {\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The contract logo URL. */\n logo_url: string;\n\n constructor(data: ContractMetadata) {\n this.contract_decimals = data.contract_decimals;\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.supports_erc = data.supports_erc;\n this.logo_url = data.logo_url;\n \n }\n}\nclass PoolToken {\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The contract logo URL. */\n logo_url: string;\n\n constructor(data: PoolToken) {\n this.contract_decimals = data.contract_decimals;\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.supports_erc = data.supports_erc;\n this.logo_url = data.logo_url;\n \n }\n}\nclass TransactionsForTokenAddressResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: ExchangeTransaction[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: TransactionsForTokenAddressResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: ExchangeTransaction) => new ExchangeTransaction(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass TransactionsForExchangeResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: ExchangeTransaction[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: TransactionsForExchangeResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: ExchangeTransaction) => new ExchangeTransaction(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass NetworkTransactionsResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: ExchangeTransaction[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: NetworkTransactionsResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: ExchangeTransaction) => new ExchangeTransaction(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass EcosystemChartDataResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: UniswapLikeEcosystemCharts[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: EcosystemChartDataResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: UniswapLikeEcosystemCharts) => new UniswapLikeEcosystemCharts(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass UniswapLikeEcosystemCharts {\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n gas_token_price_quote: number;\n total_swaps_24h: number;\n total_active_pairs_7d: number;\n total_fees_24h: number;\n /** * A prettier version of the gas quote for rendering purposes. */\n pretty_gas_token_price_quote: string;\n /** * A prettier version of the 24h total fees for rendering purposes. */\n pretty_total_fees_24h: string;\n volume_chart_7d: VolumeEcosystemChart[];\n volume_chart_30d: VolumeEcosystemChart[];\n liquidity_chart_7d: LiquidityEcosystemChart[];\n liquidity_chart_30d: LiquidityEcosystemChart[];\n\n constructor(data: UniswapLikeEcosystemCharts) {\n this.dex_name = data.dex_name;\n this.chain_id = data.chain_id;\n this.quote_currency = data.quote_currency;\n this.gas_token_price_quote = data.gas_token_price_quote;\n this.total_swaps_24h = data.total_swaps_24h;\n this.total_active_pairs_7d = data.total_active_pairs_7d;\n this.total_fees_24h = data.total_fees_24h;\n this.pretty_gas_token_price_quote = data.pretty_gas_token_price_quote;\n this.pretty_total_fees_24h = data.pretty_total_fees_24h;\n this.volume_chart_7d = data.volume_chart_7d && data.volume_chart_7d !== null ? data.volume_chart_7d.map((itemData: VolumeEcosystemChart) => new VolumeEcosystemChart(itemData)) : null;\n this.volume_chart_30d = data.volume_chart_30d && data.volume_chart_30d !== null ? data.volume_chart_30d.map((itemData: VolumeEcosystemChart) => new VolumeEcosystemChart(itemData)) : null;\n this.liquidity_chart_7d = data.liquidity_chart_7d && data.liquidity_chart_7d !== null ? data.liquidity_chart_7d.map((itemData: LiquidityEcosystemChart) => new LiquidityEcosystemChart(itemData)) : null;\n this.liquidity_chart_30d = data.liquidity_chart_30d && data.liquidity_chart_30d !== null ? data.liquidity_chart_30d.map((itemData: LiquidityEcosystemChart) => new LiquidityEcosystemChart(itemData)) : null;\n }\n}\nclass VolumeEcosystemChart {\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n dt: Date;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n volume_quote: number;\n /** * A prettier version of the volume quote for rendering purposes. */\n pretty_volume_quote: string;\n swap_count_24: number;\n\n constructor(data: VolumeEcosystemChart) {\n this.dex_name = data.dex_name;\n this.chain_id = data.chain_id;\n this.dt = data.dt && data.dt !== null ? parseISO(data.dt.toString()) : null;\n this.quote_currency = data.quote_currency;\n this.volume_quote = data.volume_quote;\n this.pretty_volume_quote = data.pretty_volume_quote;\n this.swap_count_24 = data.swap_count_24;\n \n }\n}\nclass LiquidityEcosystemChart {\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n dt: Date;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n liquidity_quote: number;\n /** * A prettier version of the liquidity quote for rendering purposes. */\n pretty_liquidity_quote: string;\n\n constructor(data: LiquidityEcosystemChart) {\n this.dex_name = data.dex_name;\n this.chain_id = data.chain_id;\n this.dt = data.dt && data.dt !== null ? parseISO(data.dt.toString()) : null;\n this.quote_currency = data.quote_currency;\n this.liquidity_quote = data.liquidity_quote;\n this.pretty_liquidity_quote = data.pretty_liquidity_quote;\n \n }\n}\nclass HealthDataResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: HealthData[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: HealthDataResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: HealthData) => new HealthData(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass HealthData {\n synced_block_height: number;\n synced_block_signed_at: Date;\n latest_block_height: number;\n latest_block_signed_at: Date;\n\n constructor(data: HealthData) {\n this.synced_block_height = data.synced_block_height;\n this.synced_block_signed_at = data.synced_block_signed_at && data.synced_block_signed_at !== null ? parseISO(data.synced_block_signed_at.toString()) : null;\n this.latest_block_height = data.latest_block_height;\n this.latest_block_signed_at = data.latest_block_signed_at && data.latest_block_signed_at !== null ? parseISO(data.latest_block_signed_at.toString()) : null;\n \n }\n}\n\n\nexport interface GetPoolsQueryParamOpts {\n /** * Ending date to define a block range (YYYY-MM-DD). Omitting this parameter defaults to the current date. */\n date?: string;\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n /** * 0-indexed page number to begin pagination. */\n pageNumber?: number;\n}\nexport interface GetPoolsForTokenAddressQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * The DEX name eg: `uniswap_v2`. */\n dexName?: string;\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n}\nexport interface GetPoolsForWalletAddressQueryParamOpts {\n /** * The token contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically. */\n tokenAddress?: string;\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * The DEX name eg: `uniswap_v2`. */\n dexName?: string;\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n}\nexport interface GetNetworkExchangeTokensQueryParamOpts {\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n /** * 0-indexed page number to begin pagination. */\n pageNumber?: number;\n}\nexport interface GetLpTokenViewQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n}\nexport interface GetSingleNetworkExchangeTokenQueryParamOpts {\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n /** * 0-indexed page number to begin pagination. */\n pageNumber?: number;\n}\nexport interface GetTransactionsForTokenAddressQueryParamOpts {\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n /** * 0-indexed page number to begin pagination. */\n pageNumber?: number;\n}\nexport interface GetTransactionsForExchangeQueryParamOpts {\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n /** * 0-indexed page number to begin pagination. */\n pageNumber?: number;\n}\nexport interface GetTransactionsForDexQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n /** * 0-indexed page number to begin pagination. */\n pageNumber?: number;\n}\n/**\n * XYK APIs\n * \n */\nexport class XykService {\n private LIMIT;\n constructor(private apiKey: string, private debug: boolean = false, private threadCount: number = 3, private is_key_valid: boolean, private enableRetry: boolean = true, private source: Source) {\n this.LIMIT = pLimit(this.threadCount);\n }\n\n\n /**\n *\n * Commonly used to get all the pools of a particular DEX. Supports most common DEXs (Uniswap, SushiSwap, etc), and returns detailed trading data (volume, liquidity, swap counts, fees, LP token prices).\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} dexName - The DEX name eg: `uniswap_v2`.\n * @param {GetPoolsQueryParamOpts} queryParamOpts\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async getPools(chainName: Chain | Chains | ChainID, dexName: string, queryParamOpts?: GetPoolsQueryParamOpts): Promise<Response<PoolResponse>> {\n let success = false;\n let data: Response<PoolResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<PoolResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (queryParamOpts?.date !== undefined) {\n urlParams.append(\"date\", queryParamOpts?.date.toString());\n }\n\n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/pools/?${urlParams}`;\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/pools/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new PoolResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get the corresponding supported DEX given a pool address, along with the swap fees, DEX's logo url, and factory addresses. Useful to identifying the specific DEX to which a pair address is associated.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} poolAddress - The requested pool address.\n *\n */\n public async getDexForPoolAddress(chainName: Chain | Chains | ChainID, poolAddress: string): Promise<Response<PoolToDexResponse>> {\n let success = false;\n let data: Response<PoolToDexResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<PoolToDexResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/address/${poolAddress}/dex_name/?${urlParams}`;\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/address/${poolAddress}/dex_name/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new PoolToDexResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get the 7 day and 30 day time-series data (volume, liquidity, price) of a particular liquidity pool in a DEX. Useful for building time-series charts on DEX trading activity.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} dexName - The DEX name eg: `uniswap_v2`.\n * @param {string} poolAddress - The pool contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n *\n */\n public async getPoolByAddress(chainName: Chain | Chains | ChainID, dexName: string, poolAddress: string): Promise<Response<PoolByAddressResponse>> {\n let success = false;\n let data: Response<PoolByAddressResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<PoolByAddressResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/pools/address/${poolAddress}/?${urlParams}`;\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/pools/address/${poolAddress}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new PoolByAddressResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get all pools and the supported DEX for a token. Useful for building a table of top pairs across all supported DEXes that the token is trading on.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} tokenAddress - The token contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {number} page - The requested 0-indexed page number.\n * @param {GetPoolsForTokenAddressQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `dexName`: The DEX name eg: `uniswap_v2`.\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n *\n */\n public async getPoolsForTokenAddress(chainName: Chain | Chains | ChainID, tokenAddress: string, page: number, queryParamOpts?: GetPoolsForTokenAddressQueryParamOpts): Promise<Response<PoolsDexDataResponse>> {\n let success = false;\n let data: Response<PoolsDexDataResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<PoolsDexDataResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n } \n \n if (queryParamOpts?.dexName !== undefined) {\n urlParams.append(\"dex-name\", queryParamOpts?.dexName.toString());\n }\n\n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/tokens/address/${tokenAddress}/pools/page/${page}/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/tokens/address/${tokenAddress}/pools/page/${page}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new PoolsDexDataResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to return balance of a wallet/contract address on a specific DEX.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} dexName - The DEX name eg: `uniswap_v2`.\n * @param {string} accountAddress - The account address.\n *\n */\n public async getAddressExchangeBalances(chainName: Chain | Chains | ChainID, dexName: string, accountAddress: string): Promise<Response<AddressExchangeBalancesResponse>> {\n let success = false;\n let data: Response<AddressExchangeBalancesResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<AddressExchangeBalancesResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/address/${accountAddress}/balances/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/address/${accountAddress}/balances/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new AddressExchangeBalancesResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get all pools and supported DEX for a wallet. Useful for building a personal DEX UI showcasing pairs and supported DEXes associated to the wallet.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The account address.\n * @param {number} page - The requested 0-indexed page number.\n * @param {GetPoolsForWalletAddressQueryParamOpts} queryParamOpts\n * - `tokenAddress`: The token contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `dexName`: The DEX name eg: `uniswap_v2`.\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n *\n */\n public async getPoolsForWalletAddress(chainName: Chain | Chains | ChainID, walletAddress: string, page: number, queryParamOpts?: GetPoolsForWalletAddressQueryParamOpts): Promise<Response<PoolsDexDataResponse>> {\n let success = false;\n let data: Response<PoolsDexDataResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<PoolsDexDataResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.tokenAddress !== undefined) {\n urlParams.append(\"token-address\", queryParamOpts?.tokenAddress.toString());\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n\n if (queryParamOpts?.dexName !== undefined) {\n urlParams.append(\"dex-name\", queryParamOpts?.dexName.toString());\n }\n\n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/address/${walletAddress}/pools/page/${page}/?${urlParams}`;\n \n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/address/${walletAddress}/pools/page/${page}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new PoolsDexDataResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to retrieve all network exchange tokens for a specific DEX. Useful for building a top tokens table by total liquidity within a particular DEX.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} dexName - The DEX name eg: `uniswap_v2`.\n * @param {GetNetworkExchangeTokensQueryParamOpts} queryParamOpts\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async getNetworkExchangeTokens(chainName: Chain | Chains | ChainID, dexName: string, queryParamOpts?: GetNetworkExchangeTokensQueryParamOpts): Promise<Response<NetworkExchangeTokensResponse>> {\n let success = false;\n let data: Response<NetworkExchangeTokensResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NetworkExchangeTokensResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/tokens/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/tokens/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new NetworkExchangeTokensResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n /**\n *\n * Commonly used to get a detailed view for a single liquidity pool token. Includes time series data.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} dexName - The DEX name eg: `uniswap_v2`.\n * @param {string} tokenAddress - The token contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetLpTokenViewQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n *\n */\n public async getLpTokenView(chainName: Chain | Chains | ChainID, dexName: string, tokenAddress: string, queryParamOpts?: GetLpTokenViewQueryParamOpts): Promise<Response<NetworkExchangeTokenViewResponse>> {\n let success = false;\n let data: Response<NetworkExchangeTokenViewResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NetworkExchangeTokenViewResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/tokens/address/${tokenAddress}/view/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/tokens/address/${tokenAddress}/view/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new NetworkExchangeTokenViewResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get all the supported DEXs available for the xy=k endpoints, along with the swap fees and factory addresses.\n * \n *\n */\n public async getSupportedDEXes(): Promise<Response<SupportedDexesResponse>> {\n let success = false;\n let data: Response<SupportedDexesResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<SupportedDexesResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/xy=k/supported_dexes/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/xy=k/supported_dexes/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new SupportedDexesResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get historical daily swap count for a single network exchange token.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} dexName - The DEX name eg: `uniswap_v2`.\n * @param {string} tokenAddress - The token contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetSingleNetworkExchangeTokenQueryParamOpts} queryParamOpts\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async getSingleNetworkExchangeToken(chainName: Chain | Chains | ChainID, dexName: string, tokenAddress: string, queryParamOpts?: GetSingleNetworkExchangeTokenQueryParamOpts): Promise<Response<SingleNetworkExchangeTokenResponse>> {\n let success = false;\n let data: Response<SingleNetworkExchangeTokenResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<SingleNetworkExchangeTokenResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/tokens/address/${tokenAddress}/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/tokens/address/${tokenAddress}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new SingleNetworkExchangeTokenResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get all the DEX transactions of a wallet. Useful for building tables of DEX activity segmented by wallet.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} dexName - The DEX name eg: `uniswap_v2`.\n * @param {string} accountAddress - The account address. Passing in an `ENS` or `RNS` resolves automatically.\n *\n */\n public async getTransactionsForAccountAddress(chainName: Chain | Chains | ChainID, dexName: string, accountAddress: string): Promise<Response<TransactionsForAccountAddressResponse>> {\n let success = false;\n let data: Response<TransactionsForAccountAddressResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsForAccountAddressResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/address/${accountAddress}/transactions/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/address/${accountAddress}/transactions/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionsForAccountAddressResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get all the transactions of a token within a particular DEX. Useful for getting a per-token view of DEX activity.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} dexName - The DEX name eg: `uniswap_v2`.\n * @param {string} tokenAddress - The token contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetTransactionsForTokenAddressQueryParamOpts} queryParamOpts\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async getTransactionsForTokenAddress(chainName: Chain | Chains | ChainID, dexName: string, tokenAddress: string, queryParamOpts?: GetTransactionsForTokenAddressQueryParamOpts): Promise<Response<TransactionsForTokenAddressResponse>> {\n let success = false;\n let data: Response<TransactionsForTokenAddressResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsForTokenAddressResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/tokens/address/${tokenAddress}/transactions/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/tokens/address/${tokenAddress}/transactions/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionsForTokenAddressResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used for getting all the transactions of a particular DEX liquidity pool. Useful for building a transactions history table for an individual pool.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} dexName - The DEX name eg: `uniswap_v2`.\n * @param {string} poolAddress - The pool contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetTransactionsForExchangeQueryParamOpts} queryParamOpts\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async getTransactionsForExchange(chainName: Chain | Chains | ChainID, dexName: string, poolAddress: string, queryParamOpts?: GetTransactionsForExchangeQueryParamOpts): Promise<Response<TransactionsForExchangeResponse>> {\n let success = false;\n let data: Response<TransactionsForExchangeResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsForExchangeResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/pools/address/${poolAddress}/transactions/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/pools/address/${poolAddress}/transactions/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionsForExchangeResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n /**\n *\n * Commonly used to get all the the transactions for a given DEX. Useful for building DEX activity views.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} dexName - The DEX name eg: `uniswap_v2`.\n * @param {GetTransactionsForDexQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async getTransactionsForDex(chainName: Chain | Chains | ChainID, dexName: string, queryParamOpts?: GetTransactionsForDexQueryParamOpts): Promise<Response<NetworkTransactionsResponse>> {\n let success = false;\n let data: Response<NetworkTransactionsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NetworkTransactionsResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n \n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n \n \n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/transactions/?${urlParams}`;\n \n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n \n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/transactions/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n \n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n \n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new NetworkTransactionsResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data.error,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : \"401 Authorization Required\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get a 7d and 30d time-series chart of DEX activity. Includes volume and swap count.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} dexName - The DEX name eg: `uniswap_v2`.\n *\n */\n public async getEcosystemChartData(chainName: Chain | Chains | ChainID, dexName: string): Promise<Response<EcosystemChartDataResponse>> {\n let success = false;\n let data: Response<EcosystemChartDataResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<EcosystemChartDataResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/ecosystem/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/ecosystem/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new EcosystemChartDataResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to ping the health of xy=k endpoints to get the synced block height per chain.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} dexName - The DEX name eg: `uniswap_v2`.\n *\n */\n public async getHealthData(chainName: Chain | Chains | ChainID, dexName: string): Promise<Response<HealthDataResponse>> {\n let success = false;\n let data: Response<HealthDataResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<HealthDataResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/health/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/health/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new HealthDataResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n\n}\n \n ","import { SecurityService } from \"./SecurityService\";\nimport { BalanceService } from \"./BalanceService\";\nimport { BaseService } from \"./BaseService\";\nimport { NftService } from \"./NftService\";\nimport { PricingService } from \"./PricingService\";\nimport { TransactionService } from \"./TransactionService\";\nimport { XykService } from \"./XykService\";\nimport { ApiKeyValidator } from \"../util/ApiKeyValidator\";\n\nexport type Chain = \"btc-mainnet\" | \"eth-mainnet\" | \"matic-mainnet\" | \"bsc-mainnet\" | \"avalanche-mainnet\" | \"optimism-mainnet\" | \"fantom-mainnet\" | \"moonbeam-mainnet\" | \"moonbeam-moonriver\" | \"rsk-mainnet\" | \"arbitrum-mainnet\" | \"palm-mainnet\" | \"klaytn-mainnet\" | \"heco-mainnet\" | \"nervos-godwoken-mainnet\" | \"axie-mainnet\" | \"evmos-mainnet\" | \"astar-mainnet\" | \"iotex-mainnet\" | \"harmony-mainnet\" | \"cronos-mainnet\" | \"aurora-mainnet\" | \"emerald-paratime-mainnet\" | \"boba-mainnet\" | \"eth-goerli\" | \"matic-mumbai\" | \"avalanche-testnet\" | \"bsc-testnet\" | \"moonbeam-moonbase-alpha\" | \"rsk-testnet\" | \"arbitrum-goerli\" | \"fantom-testnet\" | \"palm-testnet\" | \"heco-testnet\" | \"nervos-godwoken-testnet\" | \"evmos-testnet\" | \"iotex-testnet\" | \"harmony-testnet\" | \"aurora-testnet\" | \"scroll-l2-testnet\" | \"scroll-sepolia-testnet\" | \"covalent-internal-network-v1\" | \"defi-kingdoms-mainnet\" | \"swimmer-mainnet\" | \"boba-avalanche-mainnet\" | \"boba-bobabeam-mainnet\" | \"boba-bnb-mainnet\" | \"boba-rinkeby-testnet\" | \"boba-bobabase-testnet\" | \"boba-bnb-testnet\" | \"boba-avalanche-testnet\" | \"klaytn-testnet\" | \"gather-mainnet\" | \"gather-testnet\" | \"skale-calypso\" | \"skale-mainnet\" | \"skale-razor\" | \"avalanche-dexalot-mainnet\" | \"skale-omnus\" | \"avalanche-dexalot-testnet\" | \"astar-shibuya\" | \"cronos-testnet\" | \"defi-kingdoms-testnet\" | \"metis-mainnet\" | \"metis-stardust\" | \"milkomeda-a1-mainnet\" | \"milkomeda-a1-devnet\" | \"milkomeda-c1-mainnet\" | \"milkomeda-c1-devnet\" | \"swimmer-testnet\" | \"solana-mainnet\" | \"skale-europa\" | \"meter-mainnet\" | \"meter-testnet\" | \"skale-exorde\" | \"boba-goerli\" | \"neon-testnet\" | \"skale-staging-uum\" | \"skale-staging-lcc\" | \"arbitrum-nova-mainnet\" | \"canto-mainnet\" | \"bittorrent-mainnet\" | \"bittorrent-testnet\" | \"flarenetworks-flare-mainnet\" | \"flarenetworks-flare-testnet\" | \"flarenetworks-canary-mainnet\" | \"flarenetworks-canary-testnet\" | \"kcc-mainnet\" | \"kcc-testnet\" | \"polygon-zkevm-testnet\" | \"linea-testnet\" | \"base-testnet\" | \"mantle-testnet\" | \"scroll-alpha-testnet\" | \"oasys-mainnet\" | \"oasys-testnet\" | \"findora-mainnet\" | \"findora-forge-testnet\" | \"sx-mainnet\" | \"oasis-sapphire-mainnet\" | \"oasis-sapphire-testnet\" | \"optimism-goerli\" | \"polygon-zkevm-mainnet\" | \"horizen-yuma-testnet\" | \"clv-parachain\" | \"energi-mainnet\" | \"energi-testnet\" | \"horizen-gobi-testnet\" | \"eth-sepolia\" | \"skale-nebula\" | \"skale-battleground\" | \"avalanche-meld-testnet\" | \"gunzilla-testnet\" | \"ultron-mainnet\" | \"ultron-testnet\" | \"zora-mainnet\" | \"zora-goerli-testnet\" | \"neon-mainnet\" | \"avalanche-shrapnel-mainnet\" | \"base-mainnet\" | \"mantle-mainnet\" | \"avalanche-loco-legends-mainnet\" | \"linea-mainnet\" | \"horizen-eon-mainnet\" | \"avalanche-numbers\" | \"avalanche-dos\" | \"avalanche-step-network\" | \"avalanche-xplus\" | \"avalanche-xanachain\" | \"avalanche-meld-mainnet\" | \"opside-public-zkevm\" | \"opside-law-chain\" | \"avalanche-shrapnel-testnet\" | \"avalanche-loco-legends-testnet\" | \"opside-cb-zkevm\" | \"opside-pre-alpha-testnet\" | \"opside-era7\" | \"opside-xthrill\" | \"zksync-mainnet\" | \"metis-testnet\" | \"zksync-testnet\" | \"avalanche-blitz-testnet\" | \"avalanche-d-chain-testnet\" | \"avalanche-green-dot-testnet\" | \"avalanche-mintara-testnet\" | \"avalanche-beam-testnet\" | \"bnb-meta-apes-mainnet\" | \"bnb-antimatter-mainnet\" | \"bnb-antimatter-testnet\" | \"bnb-opbnb-testnet\" | \"opside-debox\" | \"opside-jackbot\" | \"opside-odx-zkevm-testnet\" | \"opside-readon-content-testnet\" | \"opside-relation\" | \"opside-soquest-zkevm\" | \"opside-vip3\" | \"opside-zkmeta\" | \"avalanche-pulsar-testnet\" | \"avalanche-uptn\" | \"bnb-fncy-mainnet\" | \"zetachain-testnet\" | \"kinto-testnet\" | \"mode-testnet\" | \"loot-mainnet\" | \"bnb-fncy-testnet\" | \"manta-testnet\" | \"pgn-mainnet\" | \"pgn-testnet\" | \"gnosis-mainnet\" | \"gnosis-testnet\" | \"rollux-mainnet\" | \"rollux-testnet\" | \"taiko-jolnir-testnet\" | \"optimism-sepolia\" | \"bnb-opbnb-mainnet\" | \"telos-mainnet\" | \"telos-testnet\" | \"avalanche-hubble-exchange-testnet\" | \"avalanche-miho-testnet\" | \"avalanche-bulletin-testnet\" | \"avalanche-kiwi-testnet\" | \"avalanche-hero-testnet\" | \"avalanche-avacloud-testnet\" | \"avalanche-thirdweb-testnet\" | \"avalanche-mondrian-testnet\" | \"avalanche-conduit-testnet\" | \"avalanche-nmac-testnet\" | \"avalanche-orderly-testnet\" | \"avalanche-amplify-testnet\" | \"avalanche-mirai-testnet\" | \"avalanche-wagmi-testnet\" | \"avalanche-playa3ull-testnet\" | \"avalanche-beam-mainnet\" | \"scroll-mainnet\" | \"eth-holesky\" | \"tomochain-mainnet\" | \"tomochain-testnet\" | \"avalanche-jono11-testnet\" | \"base-sepolia-testnet\" | \"xai-testnet\" | \"arbitrum-sepolia\" | \"lumoz-public-zksync-v2\" | \"lumoz-decibling\" | \"lumoz-stark-sport\" | \"avalanche-lt0-testnet\" | \"avalanche-lt1-testnet\" | \"avalanche-lt2-testnet\" | \"avalanche-lt3-testnet\" | \"avalanche-lt4-testnet\" | \"avalanche-lt5-testnet\" | \"syndr-testnet\" | \"crossfi-evm-testnet\" | \"celo-mainnet\" | \"taiko-katla-testnet\" | \"movement-mevm-testnet\" | \"zora-sepolia-testnet\" | \"merlin-mainnet\" | \"merlin-testnet\" | \"avalanche-hubble-exchange-mainnet\" | \"xai-mainnet\";\nexport type Quote = \"USD\" | \"CAD\" | \"EUR\" | \"SGD\" | \"INR\" | \"JPY\" | \"VND\" | \"CNY\" | \"KRW\" | \"RUB\" | \"TRY\" | \"NGN\" | \"ARS\" | \"AUD\" | \"CHF\" | \"GBP\";\nexport type ChainID = 20090103 | 1 | 137 | 56 | 43114 | 10 | 250 | 1284 | 1285 | 30 | 42161 | 11297108109 | 8217 | 128 | 71402 | 2020 | 9001 | 592 | 4689 | 1666600000 | 25 | 1313161554 | 42262 | 288 | 5 | 80001 | 43113 | 97 | 1287 | 31 | 421613 | 4002 | 11297108099 | 256 | 71401 | 9000 | 4690 | 1666700000 | 1313161555 | 534354 | 534351 | 1131378225 | 53935 | 73772 | 43288 | 1294 | 56288 | 28 | 1297 | 9728 | 4328 | 1001 | 192837465 | 356256156 | 1564830818 | 278611351 | 432204 | 1026062157 | 432201 | 81 | 338 | 335 | 1088 | 588 | 2002 | 200202 | 2001 | 200101 | 73773 | 1399811149 | 2046399126 | 82 | 83 | 2139927552 | 2888 | 245022926 | 344106930 | 476158412 | 42170 | 7700 | 119 | 1029 | 14 | 114 | 19 | 16 | 321 | 322 | 1422 | 59140 | 84531 | 5001 | 534353 | 248 | 9372 | 2152 | 2154 | 416 | 23294 | 23295 | 420 | 1101 | 1662 | 1024 | 39797 | 49797 | 1663 | 11155111 | 1482601649 | 644937893 | 222000222 | 49321 | 1231 | 1230 | 7777777 | 999 | 245022934 | 2044 | 8453 | 5000 | 262018 | 59144 | 7332 | 10507 | 7979 | 1234 | 1228 | 8888 | 333000333 | 12008 | 12011 | 2038 | 1995 | 12010 | 51178 | 12009 | 12012 | 324 | 599 | 280 | 1343 | 11115 | 6765897100 | 1079 | 13337 | 16350 | 1990 | 20221 | 5611 | 12018 | 12013 | 12020 | 12015 | 12016 | 12014 | 12017 | 12019 | 431234 | 6119 | 73 | 7001 | 42888 | 919 | 5151706 | 923018 | 3441005 | 424 | 58008 | 100 | 10200 | 570 | 57000 | 167007 | 11155420 | 204 | 40 | 41 | 321123 | 360163 | 78431 | 2037 | 17772 | 152703 | 894538 | 179188 | 78432 | 7777 | 986532 | 78430 | 2195 | 11111 | 3012 | 4337 | 534352 | 17000 | 88 | 89 | 20765 | 84532 | 47279324479 | 421614 | 12027 | 12028 | 12029 | 31330 | 31331 | 31332 | 31333 | 31334 | 31335 | 412346 | 8545 | 42220 | 167008 | 336 | 999999999 | 4200 | 686868 | 1992 | 660279;\nexport type Source = \"Ponder\" | \"GoldRush\" | \"Viem\";\nexport const userAgent = \"com.covalenthq.sdk.typescript/1.0.0\";\n\nexport class Response<T> {\n data: T;\n error: boolean;\n error_code: number | string;\n error_message: string;\n}\n\nexport interface CovalentClientSettings {\n /** * Toggle to analyze the execution of each api request. */\n debug?: boolean;\n /** * The number of concurrent requests allowed. */\n threadCount?: number;\n /** Toggle to turn on and off retry logic */\n enableRetry?: boolean;\n \n}\n\n/**\n * CovalentClient Class\n */\nexport class CovalentClient {\n\n public SecurityService: SecurityService;\n \n public BalanceService: BalanceService;\n \n public BaseService: BaseService;\n \n public NftService: NftService;\n \n public PricingService: PricingService;\n \n public TransactionService: TransactionService;\n \n public XykService: XykService;\n\n private _is_key_valid: boolean;\n \n constructor(apiKey: string, settings?: CovalentClientSettings, source?: Source) {\n const { debug = false, threadCount = 3, enableRetry = true } = settings || {}; \n\n const validator = new ApiKeyValidator(apiKey);\n this._is_key_valid = validator.isValidApiKey();\n\n this.SecurityService = new SecurityService(apiKey, debug, threadCount, this._is_key_valid, enableRetry, source);\n this.BalanceService = new BalanceService(apiKey, debug, threadCount, this._is_key_valid, enableRetry, source);\n this.BaseService = new BaseService(apiKey, debug, threadCount,this._is_key_valid, enableRetry, source);\n this.NftService = new NftService(apiKey, debug, threadCount, this._is_key_valid, enableRetry, source);\n this.PricingService = new PricingService(apiKey, debug, threadCount, this._is_key_valid, enableRetry, source);\n this.TransactionService = new TransactionService(apiKey, debug, threadCount, this._is_key_valid, enableRetry, source);\n this.XykService = new XykService(apiKey, debug, threadCount, this._is_key_valid, enableRetry, source);\n }\n\n}\n\n/**\n * @deprecated\n * Please use {@link CovalentClient} going forward! This method will be removed after Oct 31, 2023.\n * @see #CovalentClient\n * CovalentClient Class\n */\nexport class Client {\n\n public SecurityService: SecurityService;\n \n public BalanceService: BalanceService;\n \n public BaseService: BaseService;\n \n public NftService: NftService;\n \n public PricingService: PricingService;\n \n public TransactionService: TransactionService;\n \n public XykService: XykService;\n\n private _is_key_valid: boolean;\n\n constructor(apiKey: string, settings?: CovalentClientSettings, source?: Source) {\n const { debug = false, threadCount = 3, enableRetry = true} = settings || {}; \n\n const validator = new ApiKeyValidator(apiKey);\n this._is_key_valid = validator.isValidApiKey();\n\n this.SecurityService = new SecurityService(apiKey, debug, threadCount, this._is_key_valid, enableRetry, source);\n this.BalanceService = new BalanceService(apiKey, debug, threadCount, this._is_key_valid, enableRetry, source);\n this.BaseService = new BaseService(apiKey, debug, threadCount,this._is_key_valid, enableRetry, source);\n this.NftService = new NftService(apiKey, debug, threadCount, this._is_key_valid, enableRetry, source);\n this.PricingService = new PricingService(apiKey, debug, threadCount, this._is_key_valid, enableRetry, source);\n this.TransactionService = new TransactionService(apiKey, debug, threadCount, this._is_key_valid, enableRetry, source);\n this.XykService = new XykService(apiKey, debug, threadCount, this._is_key_valid, enableRetry, source);\n }\n\n}\n","import Big from \"big.js\";\n\nexport const calculatePrettyBalance = (\n value: number | bigint,\n decimals: number = 18,\n roundOff: boolean = true,\n precision: number = 0\n): string => {\n let bigIntValue: bigint;\n let bigDecimalValue;\n try {\n bigIntValue = BigInt(value);\n bigDecimalValue = new Big(bigIntValue.toString());\n } catch (error) {\n bigDecimalValue = new Big(value.toString());\n }\n\n const _decimals: number = decimals ?? 18;\n const _expoValue: bigint = BigInt(Math.pow(10, _decimals));\n const bigDecimalExpo = new Big(_expoValue.toString());\n const _calculated = bigDecimalValue.div(bigDecimalExpo);\n\n if (decimals === 0) {\n return _calculated.toString();\n }\n\n // removes the decimal places, true by default so it adds decimals\n if (!roundOff) {\n return _calculated.toString();\n }\n let _decimalFixed = precision;\n if (precision === 0) {\n _decimalFixed = 2;\n if (_calculated.lt(100)) {\n _decimalFixed = 6;\n }\n }\n return _calculated.toFixed(_decimalFixed); \n};\n","import { Quote } from \"../services/CovalentClient\";\n\nconst LESS_THAN_ZERO = \"0.01\";\nconst ZERO = \"0.00\";\n\nconst currencyMap = new Map<string, string>([\n [\"USD\", \"$\"],\n [\"CAD\", \"CA$\"],\n [\"EUR\", \"€\"],\n [\"SGD\", \"S$\"],\n [\"INR\", \"₹\"],\n [\"JPY\", \"¥\"],\n [\"VND\", \"₫\"],\n [\"CNY\", \"CN¥\"],\n [\"KRW\", \"₩\"],\n [\"RUB\", \"₽\"],\n [\"TRY\", \"₺\"],\n [\"NGN\", \"₦\"],\n [\"ARS\", \"ARS\"],\n [\"AUD\", \"A$\"],\n [\"CHF\", \"CHF\"],\n [\"GBP\", \"£\"],\n ]);\n\nexport const prettifyCurrency = (\n value: any,\n decimals = 2,\n currency: Quote = \"USD\",\n ignoreSmallValue = false,\n ignoreMinus = true,\n ignoreZero = false\n) => {\n if (typeof value === \"string\") {\n value = Number(value);\n }\n let minus = \"\";\n let currencySuffix = \"\";\n\n // pass ignoreMinus false to get the negative number for currency formatter\n if (!ignoreMinus && value < 0) {\n value = Math.abs(value);\n minus = \"-\";\n }\n \n if (value === 0 || !value) {\n // if value is 0, pass ignoreZero true to get this string \"<$0.01\"\n if (ignoreZero) {\n return \"<\" + currencyMap.get(currency) + LESS_THAN_ZERO;\n } else {\n return currencyMap.get(currency) + ZERO;\n }\n } else if (value < 0 || value < 1) {\n if (value < 0.01 && ignoreSmallValue) {\n return \"<\" + currencyMap.get(currency) + LESS_THAN_ZERO;\n }\n } else if (value > 999999999) {\n value = value / 1000000000;\n currencySuffix = \"B\";\n } else if (value > 999999) {\n value = value / 1000000; // convert to M for number from > 1 million\n currencySuffix = \"M\";\n }\n // Added to round down the number\n const expo = Math.pow(10, decimals);\n value = Math.floor(value * expo) / expo;\n \n // generates the value with the inputted currency\n const formatter = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: currency,\n maximumFractionDigits: decimals,\n currencyDisplay: \"symbol\"\n });\n\n //replace the occasional incorrect currency symbol from the formatter and replace with correct symbol from currencyMap\n const regex = new RegExp(`${currency}\\\\s?`);\n const _val = formatter.format(value).replace(regex, currencyMap.get(currency) ?? \"$\");\n \n return minus + _val + currencySuffix;\n};","export enum Chains {\n BTC_MAINNET = \"btc-mainnet\",\n ETH_MAINNET = \"eth-mainnet\",\n MATIC_MAINNET = \"matic-mainnet\",\n BSC_MAINNET = \"bsc-mainnet\",\n AVALANCHE_MAINNET = \"avalanche-mainnet\",\n OPTIMISM_MAINNET = \"optimism-mainnet\",\n FANTOM_MAINNET = \"fantom-mainnet\",\n MOONBEAM_MAINNET = \"moonbeam-mainnet\",\n MOONBEAM_MOONRIVER = \"moonbeam-moonriver\",\n RSK_MAINNET = \"rsk-mainnet\",\n ARBITRUM_MAINNET = \"arbitrum-mainnet\",\n PALM_MAINNET = \"palm-mainnet\",\n KLAYTN_MAINNET = \"klaytn-mainnet\",\n HECO_MAINNET = \"heco-mainnet\",\n NERVOS_GODWOKEN_MAINNET = \"nervos-godwoken-mainnet\",\n AXIE_MAINNET = \"axie-mainnet\",\n EVMOS_MAINNET = \"evmos-mainnet\",\n ASTAR_MAINNET = \"astar-mainnet\",\n IOTEX_MAINNET = \"iotex-mainnet\",\n HARMONY_MAINNET = \"harmony-mainnet\",\n CRONOS_MAINNET = \"cronos-mainnet\",\n AURORA_MAINNET = \"aurora-mainnet\",\n EMERALD_PARATIME_MAINNET = \"emerald-paratime-mainnet\",\n BOBA_MAINNET = \"boba-mainnet\",\n ETH_GOERLI = \"eth-goerli\",\n MATIC_MUMBAI = \"matic-mumbai\",\n AVALANCHE_TESTNET = \"avalanche-testnet\",\n BSC_TESTNET = \"bsc-testnet\",\n MOONBEAM_MOONBASE_ALPHA = \"moonbeam-moonbase-alpha\",\n RSK_TESTNET = \"rsk-testnet\",\n ARBITRUM_GOERLI = \"arbitrum-goerli\",\n FANTOM_TESTNET = \"fantom-testnet\",\n PALM_TESTNET = \"palm-testnet\",\n HECO_TESTNET = \"heco-testnet\",\n NERVOS_GODWOKEN_TESTNET = \"nervos-godwoken-testnet\",\n EVMOS_TESTNET = \"evmos-testnet\",\n IOTEX_TESTNET = \"iotex-testnet\",\n HARMONY_TESTNET = \"harmony-testnet\",\n AURORA_TESTNET = \"aurora-testnet\",\n SCROLL_L2_TESTNET = \"scroll-l2-testnet\",\n SCROLL_SEPOLIA_TESTNET = \"scroll-sepolia-testnet\",\n COVALENT_INTERNAL_NETWORK_V1 = \"covalent-internal-network-v1\",\n DEFI_KINGDOMS_MAINNET = \"defi-kingdoms-mainnet\",\n SWIMMER_MAINNET = \"swimmer-mainnet\",\n BOBA_AVALANCHE_MAINNET = \"boba-avalanche-mainnet\",\n BOBA_BOBABEAM_MAINNET = \"boba-bobabeam-mainnet\",\n BOBA_BNB_MAINNET = \"boba-bnb-mainnet\",\n BOBA_RINKEBY_TESTNET = \"boba-rinkeby-testnet\",\n BOBA_BOBABASE_TESTNET = \"boba-bobabase-testnet\",\n BOBA_BNB_TESTNET = \"boba-bnb-testnet\",\n BOBA_AVALANCHE_TESTNET = \"boba-avalanche-testnet\",\n KLAYTN_TESTNET = \"klaytn-testnet\",\n GATHER_MAINNET = \"gather-mainnet\",\n GATHER_TESTNET = \"gather-testnet\",\n SKALE_CALYPSO = \"skale-calypso\",\n SKALE_MAINNET = \"skale-mainnet\",\n SKALE_RAZOR = \"skale-razor\",\n AVALANCHE_DEXALOT_MAINNET = \"avalanche-dexalot-mainnet\",\n SKALE_OMNUS = \"skale-omnus\",\n AVALANCHE_DEXALOT_TESTNET = \"avalanche-dexalot-testnet\",\n ASTAR_SHIBUYA = \"astar-shibuya\",\n CRONOS_TESTNET = \"cronos-testnet\",\n DEFI_KINGDOMS_TESTNET = \"defi-kingdoms-testnet\",\n METIS_MAINNET = \"metis-mainnet\",\n METIS_STARDUST = \"metis-stardust\",\n MILKOMEDA_A1_MAINNET = \"milkomeda-a1-mainnet\",\n MILKOMEDA_A1_DEVNET = \"milkomeda-a1-devnet\",\n MILKOMEDA_C1_MAINNET = \"milkomeda-c1-mainnet\",\n MILKOMEDA_C1_DEVNET = \"milkomeda-c1-devnet\",\n SWIMMER_TESTNET = \"swimmer-testnet\",\n SOLANA_MAINNET = \"solana-mainnet\",\n SKALE_EUROPA = \"skale-europa\",\n METER_MAINNET = \"meter-mainnet\",\n METER_TESTNET = \"meter-testnet\",\n SKALE_EXORDE = \"skale-exorde\",\n BOBA_GOERLI = \"boba-goerli\",\n NEON_TESTNET = \"neon-testnet\",\n SKALE_STAGING_UUM = \"skale-staging-uum\",\n SKALE_STAGING_LCC = \"skale-staging-lcc\",\n ARBITRUM_NOVA_MAINNET = \"arbitrum-nova-mainnet\",\n CANTO_MAINNET = \"canto-mainnet\",\n BITTORRENT_MAINNET = \"bittorrent-mainnet\",\n BITTORRENT_TESTNET = \"bittorrent-testnet\",\n FLARENETWORKS_FLARE_MAINNET = \"flarenetworks-flare-mainnet\",\n FLARENETWORKS_FLARE_TESTNET = \"flarenetworks-flare-testnet\",\n FLARENETWORKS_CANARY_MAINNET = \"flarenetworks-canary-mainnet\",\n FLARENETWORKS_CANARY_TESTNET = \"flarenetworks-canary-testnet\",\n KCC_MAINNET = \"kcc-mainnet\",\n KCC_TESTNET = \"kcc-testnet\",\n POLYGON_ZKEVM_TESTNET = \"polygon-zkevm-testnet\",\n LINEA_TESTNET = \"linea-testnet\",\n BASE_TESTNET = \"base-testnet\",\n MANTLE_TESTNET = \"mantle-testnet\",\n SCROLL_ALPHA_TESTNET = \"scroll-alpha-testnet\",\n OASYS_MAINNET = \"oasys-mainnet\",\n OASYS_TESTNET = \"oasys-testnet\",\n FINDORA_MAINNET = \"findora-mainnet\",\n FINDORA_FORGE_TESTNET = \"findora-forge-testnet\",\n SX_MAINNET = \"sx-mainnet\",\n OASIS_SAPPHIRE_MAINNET = \"oasis-sapphire-mainnet\",\n OASIS_SAPPHIRE_TESTNET = \"oasis-sapphire-testnet\",\n OPTIMISM_GOERLI = \"optimism-goerli\",\n POLYGON_ZKEVM_MAINNET = \"polygon-zkevm-mainnet\",\n HORIZEN_YUMA_TESTNET = \"horizen-yuma-testnet\",\n CLV_PARACHAIN = \"clv-parachain\",\n ENERGI_MAINNET = \"energi-mainnet\",\n ENERGI_TESTNET = \"energi-testnet\",\n HORIZEN_GOBI_TESTNET = \"horizen-gobi-testnet\",\n ETH_SEPOLIA = \"eth-sepolia\",\n SKALE_NEBULA = \"skale-nebula\",\n SKALE_BATTLEGROUND = \"skale-battleground\",\n AVALANCHE_MELD_TESTNET = \"avalanche-meld-testnet\",\n GUNZILLA_TESTNET = \"gunzilla-testnet\",\n ULTRON_MAINNET = \"ultron-mainnet\",\n ULTRON_TESTNET = \"ultron-testnet\",\n ZORA_MAINNET = \"zora-mainnet\",\n ZORA_GOERLI_TESTNET = \"zora-goerli-testnet\",\n NEON_MAINNET = \"neon-mainnet\",\n AVALANCHE_SHRAPNEL_MAINNET = \"avalanche-shrapnel-mainnet\",\n BASE_MAINNET = \"base-mainnet\",\n MANTLE_MAINNET = \"mantle-mainnet\",\n AVALANCHE_LOCO_LEGENDS_MAINNET = \"avalanche-loco-legends-mainnet\",\n LINEA_MAINNET = \"linea-mainnet\",\n HORIZEN_EON_MAINNET = \"horizen-eon-mainnet\",\n AVALANCHE_NUMBERS = \"avalanche-numbers\",\n AVALANCHE_DOS = \"avalanche-dos\",\n AVALANCHE_STEP_NETWORK = \"avalanche-step-network\",\n AVALANCHE_XPLUS = \"avalanche-xplus\",\n AVALANCHE_XANACHAIN = \"avalanche-xanachain\",\n AVALANCHE_MELD_MAINNET = \"avalanche-meld-mainnet\",\n OPSIDE_PUBLIC_ZKEVM = \"opside-public-zkevm\",\n OPSIDE_LAW_CHAIN = \"opside-law-chain\",\n AVALANCHE_SHRAPNEL_TESTNET = \"avalanche-shrapnel-testnet\",\n AVALANCHE_LOCO_LEGENDS_TESTNET = \"avalanche-loco-legends-testnet\",\n OPSIDE_CB_ZKEVM = \"opside-cb-zkevm\",\n OPSIDE_PRE_ALPHA_TESTNET = \"opside-pre-alpha-testnet\",\n OPSIDE_ERA7 = \"opside-era7\",\n OPSIDE_XTHRILL = \"opside-xthrill\",\n ZKSYNC_MAINNET = \"zksync-mainnet\",\n METIS_TESTNET = \"metis-testnet\",\n ZKSYNC_TESTNET = \"zksync-testnet\",\n AVALANCHE_BLITZ_TESTNET = \"avalanche-blitz-testnet\",\n AVALANCHE_D_CHAIN_TESTNET = \"avalanche-d-chain-testnet\",\n AVALANCHE_GREEN_DOT_TESTNET = \"avalanche-green-dot-testnet\",\n AVALANCHE_MINTARA_TESTNET = \"avalanche-mintara-testnet\",\n AVALANCHE_BEAM_TESTNET = \"avalanche-beam-testnet\",\n BNB_META_APES_MAINNET = \"bnb-meta-apes-mainnet\",\n BNB_ANTIMATTER_MAINNET = \"bnb-antimatter-mainnet\",\n BNB_ANTIMATTER_TESTNET = \"bnb-antimatter-testnet\",\n BNB_OPBNB_TESTNET = \"bnb-opbnb-testnet\",\n OPSIDE_DEBOX = \"opside-debox\",\n OPSIDE_JACKBOT = \"opside-jackbot\",\n OPSIDE_ODX_ZKEVM_TESTNET = \"opside-odx-zkevm-testnet\",\n OPSIDE_READON_CONTENT_TESTNET = \"opside-readon-content-testnet\",\n OPSIDE_RELATION = \"opside-relation\",\n OPSIDE_SOQUEST_ZKEVM = \"opside-soquest-zkevm\",\n OPSIDE_VIP3 = \"opside-vip3\",\n OPSIDE_ZKMETA = \"opside-zkmeta\",\n AVALANCHE_PULSAR_TESTNET = \"avalanche-pulsar-testnet\",\n AVALANCHE_UPTN = \"avalanche-uptn\",\n BNB_FNCY_MAINNET = \"bnb-fncy-mainnet\",\n ZETACHAIN_TESTNET = \"zetachain-testnet\",\n KINTO_TESTNET = \"kinto-testnet\",\n MODE_TESTNET = \"mode-testnet\",\n LOOT_MAINNET = \"loot-mainnet\",\n BNB_FNCY_TESTNET = \"bnb-fncy-testnet\",\n MANTA_TESTNET = \"manta-testnet\",\n PGN_MAINNET = \"pgn-mainnet\",\n PGN_TESTNET = \"pgn-testnet\",\n GNOSIS_MAINNET = \"gnosis-mainnet\",\n GNOSIS_TESTNET = \"gnosis-testnet\",\n ROLLUX_MAINNET = \"rollux-mainnet\",\n ROLLUX_TESTNET = \"rollux-testnet\",\n TAIKO_JOLNIR_TESTNET = \"taiko-jolnir-testnet\",\n OPTIMISM_SEPOLIA = \"optimism-sepolia\",\n BNB_OPBNB_MAINNET = \"bnb-opbnb-mainnet\",\n TELOS_MAINNET = \"telos-mainnet\",\n TELOS_TESTNET = \"telos-testnet\",\n AVALANCHE_HUBBLE_EXCHANGE_TESTNET = \"avalanche-hubble-exchange-testnet\",\n AVALANCHE_MIHO_TESTNET = \"avalanche-miho-testnet\",\n AVALANCHE_BULLETIN_TESTNET = \"avalanche-bulletin-testnet\",\n AVALANCHE_KIWI_TESTNET = \"avalanche-kiwi-testnet\",\n AVALANCHE_HERO_TESTNET = \"avalanche-hero-testnet\",\n AVALANCHE_AVACLOUD_TESTNET = \"avalanche-avacloud-testnet\",\n AVALANCHE_THIRDWEB_TESTNET = \"avalanche-thirdweb-testnet\",\n AVALANCHE_MONDRIAN_TESTNET = \"avalanche-mondrian-testnet\",\n AVALANCHE_CONDUIT_TESTNET = \"avalanche-conduit-testnet\",\n AVALANCHE_NMAC_TESTNET = \"avalanche-nmac-testnet\",\n AVALANCHE_ORDERLY_TESTNET = \"avalanche-orderly-testnet\",\n AVALANCHE_AMPLIFY_TESTNET = \"avalanche-amplify-testnet\",\n AVALANCHE_MIRAI_TESTNET = \"avalanche-mirai-testnet\",\n AVALANCHE_WAGMI_TESTNET = \"avalanche-wagmi-testnet\",\n AVALANCHE_PLAYA3ULL_TESTNET = \"avalanche-playa3ull-testnet\",\n AVALANCHE_BEAM_MAINNET = \"avalanche-beam-mainnet\",\n SCROLL_MAINNET = \"scroll-mainnet\",\n ETH_HOLESKY = \"eth-holesky\",\n TOMOCHAIN_MAINNET = \"tomochain-mainnet\",\n TOMOCHAIN_TESTNET = \"tomochain-testnet\",\n AVALANCHE_JONO11_TESTNET = \"avalanche-jono11-testnet\",\n BASE_SEPOLIA_TESTNET = \"base-sepolia-testnet\",\n XAI_TESTNET = \"xai-testnet\",\n ARBITRUM_SEPOLIA = \"arbitrum-sepolia\",\n LUMOZ_PUBLIC_ZKSYNC_V2 = \"lumoz-public-zksync-v2\",\n LUMOZ_DECIBLING = \"lumoz-decibling\",\n LUMOZ_STARK_SPORT = \"lumoz-stark-sport\",\n AVALANCHE_LT0_TESTNET = \"avalanche-lt0-testnet\",\n AVALANCHE_LT1_TESTNET = \"avalanche-lt1-testnet\",\n AVALANCHE_LT2_TESTNET = \"avalanche-lt2-testnet\",\n AVALANCHE_LT3_TESTNET = \"avalanche-lt3-testnet\",\n AVALANCHE_LT4_TESTNET = \"avalanche-lt4-testnet\",\n AVALANCHE_LT5_TESTNET = \"avalanche-lt5-testnet\",\n SYNDR_TESTNET = \"syndr-testnet\",\n CROSSFI_EVM_TESTNET = \"crossfi-evm-testnet\",\n CELO_MAINNET = \"celo-mainnet\",\n TAIKO_KATLA_TESTNET = \"taiko-katla-testnet\",\n MOVEMENT_MEVM_TESTNET = \"movement-mevm-testnet\",\n ZORA_SEPOLIA_TESTNET = \"zora-sepolia-testnet\",\n MERLIN_MAINNET = \"merlin-mainnet\",\n MERLIN_TESTNET = \"merlin-testnet\",\n AVALANCHE_HUBBLE_EXCHANGE_MAINNET = \"avalanche-hubble-exchange-mainnet\",\n XAI_MAINNET = \"xai-mainnet\"\n}\n"],"names":["Queue","require$$0","paginateEndpoint","pLimit","LogoUrls","NftCollectionAttribute","Pagination","ContractMetadata","Explorer","DecodedItem","Param","LogEvent"],"mappings":"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","x_google_ignoreList":[1,2]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/util/backoff.ts","../../node_modules/yocto-queue/index.js","../../node_modules/p-limit/index.js","../../src/util/ApiHelpers.ts","../../src/util/ApiKeyValidator.ts","../../src/services/SecurityService.ts","../../src/services/BalanceService.ts","../../src/services/BaseService.ts","../../src/services/NftService.ts","../../src/services/PricingService.ts","../../src/services/TransactionService.ts","../../src/services/XykService.ts","../../src/services/CovalentClient.ts","../../src/util/CalculatePrettyBalance.ts","../../src/util/prettifyCurrency.ts","../../src/util/Chains.ts"],"sourcesContent":["import { Source, userAgent } from \"../services/CovalentClient\";\nimport { debugOutput } from \"./ApiHelpers\";\n\nexport const DEFAULT_BACKOFF_MAX_RETRIES = 5;\nexport const BASE_DELAY_MS = 1000; // Base delay in milliseconds\n \n\nexport class ExponentialBackoff<T> {\n retryCount = 1;\n _apiKey: string;\n _debug: boolean;\n\n constructor(apiKey: string, debug: boolean, private maxRetries = DEFAULT_BACKOFF_MAX_RETRIES) {\n this._apiKey = apiKey;\n this._debug = debug;\n }\n\n async backOff(url: string, source: Source): Promise<T> {\n try {\n\n let startTime;\n if (this._debug) {\n startTime = new Date();\n }\n\n const response = await fetch(url, {\n headers: {\n \"Authorization\": `Bearer ${this._apiKey}`,\n \"X-Requested-With\": source ? source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n });\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if (response.status === null || response.status === 429) {\n throw new Error(`Received status code: ${response.status ?? 429}`);\n } else {\n return response.json();\n } \n } catch (error) {\n if (error.message.includes(`Received status code: 429`) && this.retryCount < this.maxRetries) {\n this.retryCount++;\n const delayMs = Math.pow(2, this.retryCount) * BASE_DELAY_MS;\n await new Promise((resolve) => setTimeout(resolve, delayMs));\n return this.backOff(url, source);\n }\n return Promise.reject(\n new Error(`Max retries exceeded: ${this.maxRetries}`)\n );\n }\n }\n\n // to reset the numAttempts for another request\n public setNumAttempts(retryCount: number) {\n this.retryCount = retryCount;\n }\n\n}\n","class Node {\n\t/// value;\n\t/// next;\n\n\tconstructor(value) {\n\t\tthis.value = value;\n\n\t\t// TODO: Remove this when targeting Node.js 12.\n\t\tthis.next = undefined;\n\t}\n}\n\nclass Queue {\n\t// TODO: Use private class fields when targeting Node.js 12.\n\t// #_head;\n\t// #_tail;\n\t// #_size;\n\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tenqueue(value) {\n\t\tconst node = new Node(value);\n\n\t\tif (this._head) {\n\t\t\tthis._tail.next = node;\n\t\t\tthis._tail = node;\n\t\t} else {\n\t\t\tthis._head = node;\n\t\t\tthis._tail = node;\n\t\t}\n\n\t\tthis._size++;\n\t}\n\n\tdequeue() {\n\t\tconst current = this._head;\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._head = this._head.next;\n\t\tthis._size--;\n\t\treturn current.value;\n\t}\n\n\tclear() {\n\t\tthis._head = undefined;\n\t\tthis._tail = undefined;\n\t\tthis._size = 0;\n\t}\n\n\tget size() {\n\t\treturn this._size;\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tlet current = this._head;\n\n\t\twhile (current) {\n\t\t\tyield current.value;\n\t\t\tcurrent = current.next;\n\t\t}\n\t}\n}\n\nmodule.exports = Queue;\n","'use strict';\nconst Queue = require('yocto-queue');\n\nconst pLimit = concurrency => {\n\tif (!((Number.isInteger(concurrency) || concurrency === Infinity) && concurrency > 0)) {\n\t\tthrow new TypeError('Expected `concurrency` to be a number from 1 and up');\n\t}\n\n\tconst queue = new Queue();\n\tlet activeCount = 0;\n\n\tconst next = () => {\n\t\tactiveCount--;\n\n\t\tif (queue.size > 0) {\n\t\t\tqueue.dequeue()();\n\t\t}\n\t};\n\n\tconst run = async (fn, resolve, ...args) => {\n\t\tactiveCount++;\n\n\t\tconst result = (async () => fn(...args))();\n\n\t\tresolve(result);\n\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\tnext();\n\t};\n\n\tconst enqueue = (fn, resolve, ...args) => {\n\t\tqueue.enqueue(run.bind(null, fn, resolve, ...args));\n\n\t\t(async () => {\n\t\t\t// This function needs to wait until the next microtask before comparing\n\t\t\t// `activeCount` to `concurrency`, because `activeCount` is updated asynchronously\n\t\t\t// when the run function is dequeued and called. The comparison in the if-statement\n\t\t\t// needs to happen asynchronously as well to get an up-to-date value for `activeCount`.\n\t\t\tawait Promise.resolve();\n\n\t\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\t\tqueue.dequeue()();\n\t\t\t}\n\t\t})();\n\t};\n\n\tconst generator = (fn, ...args) => new Promise(resolve => {\n\t\tenqueue(fn, resolve, ...args);\n\t});\n\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.size\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue: () => {\n\t\t\t\tqueue.clear();\n\t\t\t}\n\t\t}\n\t});\n\n\treturn generator;\n};\n\nmodule.exports = pLimit;\n","import { ExponentialBackoff } from \"./backoff\";\nimport { Response, Source, userAgent } from \"../services/CovalentClient\";\nimport pLimit from \"p-limit\";\n\nexport function checkAndModifyResponse(jsonObj: any): void {\n for (const key in jsonObj) {\n if (key === 'next_update_at') {\n delete jsonObj[key];\n } else if (typeof jsonObj[key] === 'object') {\n checkAndModifyResponse(jsonObj[key]);\n }\n }\n}\n\nexport async function debugOutput(url: string, responseStatus: number, startTime: Date | undefined) {\n let endTime;\n let elapsedTime;\n if (startTime === undefined) {\n return;\n }\n endTime = new Date();\n elapsedTime = endTime.getTime() - startTime.getTime();\n\n console.log(\"[DEBUG]\" + \" |\" + \" Request URL: \" + url + \" |\" + \" Response code: \" + responseStatus + \" |\" + \" Response time: \" + elapsedTime.toFixed(2) + \"ms\");\n\n}\n\ntype Constructor<T> = new (...args: any[]) => T;\n\nexport async function* paginateEndpoint<T1, T2>(url: string, apiKey: string, urlsParams: URLSearchParams, dataClassConstructor: Constructor<T1>, debug: boolean, threadCount: number, enableRetry: boolean, source: Source): AsyncIterable<T1> {\n let hasNext = true;\n let response: globalThis.Response;\n let data: Response<T2>;\n const backoff = new ExponentialBackoff<Response<T2>>(apiKey, debug);\n let page_number = 0;\n const LIMIT = pLimit(threadCount);\n while (hasNext) {\n try {\n let startTime;\n if (debug) {\n startTime = new Date();\n }\n\n const link = urlsParams.get(\"page-number\") ? `${url}?${urlsParams}` : `${url}?${urlsParams}&page-number=${page_number}`;\n\n response = await LIMIT(() => fetch(urlsParams.get(\"page-number\") ? `${url}?${urlsParams}` : `${url}?${urlsParams}&page-number=${page_number}`, {\n headers: {\n \"Authorization\": `Bearer ${apiKey}`,\n \"X-Requested-With\": source ? source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await LIMIT(() => backoff.backOff(response ? response.url : link, source));\n } catch (error) {\n hasNext = false;\n throw new Error(`An error occurred ${response ? response.status : 429}: ${error.message}`);\n }\n } else {\n data = await response.json();\n }\n \n for (const tx of (data.data as any).items) {\n const dataClass = new dataClassConstructor(tx);\n yield dataClass;\n \n }\n backoff.setNumAttempts(1);\n if (!data.error) {\n if ((data.data !== null) && (data.data as any).pagination !== null && (data.data as any).pagination.has_more === false) {\n hasNext = false;\n }\n if (urlsParams.get(\"page-number\")) {\n const next_page = parseInt(urlsParams.get(\"page-number\")) + 1;\n urlsParams.set(\"page-number\", next_page.toString());\n } else {\n page_number = page_number + 1;\n }\n } else {\n hasNext = false;\n }\n \n \n } catch (error) {\n hasNext = false;\n if (error.message.includes(\"An error occurred 429\")) {\n throw new Error(error.message);\n }\n throw new Error(`An error occurred ${data ? data.error_code : response ? response.status : \"Unknown Error Code\"}: ${data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : \"Unknown Error\"}`);\n }\n }\n}","export class ApiKeyValidator {\n readonly _apiKey: string;\n // Regular expression patterns\n private static readonly _apiKeyV1Pattern = /^ckey_([a-f0-9]{27})$/;\n private static readonly _apiKeyV2Pattern = /^cqt_(wF|rQ)([bcdfghjkmpqrtvwxyBCDFGHJKMPQRTVWXY346789]{26})$/;\n\n static readonly INVALID_API_KEY_MESSAGE = \"Invalid or missing API key (sign up at covalenthq.com/platform)\";\n\n constructor(apiKey: string) {\n this._apiKey = apiKey;\n }\n\n isValidApiKey(): boolean {\n return ApiKeyValidator._apiKeyV1Pattern.test(this._apiKey) || ApiKeyValidator._apiKeyV2Pattern.test(this._apiKey);\n }\n}","import { Chain, Quote, userAgent, Response, ChainID, Source } from \"./CovalentClient\";\nimport { debugOutput } from \"../util/ApiHelpers\";\nimport { parseISO } from \"date-fns\";\nimport { ExponentialBackoff } from \"../util/backoff\";\nimport pLimit from \"p-limit\";\nimport { Chains } from \"../util/Chains\";\nimport { ApiKeyValidator } from \"../util/ApiKeyValidator\";\n\nclass ApprovalsResponse {\n /** * The requested address. */\n address: string;\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: TokensApprovalItem[];\n\n constructor(data: ApprovalsResponse) {\n this.address = data.address;\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.quote_currency = data.quote_currency;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: TokensApprovalItem) => new TokensApprovalItem(itemData)) : null;\n }\n}\nclass TokensApprovalItem {\n /** * The address for the token that has approvals. */\n token_address: string;\n /** * The name for the token that has approvals. */\n token_address_label: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n ticker_symbol: string;\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The contract logo URL. */\n logo_url: string;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n /** * Wallet balance of the token. */\n balance: bigint | null;\n /** * Value of the wallet balance of the token. */\n balance_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_balance_quote: string;\n /** * Total amount at risk across all spenders. */\n value_at_risk: string;\n /** * Value of total amount at risk across all spenders. */\n value_at_risk_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_value_at_risk_quote: string;\n /** * Contracts with non-zero approvals for this token. */\n spenders: TokenSpenderItem[];\n\n constructor(data: TokensApprovalItem) {\n this.token_address = data.token_address;\n this.token_address_label = data.token_address_label;\n this.ticker_symbol = data.ticker_symbol;\n this.contract_decimals = data.contract_decimals;\n this.logo_url = data.logo_url;\n this.quote_rate = data.quote_rate;\n this.balance = data.balance && data.balance !== null ? BigInt(data.balance) : null;\n this.balance_quote = data.balance_quote;\n this.pretty_balance_quote = data.pretty_balance_quote;\n this.value_at_risk = data.value_at_risk;\n this.value_at_risk_quote = data.value_at_risk_quote;\n this.pretty_value_at_risk_quote = data.pretty_value_at_risk_quote;\n this.spenders = data.spenders && data.spenders !== null ? data.spenders.map((itemData: TokenSpenderItem) => new TokenSpenderItem(itemData)) : null;\n }\n}\nclass TokenSpenderItem {\n /** * The height of the block. */\n block_height: number;\n /** * The offset is the position of the tx in the block. */\n tx_offset: number;\n /** * The offset is the position of the log entry within an event log.\" */\n log_offset: number;\n /** * The block signed timestamp in UTC. */\n block_signed_at: Date;\n /** * Most recent transaction that updated approval amounts for the token. */\n tx_hash: string;\n /** * Address of the contract with approval for the token. */\n spender_address: string;\n /** * Name of the contract with approval for the token. */\n spender_address_label: string;\n /** * Remaining number of tokens granted to the spender by the approval. */\n allowance: string;\n /** * Value of the remaining allowance specified by the approval. */\n allowance_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_allowance_quote: string;\n /** * Amount at risk for spender. */\n value_at_risk: string;\n /** * Value of amount at risk for spender. */\n value_at_risk_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_value_at_risk_quote: string;\n risk_factor: string;\n\n constructor(data: TokenSpenderItem) {\n this.block_height = data.block_height;\n this.tx_offset = data.tx_offset;\n this.log_offset = data.log_offset;\n this.block_signed_at = data.block_signed_at && data.block_signed_at !== null ? parseISO(data.block_signed_at.toString()) : null;\n this.tx_hash = data.tx_hash;\n this.spender_address = data.spender_address;\n this.spender_address_label = data.spender_address_label;\n this.allowance = data.allowance;\n this.allowance_quote = data.allowance_quote;\n this.pretty_allowance_quote = data.pretty_allowance_quote;\n this.value_at_risk = data.value_at_risk;\n this.value_at_risk_quote = data.value_at_risk_quote;\n this.pretty_value_at_risk_quote = data.pretty_value_at_risk_quote;\n this.risk_factor = data.risk_factor;\n \n }\n}\n\nclass NftApprovalsResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * The requested address. */\n address: string;\n /** * List of response items. */\n items: NftApprovalsItem[];\n\n constructor(data: NftApprovalsResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.address = data.address;\n this.items = data.items && data.items !== null ? data.items.map((itemData: NftApprovalsItem) => new NftApprovalsItem(itemData)) : null;\n }\n}\nclass NftApprovalsItem {\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * The label of the contract address. */\n contract_address_label: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * List of asset balances held by the user. */\n token_balances: NftApprovalBalance[];\n /** * Contracts with non-zero approvals for this token. */\n spenders: NftApprovalSpender[];\n\n constructor(data: NftApprovalsItem) {\n this.contract_address = data.contract_address;\n this.contract_address_label = data.contract_address_label;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.token_balances = data.token_balances && data.token_balances !== null ? data.token_balances.map((itemData: NftApprovalBalance) => new NftApprovalBalance(itemData)) : null;\n this.spenders = data.spenders && data.spenders !== null ? data.spenders.map((itemData: NftApprovalSpender) => new NftApprovalSpender(itemData)) : null;\n }\n}\nclass NftApprovalBalance {\n /** * The token's id. */\n token_id: bigint | null;\n /** * The NFT's token balance. */\n token_balance: bigint | null;\n\n constructor(data: NftApprovalBalance) {\n this.token_id = data.token_id && data.token_id !== null ? BigInt(data.token_id) : null;\n this.token_balance = data.token_balance && data.token_balance !== null ? BigInt(data.token_balance) : null;\n \n }\n}\nclass NftApprovalSpender {\n /** * The height of the block. */\n block_height: number;\n /** * The offset is the position of the tx in the block. */\n tx_offset: number;\n /** * The offset is the position of the log entry within an event log.\" */\n log_offset: number;\n /** * The block signed timestamp in UTC. */\n block_signed_at: Date;\n /** * Most recent transaction that updated approval amounts for the token. */\n tx_hash: string;\n /** * Address of the contract with approval for the token. */\n spender_address: string;\n /** * Name of the contract with approval for the token. */\n spender_address_label: string;\n /** * The token ids approved. */\n token_ids_approved: string;\n /** * Remaining number of tokens granted to the spender by the approval. */\n allowance: string;\n\n constructor(data: NftApprovalSpender) {\n this.block_height = data.block_height;\n this.tx_offset = data.tx_offset;\n this.log_offset = data.log_offset;\n this.block_signed_at = data.block_signed_at && data.block_signed_at !== null ? parseISO(data.block_signed_at.toString()) : null;\n this.tx_hash = data.tx_hash;\n this.spender_address = data.spender_address;\n this.spender_address_label = data.spender_address_label;\n this.token_ids_approved = data.token_ids_approved;\n this.allowance = data.allowance;\n \n }\n}\n\n/**\n * Approvals API\n * \n */\n\nexport class SecurityService {\n private LIMIT;\n constructor(private apiKey: string, private debug: boolean = false, private threadCount: number = 3, private is_key_valid: boolean, private enableRetry: boolean = true, private source: Source) {\n this.LIMIT = pLimit(this.threadCount);\n }\n \n\n\n /**\n *\n * Commonly used to get a list of approvals across all token contracts categorized by spenders for a wallet’s assets.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n *\n */\n public async getApprovals(chainName: Chain | Chains | ChainID, walletAddress: string): Promise<Response<ApprovalsResponse>> {\n let success = false;\n let data: Response<ApprovalsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<ApprovalsResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n const url = `https://api.covalenthq.com/v1/${chainName}/approvals/${walletAddress}/?${urlParams}`;\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/approvals/${walletAddress}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n \n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new ApprovalsResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n /**\n *\n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n \n *\n */\n public async getNftApprovals(chainName: Chain | Chains | ChainID, walletAddress: string): Promise<Response<NftApprovalsResponse>> {\n let success = false;\n let data: Response<NftApprovalsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NftApprovalsResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n const url = `https://api.covalenthq.com/v1/${chainName}/nft/approvals/${walletAddress}/?${urlParams}`;\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n \n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/nft/approvals/${walletAddress}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n \n const dataClass = new NftApprovalsResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n } \n\n}\n \n ","import { Chain, Quote, userAgent, Response, ChainID, Source } from \"./CovalentClient\";\nimport { debugOutput, paginateEndpoint } from \"../util/ApiHelpers\";\nimport { parseISO } from \"date-fns\";\nimport { ExponentialBackoff } from \"../util/backoff\";\nimport pLimit from \"p-limit\";\nimport { Chains } from \"../util/Chains\";\nimport { ApiKeyValidator } from \"../util/ApiKeyValidator\";\n\nclass BalancesResponse {\n /** * The requested address. */\n address: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * List of response items. */\n items: BalanceItem[];\n\n constructor(data: BalancesResponse) {\n this.address = data.address;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.quote_currency = data.quote_currency;\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: BalanceItem) => new BalanceItem(itemData)) : null;\n }\n}\nclass BalanceItem {\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * A display-friendly name for the contract. */\n contract_display_name: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The contract logo URL. */\n logo_url: string;\n /** * The contract logo URLs. */\n logo_urls: LogoUrls;\n /** * The timestamp when the token was transferred. */\n last_transferred_at: Date;\n /** * Indicates if a token is the chain's native gas token, eg: ETH on Ethereum. */\n native_token: boolean;\n /** * One of `cryptocurrency`, `stablecoin`, `nft` or `dust`. */\n type: string;\n /** * Denotes whether the token is suspected spam. */\n is_spam: boolean;\n /** * The asset balance. Use `contract_decimals` to scale this balance for display purposes. */\n balance: bigint | null;\n /** * The 24h asset balance. Use `contract_decimals` to scale this balance for display purposes. */\n balance_24h: bigint | null;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n /** * The 24h exchange rate for the requested quote currency. */\n quote_rate_24h: number;\n /** * The current balance converted to fiat in `quote-currency`. */\n quote: number;\n /** * The 24h balance converted to fiat in `quote-currency`. */\n quote_24h: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_quote: string;\n /** * A prettier version of the 24h quote for rendering purposes. */\n pretty_quote_24h: string;\n /** * The protocol metadata. */\n protocol_metadata: ProtocolMetadata;\n /** * NFT-specific data. */\n nft_data: BalanceNftData[];\n\n constructor(data: BalanceItem) {\n this.contract_decimals = data.contract_decimals;\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.contract_display_name = data.contract_display_name;\n this.supports_erc = data.supports_erc;\n this.logo_url = data.logo_url;\n this.last_transferred_at = data.last_transferred_at && data.last_transferred_at !== null ? parseISO(data.last_transferred_at.toString()) : null;\n this.native_token = data.native_token;\n this.type = data.type;\n this.is_spam = data.is_spam;\n this.balance = data.balance && data.balance !== null ? BigInt(data.balance) : null;\n this.balance_24h = data.balance_24h && data.balance_24h !== null ? BigInt(data.balance_24h) : null;\n this.quote_rate = data.quote_rate;\n this.quote_rate_24h = data.quote_rate_24h;\n this.quote = data.quote;\n this.quote_24h = data.quote_24h;\n this.pretty_quote = data.pretty_quote;\n this.pretty_quote_24h = data.pretty_quote_24h;\n this.logo_urls = data.logo_urls && data.logo_urls !== null ? new LogoUrls(data.logo_urls) : null;\n this.protocol_metadata = data.protocol_metadata && data.protocol_metadata !== null ? new ProtocolMetadata(data.protocol_metadata) : null;\n this.nft_data = data.nft_data && data.nft_data !== null ? data.nft_data.map((itemData: BalanceNftData) => new BalanceNftData(itemData)) : null;\n }\n}\nclass LogoUrls {\n /** * The token logo URL. */\n token_logo_url: string;\n /** * The protocol logo URL. */\n protocol_logo_url: string;\n /** * The chain logo URL. */\n chain_logo_url: string;\n\n constructor(data: LogoUrls) {\n this.token_logo_url = data.token_logo_url;\n this.protocol_logo_url = data.protocol_logo_url;\n this.chain_logo_url = data.chain_logo_url;\n \n }\n}\nclass ProtocolMetadata {\n /** * The name of the protocol. */\n protocol_name: string;\n\n constructor(data: ProtocolMetadata) {\n this.protocol_name = data.protocol_name;\n \n }\n}\n\nclass BalanceNftData {\n /** * The token's id. */\n token_id: bigint | null;\n /** * The count of the number of NFTs with this ID. */\n token_balance: bigint | null;\n /** * External URL for additional metadata. */\n token_url: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The latest price value on chain of the token ID. */\n token_price_wei: bigint | null;\n /** * The latest quote_rate of the token ID denominated in unscaled ETH. */\n token_quote_rate_eth: string;\n /** * The address of the original owner of this NFT. */\n original_owner: string;\n external_data: NftExternalDataV1;\n /** * The current owner of this NFT. */\n owner: string;\n /** * The address of the current owner of this NFT. */\n owner_address: string;\n /** * When set to true, this NFT has been Burned. */\n burned: boolean;\n\n constructor(data: BalanceNftData) {\n this.token_id = data.token_id && data.token_id !== null ? BigInt(data.token_id) : null;\n this.token_balance = data.token_balance && data.token_balance !== null ? BigInt(data.token_balance) : null;\n this.token_url = data.token_url;\n this.supports_erc = data.supports_erc;\n this.token_price_wei = data.token_price_wei && data.token_price_wei !== null ? BigInt(data.token_price_wei) : null;\n this.token_quote_rate_eth = data.token_quote_rate_eth;\n this.original_owner = data.original_owner;\n this.owner = data.owner;\n this.owner_address = data.owner_address;\n this.burned = data.burned;\n this.external_data = data.external_data && data.external_data !== null ? new NftExternalDataV1(data.external_data) : null;\n }\n}\nclass NftExternalDataV1 {\n name: string;\n description: string;\n image: string;\n image_256: string;\n image_512: string;\n image_1024: string;\n animation_url: string;\n external_url: string;\n attributes: NftCollectionAttribute[];\n owner: string;\n\n constructor(data: NftExternalDataV1) {\n this.name = data.name;\n this.description = data.description;\n this.image = data.image;\n this.image_256 = data.image_256;\n this.image_512 = data.image_512;\n this.image_1024 = data.image_1024;\n this.animation_url = data.animation_url;\n this.external_url = data.external_url;\n this.owner = data.owner;\n this.attributes = data.attributes && data.attributes !== null ? data.attributes.map((itemData: NftCollectionAttribute) => new NftCollectionAttribute(itemData)) : null;\n }\n}\nclass NftCollectionAttribute {\n trait_type: string;\n value: string;\n\n constructor(data: NftCollectionAttribute) {\n this.trait_type = data.trait_type;\n this.value = data.value;\n \n }\n}\nclass PortfolioResponse {\n /** * The requested address. */\n address: string;\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: PortfolioItem[];\n\n constructor(data: PortfolioResponse) {\n this.address = data.address;\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.quote_currency = data.quote_currency;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: PortfolioItem) => new PortfolioItem(itemData)) : null;\n }\n}\nclass PortfolioItem {\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * The contract logo URL. */\n logo_url: string;\n holdings: HoldingItem[];\n\n constructor(data: PortfolioItem) {\n this.contract_address = data.contract_address;\n this.contract_decimals = data.contract_decimals;\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.logo_url = data.logo_url;\n this.holdings = data.holdings && data.holdings !== null ? data.holdings.map((itemData: HoldingItem) => new HoldingItem(itemData)) : null;\n }\n}\nclass HoldingItem {\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n timestamp: Date;\n close: OhlcItem;\n high: OhlcItem;\n low: OhlcItem;\n open: OhlcItem;\n\n constructor(data: HoldingItem) {\n this.quote_rate = data.quote_rate;\n this.timestamp = data.timestamp && data.timestamp !== null ? parseISO(data.timestamp.toString()) : null;\n this.close = data.close && data.close !== null ? new OhlcItem(data.close) : null;\n this.high = data.high && data.high !== null ? new OhlcItem(data.high) : null;\n this.low = data.low && data.low !== null ? new OhlcItem(data.low) : null;\n this.open = data.open && data.open !== null ? new OhlcItem(data.open) : null;\n }\n}\nclass OhlcItem {\n /** * The asset balance. Use `contract_decimals` to scale this balance for display purposes. */\n balance: bigint | null;\n /** * The current balance converted to fiat in `quote-currency`. */\n quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_quote: string;\n\n constructor(data: OhlcItem) {\n this.balance = data.balance && data.balance !== null ? BigInt(data.balance) : null;\n this.quote = data.quote;\n this.pretty_quote = data.pretty_quote;\n \n }\n}\nclass Erc20TransfersResponse {\n /** * The requested address. */\n address: string;\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: BlockTransactionWithContractTransfers[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: Erc20TransfersResponse) {\n this.address = data.address;\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.quote_currency = data.quote_currency;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: BlockTransactionWithContractTransfers) => new BlockTransactionWithContractTransfers(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass BlockTransactionWithContractTransfers {\n /** * The block signed timestamp in UTC. */\n block_signed_at: Date;\n /** * The height of the block. */\n block_height: number;\n /** * The hash of the block. Use it to remove transactions from re-org-ed blocks. */\n block_hash: string;\n /** * The requested transaction hash. */\n tx_hash: string;\n /** * The offset is the position of the tx in the block. */\n tx_offset: number;\n /** * Whether or not transaction is successful. */\n successful: boolean;\n /** * The address of the miner. */\n miner_address: string;\n /** * The sender's wallet address. */\n from_address: string;\n /** * The label of `from` address. */\n from_address_label: string;\n /** * The receiver's wallet address. */\n to_address: string;\n /** * The label of `to` address. */\n to_address_label: string;\n /** * The value attached to this tx. */\n value: bigint | null;\n /** * The value attached in `quote-currency` to this tx. */\n value_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_value_quote: string;\n /** * The requested chain native gas token metadata. */\n gas_metadata: ContractMetadata;\n gas_offered: number;\n /** * The gas spent for this tx. */\n gas_spent: number;\n /** * The gas price at the time of this tx. */\n gas_price: number;\n /** * The transaction's gas_price * gas_spent, denoted in wei. */\n fees_paid: bigint | null;\n /** * The gas spent in `quote-currency` denomination. */\n gas_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_gas_quote: string;\n /** * The native gas exchange rate for the requested `quote-currency`. */\n gas_quote_rate: number;\n transfers: TokenTransferItem[];\n\n constructor(data: BlockTransactionWithContractTransfers) {\n this.block_signed_at = data.block_signed_at && data.block_signed_at !== null ? parseISO(data.block_signed_at.toString()) : null;\n this.block_height = data.block_height;\n this.block_hash = data.block_hash;\n this.tx_hash = data.tx_hash;\n this.tx_offset = data.tx_offset;\n this.successful = data.successful;\n this.miner_address = data.miner_address;\n this.from_address = data.from_address;\n this.from_address_label = data.from_address_label;\n this.to_address = data.to_address;\n this.to_address_label = data.to_address_label;\n this.value = data.value && data.value !== null ? BigInt(data.value) : null;\n this.value_quote = data.value_quote;\n this.pretty_value_quote = data.pretty_value_quote;\n this.gas_offered = data.gas_offered;\n this.gas_spent = data.gas_spent;\n this.gas_price = data.gas_price;\n this.fees_paid = data.fees_paid && data.fees_paid !== null ? BigInt(data.fees_paid) : null;\n this.gas_quote = data.gas_quote;\n this.pretty_gas_quote = data.pretty_gas_quote;\n this.gas_quote_rate = data.gas_quote_rate;\n this.gas_metadata = data.gas_metadata && data.gas_metadata !== null ? new ContractMetadata(data.gas_metadata) : null;\n this.transfers = data.transfers && data.transfers !== null ? data.transfers.map((itemData: TokenTransferItem) => new TokenTransferItem(itemData)) : null;\n }\n}\nclass Pagination {\n /** * True is there is another page. */\n has_more: boolean;\n /** * The requested page number. */\n page_number: number;\n /** * The requested number of items on the current page. */\n page_size: number;\n /** * The total number of items across all pages for this request. */\n total_count: number;\n\n constructor(data: Pagination) {\n this.has_more = data.has_more;\n this.page_number = data.page_number;\n this.page_size = data.page_size;\n this.total_count = data.total_count;\n \n }\n}\nclass ContractMetadata {\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The contract logo URL. */\n logo_url: string;\n\n constructor(data: ContractMetadata) {\n this.contract_decimals = data.contract_decimals;\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.supports_erc = data.supports_erc;\n this.logo_url = data.logo_url;\n \n }\n}\nclass Explorer {\n /** * The name of the explorer. */\n label: string;\n /** * The URL of the explorer. */\n url: string;\n\n constructor(data: Explorer) {\n this.label = data.label;\n this.url = data.url;\n \n }\n}\nclass TokenTransferItem {\n /** * The block signed timestamp in UTC. */\n block_signed_at: Date;\n /** * The requested transaction hash. */\n tx_hash: string;\n /** * The sender's wallet address. */\n from_address: string;\n /** * The label of `from` address. */\n from_address_label: string;\n /** * The receiver's wallet address. */\n to_address: string;\n /** * The label of `to` address. */\n to_address_label: string;\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * The contract logo URL. */\n logo_url: string;\n /** * Categorizes token transactions as either `transfer-in` or `transfer-out`, indicating whether tokens are being received or sent from an account. */\n transfer_type: string;\n /** * The delta attached to this transfer. */\n delta: bigint | null;\n /** * The asset balance. Use `contract_decimals` to scale this balance for display purposes. */\n balance: bigint | null;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n /** * The current delta converted to fiat in `quote-currency`. */\n delta_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_delta_quote: string;\n /** * The current balance converted to fiat in `quote-currency`. */\n balance_quote: number;\n /** * Additional details on which transfer events were invoked. Defaults to `true`. */\n method_calls: MethodCallsForTransfers[];\n /** * The explorer links for this transaction. */\n explorers: Explorer[];\n\n constructor(data: TokenTransferItem) {\n this.block_signed_at = data.block_signed_at && data.block_signed_at !== null ? parseISO(data.block_signed_at.toString()) : null;\n this.tx_hash = data.tx_hash;\n this.from_address = data.from_address;\n this.from_address_label = data.from_address_label;\n this.to_address = data.to_address;\n this.to_address_label = data.to_address_label;\n this.contract_decimals = data.contract_decimals;\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.logo_url = data.logo_url;\n this.transfer_type = data.transfer_type;\n this.delta = data.delta && data.delta !== null ? BigInt(data.delta) : null;\n this.balance = data.balance && data.balance !== null ? BigInt(data.balance) : null;\n this.quote_rate = data.quote_rate;\n this.delta_quote = data.delta_quote;\n this.pretty_delta_quote = data.pretty_delta_quote;\n this.balance_quote = data.balance_quote;\n this.method_calls = data.method_calls && data.method_calls !== null ? data.method_calls.map((itemData: MethodCallsForTransfers) => new MethodCallsForTransfers(itemData)) : null;\n this.explorers = data.explorers && data.explorers !== null ? data.explorers.map((itemData: Explorer) => new Explorer(itemData)) : null;\n }\n}\nclass MethodCallsForTransfers {\n /** * The address of the sender. */\n sender_address: string;\n method: string;\n\n constructor(data: MethodCallsForTransfers) {\n this.sender_address = data.sender_address;\n this.method = data.method;\n \n }\n}\nclass TokenHoldersResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: TokenHolder[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: TokenHoldersResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: TokenHolder) => new TokenHolder(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass TokenHolder {\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The contract logo URL. */\n logo_url: string;\n /** * The requested address. */\n address: string;\n /** * The asset balance. Use `contract_decimals` to scale this balance for display purposes. */\n balance: bigint | null;\n /** * Total supply of this token. */\n total_supply: bigint | null;\n /** * The height of the block. */\n block_height: number;\n\n constructor(data: TokenHolder) {\n this.contract_decimals = data.contract_decimals;\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.supports_erc = data.supports_erc;\n this.logo_url = data.logo_url;\n this.address = data.address;\n this.balance = data.balance && data.balance !== null ? BigInt(data.balance) : null;\n this.total_supply = data.total_supply && data.total_supply !== null ? BigInt(data.total_supply) : null;\n this.block_height = data.block_height;\n \n }\n}\nclass HistoricalBalancesResponse {\n /** * The requested address. */\n address: string;\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: HistoricalBalanceItem[];\n\n constructor(data: HistoricalBalancesResponse) {\n this.address = data.address;\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.quote_currency = data.quote_currency;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: HistoricalBalanceItem) => new HistoricalBalanceItem(itemData)) : null;\n }\n}\nclass HistoricalBalanceItem {\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The contract logo URL. */\n logo_url: string;\n /** * The height of the block. */\n block_height: number;\n /** * The block height when the token was last transferred. */\n last_transferred_block_height: number;\n contract_display_name: string;\n /** * The timestamp when the token was transferred. */\n last_transferred_at: Date;\n /** * Indicates if a token is the chain's native gas token, eg: ETH on Ethereum. */\n native_token: boolean;\n /** * One of `cryptocurrency`, `stablecoin`, `nft` or `dust`. */\n type: string;\n /** * Denotes whether the token is suspected spam. */\n is_spam: boolean;\n /** * The asset balance. Use `contract_decimals` to scale this balance for display purposes. */\n balance: bigint | null;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n /** * The current balance converted to fiat in `quote-currency`. */\n quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_quote: string;\n /** * The protocol metadata. */\n protocol_metadata: ProtocolMetadata;\n /** * NFT-specific data. */\n nft_data: BalanceNftData[];\n\n constructor(data: HistoricalBalanceItem) {\n this.contract_decimals = data.contract_decimals;\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.supports_erc = data.supports_erc;\n this.logo_url = data.logo_url;\n this.block_height = data.block_height;\n this.last_transferred_block_height = data.last_transferred_block_height;\n this.contract_display_name = data.contract_display_name;\n this.last_transferred_at = data.last_transferred_at && data.last_transferred_at !== null ? parseISO(data.last_transferred_at.toString()) : null;\n this.native_token = data.native_token;\n this.type = data.type;\n this.is_spam = data.is_spam;\n this.balance = data.balance && data.balance !== null ? BigInt(data.balance) : null;\n this.quote_rate = data.quote_rate;\n this.quote = data.quote;\n this.pretty_quote = data.pretty_quote;\n this.protocol_metadata = data.protocol_metadata && data.protocol_metadata !== null ? new ProtocolMetadata(data.protocol_metadata) : null;\n this.nft_data = data.nft_data && data.nft_data !== null ? data.nft_data.map((itemData: BalanceNftData) => new BalanceNftData(itemData)) : null;\n }\n}\n\nclass TokenBalanceNativeResponse {\n /** * The requested address. */\n address: string;\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: NativeBalanceItem[];\n\n constructor(data: TokenBalanceNativeResponse) {\n this.address = data.address;\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.quote_currency = data.quote_currency;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: NativeBalanceItem) => new NativeBalanceItem(itemData)) : null;\n }\n}\nclass NativeBalanceItem {\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The contract logo URL. */\n logo_url: string;\n /** * The height of the block. */\n block_height: number;\n /** * The asset balance. Use `contract_decimals` to scale this balance for display purposes. */\n balance: bigint | null;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n /** * The current balance converted to fiat in `quote-currency`. */\n quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_quote: string;\n\n constructor(data: NativeBalanceItem) {\n this.contract_decimals = data.contract_decimals;\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.supports_erc = data.supports_erc;\n this.logo_url = data.logo_url;\n this.block_height = data.block_height;\n this.balance = data.balance && data.balance !== null ? BigInt(data.balance) : null;\n this.quote_rate = data.quote_rate;\n this.quote = data.quote;\n this.pretty_quote = data.pretty_quote;\n \n }\n}\n\nexport interface GetTokenBalancesForWalletAddressQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * If `true`, NFTs will be included in the response. */\n nft?: boolean;\n /** * If `true`, only NFTs that have been cached will be included in the response. Helpful for faster response times. */\n noNftFetch?: boolean;\n /** * If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`. */\n noSpam?: boolean;\n /** * If `true`, the response shape is limited to a list of collections and token ids, omitting metadata and asset information. Helpful for faster response times and wallets holding a large number of NFTs. */\n noNftAssetMetadata?: boolean;\n}\nexport interface GetHistoricalPortfolioForWalletAddressQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * The number of days to return data for. Defaults to 30 days. */\n days?: number;\n}\nexport interface GetErc20TransfersForWalletAddressQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * The requested contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically. */\n contractAddress?: string;\n /** * The block height to start from, defaults to `0`. */\n startingBlock?: number;\n /** * The block height to end at, defaults to current block height. */\n endingBlock?: number;\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n /** * 0-indexed page number to begin pagination. */\n pageNumber?: number;\n}\nexport interface GetTokenHoldersV2ForTokenAddressQueryParamOpts {\n /** * Ending block to define a block range. Omitting this parameter defaults to the latest block height. */\n blockHeight?: number | string;\n /** * Ending date to define a block range (YYYY-MM-DD). Omitting this parameter defaults to the current date. */\n date?: string;\n /** * Number of items per page. Note: Currently, only values of `100` and `1000` are supported. Omitting this parameter defaults to 100. */\n pageSize?: number;\n /** * 0-indexed page number to begin pagination. */\n pageNumber?: number;\n}\nexport interface GetHistoricalTokenBalancesForWalletAddressQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * If `true`, NFTs will be included in the response. */\n nft?: boolean;\n /** * If `true`, only NFTs that have been cached will be included in the response. Helpful for faster response times. */\n noNftFetch?: boolean;\n /** * If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`. */\n noSpam?: boolean;\n /** * If `true`, the response shape is limited to a list of collections and token ids, omitting metadata and asset information. Helpful for faster response times and wallets holding a large number of NFTs. */\n noNftAssetMetadata?: boolean;\n /** * Ending block to define a block range. Omitting this parameter defaults to the latest block height. */\n blockHeight?: number | string;\n /** * Ending date to define a block range (YYYY-MM-DD). Omitting this parameter defaults to the current date. */\n date?: string;\n}\nexport interface GetNativeTokenBalanceQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * Ending block to define a block range. Omitting this parameter defaults to the latest block height. */\n blockHeight?: number | string;\n}\n/**\n * Balances APIs\n * \n */\nexport class BalanceService {\n private LIMIT;\n constructor(private apiKey: string, private debug: boolean = false, private threadCount: number = 3, private is_key_valid: boolean, private enableRetry: boolean = true, private source: Source) {\n this.LIMIT = pLimit(this.threadCount);\n }\n\n\n /**\n *\n * Commonly used to fetch the native, fungible (ERC20), and non-fungible (ERC721 & ERC1155) tokens held by an address. Response includes spot prices and other metadata.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetTokenBalancesForWalletAddressQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `nft`: If `true`, NFTs will be included in the response.\n * - `noNftFetch`: If `true`, only NFTs that have been cached will be included in the response. Helpful for faster response times.\n * - `noSpam`: If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`.\n * - `noNftAssetMetadata`: If `true`, the response shape is limited to a list of collections and token ids, omitting metadata and asset information. Helpful for faster response times and wallets holding a large number of NFTs.\n *\n */\n public async getTokenBalancesForWalletAddress(chainName: Chain | Chains | ChainID, walletAddress: string, queryParamOpts?: GetTokenBalancesForWalletAddressQueryParamOpts): Promise<Response<BalancesResponse>> {\n let success = false;\n let data: Response<BalancesResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<BalancesResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.nft !== undefined) {\n urlParams.append(\"nft\", queryParamOpts?.nft.toString());\n }\n \n if (queryParamOpts?.noNftFetch !== undefined) {\n urlParams.append(\"no-nft-fetch\", queryParamOpts?.noNftFetch.toString());\n }\n \n if (queryParamOpts?.noSpam !== undefined) {\n urlParams.append(\"no-spam\", queryParamOpts?.noSpam.toString());\n }\n \n if (queryParamOpts?.noNftAssetMetadata !== undefined) {\n urlParams.append(\"no-nft-asset-metadata\", queryParamOpts?.noNftAssetMetadata.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/balances_v2/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/balances_v2/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n \n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new BalancesResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to render a daily portfolio balance for an address broken down by the token. The timeframe is user-configurable, defaults to 30 days.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetHistoricalPortfolioForWalletAddressQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `days`: The number of days to return data for. Defaults to 30 days.\n *\n */\n public async getHistoricalPortfolioForWalletAddress(chainName: Chain | Chains | ChainID, walletAddress: string, queryParamOpts?: GetHistoricalPortfolioForWalletAddressQueryParamOpts): Promise<Response<PortfolioResponse>> {\n let success = false;\n let data: Response<PortfolioResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<PortfolioResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.days !== undefined) {\n urlParams.append(\"days\", queryParamOpts?.days.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/portfolio_v2/?${urlParams}`;\n \n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/portfolio_v2/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new PortfolioResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to render the transfer-in and transfer-out of a token along with historical prices from an address.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetErc20TransfersForWalletAddressQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `contractAddress`: The requested contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * - `startingBlock`: The block height to start from, defaults to `0`.\n * - `endingBlock`: The block height to end at, defaults to current block height.\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async* getErc20TransfersForWalletAddress(chainName: Chain | Chains | ChainID, walletAddress: string, queryParamOpts?: GetErc20TransfersForWalletAddressQueryParamOpts): AsyncIterable<BlockTransactionWithContractTransfers> {\n let success = false;\n let res: BlockTransactionWithContractTransfers;\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n throw new Error(`An error occurred 401: ${ApiKeyValidator.INVALID_API_KEY_MESSAGE}`);\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.contractAddress !== undefined) {\n urlParams.append(\"contract-address\", queryParamOpts?.contractAddress.toString());\n }\n \n if (queryParamOpts?.startingBlock !== undefined) {\n urlParams.append(\"starting-block\", queryParamOpts?.startingBlock.toString());\n }\n \n if (queryParamOpts?.endingBlock !== undefined) {\n urlParams.append(\"ending-block\", queryParamOpts?.endingBlock.toString());\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n\n for await (res of paginateEndpoint<BlockTransactionWithContractTransfers, Erc20TransfersResponse>(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transfers_v2/`, this.apiKey, urlParams, BlockTransactionWithContractTransfers, this.debug, this.threadCount, this.enableRetry, this.source)) {\n yield res;\n }\n\n success = true;\n } catch (error) {\n success = true;\n throw new Error(error.message);\n }\n }\n }\n\n /**\n *\n * Commonly used to render the transfer-in and transfer-out of a token along with historical prices from an address.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetErc20TransfersForWalletAddressQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `contractAddress`: The requested contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * - `startingBlock`: The block height to start from, defaults to `0`.\n * - `endingBlock`: The block height to end at, defaults to current block height.\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async getErc20TransfersForWalletAddressByPage(chainName: Chain | Chains | ChainID, walletAddress: string, queryParamOpts?: GetErc20TransfersForWalletAddressQueryParamOpts): Promise<Response<Erc20TransfersResponse>> {\n let success = false;\n let data: Response<Erc20TransfersResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<Erc20TransfersResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.contractAddress !== undefined) {\n urlParams.append(\"contract-address\", queryParamOpts?.contractAddress.toString());\n }\n \n if (queryParamOpts?.startingBlock !== undefined) {\n urlParams.append(\"starting-block\", queryParamOpts?.startingBlock.toString());\n }\n \n if (queryParamOpts?.endingBlock !== undefined) {\n urlParams.append(\"ending-block\", queryParamOpts?.endingBlock.toString());\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transfers_v2/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transfers_v2/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new Erc20TransfersResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get a list of all the token holders for a specified ERC20 or ERC721 token. Returns historic token holders when block-height is set (defaults to `latest`). Useful for building pie charts of token holders.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} tokenAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetTokenHoldersV2ForTokenAddressQueryParamOpts} queryParamOpts\n * - `blockHeight`: Ending block to define a block range. Omitting this parameter defaults to the latest block height.\n * - `pageSize`: Number of items per page. Note: Currently, only values of `100` and `1000` are supported. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n * - `date`: Ending date to define a block range (YYYY-MM-DD). Omitting this parameter defaults to the current date.\n * \n */\n public async* getTokenHoldersV2ForTokenAddress(chainName: Chain | Chains | ChainID, tokenAddress: string, queryParamOpts?: GetTokenHoldersV2ForTokenAddressQueryParamOpts): AsyncIterable<TokenHolder> {\n let success = false;\n let res: TokenHolder;\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n throw new Error(`An error occurred 401: ${ApiKeyValidator.INVALID_API_KEY_MESSAGE}`);\n }\n \n if (queryParamOpts?.blockHeight !== undefined) {\n urlParams.append(\"block-height\", queryParamOpts?.blockHeight.toString());\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n\n if (queryParamOpts?.date !== undefined) {\n urlParams.append(\"date\", queryParamOpts?.date.toString());\n }\n\n for await (res of paginateEndpoint<TokenHolder, TokenHoldersResponse>(`https://api.covalenthq.com/v1/${chainName}/tokens/${tokenAddress}/token_holders_v2/`, this.apiKey, urlParams, TokenHolder, this.debug, this.threadCount, this.enableRetry, this.source)) {\n yield res;\n }\n\n success = true;\n } catch (error) {\n success = true;\n throw new Error(error.message);\n }\n }\n }\n\n /**\n *\n * Commonly used to get a list of all the token holders for a specified ERC20 or ERC721 token. Returns historic token holders when block-height is set (defaults to `latest`). Useful for building pie charts of token holders.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} tokenAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetTokenHoldersV2ForTokenAddressQueryParamOpts} queryParamOpts\n * - `blockHeight`: Ending block to define a block range. Omitting this parameter defaults to the latest block height.\n * - `pageSize`: Number of items per page. Note: Currently, only values of `100` and `1000` are supported. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n * - `date`: Ending date to define a block range (YYYY-MM-DD). Omitting this parameter defaults to the current date.\n *\n */\n public async getTokenHoldersV2ForTokenAddressByPage(chainName: Chain | Chains | ChainID, tokenAddress: string, queryParamOpts?: GetTokenHoldersV2ForTokenAddressQueryParamOpts): Promise<Response<TokenHoldersResponse>> {\n let success = false;\n let data: Response<TokenHoldersResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TokenHoldersResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.blockHeight !== undefined) {\n urlParams.append(\"block-height\", queryParamOpts?.blockHeight.toString());\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n\n if (queryParamOpts?.date !== undefined) {\n urlParams.append(\"date\", queryParamOpts?.date.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/tokens/${tokenAddress}/token_holders_v2/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/tokens/${tokenAddress}/token_holders_v2/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TokenHoldersResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n /**\n *\n * Commonly used to fetch the historical native, fungible (ERC20), and non-fungible (ERC721 & ERC1155) tokens held by an address at a given block height or date. Response includes daily prices and other metadata.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetHistoricalTokenBalancesForWalletAddressQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `nft`: If `true`, NFTs will be included in the response.\n * - `noNftFetch`: If `true`, only NFTs that have been cached will be included in the response. Helpful for faster response times.\n * - `noSpam`: If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`.\n * - `noNftAssetMetadata`: If `true`, the response shape is limited to a list of collections and token ids, omitting metadata and asset information. Helpful for faster response times and wallets holding a large number of NFTs.\n * - `blockHeight`: Ending block to define a block range. Omitting this parameter defaults to the latest block height.\n * - `date`: Ending date to define a block range (YYYY-MM-DD). Omitting this parameter defaults to the current date.\n *\n */\n public async getHistoricalTokenBalancesForWalletAddress(chainName: Chain | Chains | ChainID, walletAddress: string, queryParamOpts?: GetHistoricalTokenBalancesForWalletAddressQueryParamOpts): Promise<Response<HistoricalBalancesResponse>> {\n let success = false;\n let data: Response<HistoricalBalancesResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<HistoricalBalancesResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.nft !== undefined) {\n urlParams.append(\"nft\", queryParamOpts?.nft.toString());\n }\n \n if (queryParamOpts?.noNftFetch !== undefined) {\n urlParams.append(\"no-nft-fetch\", queryParamOpts?.noNftFetch.toString());\n }\n \n if (queryParamOpts?.noSpam !== undefined) {\n urlParams.append(\"no-spam\", queryParamOpts?.noSpam.toString());\n }\n \n if (queryParamOpts?.noNftAssetMetadata !== undefined) {\n urlParams.append(\"no-nft-asset-metadata\", queryParamOpts?.noNftAssetMetadata.toString());\n }\n \n if (queryParamOpts?.blockHeight !== undefined) {\n urlParams.append(\"block-height\", queryParamOpts?.blockHeight.toString());\n }\n \n if (queryParamOpts?.date !== undefined) {\n urlParams.append(\"date\", queryParamOpts?.date.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/historical_balances/?${urlParams}`;\n \n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/historical_balances/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new HistoricalBalancesResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n \n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n /**\n *\n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetNativeTokenBalanceQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `blockHeight`: Ending block to define a block range. Omitting this parameter defaults to the latest block height.\n *\n */\n public async getNativeTokenBalance(chainName: Chain | Chains | ChainID, walletAddress: string, queryParamOpts?: GetNativeTokenBalanceQueryParamOpts): Promise<Response<TokenBalanceNativeResponse>> {\n let success = false;\n let data: Response<TokenBalanceNativeResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TokenBalanceNativeResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.blockHeight !== undefined) {\n urlParams.append(\"block-height\", queryParamOpts?.blockHeight.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/balances_native/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n \n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/balances_native/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n \n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n \n const dataClass = new TokenBalanceNativeResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n}","import { Chain, Quote, userAgent, Response, ChainID, Source } from \"./CovalentClient\";\nimport { debugOutput, paginateEndpoint } from \"../util/ApiHelpers\";\nimport { parseISO } from \"date-fns\";\nimport { ExponentialBackoff } from \"../util/backoff\";\nimport pLimit from \"p-limit\";\nimport { Chains } from \"../util/Chains\";\nimport { ApiKeyValidator } from \"../util/ApiKeyValidator\";\n\nclass BlockResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: Block[];\n\n constructor(data: BlockResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: Block) => new Block(itemData)) : null;\n }\n}\nclass Block {\n /** * The hash of the block. */\n block_hash: string;\n /** * The block signed timestamp in UTC. */\n signed_at: Date;\n /** * The block height. */\n height: number;\n /** * The parent block hash. */\n block_parent_hash: string;\n /** * Extra data written to the block. */\n extra_data: string;\n /** * The address of the miner. */\n miner_address: string;\n /** * The associated mining cost. */\n mining_cost: number;\n /** * The associated gas used. */\n gas_used: number;\n /** * The associated gas limit. */\n gas_limit: number;\n /** * The link to the related tx by block endpoint. */\n transactions_link: string;\n\n constructor(data: Block) {\n this.block_hash = data.block_hash;\n this.signed_at = data.signed_at && data.signed_at !== null ? parseISO(data.signed_at.toString()) : null;\n this.height = data.height;\n this.block_parent_hash = data.block_parent_hash;\n this.extra_data = data.extra_data;\n this.miner_address = data.miner_address;\n this.mining_cost = data.mining_cost;\n this.gas_used = data.gas_used;\n this.gas_limit = data.gas_limit;\n this.transactions_link = data.transactions_link;\n }\n}\nclass ResolvedAddress {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: ResolvedAddressItem[];\n\n constructor(data: ResolvedAddress) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: ResolvedAddressItem) => new ResolvedAddressItem(itemData)) : null;\n }\n}\nclass ResolvedAddressItem {\n /** * The requested address. */\n address: string;\n name: string;\n\n constructor(data: ResolvedAddressItem) {\n this.address = data.address;\n this.name = data.name;\n \n }\n}\nclass BlockHeightsResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: BlockHeights[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: BlockHeightsResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: BlockHeights) => new BlockHeights(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass BlockHeights {\n /** * The hash of the block. */\n block_hash: string;\n /** * The block signed timestamp in UTC. */\n signed_at: Date;\n /** * The block height. */\n height: number;\n /** * The parent block hash. */\n block_parent_hash: string;\n /** * Extra data written to the block. */\n extra_data: string;\n /** * The address of the miner. */\n miner_address: string;\n /** * The associated mining cost. */\n mining_cost: number;\n /** * The associated gas used. */\n gas_used: number;\n /** * The associated gas limit. */\n gas_limit: number;\n /** * The link to the related tx by block endpoint. */\n transactions_link: string;\n\n constructor(data: BlockHeights) {\n this.block_hash = data.block_hash;\n this.signed_at = data.signed_at && data.signed_at !== null ? parseISO(data.signed_at.toString()) : null;\n this.height = data.height;\n this.block_parent_hash = data.block_parent_hash;\n this.extra_data = data.extra_data;\n this.miner_address = data.miner_address;\n this.mining_cost = data.mining_cost;\n this.gas_used = data.gas_used;\n this.gas_limit = data.gas_limit;\n this.transactions_link = data.transactions_link;\n \n }\n}\nclass Pagination {\n /** * True is there is another page. */\n has_more: boolean;\n /** * The requested page number. */\n page_number: number;\n /** * The requested number of items on the current page. */\n page_size: number;\n /** * The total number of items across all pages for this request. */\n total_count: number;\n\n constructor(data: Pagination) {\n this.has_more = data.has_more;\n this.page_number = data.page_number;\n this.page_size = data.page_size;\n this.total_count = data.total_count;\n \n }\n}\nclass GetLogsResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: GetLogsEvent[];\n\n constructor(data: GetLogsResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: GetLogsEvent) => new GetLogsEvent(itemData)) : null;\n }\n}\nclass GetLogsEvent {\n /** * The block signed timestamp in UTC. */\n block_signed_at: Date;\n /** * The height of the block. */\n block_height: number;\n /** * The hash of the block. */\n block_hash: string;\n /** * The offset is the position of the tx in the block. */\n tx_offset: number;\n /** * The offset is the position of the log entry within an event log. */\n log_offset: number;\n /** * The requested transaction hash. */\n tx_hash: string;\n /** * The log topics in raw data. */\n raw_log_topics: string[];\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n sender_contract_decimals: number;\n /** * The name of the sender. */\n sender_name: string;\n /** * The ticker symbol for the sender. This field is set by a developer and non-unique across a network. */\n sender_contract_ticker_symbol: string;\n /** * The address of the sender. */\n sender_address: string;\n /** * The label of the sender address. */\n sender_address_label: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The contract logo URL. */\n sender_logo_url: string;\n /** * The address of the deployed UniswapV2 like factory contract for this DEX. */\n sender_factory_address: string;\n /** * The log events in raw. */\n raw_log_data: string;\n /** * The decoded item. */\n decoded: DecodedItem;\n\n constructor(data: GetLogsEvent) {\n this.block_signed_at = data.block_signed_at && data.block_signed_at !== null ? parseISO(data.block_signed_at.toString()) : null;\n this.block_height = data.block_height;\n this.block_hash = data.block_hash;\n this.tx_offset = data.tx_offset;\n this.log_offset = data.log_offset;\n this.tx_hash = data.tx_hash;\n this.raw_log_topics = data.raw_log_topics;\n this.sender_contract_decimals = data.sender_contract_decimals;\n this.sender_name = data.sender_name;\n this.sender_contract_ticker_symbol = data.sender_contract_ticker_symbol;\n this.sender_address = data.sender_address;\n this.sender_address_label = data.sender_address_label;\n this.supports_erc = data.supports_erc;\n this.sender_logo_url = data.sender_logo_url;\n this.sender_factory_address = data.sender_factory_address;\n this.raw_log_data = data.raw_log_data;\n this.decoded = data.decoded && data.decoded !== null ? new DecodedItem(data.decoded) : null;\n }\n}\nclass DecodedItem {\n name: string;\n signature: string;\n params: Param[];\n\n constructor(data: DecodedItem) {\n this.name = data.name;\n this.signature = data.signature;\n this.params = data.params && data.params !== null ? data.params.map((itemData: Param) => new Param(itemData)) : null;\n }\n}\nclass Param {\n name: string;\n type: string;\n indexed: boolean;\n decoded: boolean;\n value: string;\n\n constructor(data: Param) {\n this.name = data.name;\n this.type = data.type;\n this.indexed = data.indexed;\n this.decoded = data.decoded;\n this.value = data.value;\n \n }\n}\nclass LogEventsByAddressResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: LogEvent[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: LogEventsByAddressResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: LogEvent) => new LogEvent(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass LogEvent {\n /** * The block signed timestamp in UTC. */\n block_signed_at: Date;\n /** * The height of the block. */\n block_height: number;\n /** * The offset is the position of the tx in the block. */\n tx_offset: number;\n /** * The offset is the position of the log entry within an event log. */\n log_offset: number;\n /** * The requested transaction hash. */\n tx_hash: string;\n /** * The log topics in raw data. */\n raw_log_topics: string[];\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n sender_contract_decimals: number;\n /** * The name of the sender. */\n sender_name: string;\n sender_contract_ticker_symbol: string;\n /** * The address of the sender. */\n sender_address: string;\n /** * The label of the sender address. */\n sender_address_label: string;\n /** * The contract logo URL. */\n sender_logo_url: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The address of the deployed UniswapV2 like factory contract for this DEX. */\n sender_factory_address: string;\n /** * The log events in raw. */\n raw_log_data: string;\n /** * The decoded item. */\n decoded: DecodedItem;\n\n constructor(data: LogEvent) {\n this.block_signed_at = data.block_signed_at && data.block_signed_at !== null ? parseISO(data.block_signed_at.toString()) : null;\n this.block_height = data.block_height;\n this.tx_offset = data.tx_offset;\n this.log_offset = data.log_offset;\n this.tx_hash = data.tx_hash;\n this.raw_log_topics = data.raw_log_topics;\n this.sender_contract_decimals = data.sender_contract_decimals;\n this.sender_name = data.sender_name;\n this.sender_contract_ticker_symbol = data.sender_contract_ticker_symbol;\n this.sender_address = data.sender_address;\n this.sender_address_label = data.sender_address_label;\n this.sender_logo_url = data.sender_logo_url;\n this.supports_erc = data.supports_erc;\n this.sender_factory_address = data.sender_factory_address;\n this.raw_log_data = data.raw_log_data;\n this.decoded = data.decoded && data.decoded !== null ? new DecodedItem(data.decoded) : null;\n }\n}\nclass LogEventsByTopicHashResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: LogEvent[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: LogEventsByTopicHashResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: LogEvent) => new LogEvent(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass AllChainsResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * List of response items. */\n items: ChainItem[];\n\n constructor(data: AllChainsResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: ChainItem) => new ChainItem(itemData)) : null;\n }\n}\nclass ChainItem {\n /** * The chain name eg: `eth-mainnet`. */\n name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n /** * True if the chain is a testnet. */\n is_testnet: boolean;\n /** * Schema name to use for direct SQL. */\n db_schema_name: string;\n /** * The chains label eg: `Ethereum Mainnet`. */\n label: string;\n /** * The category label eg: `Ethereum`. */\n category_label: string;\n /** * A svg logo url for the chain. */\n logo_url: string;\n /** * A black png logo url for the chain. */\n black_logo_url: string;\n /** * A white png logo url for the chain. */\n white_logo_url: string;\n /** * The color theme for the chain. */\n color_theme: ColorTheme;\n /** * True if the chain is an AppChain. */\n is_appchain: boolean;\n /** * The ChainItem the appchain is a part of. */\n appchain_of: ChainItem;\n\n constructor(data: ChainItem) {\n this.name = data.name;\n this.chain_id = data.chain_id;\n this.is_testnet = data.is_testnet;\n this.db_schema_name = data.db_schema_name;\n this.label = data.label;\n this.category_label = data.category_label;\n this.logo_url = data.logo_url;\n this.black_logo_url = data.black_logo_url;\n this.white_logo_url = data.white_logo_url;\n this.is_appchain = data.is_appchain;\n this.color_theme = data.color_theme && data.color_theme !== null ? new ColorTheme(data.color_theme) : null;\n this.appchain_of = data.appchain_of && data.appchain_of !== null ? new ChainItem(data.appchain_of) : null;\n }\n}\nclass ColorTheme {\n /** * The red color code. */\n red: number;\n /** * The green color code. */\n green: number;\n /** * The blue color code. */\n blue: number;\n /** * The alpha color code. */\n alpha: number;\n /** * The hexadecimal color code. */\n hex: string;\n /** * The color represented in css rgb() functional notation. */\n css_rgb: string;\n\n constructor(data: ColorTheme) {\n this.red = data.red;\n this.green = data.green;\n this.blue = data.blue;\n this.alpha = data.alpha;\n this.hex = data.hex;\n this.css_rgb = data.css_rgb;\n \n }\n}\nclass AllChainsStatusResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * List of response items. */\n items: ChainStatusItem[];\n\n constructor(data: AllChainsStatusResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: ChainStatusItem) => new ChainStatusItem(itemData)) : null;\n }\n}\nclass ChainStatusItem {\n /** * The chain name eg: `eth-mainnet`. */\n name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n /** * True if the chain is a testnet. */\n is_testnet: boolean;\n /** * A svg logo url for the chain. */\n logo_url: string;\n /** * A black png logo url for the chain. */\n black_logo_url: string;\n /** * A white png logo url for the chain. */\n white_logo_url: string;\n /** * True if the chain is an AppChain. */\n is_appchain: boolean;\n /** * The height of the lastest block available. */\n synced_block_height: number;\n /** * The signed timestamp of lastest block available. */\n synced_blocked_signed_at: Date;\n /** * True if the chain has data and ready for querying. */\n has_data: boolean;\n\n constructor(data: ChainStatusItem) {\n this.name = data.name;\n this.chain_id = data.chain_id;\n this.is_testnet = data.is_testnet;\n this.logo_url = data.logo_url;\n this.black_logo_url = data.black_logo_url;\n this.white_logo_url = data.white_logo_url;\n this.is_appchain = data.is_appchain;\n this.synced_block_height = data.synced_block_height;\n this.synced_blocked_signed_at = data.synced_blocked_signed_at && data.synced_blocked_signed_at !== null ? parseISO(data.synced_blocked_signed_at.toString()) : null;\n this.has_data = data.has_data;\n \n }\n}\nclass ChainActivityResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested address. */\n address: string;\n /** * List of response items. */\n items: ChainActivityEvent[];\n\n constructor(data: ChainActivityResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.address = data.address;\n this.items = data.items && data.items !== null ? data.items.map((itemData: ChainActivityEvent) => new ChainActivityEvent(itemData)) : null;\n }\n}\nclass ChainActivityEvent extends ChainItem {\n /** * The timestamp when the address was last seen on the chain. */\n last_seen_at: Date;\n\n constructor(data: ChainActivityEvent) {\n super(data);\n this.last_seen_at = data.last_seen_at && data.last_seen_at !== null ? parseISO(data.last_seen_at.toString()) : null;\n }\n}\n\nclass GasPricesResponse {\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested event type. */\n event_type: string;\n /** * The exchange rate for the requested quote currency. */\n gas_quote_rate: number;\n /** * The lowest gas fee for the latest block height. */\n base_fee: bigint | null;\n /** * List of response items. */\n items: PriceItem[];\n\n constructor(data: GasPricesResponse) {\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.quote_currency = data.quote_currency;\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.event_type = data.event_type;\n this.gas_quote_rate = data.gas_quote_rate;\n this.base_fee = data.base_fee && data.base_fee !== null ? BigInt(data.base_fee) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: PriceItem) => new PriceItem(itemData)) : null;\n }\n}\nclass PriceItem {\n /** * The average gas price, in WEI, for the time interval. */\n gas_price: string;\n /** * The average gas spent for the time interval. */\n gas_spent: string;\n /** * The average gas spent in `quote-currency` denomination for the time interval. */\n gas_quote: number;\n /** * Other fees, when applicable. For example: OP chain L1 fees. */\n other_fees: OtherFees;\n /** * The sum of the L1 and L2 gas spent, in quote-currency, for the specified time interval. */\n total_gas_quote: number;\n /** * A prettier version of the total average gas spent, in quote-currency, for the specified time interval, for rendering purposes. */\n pretty_total_gas_quote: string;\n /** * The specified time interval. */\n interval: string;\n\n constructor(data: PriceItem) {\n this.gas_price = data.gas_price;\n this.gas_spent = data.gas_spent;\n this.gas_quote = data.gas_quote;\n this.total_gas_quote = data.total_gas_quote;\n this.pretty_total_gas_quote = data.pretty_total_gas_quote;\n this.interval = data.interval;\n this.other_fees = data.other_fees && data.other_fees !== null ? new OtherFees(data.other_fees) : null;\n }\n}\nclass OtherFees {\n /** * The calculated L1 gas spent, when applicable, in quote-currency, for the specified time interval. */\n l1_gas_quote: number;\n\n constructor(data: OtherFees) {\n this.l1_gas_quote = data.l1_gas_quote;\n \n }\n}\n\nexport interface GetBlockHeightsQueryParamOpts {\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n /** * 0-indexed page number to begin pagination. */\n pageNumber?: number;\n}\nexport interface GetLogsQueryParamOpts {\n /** * The first block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`. */\n startingBlock?: number;\n /** * The last block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`. */\n endingBlock?: string;\n /** * The address of the log events sender contract. */\n address?: string;\n /** * The topic hash(es) to retrieve logs with. */\n topics?: string;\n /** * The block hash to retrieve logs for. */\n blockHash?: string;\n /** * Omit decoded log events. */\n skipDecode?: boolean;\n}\nexport interface GetLogEventsByAddressQueryParamOpts {\n /** * The first block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`. */\n startingBlock?: number;\n /** * The last block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`. */\n endingBlock?: string;\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n /** * 0-indexed page number to begin pagination. */\n pageNumber?: number;\n}\nexport interface GetLogEventsByTopicHashQueryParamOpts {\n /** * The first block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`. */\n startingBlock?: number;\n /** * The last block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`. */\n endingBlock?: string;\n /** * Additional topic hash(es) to filter on - padded & unpadded address fields are supported. Separate multiple topics with a comma. */\n secondaryTopics?: string;\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n /** * 0-indexed page number to begin pagination. */\n pageNumber?: number;\n}\nexport interface GetAddressActivityQueryParamOpts {\n /** * Set to true to include testnets with activity in the response. By default, it's set to `false` and only returns mainnet activity. */\n testnets?: boolean;\n}\nexport interface GetGasPricesQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n}\n/**\n * Class A - Base\n * \n */\nexport class BaseService {\n private LIMIT;\n constructor(private apiKey: string, private debug: boolean = false, private threadCount: number = 3, private is_key_valid: boolean, private enableRetry: boolean = true, private source: Source) {\n this.LIMIT = pLimit(this.threadCount);\n }\n \n /**\n *\n * Commonly used to fetch and render a single block for a block explorer.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} blockHeight - The block height or `latest` for the latest block available.\n *\n */\n public async getBlock(chainName: Chain | Chains | ChainID, blockHeight: string): Promise<Response<BlockResponse>> {\n let success = false;\n let data: Response<BlockResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<BlockResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/block_v2/${blockHeight}/?${urlParams}`;\n \n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/block_v2/${blockHeight}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new BlockResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n \n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to resolve ENS, RNS and Unstoppable Domains addresses.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n *\n */\n public async getResolvedAddress(chainName: Chain | Chains | ChainID, walletAddress: string): Promise<Response<ResolvedAddress>> {\n let success = false;\n let data: Response<ResolvedAddress>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<ResolvedAddress>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/resolve_address/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/resolve_address/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new ResolvedAddress(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n \n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get all the block heights within a particular date range. Useful for rendering a display where you sort blocks by day.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} startDate - The start date in YYYY-MM-DD format.\n * @param {string} endDate - The end date in YYYY-MM-DD format.\n * @param {GetBlockHeightsQueryParamOpts} queryParamOpts\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async* getBlockHeights(chainName: Chain | Chains | ChainID, startDate: string, endDate: string, queryParamOpts?: GetBlockHeightsQueryParamOpts): AsyncIterable<BlockHeights> {\n let success = false;\n let res: BlockHeights;\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n throw new Error(`An error occurred 401: ${ApiKeyValidator.INVALID_API_KEY_MESSAGE}`);\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n\n for await (res of paginateEndpoint<BlockHeights, BlockHeightsResponse>(`https://api.covalenthq.com/v1/${chainName}/block_v2/${startDate}/${endDate}/`, this.apiKey, urlParams, Block, this.debug, this.threadCount, this.enableRetry, this.source)) {\n yield res;\n }\n\n success = true;\n } catch (error) {\n success = true;\n throw new Error(error.message);\n }\n }\n }\n\n /**\n *\n * Commonly used to get all the block heights within a particular date range. Useful for rendering a display where you sort blocks by day.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} startDate - The start date in YYYY-MM-DD format.\n * @param {string} endDate - The end date in YYYY-MM-DD format.\n * @param {GetBlockHeightsQueryParamOpts} queryParamOpts\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async getBlockHeightsByPage(chainName: Chain | Chains | ChainID, startDate: string, endDate: string, queryParamOpts?: GetBlockHeightsQueryParamOpts): Promise<Response<BlockHeightsResponse>> {\n let success = false;\n let data: Response<BlockHeightsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<BlockHeightsResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/block_v2/${startDate}/${endDate}/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/block_v2/${startDate}/${endDate}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new BlockHeightsResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get all the event logs of the latest block, or for a range of blocks. Includes sender contract metadata as well as decoded logs.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {GetLogsQueryParamOpts} queryParamOpts\n * - `startingBlock`: The first block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`.\n * - `endingBlock`: The last block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`.\n * - `address`: The address of the log events sender contract.\n * - `topics`: The topic hash(es) to retrieve logs with.\n * - `blockHash`: The block hash to retrieve logs for.\n * - `skipDecode`: Omit decoded log events.\n *\n */\n public async getLogs(chainName: Chain | Chains | ChainID, queryParamOpts?: GetLogsQueryParamOpts): Promise<Response<GetLogsResponse>> {\n let success = false;\n let data: Response<GetLogsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<GetLogsResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.startingBlock !== undefined) {\n urlParams.append(\"starting-block\", queryParamOpts?.startingBlock.toString());\n }\n \n if (queryParamOpts?.endingBlock !== undefined) {\n urlParams.append(\"ending-block\", queryParamOpts?.endingBlock.toString());\n }\n \n if (queryParamOpts?.address !== undefined) {\n urlParams.append(\"address\", queryParamOpts?.address.toString());\n }\n \n if (queryParamOpts?.topics !== undefined) {\n urlParams.append(\"topics\", queryParamOpts?.topics.toString());\n }\n \n if (queryParamOpts?.blockHash !== undefined) {\n urlParams.append(\"block-hash\", queryParamOpts?.blockHash.toString());\n }\n \n if (queryParamOpts?.skipDecode !== undefined) {\n urlParams.append(\"skip-decode\", queryParamOpts?.skipDecode.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/events/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/events/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new GetLogsResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get all the event logs emitted from a particular contract address. Useful for building dashboards that examine on-chain interactions.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} contractAddress - The requested contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetLogEventsByAddressQueryParamOpts} queryParamOpts\n * - `startingBlock`: The first block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`.\n * - `endingBlock`: The last block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`.\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async* getLogEventsByAddress(chainName: Chain | Chains | ChainID, contractAddress: string, queryParamOpts?: GetLogEventsByAddressQueryParamOpts): AsyncIterable<LogEvent> {\n let success = false;\n let res: LogEvent;\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n throw new Error(`An error occurred 401: ${ApiKeyValidator.INVALID_API_KEY_MESSAGE}`);\n }\n \n if (queryParamOpts?.startingBlock !== undefined) {\n urlParams.append(\"starting-block\", queryParamOpts?.startingBlock.toString());\n }\n \n if (queryParamOpts?.endingBlock !== undefined) {\n urlParams.append(\"ending-block\", queryParamOpts?.endingBlock.toString());\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n \n\n for await (res of paginateEndpoint<LogEvent, LogEventsByAddressResponse>(`https://api.covalenthq.com/v1/${chainName}/events/address/${contractAddress}/`, this.apiKey, urlParams, LogEvent, this.debug, this.threadCount, this.enableRetry, this.source)) {\n yield res;\n }\n\n success = true;\n } catch (error) {\n success = true;\n throw new Error(error.message);\n }\n }\n }\n\n /**\n *\n * Commonly used to get all the event logs emitted from a particular contract address. Useful for building dashboards that examine on-chain interactions.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} contractAddress - The requested contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetLogEventsByAddressQueryParamOpts} queryParamOpts\n * - `startingBlock`: The first block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`.\n * - `endingBlock`: The last block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`.\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async getLogEventsByAddressByPage(chainName: Chain | Chains | ChainID, contractAddress: string, queryParamOpts?: GetLogEventsByAddressQueryParamOpts): Promise<Response<LogEventsByAddressResponse>> {\n let success = false;\n let data: Response<LogEventsByAddressResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<LogEventsByAddressResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.startingBlock !== undefined) {\n urlParams.append(\"starting-block\", queryParamOpts?.startingBlock.toString());\n }\n \n if (queryParamOpts?.endingBlock !== undefined) {\n urlParams.append(\"ending-block\", queryParamOpts?.endingBlock.toString());\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/events/address/${contractAddress}/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/events/address/${contractAddress}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new LogEventsByAddressResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get all event logs of the same topic hash across all contracts within a particular chain. Useful for cross-sectional analysis of event logs that are emitted on-chain.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} topicHash - The endpoint will return event logs that contain this topic hash.\n * @param {GetLogEventsByTopicHashQueryParamOpts} queryParamOpts\n * - `startingBlock`: The first block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`.\n * - `endingBlock`: The last block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`.\n * - `secondaryTopics`: Additional topic hash(es) to filter on - padded & unpadded address fields are supported. Separate multiple topics with a comma.\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async* getLogEventsByTopicHash(chainName: Chain | Chains | ChainID, topicHash: string, queryParamOpts?: GetLogEventsByTopicHashQueryParamOpts): AsyncIterable<LogEvent> {\n let success = false;\n let res: LogEvent;\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n throw new Error(`An error occurred 401: ${ApiKeyValidator.INVALID_API_KEY_MESSAGE}`);\n }\n \n if (queryParamOpts?.startingBlock !== undefined) {\n urlParams.append(\"starting-block\", queryParamOpts?.startingBlock.toString());\n }\n \n if (queryParamOpts?.endingBlock !== undefined) {\n urlParams.append(\"ending-block\", queryParamOpts?.endingBlock.toString());\n }\n \n if (queryParamOpts?.secondaryTopics !== undefined) {\n urlParams.append(\"secondary-topics\", queryParamOpts?.secondaryTopics.toString());\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n \n\n for await (res of paginateEndpoint<LogEvent, LogEventsByTopicHashResponse>(`https://api.covalenthq.com/v1/${chainName}/events/topics/${topicHash}/`, this.apiKey, urlParams, LogEvent, this.debug, this.threadCount, this.enableRetry, this.source)) {\n yield res;\n }\n\n success = true;\n } catch (error) {\n success = true;\n throw new Error(error.message);\n }\n }\n }\n\n /**\n *\n * Commonly used to get all event logs of the same topic hash across all contracts within a particular chain. Useful for cross-sectional analysis of event logs that are emitted on-chain.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} topicHash - The endpoint will return event logs that contain this topic hash.\n * @param {GetLogEventsByTopicHashQueryParamOpts} queryParamOpts\n * - `startingBlock`: The first block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`.\n * - `endingBlock`: The last block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`.\n * - `secondaryTopics`: Additional topic hash(es) to filter on - padded & unpadded address fields are supported. Separate multiple topics with a comma.\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async getLogEventsByTopicHashByPage(chainName: Chain | Chains | ChainID, topicHash: string, queryParamOpts?: GetLogEventsByTopicHashQueryParamOpts): Promise<Response<LogEventsByTopicHashResponse>> {\n let success = false;\n let data: Response<LogEventsByTopicHashResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<LogEventsByTopicHashResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.startingBlock !== undefined) {\n urlParams.append(\"starting-block\", queryParamOpts?.startingBlock.toString());\n }\n \n if (queryParamOpts?.endingBlock !== undefined) {\n urlParams.append(\"ending-block\", queryParamOpts?.endingBlock.toString());\n }\n \n if (queryParamOpts?.secondaryTopics !== undefined) {\n urlParams.append(\"secondary-topics\", queryParamOpts?.secondaryTopics.toString());\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/events/topics/${topicHash}/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/events/topics/${topicHash}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new LogEventsByTopicHashResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to build internal dashboards for all supported chains on Covalent.\n * \n *\n */\n public async getAllChains(): Promise<Response<AllChainsResponse>> {\n let success = false;\n let data: Response<AllChainsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<AllChainsResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n const url = `https://api.covalenthq.com/v1/chains/?${urlParams}`;\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/chains/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new AllChainsResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to build internal status dashboards of all supported chains.\n * \n *\n */\n public async getAllChainStatus(): Promise<Response<AllChainsStatusResponse>> {\n let success = false;\n let data: Response<AllChainsStatusResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<AllChainsStatusResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/chains/status/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/chains/status/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new AllChainsStatusResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to locate chains which an address is active on with a single API call.\n * \n * @param {string} walletAddress - The requested wallet address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetAddressActivityQueryParamOpts} queryParamOpts\n * - `testnets`: Set to true to include testnets with activity in the response. By default, it's set to `false` and only returns mainnet activity.\n *\n */\n public async getAddressActivity(walletAddress: string, queryParamOpts?: GetAddressActivityQueryParamOpts): Promise<Response<ChainActivityResponse>> {\n let success = false;\n let data: Response<ChainActivityResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<ChainActivityResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.testnets !== undefined) {\n urlParams.append(\"testnets\", queryParamOpts?.testnets.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/address/${walletAddress}/activity/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/address/${walletAddress}/activity/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new ChainActivityResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n /**\n *\n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} eventType - The desired event type to retrieve gas prices for. Supports `erc20` transfer events, `uniswapv3` swap events and `nativetokens` transfers.\n * @param {GetGasPricesQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n *\n */\n public async getGasPrices(chainName: Chain | Chains | ChainID, eventType: string, queryParamOpts?: GetGasPricesQueryParamOpts): Promise<Response<GasPricesResponse>> {\n let success = false;\n let data: Response<GasPricesResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<GasPricesResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/event/${eventType}/gas_prices/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n \n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/event/${eventType}/gas_prices/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new GasPricesResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n\n}\n \n ","import { Chain, Quote, userAgent, Response, ChainID, Source } from \"./CovalentClient\";\nimport { debugOutput, paginateEndpoint } from \"../util/ApiHelpers\";\nimport { parseISO } from \"date-fns\";\nimport { ExponentialBackoff } from \"../util/backoff\";\nimport pLimit from \"p-limit\";\nimport { Chains } from \"../util/Chains\";\nimport { ApiKeyValidator } from \"../util/ApiKeyValidator\";\n\nclass ChainCollectionResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: ChainCollectionItem[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: ChainCollectionResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: ChainCollectionItem) => new ChainCollectionItem(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass ChainCollectionItem {\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * Denotes whether the token is suspected spam. Supports `eth-mainnet` and `matic-mainnet`. */\n is_spam: boolean;\n token_total_supply: number;\n cached_metadata_count: number;\n cached_asset_count: number;\n last_scraped_at: Date;\n\n constructor(data: ChainCollectionItem) {\n this.contract_address = data.contract_address;\n this.contract_name = data.contract_name;\n this.is_spam = data.is_spam;\n this.token_total_supply = data.token_total_supply;\n this.cached_metadata_count = data.cached_metadata_count;\n this.cached_asset_count = data.cached_asset_count;\n this.last_scraped_at = data.last_scraped_at && data.last_scraped_at !== null ? parseISO(data.last_scraped_at.toString()) : null;\n \n }\n}\nclass Pagination {\n /** * True is there is another page. */\n has_more: boolean;\n /** * The requested page number. */\n page_number: number;\n /** * The requested number of items on the current page. */\n page_size: number;\n /** * The total number of items across all pages for this request. */\n total_count: number;\n\n constructor(data: Pagination) {\n this.has_more = data.has_more;\n this.page_number = data.page_number;\n this.page_size = data.page_size;\n this.total_count = data.total_count;\n \n }\n}\nclass NftAddressBalanceNftResponse {\n /** * The requested address. */\n address: string;\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * List of response items. */\n items: NftTokenContractBalanceItem[];\n\n constructor(data: NftAddressBalanceNftResponse) {\n this.address = data.address;\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: NftTokenContractBalanceItem) => new NftTokenContractBalanceItem(itemData)) : null;\n }\n}\nclass NftTokenContractBalanceItem {\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * Denotes whether the token is suspected spam. Supports `eth-mainnet` and `matic-mainnet`. */\n is_spam: boolean;\n last_transfered_at: Date;\n /** * The asset balance. Use `contract_decimals` to scale this balance for display purposes. */\n balance: bigint | null;\n balance_24h: string;\n type: string;\n /** * The current floor price converted to fiat in `quote-currency`. The floor price is determined by the last minimum sale price within the last 30 days across all the supported markets where the collection is sold on. */\n floor_price_quote: number;\n /** * A prettier version of the floor price quote for rendering purposes. */\n pretty_floor_price_quote: string;\n /** * The current floor price in native currency. The floor price is determined by the last minimum sale price within the last 30 days across all the supported markets where the collection is sold on. */\n floor_price_native_quote: number;\n nft_data: NftData[];\n\n constructor(data: NftTokenContractBalanceItem) {\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.supports_erc = data.supports_erc;\n this.is_spam = data.is_spam;\n this.last_transfered_at = data.last_transfered_at && data.last_transfered_at !== null ? parseISO(data.last_transfered_at.toString()) : null;\n this.balance = data.balance && data.balance !== null ? BigInt(data.balance) : null;\n this.balance_24h = data.balance_24h;\n this.type = data.type;\n this.floor_price_quote = data.floor_price_quote;\n this.pretty_floor_price_quote = data.pretty_floor_price_quote;\n this.floor_price_native_quote = data.floor_price_native_quote;\n this.nft_data = data.nft_data && data.nft_data !== null ? data.nft_data.map((itemData: NftData) => new NftData(itemData)) : null;\n }\n}\nclass NftData {\n /** * The token's id. */\n token_id: bigint | null;\n token_url: string;\n /** * The original minter. */\n original_owner: string;\n /** * The current holder of this NFT. */\n current_owner: string;\n external_data: NftExternalData;\n /** * If `true`, the asset data is available from the Covalent CDN. */\n asset_cached: boolean;\n /** * If `true`, the image data is available from the Covalent CDN. */\n image_cached: boolean;\n\n constructor(data: NftData) {\n this.token_id = data.token_id && data.token_id !== null ? BigInt(data.token_id) : null;\n this.token_url = data.token_url;\n this.original_owner = data.original_owner;\n this.current_owner = data.current_owner;\n this.asset_cached = data.asset_cached;\n this.image_cached = data.image_cached;\n this.external_data = data.external_data && data.external_data !== null ? new NftExternalData(data.external_data) : null;\n }\n}\nclass NftExternalData {\n name: string;\n description: string;\n asset_url: string;\n asset_file_extension: string;\n asset_mime_type: string;\n asset_size_bytes: string;\n image: string;\n image_256: string;\n image_512: string;\n image_1024: string;\n animation_url: string;\n external_url: string;\n attributes: NftCollectionAttribute[];\n\n constructor(data: NftExternalData) {\n this.name = data.name;\n this.description = data.description;\n this.asset_url = data.asset_url;\n this.asset_file_extension = data.asset_file_extension;\n this.asset_mime_type = data.asset_mime_type;\n this.asset_size_bytes = data.asset_size_bytes;\n this.image = data.image;\n this.image_256 = data.image_256;\n this.image_512 = data.image_512;\n this.image_1024 = data.image_1024;\n this.animation_url = data.animation_url;\n this.external_url = data.external_url;\n this.attributes = data.attributes && data.attributes !== null ? data.attributes.map((itemData: NftCollectionAttribute) => new NftCollectionAttribute(itemData)) : null;\n }\n}\nclass NftCollectionAttribute {\n trait_type: string;\n value: string;\n\n constructor(data: NftCollectionAttribute) {\n this.trait_type = data.trait_type;\n this.value = data.value;\n \n }\n}\nclass NftMetadataResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * List of response items. */\n items: NftTokenContract[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: NftMetadataResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: NftTokenContract) => new NftTokenContract(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass NftTokenContract {\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * Denotes whether the token is suspected spam. Supports `eth-mainnet` and `matic-mainnet`. */\n is_spam: boolean;\n type: string;\n nft_data: NftData;\n\n constructor(data: NftTokenContract) {\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.is_spam = data.is_spam;\n this.type = data.type;\n this.nft_data = data.nft_data && data.nft_data !== null ? new NftData(data.nft_data) : null;\n }\n}\nclass NftTransactionsResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: NftTransaction[];\n\n constructor(data: NftTransactionsResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: NftTransaction) => new NftTransaction(itemData)) : null;\n }\n}\nclass NftTransaction {\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * The contract logo URL. */\n logo_url: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n nft_transactions: NftTransactionItem[];\n /** * Denotes whether the token is suspected spam. Supports `eth-mainnet` and `matic-mainnet`. */\n is_spam: boolean;\n\n constructor(data: NftTransaction) {\n this.contract_decimals = data.contract_decimals;\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.logo_url = data.logo_url;\n this.contract_address = data.contract_address;\n this.supports_erc = data.supports_erc;\n this.is_spam = data.is_spam;\n this.nft_transactions = data.nft_transactions && data.nft_transactions !== null ? data.nft_transactions.map((itemData: NftTransactionItem) => new NftTransactionItem(itemData)) : null;\n }\n}\nclass NftTransactionItem {\n /** * The block signed timestamp in UTC. */\n block_signed_at: Date;\n /** * The height of the block. */\n block_height: number;\n /** * The requested transaction hash. */\n tx_hash: string;\n /** * The offset is the position of the tx in the block. */\n tx_offset: number;\n /** * Whether or not transaction is successful. */\n successful: boolean;\n /** * The sender's wallet address. */\n from_address: string;\n /** * The label of `from` address. */\n from_address_label: string;\n /** * The receiver's wallet address. */\n to_address: string;\n /** * The label of `to` address. */\n to_address_label: string;\n /** * The value attached to this tx. */\n value: bigint | null;\n /** * The value attached in `quote-currency` to this tx. */\n value_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_value_quote: string;\n gas_offered: number;\n /** * The gas spent for this tx. */\n gas_spent: number;\n /** * The gas price at the time of this tx. */\n gas_price: number;\n /** * The total transaction fees (gas_price * gas_spent) paid for this tx, denoted in wei. */\n fees_paid: bigint | null;\n /** * The gas spent in `quote-currency` denomination. */\n gas_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_gas_quote: string;\n gas_quote_rate: number;\n /** * The log events. */\n log_events: LogEvent[];\n\n constructor(data: NftTransactionItem) {\n this.block_signed_at = data.block_signed_at && data.block_signed_at !== null ? parseISO(data.block_signed_at.toString()) : null;\n this.block_height = data.block_height;\n this.tx_hash = data.tx_hash;\n this.tx_offset = data.tx_offset;\n this.successful = data.successful;\n this.from_address = data.from_address;\n this.from_address_label = data.from_address_label;\n this.to_address = data.to_address;\n this.to_address_label = data.to_address_label;\n this.value = data.value && data.value !== null ? BigInt(data.value) : null;\n this.value_quote = data.value_quote;\n this.pretty_value_quote = data.pretty_value_quote;\n this.gas_offered = data.gas_offered;\n this.gas_spent = data.gas_spent;\n this.gas_price = data.gas_price;\n this.fees_paid = data.fees_paid && data.fees_paid !== null ? BigInt(data.fees_paid) : null;\n this.gas_quote = data.gas_quote;\n this.pretty_gas_quote = data.pretty_gas_quote;\n this.gas_quote_rate = data.gas_quote_rate;\n this.log_events = data.log_events && data.log_events !== null ? data.log_events.map((itemData: LogEvent) => new LogEvent(itemData)) : null;\n }\n}\nclass LogEvent {\n /** * The block signed timestamp in UTC. */\n block_signed_at: Date;\n /** * The height of the block. */\n block_height: number;\n /** * The offset is the position of the tx in the block. */\n tx_offset: number;\n /** * The offset is the position of the log entry within an event log. */\n log_offset: number;\n /** * The requested transaction hash. */\n tx_hash: string;\n /** * The log topics in raw data. */\n raw_log_topics: string[];\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n sender_contract_decimals: number;\n /** * The name of the sender. */\n sender_name: string;\n sender_contract_ticker_symbol: string;\n /** * The address of the sender. */\n sender_address: string;\n /** * The label of the sender address. */\n sender_address_label: string;\n /** * The contract logo URL. */\n sender_logo_url: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The address of the deployed UniswapV2 like factory contract for this DEX. */\n sender_factory_address: string;\n /** * The log events in raw. */\n raw_log_data: string;\n /** * The decoded item. */\n decoded: DecodedItem;\n\n constructor(data: LogEvent) {\n this.block_signed_at = data.block_signed_at && data.block_signed_at !== null ? parseISO(data.block_signed_at.toString()) : null;\n this.block_height = data.block_height;\n this.tx_offset = data.tx_offset;\n this.log_offset = data.log_offset;\n this.tx_hash = data.tx_hash;\n this.raw_log_topics = data.raw_log_topics;\n this.sender_contract_decimals = data.sender_contract_decimals;\n this.sender_name = data.sender_name;\n this.sender_contract_ticker_symbol = data.sender_contract_ticker_symbol;\n this.sender_address = data.sender_address;\n this.sender_address_label = data.sender_address_label;\n this.sender_logo_url = data.sender_logo_url;\n this.supports_erc = data.supports_erc;\n this.sender_factory_address = data.sender_factory_address;\n this.raw_log_data = data.raw_log_data;\n this.decoded = data.decoded && data.decoded !== null ? new DecodedItem(data.decoded) : null;\n }\n}\nclass DecodedItem {\n name: string;\n signature: string;\n params: Param[];\n\n constructor(data: DecodedItem) {\n this.name = data.name;\n this.signature = data.signature;\n this.params = data.params && data.params !== null ? data.params.map((itemData: Param) => new Param(itemData)) : null;\n }\n}\nclass Param {\n name: string;\n type: string;\n indexed: boolean;\n decoded: boolean;\n value: string;\n\n constructor(data: Param) {\n this.name = data.name;\n this.type = data.type;\n this.indexed = data.indexed;\n this.decoded = data.decoded;\n this.value = data.value;\n \n }\n}\nclass NftCollectionTraitsResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * List of response items. */\n items: NftTrait[];\n\n constructor(data: NftCollectionTraitsResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: NftTrait) => new NftTrait(itemData)) : null;\n }\n}\nclass NftTrait {\n name: string;\n\n constructor(data: NftTrait) {\n this.name = data.name;\n \n }\n}\nclass NftCollectionAttributesForTraitResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * List of response items. */\n items: NftSummaryAttribute[];\n\n constructor(data: NftCollectionAttributesForTraitResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: NftSummaryAttribute) => new NftSummaryAttribute(itemData)) : null;\n }\n}\nclass NftSummaryAttribute {\n trait_type: string;\n values: NftAttribute[];\n unique_values: number;\n\n constructor(data: NftSummaryAttribute) {\n this.trait_type = data.trait_type;\n this.unique_values = data.unique_values;\n this.values = data.values && data.values !== null ? data.values.map((itemData: NftAttribute) => new NftAttribute(itemData)) : null;\n }\n}\nclass NftAttribute {\n value: string;\n count: number;\n\n constructor(data: NftAttribute) {\n this.value = data.value;\n this.count = data.count;\n \n }\n}\nclass NftCollectionTraitSummaryResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * List of response items. */\n items: NftTraitSummary[];\n\n constructor(data: NftCollectionTraitSummaryResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: NftTraitSummary) => new NftTraitSummary(itemData)) : null;\n }\n}\nclass NftTraitSummary {\n /** * Trait name */\n name: string;\n /** * Type of the value of the trait. */\n value_type: string;\n /** * Populated for `numeric` traits. */\n value_numeric: NftTraitNumeric;\n /** * Populated for `string` traits. */\n value_string: NftTraitString;\n attributes: NftSummaryAttribute[];\n\n constructor(data: NftTraitSummary) {\n this.name = data.name;\n this.value_type = data.value_type;\n this.value_numeric = data.value_numeric && data.value_numeric !== null ? new NftTraitNumeric(data.value_numeric) : null;\n this.value_string = data.value_string && data.value_string !== null ? new NftTraitString(data.value_string) : null;\n this.attributes = data.attributes && data.attributes !== null ? data.attributes.map((itemData: NftSummaryAttribute) => new NftSummaryAttribute(itemData)) : null;\n }\n}\nclass NftTraitNumeric {\n min: number;\n max: number;\n\n constructor(data: NftTraitNumeric) {\n this.min = data.min;\n this.max = data.max;\n \n }\n}\nclass NftTraitString {\n /** * String value */\n value: string;\n /** * Number of distinct tokens that have this trait value. */\n token_count: number;\n /** * Percentage of tokens in the collection that have this trait. */\n trait_percentage: number;\n\n constructor(data: NftTraitString) {\n this.value = data.value;\n this.token_count = data.token_count;\n this.trait_percentage = data.trait_percentage;\n \n }\n}\nclass NftOwnershipForCollectionResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested address. */\n address: string;\n /** * The requested collection. */\n collection: string;\n /** * Denotes whether the token is suspected spam. Supports `eth-mainnet` and `matic-mainnet`. */\n is_spam: boolean;\n /** * List of response items. */\n items: NftOwnershipForCollectionItem[];\n\n constructor(data: NftOwnershipForCollectionResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.address = data.address;\n this.collection = data.collection;\n this.is_spam = data.is_spam;\n this.items = data.items && data.items !== null ? data.items.map((itemData: NftOwnershipForCollectionItem) => new NftOwnershipForCollectionItem(itemData)) : null;\n }\n}\nclass NftOwnershipForCollectionItem {\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * The token's id. */\n token_id: bigint | null;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n last_transfered_at: Date;\n /** * Nft balance. */\n balance: bigint | null;\n balance_24h: string;\n type: string;\n nft_data: NftData;\n\n constructor(data: NftOwnershipForCollectionItem) {\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.token_id = data.token_id && data.token_id !== null ? BigInt(data.token_id) : null;\n this.supports_erc = data.supports_erc;\n this.last_transfered_at = data.last_transfered_at && data.last_transfered_at !== null ? parseISO(data.last_transfered_at.toString()) : null;\n this.balance = data.balance && data.balance !== null ? BigInt(data.balance) : null;\n this.balance_24h = data.balance_24h;\n this.type = data.type;\n this.nft_data = data.nft_data && data.nft_data !== null ? new NftData(data.nft_data) : null;\n }\n}\nclass NftMarketSaleCountResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested address. */\n address: string;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * List of response items. */\n items: MarketSaleCountItem[];\n\n constructor(data: NftMarketSaleCountResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.address = data.address;\n this.quote_currency = data.quote_currency;\n this.chain_name = data.chain_name;\n this.chain_id = data.chain_id;\n this.items = data.items && data.items !== null ? data.items.map((itemData: MarketSaleCountItem) => new MarketSaleCountItem(itemData)) : null;\n }\n}\nclass MarketSaleCountItem {\n /** * The timestamp of the date of sale. */\n date: Date;\n /** * The total amount of sales for the current day. */\n sale_count: number;\n\n constructor(data: MarketSaleCountItem) {\n this.date = data.date && data.date !== null ? parseISO(data.date.toString()) : null;\n this.sale_count = data.sale_count;\n \n }\n}\nclass NftMarketVolumeResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested address. */\n address: string;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * List of response items. */\n items: MarketVolumeItem[];\n\n constructor(data: NftMarketVolumeResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.address = data.address;\n this.quote_currency = data.quote_currency;\n this.chain_name = data.chain_name;\n this.chain_id = data.chain_id;\n this.items = data.items && data.items !== null ? data.items.map((itemData: MarketVolumeItem) => new MarketVolumeItem(itemData)) : null;\n }\n}\nclass MarketVolumeItem {\n /** * The timestamp of the date of sale. */\n date: Date;\n /** * The ticker symbol for the native currency. */\n native_ticker_symbol: string;\n /** * The contract name of the native currency. */\n native_name: string;\n /** * The current volume converted to fiat in `quote-currency`. */\n volume_quote: number;\n /** * The current volume in native currency. */\n volume_native_quote: number;\n /** * A prettier version of the volume quote for rendering purposes. */\n pretty_volume_quote: string;\n\n constructor(data: MarketVolumeItem) {\n this.date = data.date && data.date !== null ? parseISO(data.date.toString()) : null;\n this.native_ticker_symbol = data.native_ticker_symbol;\n this.native_name = data.native_name;\n this.volume_quote = data.volume_quote;\n this.volume_native_quote = data.volume_native_quote;\n this.pretty_volume_quote = data.pretty_volume_quote;\n \n }\n}\nclass NftMarketFloorPriceResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested address. */\n address: string;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * List of response items. */\n items: MarketFloorPriceItem[];\n\n constructor(data: NftMarketFloorPriceResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.address = data.address;\n this.quote_currency = data.quote_currency;\n this.chain_name = data.chain_name;\n this.chain_id = data.chain_id;\n this.items = data.items && data.items !== null ? data.items.map((itemData: MarketFloorPriceItem) => new MarketFloorPriceItem(itemData)) : null;\n }\n}\nclass MarketFloorPriceItem {\n /** * The timestamp of the date of sale. */\n date: Date;\n /** * The ticker symbol for the native currency. */\n native_ticker_symbol: string;\n /** * The contract name of the native currency. */\n native_name: string;\n /** * The current floor price in native currency. */\n floor_price_native_quote: number;\n /** * The current floor price converted to fiat in `quote-currency`. */\n floor_price_quote: number;\n /** * A prettier version of the floor price quote for rendering purposes. */\n pretty_floor_price_quote: string;\n\n constructor(data: MarketFloorPriceItem) {\n this.date = data.date && data.date !== null ? parseISO(data.date.toString()) : null;\n this.native_ticker_symbol = data.native_ticker_symbol;\n this.native_name = data.native_name;\n this.floor_price_native_quote = data.floor_price_native_quote;\n this.floor_price_quote = data.floor_price_quote;\n this.pretty_floor_price_quote = data.pretty_floor_price_quote;\n \n }\n}\n\nexport interface GetChainCollectionsQueryParamOpts {\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n /** * 0-indexed page number to begin pagination. */\n pageNumber?: number;\n /** * If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`. */\n noSpam?: boolean;\n}\nexport interface GetNftsForAddressQueryParamOpts {\n /** * If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`. */\n noSpam?: boolean;\n /** * If `true`, the response shape is limited to a list of collections and token ids, omitting metadata and asset information. Helpful for faster response times and wallets holding a large number of NFTs. */\n noNftAssetMetadata?: boolean;\n /** * By default, this endpoint only works on chains where we've cached the assets and the metadata. When set to `true`, the API will fetch metadata from upstream servers even if it's not cached - the downside being that the upstream server can block or rate limit the call and therefore resulting in time outs or slow response times on the Covalent side. */\n withUncached?: boolean;\n}\nexport interface GetTokenIdsForContractWithMetadataQueryParamOpts {\n /** * Omit metadata. */\n noMetadata?: boolean;\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n /** * 0-indexed page number to begin pagination. */\n pageNumber?: number;\n /** * Filters NFTs based on a specific trait. If this filter is used, the API will return all NFTs with the specified trait. Accepts comma-separated values, is case-sensitive, and requires proper URL encoding. */\n traitsFilter?: string;\n /** * Filters NFTs based on a specific trait value. If this filter is used, the API will return all NFTs with the specified trait value. If used with \"traits-filter\", only NFTs matching both filters will be returned. Accepts comma-separated values, is case-sensitive, and requires proper URL encoding. */\n valuesFilter?: string;\n /** * By default, this endpoint only works on chains where we've cached the assets and the metadata. When set to `true`, the API will fetch metadata from upstream servers even if it's not cached - the downside being that the upstream server can block or rate limit the call and therefore resulting in time outs or slow response times on the Covalent side. */\n withUncached?: boolean;\n}\nexport interface GetNftMetadataForGivenTokenIdForContractQueryParamOpts {\n /** * Omit metadata. */\n noMetadata?: boolean;\n /** * By default, this endpoint only works on chains where we've cached the assets and the metadata. When set to `true`, the API will fetch metadata from upstream servers even if it's not cached - the downside being that the upstream server can block or rate limit the call and therefore resulting in time outs or slow response times on the Covalent side. */\n withUncached?: boolean;\n}\nexport interface GetNftTransactionsForContractTokenIdQueryParamOpts {\n /** * If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`. */\n noSpam?: boolean;\n}\nexport interface CheckOwnershipInNftQueryParamOpts {\n /** * Filters NFTs based on a specific trait. If this filter is used, the API will return all NFTs with the specified trait. Must be used with \"values-filter\", is case-sensitive, and requires proper URL encoding. */\n traitsFilter?: string;\n /** * Filters NFTs based on a specific trait value. If this filter is used, the API will return all NFTs with the specified trait value. Must be used with \"traits-filter\", is case-sensitive, and requires proper URL encoding. */\n valuesFilter?: string;\n}\nexport interface GetNftMarketSaleCountQueryParamOpts {\n /** * The number of days to return data for. Request up 365 days. Defaults to 30 days. */\n days?: number;\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n}\nexport interface GetNftMarketVolumeQueryParamOpts {\n /** * The number of days to return data for. Request up 365 days. Defaults to 30 days. */\n days?: number;\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n}\nexport interface GetNftMarketFloorPriceQueryParamOpts {\n /** * The number of days to return data for. Request up 365 days. Defaults to 30 days. */\n days?: number;\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n}\n\n/**\n * NFT APIs\n * \n */\nexport class NftService {\n private LIMIT;\n constructor(private apiKey: string, private debug: boolean = false, private threadCount: number = 3, private is_key_valid: boolean, private enableRetry: boolean = true, private source: Source) {\n this.LIMIT = pLimit(this.threadCount);\n }\n\n\n /**\n *\n * Commonly used to fetch the list of NFT collections with downloaded and cached off chain data like token metadata and asset files.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {GetChainCollectionsQueryParamOpts} queryParamOpts\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n * - `noSpam`: If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`.\n *\n */\n public async* getChainCollections(chainName: Chain | Chains | ChainID, queryParamOpts?: GetChainCollectionsQueryParamOpts): AsyncIterable<ChainCollectionItem> {\n let success = false;\n let res: ChainCollectionItem;\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n throw new Error(`An error occurred 401: ${ApiKeyValidator.INVALID_API_KEY_MESSAGE}`);\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n \n if (queryParamOpts?.noSpam !== undefined) {\n urlParams.append(\"no-spam\", queryParamOpts?.noSpam.toString());\n }\n\n for await (res of paginateEndpoint<ChainCollectionItem, ChainCollectionResponse>(`https://api.covalenthq.com/v1/${chainName}/nft/collections/`, this.apiKey, urlParams, ChainCollectionItem, this.debug, this.threadCount, this.enableRetry, this.source)) {\n yield res;\n }\n\n success = true;\n } catch (error) {\n success = true;\n throw new Error(error.message);\n }\n }\n }\n\n /**\n *\n * Commonly used to fetch the list of NFT collections with downloaded and cached off chain data like token metadata and asset files.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {GetChainCollectionsQueryParamOpts} queryParamOpts\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n * - `noSpam`: If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`.\n *\n */\n public async getChainCollectionsByPage(chainName: Chain | Chains | ChainID, queryParamOpts?: GetChainCollectionsQueryParamOpts): Promise<Response<ChainCollectionResponse>> {\n let success = false;\n let data: Response<ChainCollectionResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<ChainCollectionResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n \n if (queryParamOpts?.noSpam !== undefined) {\n urlParams.append(\"no-spam\", queryParamOpts?.noSpam.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/nft/collections/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/nft/collections/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new ChainCollectionResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to render the NFTs (including ERC721 and ERC1155) held by an address.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetNftsForAddressQueryParamOpts} queryParamOpts\n * - `noSpam`: If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`.\n * - `noNftAssetMetadata`: If `true`, the response shape is limited to a list of collections and token ids, omitting metadata and asset information. Helpful for faster response times and wallets holding a large number of NFTs.\n * - `withUncached`: By default, this endpoint only works on chains where we've cached the assets and the metadata. When set to `true`, the API will fetch metadata from upstream servers even if it's not cached - the downside being that the upstream server can block or rate limit the call and therefore resulting in time outs or slow response times on the Covalent side.\n *\n */\n public async getNftsForAddress(chainName: Chain | Chains | ChainID, walletAddress: string, queryParamOpts?: GetNftsForAddressQueryParamOpts): Promise<Response<NftAddressBalanceNftResponse>> {\n let success = false;\n let data: Response<NftAddressBalanceNftResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NftAddressBalanceNftResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.noSpam !== undefined) {\n urlParams.append(\"no-spam\", queryParamOpts?.noSpam.toString());\n }\n \n if (queryParamOpts?.noNftAssetMetadata !== undefined) {\n urlParams.append(\"no-nft-asset-metadata\", queryParamOpts?.noNftAssetMetadata.toString());\n }\n \n if (queryParamOpts?.withUncached !== undefined) {\n urlParams.append(\"with-uncached\", queryParamOpts?.withUncached.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/balances_nft/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/balances_nft/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new NftAddressBalanceNftResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get NFT token IDs with metadata from a collection. Useful for building NFT card displays.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} contractAddress - The requested contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetTokenIdsForContractWithMetadataQueryParamOpts} queryParamOpts\n * - `noMetadata`: Omit metadata.\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n * - `traitsFilter`: Filters NFTs based on a specific trait. If this filter is used, the API will return all NFTs with the specified trait. Accepts comma-separated values, is case-sensitive, and requires proper URL encoding.\n * - `valuesFilter`: Filters NFTs based on a specific trait value. If this filter is used, the API will return all NFTs with the specified trait value. If used with \"traits-filter\", only NFTs matching both filters will be returned. Accepts comma-separated values, is case-sensitive, and requires proper URL encoding.\n * - `withUncached`: By default, this endpoint only works on chains where we've cached the assets and the metadata. When set to `true`, the API will fetch metadata from upstream servers even if it's not cached - the downside being that the upstream server can block or rate limit the call and therefore resulting in time outs or slow response times on the Covalent side.\n *\n */\n public async* getTokenIdsForContractWithMetadata(chainName: Chain | Chains | ChainID, contractAddress: string, queryParamOpts?: GetTokenIdsForContractWithMetadataQueryParamOpts): AsyncIterable<NftTokenContract> {\n let success = false;\n let res: NftTokenContract;\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n throw new Error(`An error occurred 401: ${ApiKeyValidator.INVALID_API_KEY_MESSAGE}`);\n }\n \n if (queryParamOpts?.noMetadata !== undefined) {\n urlParams.append(\"no-metadata\", queryParamOpts?.noMetadata.toString());\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n \n if (queryParamOpts?.traitsFilter !== undefined) {\n urlParams.append(\"traits-filter\", queryParamOpts?.traitsFilter.toString());\n }\n \n if (queryParamOpts?.valuesFilter !== undefined) {\n urlParams.append(\"values-filter\", queryParamOpts?.valuesFilter.toString());\n }\n \n if (queryParamOpts?.withUncached !== undefined) {\n urlParams.append(\"with-uncached\", queryParamOpts?.withUncached.toString());\n }\n \n\n for await (res of paginateEndpoint<NftTokenContract, NftMetadataResponse>(`https://api.covalenthq.com/v1/${chainName}/nft/${contractAddress}/metadata/`, this.apiKey, urlParams, NftTokenContract, this.debug, this.threadCount, this.enableRetry, this.source)) {\n yield res;\n }\n\n success = true;\n } catch (error) {\n success = true;\n throw new Error(error.message);\n }\n }\n }\n\n /**\n *\n * Commonly used to get NFT token IDs with metadata from a collection. Useful for building NFT card displays.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} contractAddress - The requested contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetTokenIdsForContractWithMetadataQueryParamOpts} queryParamOpts\n * - `noMetadata`: Omit metadata.\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n * - `traitsFilter`: Filters NFTs based on a specific trait. If this filter is used, the API will return all NFTs with the specified trait. Accepts comma-separated values, is case-sensitive, and requires proper URL encoding.\n * - `valuesFilter`: Filters NFTs based on a specific trait value. If this filter is used, the API will return all NFTs with the specified trait value. If used with \"traits-filter\", only NFTs matching both filters will be returned. Accepts comma-separated values, is case-sensitive, and requires proper URL encoding.\n * - `withUncached`: By default, this endpoint only works on chains where we've cached the assets and the metadata. When set to `true`, the API will fetch metadata from upstream servers even if it's not cached - the downside being that the upstream server can block or rate limit the call and therefore resulting in time outs or slow response times on the Covalent side.\n *\n */\n public async getTokenIdsForContractWithMetadataByPage(chainName: Chain | Chains | ChainID, contractAddress: string, queryParamOpts?: GetTokenIdsForContractWithMetadataQueryParamOpts): Promise<Response<NftMetadataResponse>> {\n let success = false;\n let data: Response<NftMetadataResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NftMetadataResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.noMetadata !== undefined) {\n urlParams.append(\"no-metadata\", queryParamOpts?.noMetadata.toString());\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n \n if (queryParamOpts?.traitsFilter !== undefined) {\n urlParams.append(\"traits-filter\", queryParamOpts?.traitsFilter.toString());\n }\n \n if (queryParamOpts?.valuesFilter !== undefined) {\n urlParams.append(\"values-filter\", queryParamOpts?.valuesFilter.toString());\n }\n \n if (queryParamOpts?.withUncached !== undefined) {\n urlParams.append(\"with-uncached\", queryParamOpts?.withUncached.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/nft/${contractAddress}/metadata/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/nft/${contractAddress}/metadata/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new NftMetadataResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get a single NFT metadata by token ID from a collection. Useful for building NFT card displays.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} contractAddress - The requested contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {string} tokenId - The requested token ID.\n * @param {GetNftMetadataForGivenTokenIdForContractQueryParamOpts} queryParamOpts\n * - `noMetadata`: Omit metadata.\n * - `withUncached`: By default, this endpoint only works on chains where we've cached the assets and the metadata. When set to `true`, the API will fetch metadata from upstream servers even if it's not cached - the downside being that the upstream server can block or rate limit the call and therefore resulting in time outs or slow response times on the Covalent side.\n *\n */\n public async getNftMetadataForGivenTokenIdForContract(chainName: Chain | Chains | ChainID, contractAddress: string, tokenId: string, queryParamOpts?: GetNftMetadataForGivenTokenIdForContractQueryParamOpts): Promise<Response<NftMetadataResponse>> {\n let success = false;\n let data: Response<NftMetadataResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NftMetadataResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.noMetadata !== undefined) {\n urlParams.append(\"no-metadata\", queryParamOpts?.noMetadata.toString());\n }\n \n if (queryParamOpts?.withUncached !== undefined) {\n urlParams.append(\"with-uncached\", queryParamOpts?.withUncached.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/nft/${contractAddress}/metadata/${tokenId}/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/nft/${contractAddress}/metadata/${tokenId}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new NftMetadataResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get all transactions of an NFT token. Useful for building a transaction history table or price chart.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} contractAddress - The requested contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {string} tokenId - The requested token ID.\n * @param {GetNftTransactionsForContractTokenIdQueryParamOpts} queryParamOpts\n * - `noSpam`: If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`.\n *\n */\n public async getNftTransactionsForContractTokenId(chainName: Chain | Chains | ChainID, contractAddress: string, tokenId: string, queryParamOpts?: GetNftTransactionsForContractTokenIdQueryParamOpts): Promise<Response<NftTransactionsResponse>> {\n let success = false;\n let data: Response<NftTransactionsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NftTransactionsResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.noSpam !== undefined) {\n urlParams.append(\"no-spam\", queryParamOpts?.noSpam.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/tokens/${contractAddress}/nft_transactions/${tokenId}/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/tokens/${contractAddress}/nft_transactions/${tokenId}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new NftTransactionsResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to fetch and render the traits of a collection as seen in rarity calculators.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} collectionContract - The requested collection address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n *\n */\n public async getTraitsForCollection(chainName: Chain | Chains | ChainID, collectionContract: string): Promise<Response<NftCollectionTraitsResponse>> {\n let success = false;\n let data: Response<NftCollectionTraitsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NftCollectionTraitsResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/nft/${collectionContract}/traits/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/nft/${collectionContract}/traits/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new NftCollectionTraitsResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get the count of unique values for traits within an NFT collection.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} collectionContract - The requested collection address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {string} trait - The requested trait.\n *\n */\n public async getAttributesForTraitInCollection(chainName: Chain | Chains | ChainID, collectionContract: string, trait: string): Promise<Response<NftCollectionAttributesForTraitResponse>> {\n let success = false;\n let data: Response<NftCollectionAttributesForTraitResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NftCollectionAttributesForTraitResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/nft/${collectionContract}/traits/${trait}/attributes/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/nft/${collectionContract}/traits/${trait}/attributes/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new NftCollectionAttributesForTraitResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to calculate rarity scores for a collection based on its traits.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} collectionContract - The requested collection address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n *\n */\n public async getCollectionTraitsSummary(chainName: Chain | Chains | ChainID, collectionContract: string): Promise<Response<NftCollectionTraitSummaryResponse>> {\n let success = false;\n let data: Response<NftCollectionTraitSummaryResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NftCollectionTraitSummaryResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/nft/${collectionContract}/traits_summary/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/nft/${collectionContract}/traits_summary/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new NftCollectionTraitSummaryResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to verify ownership of NFTs (including ERC-721 and ERC-1155) within a collection.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {string} collectionContract - The requested collection address.\n * @param {CheckOwnershipInNftQueryParamOpts} queryParamOpts\n * - `traitsFilter`: Filters NFTs based on a specific trait. If this filter is used, the API will return all NFTs with the specified trait. Must be used with \"values-filter\", is case-sensitive, and requires proper URL encoding.\n * - `valuesFilter`: Filters NFTs based on a specific trait value. If this filter is used, the API will return all NFTs with the specified trait value. Must be used with \"traits-filter\", is case-sensitive, and requires proper URL encoding.\n *\n */\n public async checkOwnershipInNft(chainName: Chain | Chains | ChainID, walletAddress: string, collectionContract: string, queryParamOpts?: CheckOwnershipInNftQueryParamOpts): Promise<Response<NftOwnershipForCollectionResponse>> {\n let success = false;\n let data: Response<NftOwnershipForCollectionResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NftOwnershipForCollectionResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n if (queryParamOpts?.traitsFilter !== undefined) {\n urlParams.append(\"traits-filter\", queryParamOpts?.traitsFilter.toString());\n }\n \n if (queryParamOpts?.valuesFilter !== undefined) {\n urlParams.append(\"values-filter\", queryParamOpts?.valuesFilter.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/collection/${collectionContract}/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/collection/${collectionContract}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new NftOwnershipForCollectionResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to verify ownership of a specific token (ERC-721 or ERC-1155) within a collection.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {string} collectionContract - The requested collection address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {string} tokenId - The requested token ID.\n *\n */\n public async checkOwnershipInNftForSpecificTokenId(chainName: Chain | Chains | ChainID, walletAddress: string, collectionContract: string, tokenId: string): Promise<Response<NftOwnershipForCollectionResponse>> {\n let success = false;\n let data: Response<NftOwnershipForCollectionResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NftOwnershipForCollectionResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/collection/${collectionContract}/token/${tokenId}/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/collection/${collectionContract}/token/${tokenId}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new NftOwnershipForCollectionResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n \n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n /**\n *\n * Commonly used to build a time-series chart of the sales count of an NFT collection.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} contractAddress - The requested contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetNftMarketSaleCountQueryParamOpts} queryParamOpts\n * - `days`: The number of days to return data for. Request up 365 days. Defaults to 30 days.\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n *\n */\n public async getNftMarketSaleCount(chainName: Chain | Chains | ChainID, contractAddress: string, queryParamOpts?: GetNftMarketSaleCountQueryParamOpts): Promise<Response<NftMarketSaleCountResponse>> {\n let success = false;\n let data: Response<NftMarketSaleCountResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NftMarketSaleCountResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.days !== undefined) {\n urlParams.append(\"days\", queryParamOpts?.days.toString());\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/nft_market/${contractAddress}/sale_count/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n \n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/nft_market/${contractAddress}/sale_count/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n \n const dataClass = new NftMarketSaleCountResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to build a time-series chart of the transaction volume of an NFT collection.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} contractAddress - The requested contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetNftMarketVolumeQueryParamOpts} queryParamOpts\n * - `days`: The number of days to return data for. Request up 365 days. Defaults to 30 days.\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n *\n */\n public async getNftMarketVolume(chainName: Chain | Chains | ChainID, contractAddress: string, queryParamOpts?: GetNftMarketVolumeQueryParamOpts): Promise<Response<NftMarketVolumeResponse>> {\n let success = false;\n let data: Response<NftMarketVolumeResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NftMarketVolumeResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.days !== undefined) {\n urlParams.append(\"days\", queryParamOpts?.days.toString());\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/nft_market/${contractAddress}/volume/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/nft_market/${contractAddress}/volume/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new NftMarketVolumeResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to render a price floor chart for an NFT collection.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} contractAddress - The requested contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetNftMarketFloorPriceQueryParamOpts} queryParamOpts\n * - `days`: The number of days to return data for. Request up 365 days. Defaults to 30 days.\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n *\n */\n public async getNftMarketFloorPrice(chainName: Chain | Chains | ChainID, contractAddress: string, queryParamOpts?: GetNftMarketFloorPriceQueryParamOpts): Promise<Response<NftMarketFloorPriceResponse>> {\n let success = false;\n let data: Response<NftMarketFloorPriceResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NftMarketFloorPriceResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.days !== undefined) {\n urlParams.append(\"days\", queryParamOpts?.days.toString());\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/nft_market/${contractAddress}/floor_price/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n } \n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/nft_market/${contractAddress}/floor_price/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n \n const dataClass = new NftMarketFloorPriceResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n\n}\n \n ","import { Chain, ChainID, Quote, Source, userAgent } from \"./CovalentClient\";\nimport { debugOutput } from \"../util/ApiHelpers\";\nimport { parseISO } from \"date-fns\";\nimport { ExponentialBackoff } from \"../util/backoff\";\nimport pLimit from \"p-limit\";\nimport { Chains } from \"../util/Chains\";\nimport { ApiKeyValidator } from \"../util/ApiKeyValidator\";\n\nclass TokenPricesResponse {\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The contract logo URL. */\n logo_url: string;\n update_at: Date;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The contract logo URLs. */\n logo_urls: LogoUrls;\n /** * List of response items. */\n prices: Price[];\n /** * List of response items. */\n items: Price[];\n\n constructor(data: TokenPricesResponse) {\n this.contract_decimals = data.contract_decimals;\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.supports_erc = data.supports_erc;\n this.logo_url = data.logo_url;\n this.update_at = data.update_at && data.update_at !== null ? parseISO(data.update_at.toString()) : null;\n this.quote_currency = data.quote_currency;\n this.logo_urls = data.logo_urls && data.logo_urls !== null ? new LogoUrls(data.logo_urls) : null;\n this.prices = data.prices && data.prices !== null ? data.prices.map((itemData: Price) => new Price(itemData)) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: Price) => new Price(itemData)) : null;\n }\n}\nclass LogoUrls {\n /** * The token logo URL. */\n token_logo_url: string;\n /** * The protocol logo URL. */\n protocol_logo_url: string;\n /** * The chain logo URL. */\n chain_logo_url: string;\n\n constructor(data: LogoUrls) {\n this.token_logo_url = data.token_logo_url;\n this.protocol_logo_url = data.protocol_logo_url;\n this.chain_logo_url = data.chain_logo_url;\n }\n}\nclass Price {\n contract_metadata: ContractMetadata;\n /** * The date of the price capture. */\n date: Date;\n /** * The price in the requested `quote-currency`. */\n price: number;\n /** * A prettier version of the price for rendering purposes. */\n pretty_price: string;\n\n constructor(data: Price) {\n this.date = data.date && data.date !== null ? parseISO(data.date.toString()) : null;\n this.price = data.price;\n this.pretty_price = data.pretty_price;\n this.contract_metadata = data.contract_metadata && data.contract_metadata !== null ? new ContractMetadata(data.contract_metadata) : null;\n }\n}\nclass ContractMetadata {\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The contract logo URL. */\n logo_url: string;\n\n constructor(data: ContractMetadata) {\n this.contract_decimals = data.contract_decimals;\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.supports_erc = data.supports_erc;\n this.logo_url = data.logo_url;\n \n }\n}\n\nexport interface GetTokenPricesQueryParamOpts {\n /** * The start day of the historical price range (YYYY-MM-DD). */\n from?: string;\n /** * The end day of the historical price range (YYYY-MM-DD). */\n to?: string;\n /** * Sort the prices in chronological ascending order. By default, it's set to `false` and returns prices in chronological descending order. */\n pricesAtAsc?: boolean;\n}\n/**\n * Pricing APIs\n * \n */\n\nexport class Response<T> {\n data: Array<T>;\n error: boolean;\n error_code: number;\n error_message: string;\n}\n\nexport class PricingService {\n private LIMIT;\n constructor(private apiKey: string, private debug: boolean = false, private threadCount: number = 3, private is_key_valid: boolean, private enableRetry: boolean = true, private source: Source) {\n this.LIMIT = pLimit(this.threadCount);\n }\n\n\n /**\n *\n * Commonly used to get historic prices of a token between date ranges. Supports native tokens.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} quoteCurrency - The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * @param {string} contractAddress - Contract address for the token. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically. Supports multiple contract addresses separated by commas.\n * @param {GetTokenPricesQueryParamOpts} queryParamOpts\n * - `from`: The start day of the historical price range (YYYY-MM-DD).\n * - `to`: The end day of the historical price range (YYYY-MM-DD).\n * - `pricesAtAsc`: Sort the prices in chronological ascending order. By default, it's set to `false` and returns prices in chronological descending order.\n *\n */\n public async getTokenPrices(chainName: Chain | Chains | ChainID, quoteCurrency: Quote, contractAddress: string, queryParamOpts?: GetTokenPricesQueryParamOpts): Promise<Response<TokenPricesResponse>> {\n let success = false;\n let data: Response<TokenPricesResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TokenPricesResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.from !== undefined) {\n urlParams.append(\"from\", queryParamOpts?.from.toString());\n }\n \n if (queryParamOpts?.to !== undefined) {\n urlParams.append(\"to\", queryParamOpts?.to.toString());\n }\n \n if (queryParamOpts?.pricesAtAsc !== undefined) {\n urlParams.append(\"prices-at-asc\", queryParamOpts?.pricesAtAsc.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/pricing/historical_by_addresses_v2/${chainName}/${quoteCurrency}/${contractAddress}/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/pricing/historical_by_addresses_v2/${chainName}/${quoteCurrency}/${contractAddress}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const res: TokenPricesResponse[] = [];\n data.data.forEach((e) => {\n const dataClass = new TokenPricesResponse(e);\n \n res.push(dataClass);\n });\n success = true;\n return {\n data: res,\n error: data.error,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n\n}\n \n ","import { Chain, Quote, userAgent, Response, ChainID, Source } from \"./CovalentClient\";\nimport { debugOutput } from \"../util/ApiHelpers\";\nimport { parseISO } from \"date-fns\";\nimport { ExponentialBackoff } from \"../util/backoff\";\nimport pLimit from \"p-limit\";\nimport { Chains } from \"../util/Chains\";\nimport { ApiKeyValidator } from \"../util/ApiKeyValidator\";\n\nclass TransactionResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: Transaction[];\n\n constructor(data: TransactionResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: Transaction) => new Transaction(itemData)) : null;\n }\n}\nclass Transaction {\n /** * The block signed timestamp in UTC. */\n block_signed_at: Date;\n /** * The height of the block. */\n block_height: number;\n /** * The hash of the block. Use it to remove transactions from re-org-ed blocks. */\n block_hash: string;\n /** * The requested transaction hash. */\n tx_hash: string;\n /** * The offset is the position of the tx in the block. */\n tx_offset: number;\n /** * Indicates whether a transaction failed or succeeded. */\n successful: boolean;\n /** * The sender's wallet address. */\n from_address: string;\n /** * The address of the miner. */\n miner_address: string;\n /** * The label of `from` address. */\n from_address_label: string;\n /** * The receiver's wallet address. */\n to_address: string;\n /** * The label of `to` address. */\n to_address_label: string;\n /** * The value attached to this tx. */\n value: bigint | null;\n /** * The value attached in `quote-currency` to this tx. */\n value_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_value_quote: string;\n /** * The requested chain native gas token metadata. */\n gas_metadata: ContractMetadata;\n gas_offered: number;\n /** * The gas spent for this tx. */\n gas_spent: number;\n /** * The gas price at the time of this tx. */\n gas_price: number;\n /** * The total transaction fees (`gas_price` * `gas_spent`) paid for this tx, denoted in wei. */\n fees_paid: bigint | null;\n /** * The gas spent in `quote-currency` denomination. */\n gas_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_gas_quote: string;\n /** * The native gas exchange rate for the requested `quote-currency`. */\n gas_quote_rate: number;\n /** * The explorer links for this transaction. */\n explorers: Explorer[];\n /** * The details for the dex transaction. */\n dex_details: DexReport[];\n /** * The details for the NFT sale transaction. */\n nft_sale_details: NftSalesReport[];\n /** * The details for the lending protocol transaction. */\n lending_details: LendingReport[];\n /** * The log events. */\n log_events: LogEvent[];\n /** * The details related to the safe transaction. */\n safe_details: SafeDetails[];\n\n constructor(data: Transaction) {\n this.block_signed_at = data.block_signed_at && data.block_signed_at !== null ? parseISO(data.block_signed_at.toString()) : null;\n this.block_height = data.block_height;\n this.block_hash = data.block_hash;\n this.tx_hash = data.tx_hash;\n this.tx_offset = data.tx_offset;\n this.successful = data.successful;\n this.from_address = data.from_address;\n this.miner_address = data.miner_address;\n this.from_address_label = data.from_address_label;\n this.to_address = data.to_address;\n this.to_address_label = data.to_address_label;\n this.value = data.value && data.value !== null ? BigInt(data.value) : null;\n this.value_quote = data.value_quote;\n this.pretty_value_quote = data.pretty_value_quote;\n this.gas_offered = data.gas_offered;\n this.gas_spent = data.gas_spent;\n this.gas_price = data.gas_price;\n this.fees_paid = data.fees_paid && data.fees_paid !== null ? BigInt(data.fees_paid) : null;\n this.gas_quote = data.gas_quote;\n this.pretty_gas_quote = data.pretty_gas_quote;\n this.gas_quote_rate = data.gas_quote_rate;\n this.gas_metadata = data.gas_metadata && data.gas_metadata !== null ? new ContractMetadata(data.gas_metadata) : null;\n this.explorers = data.explorers && data.explorers !== null ? data.explorers.map((itemData: Explorer) => new Explorer(itemData)) : null;\n this.dex_details = data.dex_details && data.dex_details !== null ? data.dex_details.map((itemData: DexReport) => new DexReport(itemData)) : null;\n this.nft_sale_details = data.nft_sale_details && data.nft_sale_details !== null ? data.nft_sale_details.map((itemData: NftSalesReport) => new NftSalesReport(itemData)) : null;\n this.lending_details = data.lending_details && data.lending_details !== null ? data.lending_details.map((itemData: LendingReport) => new LendingReport(itemData)) : null;\n this.log_events = data.log_events && data.log_events !== null ? data.log_events.map((itemData: LogEvent) => new LogEvent(itemData)) : null;\n this.safe_details = data.safe_details && data.safe_details !== null ? data.safe_details.map((itemData: SafeDetails) => new SafeDetails(itemData)) : null;\n }\n}\nclass ContractMetadata {\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The contract logo URL. */\n logo_url: string;\n\n constructor(data: ContractMetadata) {\n this.contract_decimals = data.contract_decimals;\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.supports_erc = data.supports_erc;\n this.logo_url = data.logo_url;\n \n }\n}\nclass Explorer {\n /** * The name of the explorer. */\n label: string;\n /** * The URL of the explorer. */\n url: string;\n\n constructor(data: Explorer) {\n this.label = data.label;\n this.url = data.url;\n \n }\n}\nclass DexReport {\n /** * The offset is the position of the log entry within an event log. */\n log_offset: number;\n /** * Stores the name of the protocol that facilitated the event. */\n protocol_name: string;\n /** * Stores the contract address of the protocol that facilitated the event. */\n protocol_address: string;\n /** * The protocol logo URL. */\n protocol_logo_url: string;\n /** * Stores the aggregator responsible for the event. */\n aggregator_name: string;\n /** * Stores the contract address of the aggregator responsible for the event. */\n aggregator_address: string;\n /** * DEXs often have multiple version - e.g Uniswap V1, V2 and V3. The `version` field allows you to look at a specific version of the DEX. */\n version: number;\n /** * Similarly to the `version` field, `fork_version` gives you the version of the forked DEX. For example, most DEXs are a fork of Uniswap V2; therefore, `fork` = `aave` & `fork_version` = `2` */\n fork_version: number;\n /** * Many DEXs are a fork of an already established DEX. The fork field allows you to see which DEX has been forked. */\n fork: string;\n /** * Stores the event taking place - e.g `swap`, `add_liquidity` and `remove_liquidity`. */\n event: string;\n /** * Stores the address of the pair that the user interacts with. */\n pair_address: string;\n pair_lp_fee_bps: number;\n lp_token_address: string;\n lp_token_ticker: string;\n lp_token_num_decimals: number;\n lp_token_name: string;\n lp_token_value: string;\n exchange_rate_usd: number;\n /** * Stores the address of token 0 in the specific pair. */\n token_0_address: string;\n /** * Stores the ticker symbol of token 0 in the specific pair. */\n token_0_ticker: string;\n /** * Stores the number of contract decimals of token 0 in the specific pair. */\n token_0_num_decimals: number;\n /** * Stores the contract name of token 0 in the specific pair. */\n token_0_name: string;\n /** * Stores the address of token 1 in the specific pair. */\n token_1_address: string;\n /** * Stores the ticker symbol of token 1 in the specific pair. */\n token_1_ticker: string;\n /** * Stores the number of contract decimals of token 1 in the specific pair. */\n token_1_num_decimals: number;\n /** * Stores the contract name of token 1 in the specific pair. */\n token_1_name: string;\n /** * Stores the amount of token 0 used in the transaction. For example, 1 ETH, 100 USDC, 30 UNI, etc. */\n token_0_amount: string;\n token_0_quote_rate: number;\n token_0_usd_quote: number;\n pretty_token_0_usd_quote: string;\n token_0_logo_url: string;\n /** * Stores the amount of token 1 used in the transaction. For example, 1 ETH, 100 USDC, 30 UNI, etc. */\n token_1_amount: string;\n token_1_quote_rate: number;\n token_1_usd_quote: number;\n pretty_token_1_usd_quote: string;\n token_1_logo_url: string;\n /** * Stores the wallet address that initiated the transaction (i.e the wallet paying the gas fee). */\n sender: string;\n /** * Stores the recipient of the transaction - recipients can be other wallets or smart contracts. For example, if you want to Swap tokens on Uniswap, the Uniswap router would typically be the recipient of the transaction. */\n recipient: string;\n\n constructor(data: DexReport) {\n this.log_offset = data.log_offset;\n this.protocol_name = data.protocol_name;\n this.protocol_address = data.protocol_address;\n this.protocol_logo_url = data.protocol_logo_url;\n this.aggregator_name = data.aggregator_name;\n this.aggregator_address = data.aggregator_address;\n this.version = data.version;\n this.fork_version = data.fork_version;\n this.fork = data.fork;\n this.event = data.event;\n this.pair_address = data.pair_address;\n this.pair_lp_fee_bps = data.pair_lp_fee_bps;\n this.lp_token_address = data.lp_token_address;\n this.lp_token_ticker = data.lp_token_ticker;\n this.lp_token_num_decimals = data.lp_token_num_decimals;\n this.lp_token_name = data.lp_token_name;\n this.lp_token_value = data.lp_token_value;\n this.exchange_rate_usd = data.exchange_rate_usd;\n this.token_0_address = data.token_0_address;\n this.token_0_ticker = data.token_0_ticker;\n this.token_0_num_decimals = data.token_0_num_decimals;\n this.token_0_name = data.token_0_name;\n this.token_1_address = data.token_1_address;\n this.token_1_ticker = data.token_1_ticker;\n this.token_1_num_decimals = data.token_1_num_decimals;\n this.token_1_name = data.token_1_name;\n this.token_0_amount = data.token_0_amount;\n this.token_0_quote_rate = data.token_0_quote_rate;\n this.token_0_usd_quote = data.token_0_usd_quote;\n this.pretty_token_0_usd_quote = data.pretty_token_0_usd_quote;\n this.token_0_logo_url = data.token_0_logo_url;\n this.token_1_amount = data.token_1_amount;\n this.token_1_quote_rate = data.token_1_quote_rate;\n this.token_1_usd_quote = data.token_1_usd_quote;\n this.pretty_token_1_usd_quote = data.pretty_token_1_usd_quote;\n this.token_1_logo_url = data.token_1_logo_url;\n this.sender = data.sender;\n this.recipient = data.recipient;\n \n }\n}\nclass NftSalesReport {\n /** * The offset is the position of the log entry within an event log. */\n log_offset: number;\n /** * Stores the topic event hash. All events have a unique topic event hash. */\n topic0: string;\n /** * Stores the contract address of the protocol that facilitated the event. */\n protocol_contract_address: string;\n /** * Stores the name of the protocol that facilitated the event. */\n protocol_name: string;\n /** * The protocol logo URL. */\n protocol_logo_url: string;\n /** * Stores the address of the transaction recipient. */\n to: string;\n /** * Stores the address of the transaction sender. */\n from: string;\n /** * Stores the address selling the NFT. */\n maker: string;\n /** * Stores the address buying the NFT. */\n taker: string;\n /** * Stores the NFTs token ID. All NFTs have a token ID. Within a collection, these token IDs are unique. If the NFT is transferred to another owner, the token id remains the same, as this number is its identifier within a collection. For example, if a collection has 10K NFTs then an NFT in that collection can have a token ID from 1-10K. */\n token_id: string;\n /** * Stores the address of the collection. For example, [Bored Ape Yacht Club](https://etherscan.io/token/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d) */\n collection_address: string;\n /** * Stores the name of the collection. */\n collection_name: string;\n /** * Stores the address of the token used to purchase the NFT. */\n token_address: string;\n /** * Stores the name of the token used to purchase the NFT. */\n token_name: string;\n /** * Stores the ticker symbol of the token used to purchase the NFT. */\n ticker_symbol: string;\n /** * Stores the number decimal of the token used to purchase the NFT. */\n num_decimals: number;\n contract_quote_rate: number;\n /** * The token amount used to purchase the NFT. For example, if the user purchased an NFT for 1 ETH. The `nft_token_price` field will hold `1`. */\n nft_token_price: number;\n /** * The USD amount used to purchase the NFT. */\n nft_token_price_usd: number;\n pretty_nft_token_price_usd: string;\n /** * The price of the NFT denominated in the chains native token. Even if a seller sells their NFT for DAI or MANA, this field denominates the price in the native token (e.g. ETH, AVAX, FTM, etc.) */\n nft_token_price_native: number;\n pretty_nft_token_price_native: string;\n /** * Stores the number of NFTs involved in the sale. It's quick routine to see multiple NFTs involved in a single sale. */\n token_count: number;\n num_token_ids_sold_per_sale: number;\n num_token_ids_sold_per_tx: number;\n num_collections_sold_per_sale: number;\n num_collections_sold_per_tx: number;\n trade_type: string;\n trade_group_type: string;\n\n constructor(data: NftSalesReport) {\n this.log_offset = data.log_offset;\n this.topic0 = data.topic0;\n this.protocol_contract_address = data.protocol_contract_address;\n this.protocol_name = data.protocol_name;\n this.protocol_logo_url = data.protocol_logo_url;\n this.to = data.to;\n this.from = data.from;\n this.maker = data.maker;\n this.taker = data.taker;\n this.token_id = data.token_id;\n this.collection_address = data.collection_address;\n this.collection_name = data.collection_name;\n this.token_address = data.token_address;\n this.token_name = data.token_name;\n this.ticker_symbol = data.ticker_symbol;\n this.num_decimals = data.num_decimals;\n this.contract_quote_rate = data.contract_quote_rate;\n this.nft_token_price = data.nft_token_price;\n this.nft_token_price_usd = data.nft_token_price_usd;\n this.pretty_nft_token_price_usd = data.pretty_nft_token_price_usd;\n this.nft_token_price_native = data.nft_token_price_native;\n this.pretty_nft_token_price_native = data.pretty_nft_token_price_native;\n this.token_count = data.token_count;\n this.num_token_ids_sold_per_sale = data.num_token_ids_sold_per_sale;\n this.num_token_ids_sold_per_tx = data.num_token_ids_sold_per_tx;\n this.num_collections_sold_per_sale = data.num_collections_sold_per_sale;\n this.num_collections_sold_per_tx = data.num_collections_sold_per_tx;\n this.trade_type = data.trade_type;\n this.trade_group_type = data.trade_group_type;\n \n }\n}\nclass LendingReport {\n /** * The offset is the position of the log entry within an event log. */\n log_offset: number;\n /** * Stores the name of the lending protocol that facilitated the event. */\n protocol_name: string;\n /** * Stores the contract address of the lending protocol that facilitated the event. */\n protocol_address: string;\n /** * The protocol logo URL. */\n protocol_logo_url: string;\n /** * Lending protocols often have multiple version (e.g. Aave V1, V2 and V3). The `version` field allows you to look at a specific version of the Lending protocol. */\n version: string;\n /** * Many lending protocols are a fork of an already established protocol. The fork column allows you to see which lending protocol has been forked. */\n fork: string;\n /** * Similarly to the `version` column, `fork_version` gives you the version of the forked lending protocol. For example, most lending protocols in the space are a fork of Aave V2; therefore, `fork` = `aave` & `fork_version` = `2` */\n fork_version: string;\n /** * Stores the event taking place - e.g `borrow`, `deposit`, `liquidation`, 'repay' and 'withdraw'. */\n event: string;\n /** * Stores the name of the LP token issued by the lending protocol. LP tokens can be debt or interest bearing tokens. */\n lp_token_name: string;\n /** * Stores the number decimal of the LP token. */\n lp_decimals: number;\n /** * Stores the ticker symbol of the LP token. */\n lp_ticker_symbol: string;\n /** * Stores the token address of the LP token. */\n lp_token_address: string;\n /** * Stores the amount of LP token used in the event (e.g. 1 aETH, 100 cUSDC, etc). */\n lp_token_amount: number;\n /** * Stores the total USD amount of all the LP Token used in the event. */\n lp_token_price: number;\n /** * Stores the exchange rate between the LP and underlying token. */\n exchange_rate: number;\n /** * Stores the USD price of the LP Token used in the event. */\n exchange_rate_usd: number;\n /** * Stores the name of the token going into the lending protocol (e.g the token getting deposited). */\n token_name_in: string;\n /** * Stores the number decimal of the token going into the lending protocol. */\n token_decimal_in: number;\n /** * Stores the address of the token going into the lending protocol. */\n token_address_in: string;\n /** * Stores the ticker symbol of the token going into the lending protocol. */\n token_ticker_in: string;\n /** * Stores the logo URL of the token going into the lending protocol. */\n token_logo_in: string;\n /** * Stores the amount of tokens going into the lending protocol (e.g 1 ETH, 100 USDC, etc). */\n token_amount_in: number;\n /** * Stores the total USD amount of all tokens going into the lending protocol. */\n amount_in_usd: number;\n pretty_amount_in_usd: string;\n /** * Stores the name of the token going out of the lending protocol (e.g the token getting deposited). */\n token_name_out: string;\n /** * Stores the number decimal of the token going out of the lending protocol. */\n token_decimals_out: number;\n /** * Stores the address of the token going out of the lending protocol. */\n token_address_out: string;\n /** * Stores the ticker symbol of the token going out of the lending protocol. */\n token_ticker_out: string;\n /** * Stores the logo URL of the token going out of the lending protocol. */\n token_logo_out: string;\n /** * Stores the amount of tokens going out of the lending protocol (e.g 1 ETH, 100 USDC, etc). */\n token_amount_out: number;\n /** * Stores the total USD amount of all tokens going out of the lending protocol. */\n amount_out_usd: number;\n pretty_amount_out_usd: string;\n /** * Stores the type of loan the user is taking out. Lending protocols enable you to take out a stable or variable loan. Only relevant to borrow events. */\n borrow_rate_mode: number;\n /** * Stores the interest rate of the loan. Only relevant to borrow events. */\n borrow_rate: number;\n on_behalf_of: string;\n /** * Stores the wallet address liquidating the loan. Only relevant to liquidation events. */\n liquidator: string;\n /** * Stores the wallet address of the user initiating the event. */\n user: string;\n\n constructor(data: LendingReport) {\n this.log_offset = data.log_offset;\n this.protocol_name = data.protocol_name;\n this.protocol_address = data.protocol_address;\n this.protocol_logo_url = data.protocol_logo_url;\n this.version = data.version;\n this.fork = data.fork;\n this.fork_version = data.fork_version;\n this.event = data.event;\n this.lp_token_name = data.lp_token_name;\n this.lp_decimals = data.lp_decimals;\n this.lp_ticker_symbol = data.lp_ticker_symbol;\n this.lp_token_address = data.lp_token_address;\n this.lp_token_amount = data.lp_token_amount;\n this.lp_token_price = data.lp_token_price;\n this.exchange_rate = data.exchange_rate;\n this.exchange_rate_usd = data.exchange_rate_usd;\n this.token_name_in = data.token_name_in;\n this.token_decimal_in = data.token_decimal_in;\n this.token_address_in = data.token_address_in;\n this.token_ticker_in = data.token_ticker_in;\n this.token_logo_in = data.token_logo_in;\n this.token_amount_in = data.token_amount_in;\n this.amount_in_usd = data.amount_in_usd;\n this.pretty_amount_in_usd = data.pretty_amount_in_usd;\n this.token_name_out = data.token_name_out;\n this.token_decimals_out = data.token_decimals_out;\n this.token_address_out = data.token_address_out;\n this.token_ticker_out = data.token_ticker_out;\n this.token_logo_out = data.token_logo_out;\n this.token_amount_out = data.token_amount_out;\n this.amount_out_usd = data.amount_out_usd;\n this.pretty_amount_out_usd = data.pretty_amount_out_usd;\n this.borrow_rate_mode = data.borrow_rate_mode;\n this.borrow_rate = data.borrow_rate;\n this.on_behalf_of = data.on_behalf_of;\n this.liquidator = data.liquidator;\n this.user = data.user;\n \n }\n}\nclass LogEvent {\n /** * The block signed timestamp in UTC. */\n block_signed_at: Date;\n /** * The height of the block. */\n block_height: number;\n /** * The offset is the position of the tx in the block. */\n tx_offset: number;\n /** * The offset is the position of the log entry within an event log. */\n log_offset: number;\n /** * The requested transaction hash. */\n tx_hash: string;\n /** * The log topics in raw data. */\n raw_log_topics: string[];\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n sender_contract_decimals: number;\n /** * The name of the sender. */\n sender_name: string;\n sender_contract_ticker_symbol: string;\n /** * The address of the sender. */\n sender_address: string;\n /** * The label of the sender address. */\n sender_address_label: string;\n /** * The contract logo URL. */\n sender_logo_url: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The address of the deployed UniswapV2 like factory contract for this DEX. */\n sender_factory_address: string;\n /** * The log events in raw. */\n raw_log_data: string;\n /** * The decoded item. */\n decoded: DecodedItem;\n\n constructor(data: LogEvent) {\n this.block_signed_at = data.block_signed_at && data.block_signed_at !== null ? parseISO(data.block_signed_at.toString()) : null;\n this.block_height = data.block_height;\n this.tx_offset = data.tx_offset;\n this.log_offset = data.log_offset;\n this.tx_hash = data.tx_hash;\n this.raw_log_topics = data.raw_log_topics;\n this.sender_contract_decimals = data.sender_contract_decimals;\n this.sender_name = data.sender_name;\n this.sender_contract_ticker_symbol = data.sender_contract_ticker_symbol;\n this.sender_address = data.sender_address;\n this.sender_address_label = data.sender_address_label;\n this.sender_logo_url = data.sender_logo_url;\n this.supports_erc = data.supports_erc;\n this.sender_factory_address = data.sender_factory_address;\n this.raw_log_data = data.raw_log_data;\n this.decoded = data.decoded && data.decoded !== null ? new DecodedItem(data.decoded) : null;\n }\n}\nclass SafeDetails {\n /** * The address that signed the safe transaction. */\n owner_address: string;\n /** * The signature of the owner for the safe transaction. */\n signature: string;\n /** * The type of safe signature used. */\n signature_type: string;\n\n constructor(data: SafeDetails) {\n this.owner_address = data.owner_address;\n this.signature = data.signature;\n this.signature_type = data.signature_type;\n \n }\n}\nclass DecodedItem {\n name: string;\n signature: string;\n params: Param[];\n\n constructor(data: DecodedItem) {\n this.name = data.name;\n this.signature = data.signature;\n this.params = data.params && data.params !== null ? data.params.map((itemData: Param) => new Param(itemData)) : null;\n }\n}\nclass Param {\n name: string;\n type: string;\n indexed: boolean;\n decoded: boolean;\n value: string;\n\n constructor(data: Param) {\n this.name = data.name;\n this.type = data.type;\n this.indexed = data.indexed;\n this.decoded = data.decoded;\n this.value = data.value;\n \n }\n}\nclass RecentTransactionsResponse {\n /** * The requested address. */\n address: string;\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * The current page of the response. */\n current_page: number;\n links: PaginationLinks;\n /** * List of response items. */\n items: Transaction[];\n\n constructor(data: RecentTransactionsResponse, private _debug: boolean, private _apiKey: string, private _threadCount: number, private _urlParams: URLSearchParams, private _enableRetry: boolean, private _source: Source) {\n this.address = data.address;\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.quote_currency = data.quote_currency;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.current_page = data.current_page;\n this.links = data.links && data.links !== null ? new PaginationLinks(data.links) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: Transaction) => new Transaction(itemData)) : null;\n }\n\n async prev(): Promise<Response<RecentTransactionsResponse>> {\n let success = false;\n let data: Response<RecentTransactionsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<RecentTransactionsResponse>>(this._apiKey, this._debug);\n const LIMIT = pLimit(this._threadCount);\n while (!success) {\n try {\n\n let startTime;\n if (this._debug) {\n startTime = new Date();\n }\n\n if (this.links.prev === null) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: 400,\n error_message: \"Invalid URL: URL link cannot be null\"\n }\n }\n\n const url = `${this.links.prev}?${this._urlParams}`;\n\n response = await LIMIT(() => fetch(`${this.links.prev}?${this._urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this._apiKey}`,\n \"X-Requested-With\": this._source ? this._source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this._enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await LIMIT(() => backoff.backOff(response ? response.url : url, this._source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new RecentTransactionsResponse(data.data, this._debug, this._apiKey, this._threadCount, this._urlParams, this._enableRetry, this._source);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n async next(): Promise<Response<RecentTransactionsResponse>> {\n let success = false;\n let data: Response<RecentTransactionsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<RecentTransactionsResponse>>(this._apiKey, this._debug);\n const LIMIT = pLimit(this._threadCount);\n while (!success) {\n try {\n\n let startTime;\n if (this._debug) {\n startTime = new Date();\n }\n\n if (this.links.next === null) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: 400,\n error_message: \"Invalid URL: URL link cannot be null\"\n }\n }\n\n const url = `${this.links.next}?${this._urlParams}`;\n\n response = await LIMIT(() => fetch(`${this.links.next}?${this._urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this._apiKey}`,\n \"X-Requested-With\": this._source ? this._source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this._enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await LIMIT(() => backoff.backOff(response ? response.url : url, this._source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new RecentTransactionsResponse(data.data, this._debug, this._apiKey, this._threadCount, this._urlParams, this._enableRetry, this._source);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n}\nclass PaginationLinks {\n /** * URL link to the next page. */\n prev: string;\n /** * URL link to the previous page. */\n next: string;\n\n constructor(data: PaginationLinks) {\n this.prev = data.prev;\n this.next = data.next; \n }\n}\nclass TransactionsBlockPageResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n links: PaginationLinks;\n /** * List of response items. */\n items: Transaction[];\n\n constructor(data: TransactionsBlockPageResponse, private _debug: boolean, private _apiKey: string, private _threadCount: number, private _urlParams: URLSearchParams, private _enableRetry: boolean, private _source: Source) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.links = data.links && data.links !== null ? new PaginationLinks(data.links) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: Transaction) => new Transaction(itemData)) : null;\n }\n\n async prev(): Promise<Response<TransactionsBlockPageResponse>> {\n let success = false;\n let data: Response<TransactionsBlockPageResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsBlockPageResponse>>(this._apiKey, this._debug);\n const LIMIT = pLimit(this._threadCount);\n while (!success) {\n try {\n\n let startTime;\n if (this._debug) {\n startTime = new Date();\n }\n\n if (this.links.prev === null) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: 400,\n error_message: \"Invalid URL: URL link cannot be null\"\n }\n }\n\n const url = `${this.links.prev}?${this._urlParams}`;\n\n response = await LIMIT(() => fetch(`${this.links.prev}?${this._urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this._apiKey}`,\n \"X-Requested-With\": this._source ? this._source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this._enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await LIMIT(() => backoff.backOff(response ? response.url : url, this._source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionsBlockPageResponse(data.data, this._debug, this._apiKey, this._threadCount, this._urlParams, this._enableRetry, this._source);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n async next(): Promise<Response<TransactionsBlockPageResponse>> {\n let success = false;\n let data: Response<TransactionsBlockPageResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsBlockPageResponse>>(this._apiKey, this._debug);\n const LIMIT = pLimit(this._threadCount);\n while (!success) {\n try {\n\n let startTime;\n if (this._debug) {\n startTime = new Date();\n }\n\n if (this.links.next === null) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: 400,\n error_message: \"Invalid URL: URL link cannot be null\"\n }\n }\n\n const url = `${this.links.next}?${this._urlParams}`;\n\n response = await LIMIT(() => fetch(`${this.links.next}?${this._urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this._apiKey}`,\n \"X-Requested-With\": this._source ? this._source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this._enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await LIMIT(() => backoff.backOff(response ? response.url : url, this._source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionsBlockPageResponse(data.data, this._debug, this._apiKey, this._threadCount, this._urlParams, this._enableRetry, this._source);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n\n}\nclass TransactionsBlockResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: Transaction[];\n\n constructor(data: TransactionsBlockResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: Transaction) => new Transaction(itemData)) : null;\n }\n}\nclass TransactionsSummaryResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested address. */\n address: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: TransactionsSummary[];\n\n constructor(data: TransactionsSummaryResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.address = data.address;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: TransactionsSummary) => new TransactionsSummary(itemData)) : null;\n }\n}\nclass GasSummary {\n /** * The total number of transactions sent by the address. */\n total_sent_count: number;\n /** * The total transaction fees paid by the address, denoted in wei. */\n total_fees_paid: bigint | null;\n /** * The total transaction fees paid by the address, denoted in `quote-currency`. */\n total_gas_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_total_gas_quote: string;\n /** * The average gas quote per transaction. */\n average_gas_quote_per_tx: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_average_gas_quote_per_tx: string;\n /** * The requested chain native gas token metadata. */\n gas_metadata: ContractMetadata;\n\n constructor(data: GasSummary) {\n this.total_sent_count = data.total_sent_count;\n this.total_fees_paid = data.total_fees_paid && data.total_fees_paid !== null ? BigInt(data.total_fees_paid) : null;\n this.total_gas_quote = data.total_gas_quote;\n this.pretty_total_gas_quote = data.pretty_total_gas_quote;\n this.average_gas_quote_per_tx = data.average_gas_quote_per_tx;\n this.pretty_average_gas_quote_per_tx = data.pretty_average_gas_quote_per_tx;\n this.gas_metadata = data.gas_metadata && data.gas_metadata !== null ? new ContractMetadata(data.gas_metadata) : null;\n }\n}\nclass TransactionsSummary {\n /** * The total number of transactions. */\n total_count: number;\n /** * The earliest transaction detected. */\n earliest_transaction: TransactionSummary;\n /** * The latest transaction detected. */\n latest_transaction: TransactionSummary;\n /** * The gas summary for the transactions. */\n gas_summary: GasSummary;\n\n constructor(data: TransactionsSummary) {\n this.total_count = data.total_count;\n this.earliest_transaction = data.earliest_transaction && data.earliest_transaction !== null ? new TransactionSummary(data.earliest_transaction) : null;\n this.latest_transaction = data.latest_transaction && data.latest_transaction !== null ? new TransactionSummary(data.latest_transaction) : null;\n this.gas_summary = data.gas_summary && data.gas_summary !== null ? new GasSummary(data.gas_summary) : null;\n }\n}\nclass TransactionSummary {\n /** * The block signed timestamp in UTC. */\n block_signed_at: Date;\n /** * The requested transaction hash. */\n tx_hash: string;\n /** * The link to the transaction details using the Covalent API. */\n tx_detail_link: string;\n\n constructor(data: TransactionSummary) {\n this.block_signed_at = data.block_signed_at && data.block_signed_at !== null ? parseISO(data.block_signed_at.toString()) : null;\n this.tx_hash = data.tx_hash;\n this.tx_detail_link = data.tx_detail_link;\n \n }\n}\nclass TransactionsResponse {\n /** * The requested address. */\n address: string;\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * The current page of the response. */\n current_page: number;\n links: PaginationLinks;\n /** * List of response items. */\n items: Transaction[];\n\n constructor(data: TransactionsResponse, private _debug: boolean, private _apiKey: string, private _threadCount: number, private _urlParams: URLSearchParams, private _enableRetry: boolean, private _source: Source) {\n this.address = data.address;\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.quote_currency = data.quote_currency;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.current_page = data.current_page;\n this.links = data.links && data.links !== null ? new PaginationLinks(data.links) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: Transaction) => new Transaction(itemData)) : null;\n }\n\n async prev(): Promise<Response<TransactionsResponse>> {\n let success = false;\n let data: Response<TransactionsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsResponse>>(this._apiKey, this._debug);\n const LIMIT = pLimit(this._threadCount);\n while (!success) {\n try {\n\n let startTime;\n if (this._debug) {\n startTime = new Date();\n }\n\n if (this.links.prev === null) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: 400,\n error_message: \"Invalid URL: URL link cannot be null\"\n }\n }\n\n const url = `${this.links.prev}?${this._urlParams}`;\n\n response = await LIMIT(() => fetch(`${this.links.prev}?${this._urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this._apiKey}`,\n \"X-Requested-With\": this._source ? this._source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this._enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await LIMIT(() => backoff.backOff(response ? response.url : url, this._source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionsResponse(data.data, this._debug, this._apiKey, this._threadCount, this._urlParams, this._enableRetry, this._source);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n async next(): Promise<Response<TransactionsResponse>> {\n let success = false;\n let data: Response<TransactionsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsResponse>>(this._apiKey, this._debug);\n const LIMIT = pLimit(this._threadCount);\n while (!success) {\n try {\n\n let startTime;\n if (this._debug) {\n startTime = new Date();\n }\n\n if (this.links.next === null) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: 400,\n error_message: \"Invalid URL: URL link cannot be null\"\n }\n }\n\n const url = `${this.links.next}?${this._urlParams}`;\n\n response = await LIMIT(() => fetch(`${this.links.next}?${this._urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this._apiKey}`,\n \"X-Requested-With\": this._source ? this._source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this._enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await LIMIT(() => backoff.backOff(response ? response.url : url, this._source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionsResponse(data.data, this._debug, this._apiKey, this._threadCount, this._urlParams, this._enableRetry, this._source);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n}\nclass TransactionsTimeBucketResponse {\n /** * The requested address. */\n address: string;\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n complete: boolean;\n /** * The current bucket of the response. */\n current_bucket: number;\n links: PaginationLinks;\n /** * List of response items. */\n items: Transaction[];\n\n constructor(data: TransactionsTimeBucketResponse, private _debug: boolean, private _apiKey: string, private _threadCount: number, private _urlParams: URLSearchParams, private _enableRetry: boolean, private _source: Source) {\n this.address = data.address;\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.quote_currency = data.quote_currency;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.complete = data.complete;\n this.current_bucket = data.current_bucket;\n this.links = data.links && data.links !== null ? new PaginationLinks(data.links) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: Transaction) => new Transaction(itemData)) : null;\n }\n\n async prev(): Promise<Response<TransactionsTimeBucketResponse>> {\n let success = false;\n let data: Response<TransactionsTimeBucketResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsTimeBucketResponse>>(this._apiKey, this._debug);\n const LIMIT = pLimit(this._threadCount);\n while (!success) {\n try {\n\n let startTime;\n if (this._debug) {\n startTime = new Date();\n }\n\n if (this.links.prev === null) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: 400,\n error_message: \"Invalid URL: URL link cannot be null\"\n }\n }\n\n const url = `${this.links.prev}?${this._urlParams}`;\n\n response = await LIMIT(() => fetch(`${this.links.prev}?${this._urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this._apiKey}`,\n \"X-Requested-With\": this._source ? this._source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this._enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await LIMIT(() => backoff.backOff(response ? response.url : url, this._source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionsTimeBucketResponse(data.data, this._debug, this._apiKey, this._threadCount, this._urlParams, this._enableRetry, this._source);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n async next(): Promise<Response<TransactionsTimeBucketResponse>> {\n let success = false;\n let data: Response<TransactionsTimeBucketResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsTimeBucketResponse>>(this._apiKey, this._debug);\n const LIMIT = pLimit(this._threadCount);\n while (!success) {\n try {\n\n let startTime;\n if (this._debug) {\n startTime = new Date();\n }\n\n if (this.links.next === null) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: 400,\n error_message: \"Invalid URL: URL link cannot be null\"\n }\n }\n\n const url = `${this.links.next}?${this._urlParams}`;\n\n response = await LIMIT(() => fetch(`${this.links.next}?${this._urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this._apiKey}`,\n \"X-Requested-With\": this._source ? this._source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this._enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await LIMIT(() => backoff.backOff(response ? response.url : url, this._source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionsTimeBucketResponse(data.data, this._debug, this._apiKey, this._threadCount, this._urlParams, this._enableRetry, this._source);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n}\n\nexport interface GetTransactionQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * Omit log events. */\n noLogs?: boolean;\n /** * Decoded DEX details including protocol (e.g. Uniswap), event (e.g 'add_liquidity') and tokens involved with historical prices. Additional 0.05 credits charged if data available. */\n withDex?: boolean;\n /** * Decoded NFT sales details including marketplace (e.g. Opensea) and cached media links. Additional 0.05 credits charged if data available. */\n withNftSales?: boolean;\n /** * Decoded lending details including protocol (e.g. Aave), event (e.g. 'deposit') and tokens involved with prices. Additional 0.05 credits charged if data available. */\n withLending?: boolean;\n /** * Include safe details. */\n withSafe?: boolean;\n}\nexport interface GetAllTransactionsForAddressQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * Omit log events. */\n noLogs?: boolean;\n /** * Sort the transactions in ascending chronological order. By default, it's set to `false` and returns transactions in descending chronological order. */\n blockSignedAtAsc?: boolean;\n /** * Include safe details. */\n withSafe?: boolean;\n}\nexport interface GetTransactionsForBlockQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * Omit log events. */\n noLogs?: boolean;\n /** * Include safe details. */\n withSafe?: boolean;\n}\nexport interface GetTransactionsForAddressV3QueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * Omit log events. */\n noLogs?: boolean;\n /** * Sort the transactions in ascending chronological order. By default, it's set to `false` and returns transactions in descending chronological order. */\n blockSignedAtAsc?: boolean;\n /** * Include safe details. */\n withSafe?: boolean;\n}\nexport interface GetTimeBucketTransactionsForAddressQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * Omit log events. */\n noLogs?: boolean;\n /** * Include safe details. */\n withSafe?: boolean;\n}\nexport interface GetTransactionsForBlockHashByPageQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * Omit log events. */\n noLogs?: boolean;\n /** * Include safe details. */\n withSafe?: boolean;\n}\nexport interface GetTransactionsForBlockHashQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * Omit log events. */\n noLogs?: boolean;\n /** * Include safe details. */\n withSafe?: boolean;\n}\nexport interface GetTransactionSummaryQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * Include gas summary details. Additional charge of 1 credit when true. Response times may be impacted for wallets with millions of transactions. */\n withGas?: boolean;\n}\n\n/**\n * Transactions APIs\n * \n */\n\nasync function* paginateEndpoint(url: string, apiKey: string, urlsParams: URLSearchParams, debug: boolean, threadCount: number, enableRetry: boolean, source: Source): AsyncIterable<Transaction> {\n let hasNext = true;\n let response: globalThis.Response;\n let data: Response<RecentTransactionsResponse>;\n const backoff = new ExponentialBackoff<Response<RecentTransactionsResponse>>(apiKey, debug);\n const LIMIT = pLimit(threadCount);\n while (hasNext) {\n try {\n\n let startTime;\n if (debug) {\n startTime = new Date();\n }\n\n response = await LIMIT(() => fetch(`${url}?${urlsParams}`, {\n headers: {\n \"Authorization\": `Bearer ${apiKey}`,\n \"X-Requested-With\": source ? source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n \n if ((enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await LIMIT(() => backoff.backOff(response ? response.url : `${url}?${urlsParams}`, this.source));\n } catch (error) {\n hasNext = false;\n throw new Error(`An error occurred ${response ? response.status : 429}: ${error.message}`);\n }\n } else {\n data = await response.json();\n }\n \n for (const tx of data.data.items) {\n const dataClass = new Transaction(tx);\n \n yield dataClass;\n }\n backoff.setNumAttempts(1);\n if (!data.error) {\n if ((data.data !== null) && data.data.links.prev === null) {\n hasNext = false;\n }\n url = data.data !== null ? data.data.links.prev : \"\";\n } else {\n hasNext = false;\n }\n\n } catch (error) {\n hasNext = false;\n if (error.message.includes(\"An error occurred 429\")) {\n throw new Error(error.message);\n }\n throw new Error(`An error occurred ${data ? data.error_code : response ? response.status : \"Unknown Error Code\"}: ${data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : \"Unknown Error\"}`);\n }\n }\n \n}\n \nexport class TransactionService {\n private LIMIT;\n constructor(private apiKey: string, private debug: boolean = false, private threadCount: number = 3, private is_key_valid: boolean, private enableRetry: boolean = true, private source: Source) {\n this.LIMIT = pLimit(this.threadCount);\n }\n\n\n /**\n *\n * Commonly used to fetch and render a single transaction including its decoded log events. Additionally return semantically decoded information for DEX trades, lending and NFT sales.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} txHash - The transaction hash.\n * @param {GetTransactionQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `noLogs`: Omit log events.\n * - `withDex`: Decoded DEX details including protocol (e.g. Uniswap), event (e.g 'add_liquidity') and tokens involved with historical prices. Additional 0.05 credits charged if data available.\n * - `withNftSales`: Decoded NFT sales details including marketplace (e.g. Opensea) and cached media links. Additional 0.05 credits charged if data available.\n * - `withLending`: Decoded lending details including protocol (e.g. Aave), event (e.g. 'deposit') and tokens involved with prices. Additional 0.05 credits charged if data available.\n * - `withSafe`: Include safe details.\n * \n */\n public async getTransaction(chainName: Chain | Chains | ChainID, txHash: string, queryParamOpts?: GetTransactionQueryParamOpts): Promise<Response<TransactionResponse>> {\n let success = false;\n let data: Response<TransactionResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.noLogs !== undefined) {\n urlParams.append(\"no-logs\", queryParamOpts?.noLogs.toString());\n }\n \n if (queryParamOpts?.withDex !== undefined) {\n urlParams.append(\"with-dex\", queryParamOpts?.withDex.toString());\n }\n \n if (queryParamOpts?.withNftSales !== undefined) {\n urlParams.append(\"with-nft-sales\", queryParamOpts?.withNftSales.toString());\n }\n \n if (queryParamOpts?.withLending !== undefined) {\n urlParams.append(\"with-lending\", queryParamOpts?.withLending.toString());\n }\n\n if (queryParamOpts?.withSafe !== undefined) {\n urlParams.append(\"with-safe\", queryParamOpts?.withSafe.toString());\n }\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/transaction_v2/${txHash}/?${urlParams}`;\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/transaction_v2/${txHash}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to fetch and render the most recent transactions involving an address. Frequently seen in wallet applications.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetAllTransactionsForAddressQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `noLogs`: Omit log events.\n * - `blockSignedAtAsc`: Sort the transactions in ascending chronological order. By default, it's set to `false` and returns transactions in descending chronological order.\n * - `withSafe`: Include safe details.\n * \n */\n public async* getAllTransactionsForAddress(chainName: Chain | Chains | ChainID, walletAddress: string, queryParamOpts?: GetAllTransactionsForAddressQueryParamOpts): AsyncIterable<Transaction> {\n let success = false;\n let tx: Transaction;\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n throw new Error(`An error occurred 401: ${ApiKeyValidator.INVALID_API_KEY_MESSAGE}`);\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.noLogs !== undefined) {\n urlParams.append(\"no-logs\", queryParamOpts?.noLogs.toString());\n }\n \n if (queryParamOpts?.blockSignedAtAsc !== undefined) {\n urlParams.append(\"block-signed-at-asc\", queryParamOpts?.blockSignedAtAsc.toString());\n }\n\n if (queryParamOpts?.withSafe !== undefined) {\n urlParams.append(\"with-safe\", queryParamOpts?.withSafe.toString());\n }\n\n for await (tx of paginateEndpoint(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transactions_v3/`, this.apiKey, urlParams, this.debug, this.threadCount, this.enableRetry, this.source)) {\n yield tx;\n }\n\n success = true;\n } catch (error) {\n success = true;\n throw new Error(error.message);\n }\n }\n }\n\n /**\n *\n * Commonly used to fetch and render the most recent transactions involving an address. Frequently seen in wallet applications.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetAllTransactionsForAddressQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `noLogs`: Omit log events.\n * - `blockSignedAtAsc`: Sort the transactions in ascending chronological order. By default, it's set to `false` and returns transactions in descending chronological order.\n * - `withSafe`: Include safe details.\n * \n */\n public async getAllTransactionsForAddressByPage(chainName: Chain | Chains | ChainID, walletAddress: string, queryParamOpts?: GetAllTransactionsForAddressQueryParamOpts): Promise<Response<RecentTransactionsResponse>> {\n let success = false;\n let data: Response<RecentTransactionsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<RecentTransactionsResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.noLogs !== undefined) {\n urlParams.append(\"no-logs\", queryParamOpts?.noLogs.toString());\n }\n \n if (queryParamOpts?.blockSignedAtAsc !== undefined) {\n urlParams.append(\"block-signed-at-asc\", queryParamOpts?.blockSignedAtAsc.toString());\n }\n\n if (queryParamOpts?.withSafe !== undefined) {\n urlParams.append(\"with-safe\", queryParamOpts?.withSafe.toString());\n }\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transactions_v3/?${urlParams}`;\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transactions_v3/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new RecentTransactionsResponse(data.data, this.debug, this.apiKey, this.threadCount, urlParams, this.enableRetry, this.source);\n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to fetch all transactions including their decoded log events in a block and further flag interesting wallets or transactions.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {number} blockHeight - The requested block height.\n * @param {GetTransactionsForBlockQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `noLogs`: Omit log events.\n * - `withSafe`: Include safe details.\n *\n */\n public async getTransactionsForBlock(chainName: Chain | Chains | ChainID, blockHeight: number | string, queryParamOpts?: GetTransactionsForBlockQueryParamOpts): Promise<Response<TransactionsBlockResponse>> {\n let success = false;\n let data: Response<TransactionsBlockResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsBlockResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.noLogs !== undefined) {\n urlParams.append(\"no-logs\", queryParamOpts?.noLogs.toString());\n }\n\n if (queryParamOpts?.withSafe !== undefined) {\n urlParams.append(\"with-safe\", queryParamOpts?.withSafe.toString());\n }\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/block/${blockHeight}/transactions_v3/?${urlParams}`;\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/block/${blockHeight}/transactions_v3/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionsBlockResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to fetch the earliest and latest transactions, and the transaction count for a wallet. Calculate the age of the wallet and the time it has been idle and quickly gain insights into their engagement with web3.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetTransactionSummaryQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `withGas`: Include gas summary details. Additional charge of 1 credit when true. Response times may be impacted for wallets with millions of transactions.\n *\n */\n public async getTransactionSummary(chainName: Chain | Chains | ChainID, walletAddress: string, queryParamOpts?: GetTransactionSummaryQueryParamOpts): Promise<Response<TransactionsSummaryResponse>> {\n let success = false;\n let data: Response<TransactionsSummaryResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsSummaryResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.withGas !== undefined) {\n urlParams.append(\"with-gas\", queryParamOpts?.withGas.toString());\n }\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transactions_summary/?${urlParams}`;\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transactions_summary/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionsSummaryResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n /**\n *\n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {number} page - The requested page, 0-indexed.\n * @param {GetTransactionsForAddressV3QueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `noLogs`: Omit log events.\n * - `blockSignedAtAsc`: Sort the transactions in ascending chronological order. By default, it's set to `false` and returns transactions in descending chronological order.\n * - `withSafe`: Include safe details.\n *\n */\n public async getTransactionsForAddressV3(chainName: Chain | Chains | ChainID, walletAddress: string, page: number, queryParamOpts?: GetTransactionsForAddressV3QueryParamOpts): Promise<Response<TransactionsResponse>> {\n let success = false;\n let data: Response<TransactionsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.noLogs !== undefined) {\n urlParams.append(\"no-logs\", queryParamOpts?.noLogs.toString());\n }\n \n if (queryParamOpts?.blockSignedAtAsc !== undefined) {\n urlParams.append(\"block-signed-at-asc\", queryParamOpts?.blockSignedAtAsc.toString());\n }\n \n if (queryParamOpts?.withSafe !== undefined) {\n urlParams.append(\"with-safe\", queryParamOpts?.withSafe.toString());\n }\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transactions_v3/page/${page}/?${urlParams}`;\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transactions_v3/page/${page}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n \n const dataClass = new TransactionsResponse(data.data, this.debug, this.apiKey, this.threadCount, urlParams, this.enableRetry, this.source);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n /**\n *\n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {number} timeBucket - The 0-indexed 15-minute time bucket. E.g. 27 Feb 2023 05:23 GMT = 1677475383 (Unix time). 1677475383/900=1863861 timeBucket.\n * @param {GetTimeBucketTransactionsForAddressQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `noLogs`: Omit log events.\n * - `withSafe`: Include safe details.\n *\n */\n public async getTimeBucketTransactionsForAddress(chainName: Chain | Chains | ChainID, walletAddress: string, timeBucket: number, queryParamOpts?: GetTimeBucketTransactionsForAddressQueryParamOpts): Promise<Response<TransactionsTimeBucketResponse>> {\n let success = false;\n let data: Response<TransactionsTimeBucketResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsTimeBucketResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.noLogs !== undefined) {\n urlParams.append(\"no-logs\", queryParamOpts?.noLogs.toString());\n }\n \n if (queryParamOpts?.withSafe !== undefined) {\n urlParams.append(\"with-safe\", queryParamOpts?.withSafe.toString());\n }\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n } \n \n const url = `https://api.covalenthq.com/v1/${chainName}/bulk/transactions/${walletAddress}/${timeBucket}/?${urlParams}`;\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/bulk/transactions/${walletAddress}/${timeBucket}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n \n const dataClass = new TransactionsTimeBucketResponse(data.data, this.debug, this.apiKey, this.threadCount, urlParams, this.enableRetry, this.source);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n /**\n *\n * Commonly used to fetch all transactions including their decoded log events in a block and further flag interesting wallets or transactions.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} blockHash - The requested block hash.\n * @param {number} page - The requested 0-indexed page number.\n * @param {GetTransactionsForBlockHashByPageQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `noLogs`: Omit log events.\n * - `withSafe`: Include safe details.\n *\n */\n public async getTransactionsForBlockHashByPage(chainName: Chain | Chains | ChainID, blockHash: string, page: number, queryParamOpts?: GetTransactionsForBlockHashByPageQueryParamOpts): Promise<Response<TransactionsBlockPageResponse>> {\n let success = false;\n let data: Response<TransactionsBlockPageResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsBlockPageResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.noLogs !== undefined) {\n urlParams.append(\"no-logs\", queryParamOpts?.noLogs.toString());\n }\n \n if (queryParamOpts?.withSafe !== undefined) {\n urlParams.append(\"with-safe\", queryParamOpts?.withSafe.toString());\n }\n \n\n const url = `https://api.covalenthq.com/v1/${chainName}/block_hash/${blockHash}/transactions_v3/page/${page}/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/block_hash/${blockHash}/transactions_v3/page/${page}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionsBlockPageResponse(data.data, this.debug, this.apiKey, this.threadCount, urlParams, this.enableRetry, this.source);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to fetch all transactions including their decoded log events in a block and further flag interesting wallets or transactions.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} blockHash - The requested block hash.\n * @param {GetTransactionsForBlockHashQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `noLogs`: Omit log events.\n * - `withSafe`: Include safe details.\n *\n */\n public async getTransactionsForBlockHash(chainName: Chain | Chains | ChainID, blockHash: string, queryParamOpts?: GetTransactionsForBlockHashQueryParamOpts): Promise<Response<TransactionsBlockResponse>> {\n let success = false;\n let data: Response<TransactionsBlockResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsBlockResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.noLogs !== undefined) {\n urlParams.append(\"no-logs\", queryParamOpts?.noLogs.toString());\n }\n \n if (queryParamOpts?.withSafe !== undefined) {\n urlParams.append(\"with-safe\", queryParamOpts?.withSafe.toString());\n }\n \n\n const url = `https://api.covalenthq.com/v1/${chainName}/block_hash/${blockHash}/transactions_v3/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/block_hash/${blockHash}/transactions_v3/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionsBlockResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n\n}\n \n ","import { Chain, Quote, userAgent, Response, ChainID, Source } from \"./CovalentClient\";\nimport { debugOutput } from \"../util/ApiHelpers\";\nimport { parseISO } from \"date-fns\";\nimport { ExponentialBackoff } from \"../util/backoff\";\nimport pLimit from \"p-limit\";\nimport { Chains } from \"../util/Chains\";\nimport { ApiKeyValidator } from \"../util/ApiKeyValidator\";\n\n\nclass PoolResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: Pool[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: PoolResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: Pool) => new Pool(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass Pool {\n /** * The pair address. */\n exchange: string;\n swap_count_24h: number;\n /** * The total liquidity converted to fiat in `quote-currency`. */\n total_liquidity_quote: number;\n volume_24h_quote: number;\n fee_24h_quote: number;\n /** * Total supply of this pool token. */\n total_supply: bigint | null;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n /** * A prettier version of the total liquidity quote for rendering purposes. */\n pretty_total_liquidity_quote: string;\n /** * A prettier version of the volume 24h quote for rendering purposes. */\n pretty_volume_24h_quote: string;\n /** * A prettier version of the fee 24h quote for rendering purposes. */\n pretty_fee_24h_quote: string;\n /** * A prettier version of the volume 7d quote for rendering purposes. */\n pretty_volume_7d_quote: string;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n volume_7d_quote: number;\n annualized_fee: number;\n token_0: Token;\n token_1: Token;\n\n constructor(data: Pool) {\n this.exchange = data.exchange;\n this.swap_count_24h = data.swap_count_24h;\n this.total_liquidity_quote = data.total_liquidity_quote;\n this.volume_24h_quote = data.volume_24h_quote;\n this.fee_24h_quote = data.fee_24h_quote;\n this.total_supply = data.total_supply && data.total_supply !== null ? BigInt(data.total_supply) : null;\n this.quote_rate = data.quote_rate;\n this.pretty_total_liquidity_quote = data.pretty_total_liquidity_quote;\n this.pretty_volume_24h_quote = data.pretty_volume_24h_quote;\n this.pretty_fee_24h_quote = data.pretty_fee_24h_quote;\n this.pretty_volume_7d_quote = data.pretty_volume_7d_quote;\n this.chain_name = data.chain_name;\n this.chain_id = data.chain_id;\n this.dex_name = data.dex_name;\n this.volume_7d_quote = data.volume_7d_quote;\n this.annualized_fee = data.annualized_fee;\n this.token_0 = data.token_0 && data.token_0 !== null ? new Token(data.token_0) : null;\n this.token_1 = data.token_1 && data.token_1 !== null ? new Token(data.token_1) : null;\n }\n}\nclass Pagination {\n /** * True is there is another page. */\n has_more: boolean;\n /** * The requested page number. */\n page_number: number;\n /** * The requested number of items on the current page. */\n page_size: number;\n /** * The total number of items across all pages for this request. */\n total_count: number;\n\n constructor(data: Pagination) {\n this.has_more = data.has_more;\n this.page_number = data.page_number;\n this.page_size = data.page_size;\n this.total_count = data.total_count;\n \n }\n}\nclass Explorer {\n /** * The name of the explorer. */\n label: string;\n /** * The URL of the explorer. */\n url: string;\n\n constructor(data: Explorer) {\n this.label = data.label;\n this.url = data.url;\n \n }\n}\nclass Token {\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n volume_in_24h: string;\n volume_out_24h: string;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n reserve: string;\n /** * The contract logo URL. */\n logo_url: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n volume_in_7d: string;\n volume_out_7d: string;\n\n constructor(data: Token) {\n this.contract_address = data.contract_address;\n this.contract_name = data.contract_name;\n this.volume_in_24h = data.volume_in_24h;\n this.volume_out_24h = data.volume_out_24h;\n this.quote_rate = data.quote_rate;\n this.reserve = data.reserve;\n this.logo_url = data.logo_url;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_decimals = data.contract_decimals;\n this.volume_in_7d = data.volume_in_7d;\n this.volume_out_7d = data.volume_out_7d;\n \n }\n}\nclass PoolToDexResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested address. */\n address: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: PoolToDexItem[];\n\n constructor(data: PoolToDexResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.address = data.address;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: PoolToDexItem) => new PoolToDexItem(itemData)) : null;\n }\n}\nclass SupportedDex {\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n /** * A display-friendly name for the dex. */\n display_name: string;\n /** * The dex logo URL. */\n logo_url: string;\n factory_contract_address: string;\n router_contract_addresses: string[];\n swap_fee: number;\n\n constructor(data: SupportedDex) {\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.dex_name = data.dex_name;\n this.display_name = data.display_name;\n this.logo_url = data.logo_url;\n this.factory_contract_address = data.factory_contract_address;\n this.router_contract_addresses = data.router_contract_addresses;\n this.swap_fee = data.swap_fee;\n }\n}\nclass PoolToDexItem extends SupportedDex {\n /** * The dex logo URL. */\n logo_url: string;\n\n constructor(data: PoolToDexItem) {\n super(data);\n this.logo_url = data.logo_url;\n }\n}\nclass PoolByAddressResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: PoolWithTimeseries[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: PoolByAddressResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: PoolWithTimeseries) => new PoolWithTimeseries(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass PoolWithTimeseries {\n /** * The pair address. */\n exchange: string;\n /** * A list of explorers for this address. */\n explorers: Explorer[];\n swap_count_24h: number;\n /** * The total liquidity converted to fiat in `quote-currency`. */\n total_liquidity_quote: number;\n volume_24h_quote: number;\n fee_24h_quote: number;\n /** * Total supply of this pool token. */\n total_supply: bigint | null;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n volume_7d_quote: number;\n annualized_fee: number;\n /** * A prettier version of the total liquidity quote for rendering purposes. */\n pretty_total_liquidity_quote: string;\n /** * A prettier version of the volume 24h quote for rendering purposes. */\n pretty_volume_24h_quote: string;\n /** * A prettier version of the fee 24h quote for rendering purposes. */\n pretty_fee_24h_quote: string;\n /** * A prettier version of the volume 7d quote for rendering purposes. */\n pretty_volume_7d_quote: string;\n token_0: Token;\n token_1: Token;\n token_0_reserve_quote: number;\n token_1_reserve_quote: number;\n volume_timeseries_7d: VolumeTimeseries[];\n volume_timeseries_30d: VolumeTimeseries[];\n liquidity_timeseries_7d: LiquidityTimeseries[];\n liquidity_timeseries_30d: LiquidityTimeseries[];\n price_timeseries_7d: PriceTimeseries[];\n price_timeseries_30d: PriceTimeseries[];\n\n constructor(data: PoolWithTimeseries) {\n this.exchange = data.exchange;\n this.swap_count_24h = data.swap_count_24h;\n this.total_liquidity_quote = data.total_liquidity_quote;\n this.volume_24h_quote = data.volume_24h_quote;\n this.fee_24h_quote = data.fee_24h_quote;\n this.total_supply = data.total_supply && data.total_supply !== null ? BigInt(data.total_supply) : null;\n this.quote_rate = data.quote_rate;\n this.chain_id = data.chain_id;\n this.dex_name = data.dex_name;\n this.volume_7d_quote = data.volume_7d_quote;\n this.annualized_fee = data.annualized_fee;\n this.pretty_total_liquidity_quote = data.pretty_total_liquidity_quote;\n this.pretty_volume_24h_quote = data.pretty_volume_24h_quote;\n this.pretty_fee_24h_quote = data.pretty_fee_24h_quote;\n this.pretty_volume_7d_quote = data.pretty_volume_7d_quote;\n this.token_0_reserve_quote = data.token_0_reserve_quote;\n this.token_1_reserve_quote = data.token_1_reserve_quote;\n this.explorers = data.explorers && data.explorers !== null ? data.explorers.map((itemData: Explorer) => new Explorer(itemData)) : null;\n this.token_0 = data.token_0 && data.token_0 !== null ? new Token(data.token_0) : null;\n this.token_1 = data.token_1 && data.token_1 !== null ? new Token(data.token_1) : null;\n this.volume_timeseries_7d = data.volume_timeseries_7d && data.volume_timeseries_7d !== null ? data.volume_timeseries_7d.map((itemData: VolumeTimeseries) => new VolumeTimeseries(itemData)) : null;\n this.volume_timeseries_30d = data.volume_timeseries_30d && data.volume_timeseries_30d !== null ? data.volume_timeseries_30d.map((itemData: VolumeTimeseries) => new VolumeTimeseries(itemData)) : null;\n this.liquidity_timeseries_7d = data.liquidity_timeseries_7d && data.liquidity_timeseries_7d !== null ? data.liquidity_timeseries_7d.map((itemData: LiquidityTimeseries) => new LiquidityTimeseries(itemData)) : null;\n this.liquidity_timeseries_30d = data.liquidity_timeseries_30d && data.liquidity_timeseries_30d !== null ? data.liquidity_timeseries_30d.map((itemData: LiquidityTimeseries) => new LiquidityTimeseries(itemData)) : null;\n this.price_timeseries_7d = data.price_timeseries_7d && data.price_timeseries_7d !== null ? data.price_timeseries_7d.map((itemData: PriceTimeseries) => new PriceTimeseries(itemData)) : null;\n this.price_timeseries_30d = data.price_timeseries_30d && data.price_timeseries_30d !== null ? data.price_timeseries_30d.map((itemData: PriceTimeseries) => new PriceTimeseries(itemData)) : null;\n }\n}\nclass VolumeTimeseries {\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n dt: Date;\n /** * The pair address. */\n exchange: string;\n sum_amount0in: string;\n sum_amount0out: string;\n sum_amount1in: string;\n sum_amount1out: string;\n volume_quote: number;\n /** * A prettier version of the volume quote for rendering purposes. */\n pretty_volume_quote: string;\n token_0_quote_rate: number;\n token_1_quote_rate: number;\n swap_count_24: number;\n\n constructor(data: VolumeTimeseries) {\n this.dex_name = data.dex_name;\n this.chain_id = data.chain_id;\n this.dt = data.dt && data.dt !== null ? parseISO(data.dt.toString()) : null;\n this.exchange = data.exchange;\n this.sum_amount0in = data.sum_amount0in;\n this.sum_amount0out = data.sum_amount0out;\n this.sum_amount1in = data.sum_amount1in;\n this.sum_amount1out = data.sum_amount1out;\n this.volume_quote = data.volume_quote;\n this.pretty_volume_quote = data.pretty_volume_quote;\n this.token_0_quote_rate = data.token_0_quote_rate;\n this.token_1_quote_rate = data.token_1_quote_rate;\n this.swap_count_24 = data.swap_count_24;\n \n }\n}\nclass LiquidityTimeseries {\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n dt: Date;\n /** * The pair address. */\n exchange: string;\n r0_c: string;\n r1_c: string;\n liquidity_quote: number;\n /** * A prettier version of the liquidity quote for rendering purposes. */\n pretty_liquidity_quote: string;\n token_0_quote_rate: number;\n token_1_quote_rate: number;\n\n constructor(data: LiquidityTimeseries) {\n this.dex_name = data.dex_name;\n this.chain_id = data.chain_id;\n this.dt = data.dt && data.dt !== null ? parseISO(data.dt.toString()) : null;\n this.exchange = data.exchange;\n this.r0_c = data.r0_c;\n this.r1_c = data.r1_c;\n this.liquidity_quote = data.liquidity_quote;\n this.pretty_liquidity_quote = data.pretty_liquidity_quote;\n this.token_0_quote_rate = data.token_0_quote_rate;\n this.token_1_quote_rate = data.token_1_quote_rate;\n \n }\n}\nclass PriceTimeseries {\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n dt: Date;\n /** * The pair address. */\n exchange: string;\n price_of_token0_in_token1: number;\n /** * A prettier version of the price token0 for rendering purposes. */\n pretty_price_of_token0_in_token1: string;\n price_of_token0_in_token1_description: string;\n price_of_token1_in_token0: number;\n /** * A prettier version of the price token1 for rendering purposes. */\n pretty_price_of_token1_in_token0: string;\n price_of_token1_in_token0_description: string;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n price_of_token0_in_quote_currency: number;\n price_of_token1_in_quote_currency: number;\n\n constructor(data: PriceTimeseries) {\n this.dex_name = data.dex_name;\n this.chain_id = data.chain_id;\n this.dt = data.dt && data.dt !== null ? parseISO(data.dt.toString()) : null;\n this.exchange = data.exchange;\n this.price_of_token0_in_token1 = data.price_of_token0_in_token1;\n this.pretty_price_of_token0_in_token1 = data.pretty_price_of_token0_in_token1;\n this.price_of_token0_in_token1_description = data.price_of_token0_in_token1_description;\n this.price_of_token1_in_token0 = data.price_of_token1_in_token0;\n this.pretty_price_of_token1_in_token0 = data.pretty_price_of_token1_in_token0;\n this.price_of_token1_in_token0_description = data.price_of_token1_in_token0_description;\n this.quote_currency = data.quote_currency;\n this.price_of_token0_in_quote_currency = data.price_of_token0_in_quote_currency;\n this.price_of_token1_in_quote_currency = data.price_of_token1_in_quote_currency;\n \n }\n}\nclass PoolsDexDataResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested address. */\n address: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n /** * List of response items. */\n items: PoolsDexDataItem[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: PoolsDexDataResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.address = data.address;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.quote_currency = data.quote_currency;\n this.items = data.items && data.items !== null ? data.items.map((itemData: PoolsDexDataItem) => new PoolsDexDataItem(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass PoolsDexDataItem {\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n /** * The pair address. */\n exchange: string;\n /** * The combined ticker symbol of token0 and token1 separated with a hypen. */\n exchange_ticker_symbol: string;\n /** * The dex logo URL for the pair address. */\n exchange_logo_url: string;\n /** * The list of explorers for the token address. */\n explorers: Explorer[];\n /** * The total liquidity converted to fiat in `quote-currency`. */\n total_liquidity_quote: number;\n /** * A prettier version of the total liquidity quote for rendering purposes. */\n pretty_total_liquidity_quote: string;\n /** * The volume 24h converted to fiat in `quote-currency`. */\n volume_24h_quote: number;\n /** * The volume 7d converted to fiat in `quote-currency`. */\n volume_7d_quote: number;\n /** * The fee 24h converted to fiat in `quote-currency`. */\n fee_24h_quote: number;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n /** * A prettier version of the quote rate for rendering purposes. */\n pretty_quote_rate: string;\n /** * The annual fee percentage. */\n annualized_fee: number;\n /** * A prettier version of the volume 24h quote for rendering purposes. */\n pretty_volume_24h_quote: string;\n /** * A prettier version of the volume 7d quote for rendering purposes. */\n pretty_volume_7d_quote: string;\n /** * A prettier version of the fee 24h quote for rendering purposes. */\n pretty_fee_24h_quote: string;\n /** * Token0's contract metadata and reserve data. */\n token_0: PoolsDexToken;\n /** * Token1's contract metadata and reserve data. */\n token_1: PoolsDexToken;\n\n constructor(data: PoolsDexDataItem) {\n this.dex_name = data.dex_name;\n this.exchange = data.exchange;\n this.exchange_ticker_symbol = data.exchange_ticker_symbol;\n this.exchange_logo_url = data.exchange_logo_url;\n this.total_liquidity_quote = data.total_liquidity_quote;\n this.pretty_total_liquidity_quote = data.pretty_total_liquidity_quote;\n this.volume_24h_quote = data.volume_24h_quote;\n this.volume_7d_quote = data.volume_7d_quote;\n this.fee_24h_quote = data.fee_24h_quote;\n this.quote_rate = data.quote_rate;\n this.pretty_quote_rate = data.pretty_quote_rate;\n this.annualized_fee = data.annualized_fee;\n this.pretty_volume_24h_quote = data.pretty_volume_24h_quote;\n this.pretty_volume_7d_quote = data.pretty_volume_7d_quote;\n this.pretty_fee_24h_quote = data.pretty_fee_24h_quote;\n this.explorers = data.explorers && data.explorers !== null ? data.explorers.map((itemData: Explorer) => new Explorer(itemData)) : null;\n this.token_0 = data.token_0 && data.token_0 !== null ? new PoolsDexToken(data.token_0) : null;\n this.token_1 = data.token_1 && data.token_1 !== null ? new PoolsDexToken(data.token_1) : null;\n }\n}\nclass PoolsDexToken {\n /** * The reserves for the token. */\n reserve: string;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * The contract logo URL. */\n logo_url: string;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n\n constructor(data: PoolsDexToken) {\n this.reserve = data.reserve;\n this.contract_name = data.contract_name;\n this.contract_decimals = data.contract_decimals;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.logo_url = data.logo_url;\n this.quote_rate = data.quote_rate;\n \n }\n}\nclass AddressExchangeBalancesResponse {\n /** * The requested address. */\n address: string;\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: UniswapLikeBalanceItem[];\n\n constructor(data: AddressExchangeBalancesResponse) {\n this.address = data.address;\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: UniswapLikeBalanceItem) => new UniswapLikeBalanceItem(itemData)) : null;\n }\n}\nclass UniswapLikeBalanceItem {\n token_0: UniswapLikeToken;\n token_1: UniswapLikeToken;\n pool_token: UniswapLikeTokenWithSupply;\n\n constructor(data: UniswapLikeBalanceItem) {\n \n this.token_0 = data.token_0 && data.token_0 !== null ? new UniswapLikeToken(data.token_0) : null;\n this.token_1 = data.token_1 && data.token_1 !== null ? new UniswapLikeToken(data.token_1) : null;\n this.pool_token = data.pool_token && data.pool_token !== null ? new UniswapLikeTokenWithSupply(data.pool_token) : null;\n }\n}\nclass UniswapLikeToken {\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * The contract logo URL. */\n logo_url: string;\n /** * The asset balance. Use `contract_decimals` to scale this balance for display purposes. */\n balance: bigint | null;\n quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_quote: string;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n\n constructor(data: UniswapLikeToken) {\n this.contract_decimals = data.contract_decimals;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.logo_url = data.logo_url;\n this.balance = data.balance && data.balance !== null ? BigInt(data.balance) : null;\n this.quote = data.quote;\n this.pretty_quote = data.pretty_quote;\n this.quote_rate = data.quote_rate;\n \n }\n}\nclass UniswapLikeTokenWithSupply {\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * The contract logo URL. */\n logo_url: string;\n /** * The asset balance. Use `contract_decimals` to scale this balance for display purposes. */\n balance: bigint | null;\n quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_quote: string;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n /** * Total supply of this pool token. */\n total_supply: bigint | null;\n\n constructor(data: UniswapLikeTokenWithSupply) {\n this.contract_decimals = data.contract_decimals;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.logo_url = data.logo_url;\n this.balance = data.balance && data.balance !== null ? BigInt(data.balance) : null;\n this.quote = data.quote;\n this.pretty_quote = data.pretty_quote;\n this.quote_rate = data.quote_rate;\n this.total_supply = data.total_supply && data.total_supply !== null ? BigInt(data.total_supply) : null;\n \n }\n}\nclass NetworkExchangeTokensResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: TokenV2Volume[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: NetworkExchangeTokensResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: TokenV2Volume) => new TokenV2Volume(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass TokenV2Volume {\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n total_liquidity: string;\n total_volume_24h: string;\n /** * The contract logo URL. */\n logo_url: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n swap_count_24h: number;\n /** * The list of explorers for the token address. */\n explorers: Explorer[];\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n /** * The 24h exchange rate for the requested quote currency. */\n quote_rate_24h: number;\n /** * A prettier version of the exchange rate for rendering purposes. */\n pretty_quote_rate: string;\n /** * A prettier version of the 24h exchange rate for rendering purposes. */\n pretty_quote_rate_24h: string;\n /** * A prettier version of the total liquidity quote for rendering purposes. */\n pretty_total_liquidity_quote: string;\n /** * A prettier version of the 24h volume quote for rendering purposes. */\n pretty_total_volume_24h_quote: string;\n /** * The total liquidity converted to fiat in `quote-currency`. */\n total_liquidity_quote: number;\n /** * The total volume 24h converted to fiat in `quote-currency`. */\n total_volume_24h_quote: number;\n\n constructor(data: TokenV2Volume) {\n this.chain_name = data.chain_name;\n this.chain_id = data.chain_id;\n this.dex_name = data.dex_name;\n this.contract_address = data.contract_address;\n this.contract_name = data.contract_name;\n this.total_liquidity = data.total_liquidity;\n this.total_volume_24h = data.total_volume_24h;\n this.logo_url = data.logo_url;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_decimals = data.contract_decimals;\n this.swap_count_24h = data.swap_count_24h;\n this.quote_rate = data.quote_rate;\n this.quote_rate_24h = data.quote_rate_24h;\n this.pretty_quote_rate = data.pretty_quote_rate;\n this.pretty_quote_rate_24h = data.pretty_quote_rate_24h;\n this.pretty_total_liquidity_quote = data.pretty_total_liquidity_quote;\n this.pretty_total_volume_24h_quote = data.pretty_total_volume_24h_quote;\n this.total_liquidity_quote = data.total_liquidity_quote;\n this.total_volume_24h_quote = data.total_volume_24h_quote;\n this.explorers = data.explorers && data.explorers !== null ? data.explorers.map((itemData: Explorer) => new Explorer(itemData)) : null;\n }\n}\nclass NetworkExchangeTokenViewResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: TokenV2VolumeWithChartData[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: NetworkExchangeTokenViewResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: TokenV2VolumeWithChartData) => new TokenV2VolumeWithChartData(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass TokenV2VolumeWithChartData {\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * A list of explorers for this address. */\n explorers: Explorer[];\n /** * The total liquidity unscaled value. */\n total_liquidity: string;\n /** * The total volume 24h unscaled value. */\n total_volume_24h: string;\n /** * The contract logo URL. */\n logo_url: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The total amount of swaps in the last 24h. */\n swap_count_24h: number;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n /** * The 24h exchange rate for the requested quote currency. */\n quote_rate_24h: number;\n /** * A prettier version of the exchange rate for rendering purposes. */\n pretty_quote_rate: string;\n /** * A prettier version of the 24h exchange rate for rendering purposes. */\n pretty_quote_rate_24h: string;\n /** * A prettier version of the total liquidity quote for rendering purposes. */\n pretty_total_liquidity_quote: string;\n /** * A prettier version of the 24h volume quote for rendering purposes. */\n pretty_total_volume_24h_quote: string;\n /** * The total liquidity converted to fiat in `quote-currency`. */\n total_liquidity_quote: number;\n /** * The total volume 24h converted to fiat in `quote-currency`. */\n total_volume_24h_quote: number;\n /** * The number of transactions in the last 24h. */\n transactions_24h: number;\n volume_timeseries_7d: VolumeTokenTimeseries[];\n volume_timeseries_30d: VolumeTokenTimeseries[];\n liquidity_timeseries_7d: LiquidityTokenTimeseries[];\n liquidity_timeseries_30d: LiquidityTokenTimeseries[];\n price_timeseries_7d: PriceTokenTimeseries[];\n price_timeseries_30d: PriceTokenTimeseries[];\n\n constructor(data: TokenV2VolumeWithChartData) {\n this.chain_name = data.chain_name;\n this.chain_id = data.chain_id;\n this.dex_name = data.dex_name;\n this.contract_address = data.contract_address;\n this.contract_name = data.contract_name;\n this.total_liquidity = data.total_liquidity;\n this.total_volume_24h = data.total_volume_24h;\n this.logo_url = data.logo_url;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_decimals = data.contract_decimals;\n this.swap_count_24h = data.swap_count_24h;\n this.quote_rate = data.quote_rate;\n this.quote_rate_24h = data.quote_rate_24h;\n this.pretty_quote_rate = data.pretty_quote_rate;\n this.pretty_quote_rate_24h = data.pretty_quote_rate_24h;\n this.pretty_total_liquidity_quote = data.pretty_total_liquidity_quote;\n this.pretty_total_volume_24h_quote = data.pretty_total_volume_24h_quote;\n this.total_liquidity_quote = data.total_liquidity_quote;\n this.total_volume_24h_quote = data.total_volume_24h_quote;\n this.transactions_24h = data.transactions_24h;\n this.explorers = data.explorers && data.explorers !== null ? data.explorers.map((itemData: Explorer) => new Explorer(itemData)) : null;\n this.volume_timeseries_7d = data.volume_timeseries_7d && data.volume_timeseries_7d !== null ? data.volume_timeseries_7d.map((itemData: VolumeTokenTimeseries) => new VolumeTokenTimeseries(itemData)) : null;\n this.volume_timeseries_30d = data.volume_timeseries_30d && data.volume_timeseries_30d !== null ? data.volume_timeseries_30d.map((itemData: VolumeTokenTimeseries) => new VolumeTokenTimeseries(itemData)) : null;\n this.liquidity_timeseries_7d = data.liquidity_timeseries_7d && data.liquidity_timeseries_7d !== null ? data.liquidity_timeseries_7d.map((itemData: LiquidityTokenTimeseries) => new LiquidityTokenTimeseries(itemData)) : null;\n this.liquidity_timeseries_30d = data.liquidity_timeseries_30d && data.liquidity_timeseries_30d !== null ? data.liquidity_timeseries_30d.map((itemData: LiquidityTokenTimeseries) => new LiquidityTokenTimeseries(itemData)) : null;\n this.price_timeseries_7d = data.price_timeseries_7d && data.price_timeseries_7d !== null ? data.price_timeseries_7d.map((itemData: PriceTokenTimeseries) => new PriceTokenTimeseries(itemData)) : null;\n this.price_timeseries_30d = data.price_timeseries_30d && data.price_timeseries_30d !== null ? data.price_timeseries_30d.map((itemData: PriceTokenTimeseries) => new PriceTokenTimeseries(itemData)) : null;\n }\n}\nclass VolumeTokenTimeseries {\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n /** * The current date. */\n dt: Date;\n /** * The total volume unscaled for this day. */\n total_volume: string;\n /** * The volume in `quote-currency` denomination. */\n volume_quote: number;\n /** * A prettier version of the volume quote for rendering purposes. */\n pretty_volume_quote: string;\n\n constructor(data: VolumeTokenTimeseries) {\n this.dex_name = data.dex_name;\n this.chain_id = data.chain_id;\n this.dt = data.dt && data.dt !== null ? parseISO(data.dt.toString()) : null;\n this.total_volume = data.total_volume;\n this.volume_quote = data.volume_quote;\n this.pretty_volume_quote = data.pretty_volume_quote;\n \n }\n}\nclass LiquidityTokenTimeseries {\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n /** * The current date. */\n dt: Date;\n /** * The total liquidity unscaled up to this day. */\n total_liquidity: string;\n /** * The liquidity in `quote-currency` denomination. */\n liquidity_quote: number;\n /** * A prettier version of the liquidity quote for rendering purposes. */\n pretty_liquidity_quote: string;\n\n constructor(data: LiquidityTokenTimeseries) {\n this.dex_name = data.dex_name;\n this.chain_id = data.chain_id;\n this.dt = data.dt && data.dt !== null ? parseISO(data.dt.toString()) : null;\n this.total_liquidity = data.total_liquidity;\n this.liquidity_quote = data.liquidity_quote;\n this.pretty_liquidity_quote = data.pretty_liquidity_quote;\n \n }\n}\nclass PriceTokenTimeseries {\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n /** * The current date. */\n dt: Date;\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quote_currency: string;\n /** * The exchange rate for the requested quote currency. */\n quote_rate: number;\n /** * A prettier version of the exchange rate for rendering purposes. */\n pretty_quote_rate: string;\n\n constructor(data: PriceTokenTimeseries) {\n this.dex_name = data.dex_name;\n this.chain_id = data.chain_id;\n this.dt = data.dt && data.dt !== null ? parseISO(data.dt.toString()) : null;\n this.quote_currency = data.quote_currency;\n this.quote_rate = data.quote_rate;\n this.pretty_quote_rate = data.pretty_quote_rate;\n \n }\n}\nclass SupportedDexesResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * List of response items. */\n items: SupportedDex[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: SupportedDexesResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.items = data.items && data.items !== null ? data.items.map((itemData: SupportedDex) => new SupportedDex(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass SingleNetworkExchangeTokenResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: PoolWithTimeseries[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: SingleNetworkExchangeTokenResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: PoolWithTimeseries) => new PoolWithTimeseries(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass TransactionsForAccountAddressResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: ExchangeTransaction[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: TransactionsForAccountAddressResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: ExchangeTransaction) => new ExchangeTransaction(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass ExchangeTransaction {\n /** * The block signed timestamp in UTC. */\n block_signed_at: Date;\n /** * The requested transaction hash. */\n tx_hash: string;\n act: string;\n /** * The requested address. */\n address: string;\n /** * A list of explorers for this transaction. */\n explorers: Explorer[];\n amount_0: string;\n amount_1: string;\n amount_0_in: string;\n amount_0_out: string;\n amount_1_in: string;\n amount_1_out: string;\n to_address: string;\n from_address: string;\n sender_address: string;\n total_quote: number;\n /** * A prettier version of the total quote for rendering purposes. */\n pretty_total_quote: string;\n /** * The value attached to this tx. */\n value: bigint | null;\n /** * The value attached in `quote-currency` to this tx. */\n value_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_value_quote: string;\n /** * The requested chain native gas token metadata. */\n gas_metadata: ContractMetadata;\n /** * The amount of gas supplied for this tx. */\n gas_offered: number;\n /** * The gas spent for this tx. */\n gas_spent: number;\n /** * The gas price at the time of this tx. */\n gas_price: number;\n /** * The total transaction fees (`gas_price` * `gas_spent`) paid for this tx, denoted in wei. */\n fees_paid: bigint | null;\n /** * The gas spent in `quote-currency` denomination. */\n gas_quote: number;\n /** * A prettier version of the quote for rendering purposes. */\n pretty_gas_quote: string;\n /** * The native gas exchange rate for the requested `quote-currency`. */\n gas_quote_rate: number;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n token_0: PoolToken;\n token_1: PoolToken;\n token_0_quote_rate: number;\n token_1_quote_rate: number;\n\n constructor(data: ExchangeTransaction) {\n this.block_signed_at = data.block_signed_at && data.block_signed_at !== null ? parseISO(data.block_signed_at.toString()) : null;\n this.tx_hash = data.tx_hash;\n this.act = data.act;\n this.address = data.address;\n this.amount_0 = data.amount_0;\n this.amount_1 = data.amount_1;\n this.amount_0_in = data.amount_0_in;\n this.amount_0_out = data.amount_0_out;\n this.amount_1_in = data.amount_1_in;\n this.amount_1_out = data.amount_1_out;\n this.to_address = data.to_address;\n this.from_address = data.from_address;\n this.sender_address = data.sender_address;\n this.total_quote = data.total_quote;\n this.pretty_total_quote = data.pretty_total_quote;\n this.value = data.value && data.value !== null ? BigInt(data.value) : null;\n this.value_quote = data.value_quote;\n this.pretty_value_quote = data.pretty_value_quote;\n this.gas_offered = data.gas_offered;\n this.gas_spent = data.gas_spent;\n this.gas_price = data.gas_price;\n this.fees_paid = data.fees_paid && data.fees_paid !== null ? BigInt(data.fees_paid) : null;\n this.gas_quote = data.gas_quote;\n this.pretty_gas_quote = data.pretty_gas_quote;\n this.gas_quote_rate = data.gas_quote_rate;\n this.quote_currency = data.quote_currency;\n this.token_0_quote_rate = data.token_0_quote_rate;\n this.token_1_quote_rate = data.token_1_quote_rate;\n this.explorers = data.explorers && data.explorers !== null ? data.explorers.map((itemData: Explorer) => new Explorer(itemData)) : null;\n this.gas_metadata = data.gas_metadata && data.gas_metadata !== null ? new ContractMetadata(data.gas_metadata) : null;\n this.token_0 = data.token_0 && data.token_0 !== null ? new PoolToken(data.token_0) : null;\n this.token_1 = data.token_1 && data.token_1 !== null ? new PoolToken(data.token_1) : null;\n }\n}\nclass ContractMetadata {\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The contract logo URL. */\n logo_url: string;\n\n constructor(data: ContractMetadata) {\n this.contract_decimals = data.contract_decimals;\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.supports_erc = data.supports_erc;\n this.logo_url = data.logo_url;\n \n }\n}\nclass PoolToken {\n /** * Use contract decimals to format the token balance for display purposes - divide the balance by `10^{contract_decimals}`. */\n contract_decimals: number;\n /** * The string returned by the `name()` method. */\n contract_name: string;\n /** * The ticker symbol for this contract. This field is set by a developer and non-unique across a network. */\n contract_ticker_symbol: string;\n /** * Use the relevant `contract_address` to lookup prices, logos, token transfers, etc. */\n contract_address: string;\n /** * A list of supported standard ERC interfaces, eg: `ERC20` and `ERC721`. */\n supports_erc: string[];\n /** * The contract logo URL. */\n logo_url: string;\n\n constructor(data: PoolToken) {\n this.contract_decimals = data.contract_decimals;\n this.contract_name = data.contract_name;\n this.contract_ticker_symbol = data.contract_ticker_symbol;\n this.contract_address = data.contract_address;\n this.supports_erc = data.supports_erc;\n this.logo_url = data.logo_url;\n \n }\n}\nclass TransactionsForTokenAddressResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: ExchangeTransaction[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: TransactionsForTokenAddressResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: ExchangeTransaction) => new ExchangeTransaction(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass TransactionsForExchangeResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: ExchangeTransaction[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: TransactionsForExchangeResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: ExchangeTransaction) => new ExchangeTransaction(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass NetworkTransactionsResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: ExchangeTransaction[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: NetworkTransactionsResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: ExchangeTransaction) => new ExchangeTransaction(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass EcosystemChartDataResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: UniswapLikeEcosystemCharts[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: EcosystemChartDataResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: UniswapLikeEcosystemCharts) => new UniswapLikeEcosystemCharts(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass UniswapLikeEcosystemCharts {\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n gas_token_price_quote: number;\n total_swaps_24h: number;\n total_active_pairs_7d: number;\n total_fees_24h: number;\n /** * A prettier version of the gas quote for rendering purposes. */\n pretty_gas_token_price_quote: string;\n /** * A prettier version of the 24h total fees for rendering purposes. */\n pretty_total_fees_24h: string;\n volume_chart_7d: VolumeEcosystemChart[];\n volume_chart_30d: VolumeEcosystemChart[];\n liquidity_chart_7d: LiquidityEcosystemChart[];\n liquidity_chart_30d: LiquidityEcosystemChart[];\n\n constructor(data: UniswapLikeEcosystemCharts) {\n this.dex_name = data.dex_name;\n this.chain_id = data.chain_id;\n this.quote_currency = data.quote_currency;\n this.gas_token_price_quote = data.gas_token_price_quote;\n this.total_swaps_24h = data.total_swaps_24h;\n this.total_active_pairs_7d = data.total_active_pairs_7d;\n this.total_fees_24h = data.total_fees_24h;\n this.pretty_gas_token_price_quote = data.pretty_gas_token_price_quote;\n this.pretty_total_fees_24h = data.pretty_total_fees_24h;\n this.volume_chart_7d = data.volume_chart_7d && data.volume_chart_7d !== null ? data.volume_chart_7d.map((itemData: VolumeEcosystemChart) => new VolumeEcosystemChart(itemData)) : null;\n this.volume_chart_30d = data.volume_chart_30d && data.volume_chart_30d !== null ? data.volume_chart_30d.map((itemData: VolumeEcosystemChart) => new VolumeEcosystemChart(itemData)) : null;\n this.liquidity_chart_7d = data.liquidity_chart_7d && data.liquidity_chart_7d !== null ? data.liquidity_chart_7d.map((itemData: LiquidityEcosystemChart) => new LiquidityEcosystemChart(itemData)) : null;\n this.liquidity_chart_30d = data.liquidity_chart_30d && data.liquidity_chart_30d !== null ? data.liquidity_chart_30d.map((itemData: LiquidityEcosystemChart) => new LiquidityEcosystemChart(itemData)) : null;\n }\n}\nclass VolumeEcosystemChart {\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n dt: Date;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n volume_quote: number;\n /** * A prettier version of the volume quote for rendering purposes. */\n pretty_volume_quote: string;\n swap_count_24: number;\n\n constructor(data: VolumeEcosystemChart) {\n this.dex_name = data.dex_name;\n this.chain_id = data.chain_id;\n this.dt = data.dt && data.dt !== null ? parseISO(data.dt.toString()) : null;\n this.quote_currency = data.quote_currency;\n this.volume_quote = data.volume_quote;\n this.pretty_volume_quote = data.pretty_volume_quote;\n this.swap_count_24 = data.swap_count_24;\n \n }\n}\nclass LiquidityEcosystemChart {\n /** * The name of the DEX, eg: `uniswap_v2`. */\n dex_name: string;\n /** * The requested chain ID eg: `1`. */\n chain_id: string;\n dt: Date;\n /** * The requested quote currency eg: `USD`. */\n quote_currency: string;\n liquidity_quote: number;\n /** * A prettier version of the liquidity quote for rendering purposes. */\n pretty_liquidity_quote: string;\n\n constructor(data: LiquidityEcosystemChart) {\n this.dex_name = data.dex_name;\n this.chain_id = data.chain_id;\n this.dt = data.dt && data.dt !== null ? parseISO(data.dt.toString()) : null;\n this.quote_currency = data.quote_currency;\n this.liquidity_quote = data.liquidity_quote;\n this.pretty_liquidity_quote = data.pretty_liquidity_quote;\n \n }\n}\nclass HealthDataResponse {\n /** * The timestamp when the response was generated. Useful to show data staleness to users. */\n updated_at: Date;\n /** * The requested chain ID eg: `1`. */\n chain_id: number;\n /** * The requested chain name eg: `eth-mainnet`. */\n chain_name: string;\n /** * List of response items. */\n items: HealthData[];\n /** * Pagination metadata. */\n pagination: Pagination;\n\n constructor(data: HealthDataResponse) {\n this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;\n this.chain_id = data.chain_id;\n this.chain_name = data.chain_name;\n this.items = data.items && data.items !== null ? data.items.map((itemData: HealthData) => new HealthData(itemData)) : null;\n this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;\n }\n}\nclass HealthData {\n synced_block_height: number;\n synced_block_signed_at: Date;\n latest_block_height: number;\n latest_block_signed_at: Date;\n\n constructor(data: HealthData) {\n this.synced_block_height = data.synced_block_height;\n this.synced_block_signed_at = data.synced_block_signed_at && data.synced_block_signed_at !== null ? parseISO(data.synced_block_signed_at.toString()) : null;\n this.latest_block_height = data.latest_block_height;\n this.latest_block_signed_at = data.latest_block_signed_at && data.latest_block_signed_at !== null ? parseISO(data.latest_block_signed_at.toString()) : null;\n \n }\n}\n\n\nexport interface GetPoolsQueryParamOpts {\n /** * Ending date to define a block range (YYYY-MM-DD). Omitting this parameter defaults to the current date. */\n date?: string;\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n /** * 0-indexed page number to begin pagination. */\n pageNumber?: number;\n}\nexport interface GetPoolsForTokenAddressQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * The DEX name eg: `uniswap_v2`. */\n dexName?: string;\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n}\nexport interface GetPoolsForWalletAddressQueryParamOpts {\n /** * The token contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically. */\n tokenAddress?: string;\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * The DEX name eg: `uniswap_v2`. */\n dexName?: string;\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n}\nexport interface GetNetworkExchangeTokensQueryParamOpts {\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n /** * 0-indexed page number to begin pagination. */\n pageNumber?: number;\n}\nexport interface GetLpTokenViewQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n}\nexport interface GetSingleNetworkExchangeTokenQueryParamOpts {\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n /** * 0-indexed page number to begin pagination. */\n pageNumber?: number;\n}\nexport interface GetTransactionsForTokenAddressQueryParamOpts {\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n /** * 0-indexed page number to begin pagination. */\n pageNumber?: number;\n}\nexport interface GetTransactionsForExchangeQueryParamOpts {\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n /** * 0-indexed page number to begin pagination. */\n pageNumber?: number;\n}\nexport interface GetTransactionsForDexQueryParamOpts {\n /** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */\n quoteCurrency?: Quote;\n /** * Number of items per page. Omitting this parameter defaults to 100. */\n pageSize?: number;\n /** * 0-indexed page number to begin pagination. */\n pageNumber?: number;\n}\n/**\n * XYK APIs\n * \n */\nexport class XykService {\n private LIMIT;\n constructor(private apiKey: string, private debug: boolean = false, private threadCount: number = 3, private is_key_valid: boolean, private enableRetry: boolean = true, private source: Source) {\n this.LIMIT = pLimit(this.threadCount);\n }\n\n\n /**\n *\n * Commonly used to get all the pools of a particular DEX. Supports most common DEXs (Uniswap, SushiSwap, etc), and returns detailed trading data (volume, liquidity, swap counts, fees, LP token prices).\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} dexName - The DEX name eg: `uniswap_v2`.\n * @param {GetPoolsQueryParamOpts} queryParamOpts\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async getPools(chainName: Chain | Chains | ChainID, dexName: string, queryParamOpts?: GetPoolsQueryParamOpts): Promise<Response<PoolResponse>> {\n let success = false;\n let data: Response<PoolResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<PoolResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (queryParamOpts?.date !== undefined) {\n urlParams.append(\"date\", queryParamOpts?.date.toString());\n }\n\n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/pools/?${urlParams}`;\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/pools/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new PoolResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get the corresponding supported DEX given a pool address, along with the swap fees, DEX's logo url, and factory addresses. Useful to identifying the specific DEX to which a pair address is associated.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} poolAddress - The requested pool address.\n *\n */\n public async getDexForPoolAddress(chainName: Chain | Chains | ChainID, poolAddress: string): Promise<Response<PoolToDexResponse>> {\n let success = false;\n let data: Response<PoolToDexResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<PoolToDexResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/address/${poolAddress}/dex_name/?${urlParams}`;\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/address/${poolAddress}/dex_name/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new PoolToDexResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get the 7 day and 30 day time-series data (volume, liquidity, price) of a particular liquidity pool in a DEX. Useful for building time-series charts on DEX trading activity.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} dexName - The DEX name eg: `uniswap_v2`.\n * @param {string} poolAddress - The pool contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n *\n */\n public async getPoolByAddress(chainName: Chain | Chains | ChainID, dexName: string, poolAddress: string): Promise<Response<PoolByAddressResponse>> {\n let success = false;\n let data: Response<PoolByAddressResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<PoolByAddressResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/pools/address/${poolAddress}/?${urlParams}`;\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/pools/address/${poolAddress}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new PoolByAddressResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get all pools and the supported DEX for a token. Useful for building a table of top pairs across all supported DEXes that the token is trading on.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} tokenAddress - The token contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {number} page - The requested 0-indexed page number.\n * @param {GetPoolsForTokenAddressQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `dexName`: The DEX name eg: `uniswap_v2`.\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n *\n */\n public async getPoolsForTokenAddress(chainName: Chain | Chains | ChainID, tokenAddress: string, page: number, queryParamOpts?: GetPoolsForTokenAddressQueryParamOpts): Promise<Response<PoolsDexDataResponse>> {\n let success = false;\n let data: Response<PoolsDexDataResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<PoolsDexDataResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n } \n \n if (queryParamOpts?.dexName !== undefined) {\n urlParams.append(\"dex-name\", queryParamOpts?.dexName.toString());\n }\n\n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/tokens/address/${tokenAddress}/pools/page/${page}/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/tokens/address/${tokenAddress}/pools/page/${page}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new PoolsDexDataResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to return balance of a wallet/contract address on a specific DEX.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} dexName - The DEX name eg: `uniswap_v2`.\n * @param {string} accountAddress - The account address.\n *\n */\n public async getAddressExchangeBalances(chainName: Chain | Chains | ChainID, dexName: string, accountAddress: string): Promise<Response<AddressExchangeBalancesResponse>> {\n let success = false;\n let data: Response<AddressExchangeBalancesResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<AddressExchangeBalancesResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/address/${accountAddress}/balances/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/address/${accountAddress}/balances/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new AddressExchangeBalancesResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get all pools and supported DEX for a wallet. Useful for building a personal DEX UI showcasing pairs and supported DEXes associated to the wallet.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} walletAddress - The account address.\n * @param {number} page - The requested 0-indexed page number.\n * @param {GetPoolsForWalletAddressQueryParamOpts} queryParamOpts\n * - `tokenAddress`: The token contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `dexName`: The DEX name eg: `uniswap_v2`.\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n *\n */\n public async getPoolsForWalletAddress(chainName: Chain | Chains | ChainID, walletAddress: string, page: number, queryParamOpts?: GetPoolsForWalletAddressQueryParamOpts): Promise<Response<PoolsDexDataResponse>> {\n let success = false;\n let data: Response<PoolsDexDataResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<PoolsDexDataResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n if (queryParamOpts?.tokenAddress !== undefined) {\n urlParams.append(\"token-address\", queryParamOpts?.tokenAddress.toString());\n }\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n\n if (queryParamOpts?.dexName !== undefined) {\n urlParams.append(\"dex-name\", queryParamOpts?.dexName.toString());\n }\n\n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/address/${walletAddress}/pools/page/${page}/?${urlParams}`;\n \n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/address/${walletAddress}/pools/page/${page}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new PoolsDexDataResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to retrieve all network exchange tokens for a specific DEX. Useful for building a top tokens table by total liquidity within a particular DEX.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} dexName - The DEX name eg: `uniswap_v2`.\n * @param {GetNetworkExchangeTokensQueryParamOpts} queryParamOpts\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async getNetworkExchangeTokens(chainName: Chain | Chains | ChainID, dexName: string, queryParamOpts?: GetNetworkExchangeTokensQueryParamOpts): Promise<Response<NetworkExchangeTokensResponse>> {\n let success = false;\n let data: Response<NetworkExchangeTokensResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NetworkExchangeTokensResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/tokens/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/tokens/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new NetworkExchangeTokensResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n /**\n *\n * Commonly used to get a detailed view for a single liquidity pool token. Includes time series data.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} dexName - The DEX name eg: `uniswap_v2`.\n * @param {string} tokenAddress - The token contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetLpTokenViewQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n *\n */\n public async getLpTokenView(chainName: Chain | Chains | ChainID, dexName: string, tokenAddress: string, queryParamOpts?: GetLpTokenViewQueryParamOpts): Promise<Response<NetworkExchangeTokenViewResponse>> {\n let success = false;\n let data: Response<NetworkExchangeTokenViewResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NetworkExchangeTokenViewResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/tokens/address/${tokenAddress}/view/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/tokens/address/${tokenAddress}/view/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new NetworkExchangeTokenViewResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get all the supported DEXs available for the xy=k endpoints, along with the swap fees and factory addresses.\n * \n *\n */\n public async getSupportedDEXes(): Promise<Response<SupportedDexesResponse>> {\n let success = false;\n let data: Response<SupportedDexesResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<SupportedDexesResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/xy=k/supported_dexes/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/xy=k/supported_dexes/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new SupportedDexesResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get historical daily swap count for a single network exchange token.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} dexName - The DEX name eg: `uniswap_v2`.\n * @param {string} tokenAddress - The token contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetSingleNetworkExchangeTokenQueryParamOpts} queryParamOpts\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async getSingleNetworkExchangeToken(chainName: Chain | Chains | ChainID, dexName: string, tokenAddress: string, queryParamOpts?: GetSingleNetworkExchangeTokenQueryParamOpts): Promise<Response<SingleNetworkExchangeTokenResponse>> {\n let success = false;\n let data: Response<SingleNetworkExchangeTokenResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<SingleNetworkExchangeTokenResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/tokens/address/${tokenAddress}/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/tokens/address/${tokenAddress}/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new SingleNetworkExchangeTokenResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get all the DEX transactions of a wallet. Useful for building tables of DEX activity segmented by wallet.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} dexName - The DEX name eg: `uniswap_v2`.\n * @param {string} accountAddress - The account address. Passing in an `ENS` or `RNS` resolves automatically.\n *\n */\n public async getTransactionsForAccountAddress(chainName: Chain | Chains | ChainID, dexName: string, accountAddress: string): Promise<Response<TransactionsForAccountAddressResponse>> {\n let success = false;\n let data: Response<TransactionsForAccountAddressResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsForAccountAddressResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/address/${accountAddress}/transactions/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/address/${accountAddress}/transactions/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionsForAccountAddressResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get all the transactions of a token within a particular DEX. Useful for getting a per-token view of DEX activity.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} dexName - The DEX name eg: `uniswap_v2`.\n * @param {string} tokenAddress - The token contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetTransactionsForTokenAddressQueryParamOpts} queryParamOpts\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async getTransactionsForTokenAddress(chainName: Chain | Chains | ChainID, dexName: string, tokenAddress: string, queryParamOpts?: GetTransactionsForTokenAddressQueryParamOpts): Promise<Response<TransactionsForTokenAddressResponse>> {\n let success = false;\n let data: Response<TransactionsForTokenAddressResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsForTokenAddressResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/tokens/address/${tokenAddress}/transactions/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/tokens/address/${tokenAddress}/transactions/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionsForTokenAddressResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used for getting all the transactions of a particular DEX liquidity pool. Useful for building a transactions history table for an individual pool.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} dexName - The DEX name eg: `uniswap_v2`.\n * @param {string} poolAddress - The pool contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.\n * @param {GetTransactionsForExchangeQueryParamOpts} queryParamOpts\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async getTransactionsForExchange(chainName: Chain | Chains | ChainID, dexName: string, poolAddress: string, queryParamOpts?: GetTransactionsForExchangeQueryParamOpts): Promise<Response<TransactionsForExchangeResponse>> {\n let success = false;\n let data: Response<TransactionsForExchangeResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<TransactionsForExchangeResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/pools/address/${poolAddress}/transactions/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/pools/address/${poolAddress}/transactions/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new TransactionsForExchangeResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n\n /**\n *\n * Commonly used to get all the the transactions for a given DEX. Useful for building DEX activity views.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} dexName - The DEX name eg: `uniswap_v2`.\n * @param {GetTransactionsForDexQueryParamOpts} queryParamOpts\n * - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.\n * - `pageSize`: Number of items per page. Omitting this parameter defaults to 100.\n * - `pageNumber`: 0-indexed page number to begin pagination.\n *\n */\n public async getTransactionsForDex(chainName: Chain | Chains | ChainID, dexName: string, queryParamOpts?: GetTransactionsForDexQueryParamOpts): Promise<Response<NetworkTransactionsResponse>> {\n let success = false;\n let data: Response<NetworkTransactionsResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<NetworkTransactionsResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n \n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n \n \n if (queryParamOpts?.quoteCurrency !== undefined) {\n urlParams.append(\"quote-currency\", queryParamOpts?.quoteCurrency.toString());\n }\n \n if (queryParamOpts?.pageSize !== undefined) {\n urlParams.append(\"page-size\", queryParamOpts?.pageSize.toString());\n }\n \n if (queryParamOpts?.pageNumber !== undefined) {\n urlParams.append(\"page-number\", queryParamOpts?.pageNumber.toString());\n }\n \n \n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/transactions/?${urlParams}`;\n \n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n \n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/transactions/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n \n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n \n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new NetworkTransactionsResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data.error,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : \"401 Authorization Required\"\n };\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to get a 7d and 30d time-series chart of DEX activity. Includes volume and swap count.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} dexName - The DEX name eg: `uniswap_v2`.\n *\n */\n public async getEcosystemChartData(chainName: Chain | Chains | ChainID, dexName: string): Promise<Response<EcosystemChartDataResponse>> {\n let success = false;\n let data: Response<EcosystemChartDataResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<EcosystemChartDataResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/ecosystem/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/ecosystem/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new EcosystemChartDataResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n /**\n *\n * Commonly used to ping the health of xy=k endpoints to get the synced block height per chain.\n * \n * @param {string} chainName - The chain name eg: `eth-mainnet`.\n * @param {string} dexName - The DEX name eg: `uniswap_v2`.\n *\n */\n public async getHealthData(chainName: Chain | Chains | ChainID, dexName: string): Promise<Response<HealthDataResponse>> {\n let success = false;\n let data: Response<HealthDataResponse>;\n let response: globalThis.Response;\n const backoff = new ExponentialBackoff<Response<HealthDataResponse>>(this.apiKey, this.debug);\n while (!success) {\n try {\n const urlParams = new URLSearchParams();\n\n if (!this.is_key_valid) {\n return {\n data: null,\n error: true,\n error_code: 401,\n error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE\n };\n }\n\n const url = `https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/health/?${urlParams}`;\n\n let startTime;\n if (this.debug) {\n startTime = new Date();\n }\n\n response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/xy=k/${dexName}/health/?${urlParams}`, {\n headers: {\n \"Authorization\": `Bearer ${this.apiKey}`,\n \"X-Requested-With\": this.source ? this.source + \" \" + \"(\" + userAgent + \")\" : userAgent\n }\n }));\n\n debugOutput(response ? response.url : url, response ? response.status : 429, startTime);\n\n if ((this.enableRetry === true) && (!response || response.status === null || response.status === 429)) {\n try {\n data = await this.LIMIT(() => backoff.backOff(response ? response.url : url, this.source));\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: response.status ?? 429,\n error_message: error.message\n };\n }\n } else {\n data = await response.json();\n }\n const dataClass = new HealthDataResponse(data.data);\n \n success = true;\n return {\n data: dataClass,\n error: data ? data.error : true,\n error_code: data ? data.error_code : response.status,\n error_message: data ? data.error_message : response.status === 500 ? \"Internal server error\" : response.status === 429 ? \"429 Timeout Error\" : \"Unknown Error\"\n };\n\n } catch (error) {\n success = true;\n return {\n data: null,\n error: true,\n error_code: error.cause ? error.cause.code : data ? data.error_code : response ? response.status : \"Unknown Error Code\",\n error_message: error.cause ? error.cause.message : data ? data.error_message : response && response.status === 500 ? \"Internal server error\" : !response ? \"Unknown Error\" : \"401 Authorization Required\"\n };\n }\n }\n }\n \n\n}\n \n ","import { SecurityService } from \"./SecurityService\";\nimport { BalanceService } from \"./BalanceService\";\nimport { BaseService } from \"./BaseService\";\nimport { NftService } from \"./NftService\";\nimport { PricingService } from \"./PricingService\";\nimport { TransactionService } from \"./TransactionService\";\nimport { XykService } from \"./XykService\";\nimport { ApiKeyValidator } from \"../util/ApiKeyValidator\";\n\nexport type Chain = \"btc-mainnet\" | \"eth-mainnet\" | \"matic-mainnet\" | \"bsc-mainnet\" | \"avalanche-mainnet\" | \"optimism-mainnet\" | \"fantom-mainnet\" | \"moonbeam-mainnet\" | \"moonbeam-moonriver\" | \"rsk-mainnet\" | \"arbitrum-mainnet\" | \"palm-mainnet\" | \"klaytn-mainnet\" | \"heco-mainnet\" | \"nervos-godwoken-mainnet\" | \"axie-mainnet\" | \"evmos-mainnet\" | \"astar-mainnet\" | \"iotex-mainnet\" | \"harmony-mainnet\" | \"cronos-mainnet\" | \"aurora-mainnet\" | \"emerald-paratime-mainnet\" | \"boba-mainnet\" | \"eth-goerli\" | \"matic-mumbai\" | \"avalanche-testnet\" | \"bsc-testnet\" | \"moonbeam-moonbase-alpha\" | \"rsk-testnet\" | \"arbitrum-goerli\" | \"fantom-testnet\" | \"palm-testnet\" | \"heco-testnet\" | \"nervos-godwoken-testnet\" | \"evmos-testnet\" | \"iotex-testnet\" | \"harmony-testnet\" | \"aurora-testnet\" | \"scroll-l2-testnet\" | \"scroll-sepolia-testnet\" | \"covalent-internal-network-v1\" | \"defi-kingdoms-mainnet\" | \"swimmer-mainnet\" | \"boba-avalanche-mainnet\" | \"boba-bobabeam-mainnet\" | \"boba-bnb-mainnet\" | \"boba-rinkeby-testnet\" | \"boba-bobabase-testnet\" | \"boba-bnb-testnet\" | \"boba-avalanche-testnet\" | \"klaytn-testnet\" | \"gather-mainnet\" | \"gather-testnet\" | \"skale-calypso\" | \"skale-mainnet\" | \"skale-razor\" | \"avalanche-dexalot-mainnet\" | \"skale-omnus\" | \"avalanche-dexalot-testnet\" | \"astar-shibuya\" | \"cronos-testnet\" | \"defi-kingdoms-testnet\" | \"metis-mainnet\" | \"metis-stardust\" | \"milkomeda-a1-mainnet\" | \"milkomeda-a1-devnet\" | \"milkomeda-c1-mainnet\" | \"milkomeda-c1-devnet\" | \"swimmer-testnet\" | \"solana-mainnet\" | \"skale-europa\" | \"meter-mainnet\" | \"meter-testnet\" | \"skale-exorde\" | \"boba-goerli\" | \"neon-testnet\" | \"skale-staging-uum\" | \"skale-staging-lcc\" | \"arbitrum-nova-mainnet\" | \"canto-mainnet\" | \"bittorrent-mainnet\" | \"bittorrent-testnet\" | \"flarenetworks-flare-mainnet\" | \"flarenetworks-flare-testnet\" | \"flarenetworks-canary-mainnet\" | \"flarenetworks-canary-testnet\" | \"kcc-mainnet\" | \"kcc-testnet\" | \"polygon-zkevm-testnet\" | \"linea-testnet\" | \"base-testnet\" | \"mantle-testnet\" | \"scroll-alpha-testnet\" | \"oasys-mainnet\" | \"oasys-testnet\" | \"findora-mainnet\" | \"findora-forge-testnet\" | \"sx-mainnet\" | \"oasis-sapphire-mainnet\" | \"oasis-sapphire-testnet\" | \"optimism-goerli\" | \"polygon-zkevm-mainnet\" | \"horizen-yuma-testnet\" | \"clv-parachain\" | \"energi-mainnet\" | \"energi-testnet\" | \"horizen-gobi-testnet\" | \"eth-sepolia\" | \"skale-nebula\" | \"skale-battleground\" | \"avalanche-meld-testnet\" | \"gunzilla-testnet\" | \"ultron-mainnet\" | \"ultron-testnet\" | \"zora-mainnet\" | \"zora-goerli-testnet\" | \"neon-mainnet\" | \"avalanche-shrapnel-mainnet\" | \"base-mainnet\" | \"mantle-mainnet\" | \"avalanche-loco-legends-mainnet\" | \"linea-mainnet\" | \"horizen-eon-mainnet\" | \"avalanche-numbers\" | \"avalanche-dos\" | \"avalanche-step-network\" | \"avalanche-xplus\" | \"avalanche-xanachain\" | \"avalanche-meld-mainnet\" | \"opside-public-zkevm\" | \"opside-law-chain\" | \"avalanche-shrapnel-testnet\" | \"avalanche-loco-legends-testnet\" | \"opside-cb-zkevm\" | \"opside-pre-alpha-testnet\" | \"opside-era7\" | \"opside-xthrill\" | \"zksync-mainnet\" | \"metis-testnet\" | \"zksync-testnet\" | \"avalanche-blitz-testnet\" | \"avalanche-d-chain-testnet\" | \"avalanche-green-dot-testnet\" | \"avalanche-mintara-testnet\" | \"avalanche-beam-testnet\" | \"bnb-meta-apes-mainnet\" | \"bnb-antimatter-mainnet\" | \"bnb-antimatter-testnet\" | \"bnb-opbnb-testnet\" | \"opside-debox\" | \"opside-jackbot\" | \"opside-odx-zkevm-testnet\" | \"opside-readon-content-testnet\" | \"opside-relation\" | \"opside-soquest-zkevm\" | \"opside-vip3\" | \"opside-zkmeta\" | \"avalanche-pulsar-testnet\" | \"avalanche-uptn\" | \"bnb-fncy-mainnet\" | \"zetachain-testnet\" | \"kinto-testnet\" | \"mode-testnet\" | \"loot-mainnet\" | \"bnb-fncy-testnet\" | \"manta-testnet\" | \"pgn-mainnet\" | \"pgn-testnet\" | \"gnosis-mainnet\" | \"gnosis-testnet\" | \"rollux-mainnet\" | \"rollux-testnet\" | \"taiko-jolnir-testnet\" | \"optimism-sepolia\" | \"bnb-opbnb-mainnet\" | \"telos-mainnet\" | \"telos-testnet\" | \"avalanche-hubble-exchange-testnet\" | \"avalanche-miho-testnet\" | \"avalanche-bulletin-testnet\" | \"avalanche-kiwi-testnet\" | \"avalanche-hero-testnet\" | \"avalanche-avacloud-testnet\" | \"avalanche-thirdweb-testnet\" | \"avalanche-mondrian-testnet\" | \"avalanche-conduit-testnet\" | \"avalanche-nmac-testnet\" | \"avalanche-orderly-testnet\" | \"avalanche-amplify-testnet\" | \"avalanche-mirai-testnet\" | \"avalanche-wagmi-testnet\" | \"avalanche-playa3ull-testnet\" | \"avalanche-beam-mainnet\" | \"scroll-mainnet\" | \"eth-holesky\" | \"tomochain-mainnet\" | \"tomochain-testnet\" | \"avalanche-jono11-testnet\" | \"base-sepolia-testnet\" | \"xai-testnet\" | \"arbitrum-sepolia\" | \"lumoz-public-zksync-v2\" | \"lumoz-decibling\" | \"lumoz-stark-sport\" | \"avalanche-lt0-testnet\" | \"avalanche-lt1-testnet\" | \"avalanche-lt2-testnet\" | \"avalanche-lt3-testnet\" | \"avalanche-lt4-testnet\" | \"avalanche-lt5-testnet\" | \"syndr-testnet\" | \"crossfi-evm-testnet\" | \"celo-mainnet\" | \"taiko-katla-testnet\" | \"movement-mevm-testnet\" | \"zora-sepolia-testnet\" | \"merlin-mainnet\" | \"merlin-testnet\" | \"avalanche-hubble-exchange-mainnet\" | \"xai-mainnet\";\nexport type Quote = \"USD\" | \"CAD\" | \"EUR\" | \"SGD\" | \"INR\" | \"JPY\" | \"VND\" | \"CNY\" | \"KRW\" | \"RUB\" | \"TRY\" | \"NGN\" | \"ARS\" | \"AUD\" | \"CHF\" | \"GBP\";\nexport type ChainID = 20090103 | 1 | 137 | 56 | 43114 | 10 | 250 | 1284 | 1285 | 30 | 42161 | 11297108109 | 8217 | 128 | 71402 | 2020 | 9001 | 592 | 4689 | 1666600000 | 25 | 1313161554 | 42262 | 288 | 5 | 80001 | 43113 | 97 | 1287 | 31 | 421613 | 4002 | 11297108099 | 256 | 71401 | 9000 | 4690 | 1666700000 | 1313161555 | 534354 | 534351 | 1131378225 | 53935 | 73772 | 43288 | 1294 | 56288 | 28 | 1297 | 9728 | 4328 | 1001 | 192837465 | 356256156 | 1564830818 | 278611351 | 432204 | 1026062157 | 432201 | 81 | 338 | 335 | 1088 | 588 | 2002 | 200202 | 2001 | 200101 | 73773 | 1399811149 | 2046399126 | 82 | 83 | 2139927552 | 2888 | 245022926 | 344106930 | 476158412 | 42170 | 7700 | 119 | 1029 | 14 | 114 | 19 | 16 | 321 | 322 | 1422 | 59140 | 84531 | 5001 | 534353 | 248 | 9372 | 2152 | 2154 | 416 | 23294 | 23295 | 420 | 1101 | 1662 | 1024 | 39797 | 49797 | 1663 | 11155111 | 1482601649 | 644937893 | 222000222 | 49321 | 1231 | 1230 | 7777777 | 999 | 245022934 | 2044 | 8453 | 5000 | 262018 | 59144 | 7332 | 10507 | 7979 | 1234 | 1228 | 8888 | 333000333 | 12008 | 12011 | 2038 | 1995 | 12010 | 51178 | 12009 | 12012 | 324 | 599 | 280 | 1343 | 11115 | 6765897100 | 1079 | 13337 | 16350 | 1990 | 20221 | 5611 | 12018 | 12013 | 12020 | 12015 | 12016 | 12014 | 12017 | 12019 | 431234 | 6119 | 73 | 7001 | 42888 | 919 | 5151706 | 923018 | 3441005 | 424 | 58008 | 100 | 10200 | 570 | 57000 | 167007 | 11155420 | 204 | 40 | 41 | 321123 | 360163 | 78431 | 2037 | 17772 | 152703 | 894538 | 179188 | 78432 | 7777 | 986532 | 78430 | 2195 | 11111 | 3012 | 4337 | 534352 | 17000 | 88 | 89 | 20765 | 84532 | 47279324479 | 421614 | 12027 | 12028 | 12029 | 31330 | 31331 | 31332 | 31333 | 31334 | 31335 | 412346 | 8545 | 42220 | 167008 | 336 | 999999999 | 4200 | 686868 | 1992 | 660279;\nexport type Source = \"Ponder\" | \"GoldRush\" | \"Viem\";\nexport const userAgent = \"com.covalenthq.sdk.typescript/1.0.2\";\n\nexport class Response<T> {\n data: T;\n error: boolean;\n error_code: number | string;\n error_message: string;\n}\n\nexport interface CovalentClientSettings {\n /** * Toggle to analyze the execution of each api request. */\n debug?: boolean;\n /** * The number of concurrent requests allowed. */\n threadCount?: number;\n /** Toggle to turn on and off retry logic */\n enableRetry?: boolean;\n \n}\n\n/**\n * CovalentClient Class\n */\nexport class CovalentClient {\n\n public SecurityService: SecurityService;\n \n public BalanceService: BalanceService;\n \n public BaseService: BaseService;\n \n public NftService: NftService;\n \n public PricingService: PricingService;\n \n public TransactionService: TransactionService;\n \n public XykService: XykService;\n\n private _is_key_valid: boolean;\n \n constructor(apiKey: string, settings?: CovalentClientSettings, source?: Source) {\n const { debug = false, threadCount = 3, enableRetry = true } = settings || {}; \n\n const validator = new ApiKeyValidator(apiKey);\n this._is_key_valid = validator.isValidApiKey();\n\n this.SecurityService = new SecurityService(apiKey, debug, threadCount, this._is_key_valid, enableRetry, source);\n this.BalanceService = new BalanceService(apiKey, debug, threadCount, this._is_key_valid, enableRetry, source);\n this.BaseService = new BaseService(apiKey, debug, threadCount,this._is_key_valid, enableRetry, source);\n this.NftService = new NftService(apiKey, debug, threadCount, this._is_key_valid, enableRetry, source);\n this.PricingService = new PricingService(apiKey, debug, threadCount, this._is_key_valid, enableRetry, source);\n this.TransactionService = new TransactionService(apiKey, debug, threadCount, this._is_key_valid, enableRetry, source);\n this.XykService = new XykService(apiKey, debug, threadCount, this._is_key_valid, enableRetry, source);\n }\n\n}\n\n/**\n * @deprecated\n * Please use {@link CovalentClient} going forward! This method will be removed after Oct 31, 2023.\n * @see #CovalentClient\n * CovalentClient Class\n */\nexport class Client {\n\n public SecurityService: SecurityService;\n \n public BalanceService: BalanceService;\n \n public BaseService: BaseService;\n \n public NftService: NftService;\n \n public PricingService: PricingService;\n \n public TransactionService: TransactionService;\n \n public XykService: XykService;\n\n private _is_key_valid: boolean;\n\n constructor(apiKey: string, settings?: CovalentClientSettings, source?: Source) {\n const { debug = false, threadCount = 3, enableRetry = true} = settings || {}; \n\n const validator = new ApiKeyValidator(apiKey);\n this._is_key_valid = validator.isValidApiKey();\n\n this.SecurityService = new SecurityService(apiKey, debug, threadCount, this._is_key_valid, enableRetry, source);\n this.BalanceService = new BalanceService(apiKey, debug, threadCount, this._is_key_valid, enableRetry, source);\n this.BaseService = new BaseService(apiKey, debug, threadCount,this._is_key_valid, enableRetry, source);\n this.NftService = new NftService(apiKey, debug, threadCount, this._is_key_valid, enableRetry, source);\n this.PricingService = new PricingService(apiKey, debug, threadCount, this._is_key_valid, enableRetry, source);\n this.TransactionService = new TransactionService(apiKey, debug, threadCount, this._is_key_valid, enableRetry, source);\n this.XykService = new XykService(apiKey, debug, threadCount, this._is_key_valid, enableRetry, source);\n }\n\n}\n","import Big from \"big.js\";\n\nexport const calculatePrettyBalance = (\n value: number | bigint,\n decimals: number = 18,\n roundOff: boolean = true,\n precision: number = 0\n): string => {\n let bigIntValue: bigint;\n let bigDecimalValue;\n try {\n bigIntValue = BigInt(value);\n bigDecimalValue = new Big(bigIntValue.toString());\n } catch (error) {\n bigDecimalValue = new Big(value.toString());\n }\n\n const _decimals: number = decimals ?? 18;\n const _expoValue: bigint = BigInt(Math.pow(10, _decimals));\n const bigDecimalExpo = new Big(_expoValue.toString());\n const _calculated = bigDecimalValue.div(bigDecimalExpo);\n\n if (decimals === 0) {\n return _calculated.toString();\n }\n\n // removes the decimal places, true by default so it adds decimals\n if (!roundOff) {\n return _calculated.toString();\n }\n let _decimalFixed = precision;\n if (precision === 0) {\n _decimalFixed = 2;\n if (_calculated.lt(100)) {\n _decimalFixed = 6;\n }\n }\n return _calculated.toFixed(_decimalFixed); \n};\n","import { Quote } from \"../services/CovalentClient\";\n\nconst LESS_THAN_ZERO = \"0.01\";\nconst ZERO = \"0.00\";\n\nconst currencyMap = new Map<string, string>([\n [\"USD\", \"$\"],\n [\"CAD\", \"CA$\"],\n [\"EUR\", \"€\"],\n [\"SGD\", \"S$\"],\n [\"INR\", \"₹\"],\n [\"JPY\", \"¥\"],\n [\"VND\", \"₫\"],\n [\"CNY\", \"CN¥\"],\n [\"KRW\", \"₩\"],\n [\"RUB\", \"₽\"],\n [\"TRY\", \"₺\"],\n [\"NGN\", \"₦\"],\n [\"ARS\", \"ARS\"],\n [\"AUD\", \"A$\"],\n [\"CHF\", \"CHF\"],\n [\"GBP\", \"£\"],\n ]);\n\nexport const prettifyCurrency = (\n value: any,\n decimals = 2,\n currency: Quote = \"USD\",\n ignoreSmallValue = false,\n ignoreMinus = true,\n ignoreZero = false\n) => {\n if (typeof value === \"string\") {\n value = Number(value);\n }\n let minus = \"\";\n let currencySuffix = \"\";\n\n // pass ignoreMinus false to get the negative number for currency formatter\n if (!ignoreMinus && value < 0) {\n value = Math.abs(value);\n minus = \"-\";\n }\n \n if (value === 0 || !value) {\n // if value is 0, pass ignoreZero true to get this string \"<$0.01\"\n if (ignoreZero) {\n return \"<\" + currencyMap.get(currency) + LESS_THAN_ZERO;\n } else {\n return currencyMap.get(currency) + ZERO;\n }\n } else if (value < 0 || value < 1) {\n if (value < 0.01 && ignoreSmallValue) {\n return \"<\" + currencyMap.get(currency) + LESS_THAN_ZERO;\n }\n } else if (value > 999999999) {\n value = value / 1000000000;\n currencySuffix = \"B\";\n } else if (value > 999999) {\n value = value / 1000000; // convert to M for number from > 1 million\n currencySuffix = \"M\";\n }\n // Added to round down the number\n const expo = Math.pow(10, decimals);\n value = Math.floor(value * expo) / expo;\n \n // generates the value with the inputted currency\n const formatter = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: currency,\n maximumFractionDigits: decimals,\n currencyDisplay: \"symbol\"\n });\n\n //replace the occasional incorrect currency symbol from the formatter and replace with correct symbol from currencyMap\n const regex = new RegExp(`${currency}\\\\s?`);\n const _val = formatter.format(value).replace(regex, currencyMap.get(currency) ?? \"$\");\n \n return minus + _val + currencySuffix;\n};","export enum Chains {\n BTC_MAINNET = \"btc-mainnet\",\n ETH_MAINNET = \"eth-mainnet\",\n MATIC_MAINNET = \"matic-mainnet\",\n BSC_MAINNET = \"bsc-mainnet\",\n AVALANCHE_MAINNET = \"avalanche-mainnet\",\n OPTIMISM_MAINNET = \"optimism-mainnet\",\n FANTOM_MAINNET = \"fantom-mainnet\",\n MOONBEAM_MAINNET = \"moonbeam-mainnet\",\n MOONBEAM_MOONRIVER = \"moonbeam-moonriver\",\n RSK_MAINNET = \"rsk-mainnet\",\n ARBITRUM_MAINNET = \"arbitrum-mainnet\",\n PALM_MAINNET = \"palm-mainnet\",\n KLAYTN_MAINNET = \"klaytn-mainnet\",\n HECO_MAINNET = \"heco-mainnet\",\n NERVOS_GODWOKEN_MAINNET = \"nervos-godwoken-mainnet\",\n AXIE_MAINNET = \"axie-mainnet\",\n EVMOS_MAINNET = \"evmos-mainnet\",\n ASTAR_MAINNET = \"astar-mainnet\",\n IOTEX_MAINNET = \"iotex-mainnet\",\n HARMONY_MAINNET = \"harmony-mainnet\",\n CRONOS_MAINNET = \"cronos-mainnet\",\n AURORA_MAINNET = \"aurora-mainnet\",\n EMERALD_PARATIME_MAINNET = \"emerald-paratime-mainnet\",\n BOBA_MAINNET = \"boba-mainnet\",\n ETH_GOERLI = \"eth-goerli\",\n MATIC_MUMBAI = \"matic-mumbai\",\n AVALANCHE_TESTNET = \"avalanche-testnet\",\n BSC_TESTNET = \"bsc-testnet\",\n MOONBEAM_MOONBASE_ALPHA = \"moonbeam-moonbase-alpha\",\n RSK_TESTNET = \"rsk-testnet\",\n ARBITRUM_GOERLI = \"arbitrum-goerli\",\n FANTOM_TESTNET = \"fantom-testnet\",\n PALM_TESTNET = \"palm-testnet\",\n HECO_TESTNET = \"heco-testnet\",\n NERVOS_GODWOKEN_TESTNET = \"nervos-godwoken-testnet\",\n EVMOS_TESTNET = \"evmos-testnet\",\n IOTEX_TESTNET = \"iotex-testnet\",\n HARMONY_TESTNET = \"harmony-testnet\",\n AURORA_TESTNET = \"aurora-testnet\",\n SCROLL_L2_TESTNET = \"scroll-l2-testnet\",\n SCROLL_SEPOLIA_TESTNET = \"scroll-sepolia-testnet\",\n COVALENT_INTERNAL_NETWORK_V1 = \"covalent-internal-network-v1\",\n DEFI_KINGDOMS_MAINNET = \"defi-kingdoms-mainnet\",\n SWIMMER_MAINNET = \"swimmer-mainnet\",\n BOBA_AVALANCHE_MAINNET = \"boba-avalanche-mainnet\",\n BOBA_BOBABEAM_MAINNET = \"boba-bobabeam-mainnet\",\n BOBA_BNB_MAINNET = \"boba-bnb-mainnet\",\n BOBA_RINKEBY_TESTNET = \"boba-rinkeby-testnet\",\n BOBA_BOBABASE_TESTNET = \"boba-bobabase-testnet\",\n BOBA_BNB_TESTNET = \"boba-bnb-testnet\",\n BOBA_AVALANCHE_TESTNET = \"boba-avalanche-testnet\",\n KLAYTN_TESTNET = \"klaytn-testnet\",\n GATHER_MAINNET = \"gather-mainnet\",\n GATHER_TESTNET = \"gather-testnet\",\n SKALE_CALYPSO = \"skale-calypso\",\n SKALE_MAINNET = \"skale-mainnet\",\n SKALE_RAZOR = \"skale-razor\",\n AVALANCHE_DEXALOT_MAINNET = \"avalanche-dexalot-mainnet\",\n SKALE_OMNUS = \"skale-omnus\",\n AVALANCHE_DEXALOT_TESTNET = \"avalanche-dexalot-testnet\",\n ASTAR_SHIBUYA = \"astar-shibuya\",\n CRONOS_TESTNET = \"cronos-testnet\",\n DEFI_KINGDOMS_TESTNET = \"defi-kingdoms-testnet\",\n METIS_MAINNET = \"metis-mainnet\",\n METIS_STARDUST = \"metis-stardust\",\n MILKOMEDA_A1_MAINNET = \"milkomeda-a1-mainnet\",\n MILKOMEDA_A1_DEVNET = \"milkomeda-a1-devnet\",\n MILKOMEDA_C1_MAINNET = \"milkomeda-c1-mainnet\",\n MILKOMEDA_C1_DEVNET = \"milkomeda-c1-devnet\",\n SWIMMER_TESTNET = \"swimmer-testnet\",\n SOLANA_MAINNET = \"solana-mainnet\",\n SKALE_EUROPA = \"skale-europa\",\n METER_MAINNET = \"meter-mainnet\",\n METER_TESTNET = \"meter-testnet\",\n SKALE_EXORDE = \"skale-exorde\",\n BOBA_GOERLI = \"boba-goerli\",\n NEON_TESTNET = \"neon-testnet\",\n SKALE_STAGING_UUM = \"skale-staging-uum\",\n SKALE_STAGING_LCC = \"skale-staging-lcc\",\n ARBITRUM_NOVA_MAINNET = \"arbitrum-nova-mainnet\",\n CANTO_MAINNET = \"canto-mainnet\",\n BITTORRENT_MAINNET = \"bittorrent-mainnet\",\n BITTORRENT_TESTNET = \"bittorrent-testnet\",\n FLARENETWORKS_FLARE_MAINNET = \"flarenetworks-flare-mainnet\",\n FLARENETWORKS_FLARE_TESTNET = \"flarenetworks-flare-testnet\",\n FLARENETWORKS_CANARY_MAINNET = \"flarenetworks-canary-mainnet\",\n FLARENETWORKS_CANARY_TESTNET = \"flarenetworks-canary-testnet\",\n KCC_MAINNET = \"kcc-mainnet\",\n KCC_TESTNET = \"kcc-testnet\",\n POLYGON_ZKEVM_TESTNET = \"polygon-zkevm-testnet\",\n LINEA_TESTNET = \"linea-testnet\",\n BASE_TESTNET = \"base-testnet\",\n MANTLE_TESTNET = \"mantle-testnet\",\n SCROLL_ALPHA_TESTNET = \"scroll-alpha-testnet\",\n OASYS_MAINNET = \"oasys-mainnet\",\n OASYS_TESTNET = \"oasys-testnet\",\n FINDORA_MAINNET = \"findora-mainnet\",\n FINDORA_FORGE_TESTNET = \"findora-forge-testnet\",\n SX_MAINNET = \"sx-mainnet\",\n OASIS_SAPPHIRE_MAINNET = \"oasis-sapphire-mainnet\",\n OASIS_SAPPHIRE_TESTNET = \"oasis-sapphire-testnet\",\n OPTIMISM_GOERLI = \"optimism-goerli\",\n POLYGON_ZKEVM_MAINNET = \"polygon-zkevm-mainnet\",\n HORIZEN_YUMA_TESTNET = \"horizen-yuma-testnet\",\n CLV_PARACHAIN = \"clv-parachain\",\n ENERGI_MAINNET = \"energi-mainnet\",\n ENERGI_TESTNET = \"energi-testnet\",\n HORIZEN_GOBI_TESTNET = \"horizen-gobi-testnet\",\n ETH_SEPOLIA = \"eth-sepolia\",\n SKALE_NEBULA = \"skale-nebula\",\n SKALE_BATTLEGROUND = \"skale-battleground\",\n AVALANCHE_MELD_TESTNET = \"avalanche-meld-testnet\",\n GUNZILLA_TESTNET = \"gunzilla-testnet\",\n ULTRON_MAINNET = \"ultron-mainnet\",\n ULTRON_TESTNET = \"ultron-testnet\",\n ZORA_MAINNET = \"zora-mainnet\",\n ZORA_GOERLI_TESTNET = \"zora-goerli-testnet\",\n NEON_MAINNET = \"neon-mainnet\",\n AVALANCHE_SHRAPNEL_MAINNET = \"avalanche-shrapnel-mainnet\",\n BASE_MAINNET = \"base-mainnet\",\n MANTLE_MAINNET = \"mantle-mainnet\",\n AVALANCHE_LOCO_LEGENDS_MAINNET = \"avalanche-loco-legends-mainnet\",\n LINEA_MAINNET = \"linea-mainnet\",\n HORIZEN_EON_MAINNET = \"horizen-eon-mainnet\",\n AVALANCHE_NUMBERS = \"avalanche-numbers\",\n AVALANCHE_DOS = \"avalanche-dos\",\n AVALANCHE_STEP_NETWORK = \"avalanche-step-network\",\n AVALANCHE_XPLUS = \"avalanche-xplus\",\n AVALANCHE_XANACHAIN = \"avalanche-xanachain\",\n AVALANCHE_MELD_MAINNET = \"avalanche-meld-mainnet\",\n OPSIDE_PUBLIC_ZKEVM = \"opside-public-zkevm\",\n OPSIDE_LAW_CHAIN = \"opside-law-chain\",\n AVALANCHE_SHRAPNEL_TESTNET = \"avalanche-shrapnel-testnet\",\n AVALANCHE_LOCO_LEGENDS_TESTNET = \"avalanche-loco-legends-testnet\",\n OPSIDE_CB_ZKEVM = \"opside-cb-zkevm\",\n OPSIDE_PRE_ALPHA_TESTNET = \"opside-pre-alpha-testnet\",\n OPSIDE_ERA7 = \"opside-era7\",\n OPSIDE_XTHRILL = \"opside-xthrill\",\n ZKSYNC_MAINNET = \"zksync-mainnet\",\n METIS_TESTNET = \"metis-testnet\",\n ZKSYNC_TESTNET = \"zksync-testnet\",\n AVALANCHE_BLITZ_TESTNET = \"avalanche-blitz-testnet\",\n AVALANCHE_D_CHAIN_TESTNET = \"avalanche-d-chain-testnet\",\n AVALANCHE_GREEN_DOT_TESTNET = \"avalanche-green-dot-testnet\",\n AVALANCHE_MINTARA_TESTNET = \"avalanche-mintara-testnet\",\n AVALANCHE_BEAM_TESTNET = \"avalanche-beam-testnet\",\n BNB_META_APES_MAINNET = \"bnb-meta-apes-mainnet\",\n BNB_ANTIMATTER_MAINNET = \"bnb-antimatter-mainnet\",\n BNB_ANTIMATTER_TESTNET = \"bnb-antimatter-testnet\",\n BNB_OPBNB_TESTNET = \"bnb-opbnb-testnet\",\n OPSIDE_DEBOX = \"opside-debox\",\n OPSIDE_JACKBOT = \"opside-jackbot\",\n OPSIDE_ODX_ZKEVM_TESTNET = \"opside-odx-zkevm-testnet\",\n OPSIDE_READON_CONTENT_TESTNET = \"opside-readon-content-testnet\",\n OPSIDE_RELATION = \"opside-relation\",\n OPSIDE_SOQUEST_ZKEVM = \"opside-soquest-zkevm\",\n OPSIDE_VIP3 = \"opside-vip3\",\n OPSIDE_ZKMETA = \"opside-zkmeta\",\n AVALANCHE_PULSAR_TESTNET = \"avalanche-pulsar-testnet\",\n AVALANCHE_UPTN = \"avalanche-uptn\",\n BNB_FNCY_MAINNET = \"bnb-fncy-mainnet\",\n ZETACHAIN_TESTNET = \"zetachain-testnet\",\n KINTO_TESTNET = \"kinto-testnet\",\n MODE_TESTNET = \"mode-testnet\",\n LOOT_MAINNET = \"loot-mainnet\",\n BNB_FNCY_TESTNET = \"bnb-fncy-testnet\",\n MANTA_TESTNET = \"manta-testnet\",\n PGN_MAINNET = \"pgn-mainnet\",\n PGN_TESTNET = \"pgn-testnet\",\n GNOSIS_MAINNET = \"gnosis-mainnet\",\n GNOSIS_TESTNET = \"gnosis-testnet\",\n ROLLUX_MAINNET = \"rollux-mainnet\",\n ROLLUX_TESTNET = \"rollux-testnet\",\n TAIKO_JOLNIR_TESTNET = \"taiko-jolnir-testnet\",\n OPTIMISM_SEPOLIA = \"optimism-sepolia\",\n BNB_OPBNB_MAINNET = \"bnb-opbnb-mainnet\",\n TELOS_MAINNET = \"telos-mainnet\",\n TELOS_TESTNET = \"telos-testnet\",\n AVALANCHE_HUBBLE_EXCHANGE_TESTNET = \"avalanche-hubble-exchange-testnet\",\n AVALANCHE_MIHO_TESTNET = \"avalanche-miho-testnet\",\n AVALANCHE_BULLETIN_TESTNET = \"avalanche-bulletin-testnet\",\n AVALANCHE_KIWI_TESTNET = \"avalanche-kiwi-testnet\",\n AVALANCHE_HERO_TESTNET = \"avalanche-hero-testnet\",\n AVALANCHE_AVACLOUD_TESTNET = \"avalanche-avacloud-testnet\",\n AVALANCHE_THIRDWEB_TESTNET = \"avalanche-thirdweb-testnet\",\n AVALANCHE_MONDRIAN_TESTNET = \"avalanche-mondrian-testnet\",\n AVALANCHE_CONDUIT_TESTNET = \"avalanche-conduit-testnet\",\n AVALANCHE_NMAC_TESTNET = \"avalanche-nmac-testnet\",\n AVALANCHE_ORDERLY_TESTNET = \"avalanche-orderly-testnet\",\n AVALANCHE_AMPLIFY_TESTNET = \"avalanche-amplify-testnet\",\n AVALANCHE_MIRAI_TESTNET = \"avalanche-mirai-testnet\",\n AVALANCHE_WAGMI_TESTNET = \"avalanche-wagmi-testnet\",\n AVALANCHE_PLAYA3ULL_TESTNET = \"avalanche-playa3ull-testnet\",\n AVALANCHE_BEAM_MAINNET = \"avalanche-beam-mainnet\",\n SCROLL_MAINNET = \"scroll-mainnet\",\n ETH_HOLESKY = \"eth-holesky\",\n TOMOCHAIN_MAINNET = \"tomochain-mainnet\",\n TOMOCHAIN_TESTNET = \"tomochain-testnet\",\n AVALANCHE_JONO11_TESTNET = \"avalanche-jono11-testnet\",\n BASE_SEPOLIA_TESTNET = \"base-sepolia-testnet\",\n XAI_TESTNET = \"xai-testnet\",\n ARBITRUM_SEPOLIA = \"arbitrum-sepolia\",\n LUMOZ_PUBLIC_ZKSYNC_V2 = \"lumoz-public-zksync-v2\",\n LUMOZ_DECIBLING = \"lumoz-decibling\",\n LUMOZ_STARK_SPORT = \"lumoz-stark-sport\",\n AVALANCHE_LT0_TESTNET = \"avalanche-lt0-testnet\",\n AVALANCHE_LT1_TESTNET = \"avalanche-lt1-testnet\",\n AVALANCHE_LT2_TESTNET = \"avalanche-lt2-testnet\",\n AVALANCHE_LT3_TESTNET = \"avalanche-lt3-testnet\",\n AVALANCHE_LT4_TESTNET = \"avalanche-lt4-testnet\",\n AVALANCHE_LT5_TESTNET = \"avalanche-lt5-testnet\",\n SYNDR_TESTNET = \"syndr-testnet\",\n CROSSFI_EVM_TESTNET = \"crossfi-evm-testnet\",\n CELO_MAINNET = \"celo-mainnet\",\n TAIKO_KATLA_TESTNET = \"taiko-katla-testnet\",\n MOVEMENT_MEVM_TESTNET = \"movement-mevm-testnet\",\n ZORA_SEPOLIA_TESTNET = \"zora-sepolia-testnet\",\n MERLIN_MAINNET = \"merlin-mainnet\",\n MERLIN_TESTNET = \"merlin-testnet\",\n AVALANCHE_HUBBLE_EXCHANGE_MAINNET = \"avalanche-hubble-exchange-mainnet\",\n XAI_MAINNET = \"xai-mainnet\"\n}\n"],"names":["Queue","require$$0","paginateEndpoint","pLimit","LogoUrls","NftCollectionAttribute","Pagination","ContractMetadata","Explorer","DecodedItem","Param","LogEvent"],"mappings":"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","x_google_ignoreList":[1,2]}
|