{"version":3,"file":"api-client.modern.mjs","sources":["../src/data/MediaPreset.ts","../src/gen/core/ApiError.ts","../src/gen/core/CancelablePromise.ts","../src/gen/core/request.ts","../src/gen/services/AlchemyCompatibleExperimentalService.ts","../src/gen/services/CenterApiInfoService.ts","../src/gen/services/CollectionAndAssetDataService.ts","../src/gen/services/MarketDataService.ts","../src/gen/services/NotificationStreamsService.ts","../src/gen/services/OrderbookDataExperimentalService.ts","../src/gen/services/OwnershipAndTransferDataService.ts","../src/gen/services/RenderingService.ts","../src/gen/services/SearchService.ts","../src/gen/CenterClient.ts","../src/gen/core/FetchHttpRequest.ts","../src/gen/core/BaseHttpRequest.ts","../src/data/MediaType.ts","../src/config.ts","../index.ts"],"sourcesContent":["export const allMediaPresets = ['small', 'medium', 'original'] as const\n\nexport type MediaPreset = typeof allMediaPresets[number]\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ApiResult } from './ApiResult';\n\nexport class ApiError extends Error {\n    public readonly url: string;\n    public readonly status: number;\n    public readonly statusText: string;\n    public readonly body: any;\n\n    constructor(response: ApiResult, message: string) {\n        super(message);\n\n        this.name = 'ApiError';\n        this.url = response.url;\n        this.status = response.status;\n        this.statusText = response.statusText;\n        this.body = response.body;\n    }\n}","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport class CancelError extends Error {\n\n    constructor(message: string) {\n        super(message);\n        this.name = 'CancelError';\n    }\n\n    public get isCancelled(): boolean {\n        return true;\n    }\n}\n\nexport interface OnCancel {\n    readonly isResolved: boolean;\n    readonly isRejected: boolean;\n    readonly isCancelled: boolean;\n\n    (cancelHandler: () => void): void;\n}\n\nexport class CancelablePromise<T> implements Promise<T> {\n    readonly [Symbol.toStringTag]: string;\n\n    private _isResolved: boolean;\n    private _isRejected: boolean;\n    private _isCancelled: boolean;\n    private readonly _cancelHandlers: (() => void)[];\n    private readonly _promise: Promise<T>;\n    private _resolve?: (value: T | PromiseLike<T>) => void;\n    private _reject?: (reason?: any) => void;\n\n    constructor(\n        executor: (\n            resolve: (value: T | PromiseLike<T>) => void,\n            reject: (reason?: any) => void,\n            onCancel: OnCancel\n        ) => void\n    ) {\n        this._isResolved = false;\n        this._isRejected = false;\n        this._isCancelled = false;\n        this._cancelHandlers = [];\n        this._promise = new Promise<T>((resolve, reject) => {\n            this._resolve = resolve;\n            this._reject = reject;\n\n            const onResolve = (value: T | PromiseLike<T>): void => {\n                if (this._isResolved || this._isRejected || this._isCancelled) {\n                    return;\n                }\n                this._isResolved = true;\n                this._resolve?.(value);\n            };\n\n            const onReject = (reason?: any): void => {\n                if (this._isResolved || this._isRejected || this._isCancelled) {\n                    return;\n                }\n                this._isRejected = true;\n                this._reject?.(reason);\n            };\n\n            const onCancel = (cancelHandler: () => void): void => {\n                if (this._isResolved || this._isRejected || this._isCancelled) {\n                    return;\n                }\n                this._cancelHandlers.push(cancelHandler);\n            };\n\n            Object.defineProperty(onCancel, 'isResolved', {\n                get: (): boolean => this._isResolved,\n            });\n\n            Object.defineProperty(onCancel, 'isRejected', {\n                get: (): boolean => this._isRejected,\n            });\n\n            Object.defineProperty(onCancel, 'isCancelled', {\n                get: (): boolean => this._isCancelled,\n            });\n\n            return executor(onResolve, onReject, onCancel as OnCancel);\n        });\n    }\n\n    public then<TResult1 = T, TResult2 = never>(\n        onFulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n        onRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null\n    ): Promise<TResult1 | TResult2> {\n        return this._promise.then(onFulfilled, onRejected);\n    }\n\n    public catch<TResult = never>(\n        onRejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null\n    ): Promise<T | TResult> {\n        return this._promise.catch(onRejected);\n    }\n\n    public finally(onFinally?: (() => void) | null): Promise<T> {\n        return this._promise.finally(onFinally);\n    }\n\n    public cancel(): void {\n        if (this._isResolved || this._isRejected || this._isCancelled) {\n            return;\n        }\n        this._isCancelled = true;\n        if (this._cancelHandlers.length) {\n            try {\n                for (const cancelHandler of this._cancelHandlers) {\n                    cancelHandler();\n                }\n            } catch (error) {\n                console.warn('Cancellation threw an error', error);\n                return;\n            }\n        }\n        this._cancelHandlers.length = 0;\n        this._reject?.(new CancelError('Request aborted'));\n    }\n\n    public get isCancelled(): boolean {\n        return this._isCancelled;\n    }\n}","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport { ApiError } from './ApiError';\nimport type { ApiRequestOptions } from './ApiRequestOptions';\nimport type { ApiResult } from './ApiResult';\nimport { CancelablePromise } from './CancelablePromise';\nimport type { OnCancel } from './CancelablePromise';\nimport type { OpenAPIConfig } from './OpenAPI';\n\nconst isDefined = <T>(value: T | null | undefined): value is Exclude<T, null | undefined> => {\n    return value !== undefined && value !== null;\n};\n\nconst isString = (value: any): value is string => {\n    return typeof value === 'string';\n};\n\nconst isStringWithValue = (value: any): value is string => {\n    return isString(value) && value !== '';\n};\n\nconst isBlob = (value: any): value is Blob => {\n    return (\n        typeof value === 'object' &&\n        typeof value.type === 'string' &&\n        typeof value.stream === 'function' &&\n        typeof value.arrayBuffer === 'function' &&\n        typeof value.constructor === 'function' &&\n        typeof value.constructor.name === 'string' &&\n        /^(Blob|File)$/.test(value.constructor.name) &&\n        /^(Blob|File)$/.test(value[Symbol.toStringTag])\n    );\n};\n\nconst isFormData = (value: any): value is FormData => {\n    return value instanceof FormData;\n};\n\nconst base64 = (str: string): string => {\n    try {\n        return btoa(str);\n    } catch (err) {\n        // @ts-ignore\n        return Buffer.from(str).toString('base64');\n    }\n};\n\nconst getQueryString = (params: Record<string, any>): string => {\n    const qs: string[] = [];\n\n    const append = (key: string, value: any) => {\n        qs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);\n    };\n\n    const process = (key: string, value: any) => {\n        if (isDefined(value)) {\n            if (Array.isArray(value)) {\n                value.forEach(v => {\n                    process(key, v);\n                });\n            } else if (typeof value === 'object') {\n                Object.entries(value).forEach(([k, v]) => {\n                    process(`${key}[${k}]`, v);\n                });\n            } else {\n                append(key, value);\n            }\n        }\n    };\n\n    Object.entries(params).forEach(([key, value]) => {\n        process(key, value);\n    });\n\n    if (qs.length > 0) {\n        return `?${qs.join('&')}`;\n    }\n\n    return '';\n};\n\nconst getUrl = (config: OpenAPIConfig, options: ApiRequestOptions): string => {\n    const encoder = config.ENCODE_PATH || encodeURI;\n\n    const path = options.url\n        .replace('{api-version}', config.VERSION)\n        .replace(/{(.*?)}/g, (substring: string, group: string) => {\n            if (options.path?.hasOwnProperty(group)) {\n                return encoder(String(options.path[group]));\n            }\n            return substring;\n        });\n\n    const url = `${config.BASE}${path}`;\n    if (options.query) {\n        return `${url}${getQueryString(options.query)}`;\n    }\n    return url;\n};\n\nconst getFormData = (options: ApiRequestOptions): FormData | undefined => {\n    if (options.formData) {\n        const formData = new FormData();\n\n        const process = (key: string, value: any) => {\n            if (isString(value) || isBlob(value)) {\n                formData.append(key, value);\n            } else {\n                formData.append(key, JSON.stringify(value));\n            }\n        };\n\n        Object.entries(options.formData)\n            .filter(([_, value]) => isDefined(value))\n            .forEach(([key, value]) => {\n                if (Array.isArray(value)) {\n                    value.forEach(v => process(key, v));\n                } else {\n                    process(key, value);\n                }\n            });\n\n        return formData;\n    }\n    return undefined;\n};\n\ntype Resolver<T> = (options: ApiRequestOptions) => Promise<T>;\n\nconst resolve = async <T>(options: ApiRequestOptions, resolver?: T | Resolver<T>): Promise<T | undefined> => {\n    if (typeof resolver === 'function') {\n        return (resolver as Resolver<T>)(options);\n    }\n    return resolver;\n};\n\nconst getHeaders = async (config: OpenAPIConfig, options: ApiRequestOptions): Promise<Headers> => {\n    const token = await resolve(options, config.TOKEN);\n    const username = await resolve(options, config.USERNAME);\n    const password = await resolve(options, config.PASSWORD);\n    const additionalHeaders = await resolve(options, config.HEADERS);\n\n    const headers = Object.entries({\n        Accept: 'application/json',\n        ...additionalHeaders,\n        ...options.headers,\n    })\n        .filter(([_, value]) => isDefined(value))\n        .reduce((headers, [key, value]) => ({\n            ...headers,\n            [key]: String(value),\n        }), {} as Record<string, string>);\n\n    if (isStringWithValue(token)) {\n        headers['Authorization'] = `Bearer ${token}`;\n    }\n\n    if (isStringWithValue(username) && isStringWithValue(password)) {\n        const credentials = base64(`${username}:${password}`);\n        headers['Authorization'] = `Basic ${credentials}`;\n    }\n\n    if (options.body) {\n        if (options.mediaType) {\n            headers['Content-Type'] = options.mediaType;\n        } else if (isBlob(options.body)) {\n            headers['Content-Type'] = options.body.type || 'application/octet-stream';\n        } else if (isString(options.body)) {\n            headers['Content-Type'] = 'text/plain';\n        } else if (!isFormData(options.body)) {\n            headers['Content-Type'] = 'application/json';\n        }\n    }\n\n    return new Headers(headers);\n};\n\nconst getRequestBody = (options: ApiRequestOptions): any => {\n    if (options.body) {\n        if (options.mediaType?.includes('/json')) {\n            return JSON.stringify(options.body)\n        } else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) {\n            return options.body;\n        } else {\n            return JSON.stringify(options.body);\n        }\n    }\n    return undefined;\n};\n\nexport const sendRequest = async (\n    config: OpenAPIConfig,\n    options: ApiRequestOptions,\n    url: string,\n    body: any,\n    formData: FormData | undefined,\n    headers: Headers,\n    onCancel: OnCancel\n): Promise<Response> => {\n    const controller = new AbortController();\n\n    const request: RequestInit = {\n        headers,\n        body: body ?? formData,\n        method: options.method,\n        signal: controller.signal,\n    };\n\n    if (config.WITH_CREDENTIALS) {\n        request.credentials = config.CREDENTIALS;\n    }\n\n    onCancel(() => controller.abort());\n\n    return await fetch(url, request);\n};\n\nconst getResponseHeader = (response: Response, responseHeader?: string): string | undefined => {\n    if (responseHeader) {\n        const content = response.headers.get(responseHeader);\n        if (isString(content)) {\n            return content;\n        }\n    }\n    return undefined;\n};\n\nconst getResponseBody = async (response: Response): Promise<any> => {\n    if (response.status !== 204) {\n        try {\n            const contentType = response.headers.get('Content-Type');\n            if (contentType) {\n                const isJSON = contentType.toLowerCase().startsWith('application/json');\n                if (isJSON) {\n                    return await response.json();\n                } else {\n                    return await response.text();\n                }\n            }\n        } catch (error) {\n            console.error(error);\n        }\n    }\n    return undefined;\n};\n\nconst catchErrorCodes = (options: ApiRequestOptions, result: ApiResult): void => {\n    const errors: Record<number, string> = {\n        400: 'Bad Request',\n        401: 'Unauthorized',\n        403: 'Forbidden',\n        404: 'Not Found',\n        500: 'Internal Server Error',\n        502: 'Bad Gateway',\n        503: 'Service Unavailable',\n        ...options.errors,\n    }\n\n    const error = errors[result.status];\n    if (error) {\n        throw new ApiError(result, error);\n    }\n\n    if (!result.ok) {\n        throw new ApiError(result, 'Generic Error');\n    }\n};\n\n/**\n * Request method\n * @param config The OpenAPI configuration object\n * @param options The request options from the service\n * @returns CancelablePromise<T>\n * @throws ApiError\n */\nexport const request = <T>(config: OpenAPIConfig, options: ApiRequestOptions): CancelablePromise<T> => {\n    return new CancelablePromise(async (resolve, reject, onCancel) => {\n        try {\n            const url = getUrl(config, options);\n            const formData = getFormData(options);\n            const body = getRequestBody(options);\n            const headers = await getHeaders(config, options);\n\n            if (!onCancel.isCancelled) {\n                const response = await sendRequest(config, options, url, body, formData, headers, onCancel);\n                const responseBody = await getResponseBody(response);\n                const responseHeader = getResponseHeader(response, options.responseHeader);\n\n                const result: ApiResult = {\n                    url,\n                    ok: response.ok,\n                    status: response.status,\n                    statusText: response.statusText,\n                    body: responseHeader ?? responseBody,\n                };\n\n                catchErrorCodes(options, result);\n\n                resolve(result.body);\n            }\n        } catch (error) {\n            reject(error);\n        }\n    });\n};","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { AlchemyContractMetadataResponse } from '../models/AlchemyContractMetadataResponse';\nimport type { AlchemyGetContractsForOwnerResponse } from '../models/AlchemyGetContractsForOwnerResponse';\nimport type { AlchemyGetFloorPriceResponse } from '../models/AlchemyGetFloorPriceResponse';\nimport type { AlchemyGetNFTsForCollectionResponse } from '../models/AlchemyGetNFTsForCollectionResponse';\nimport type { AlchemyGetNFTsResponse } from '../models/AlchemyGetNFTsResponse';\nimport type { AlchemyGetOwnersForCollectionResponse } from '../models/AlchemyGetOwnersForCollectionResponse';\nimport type { AlchemyGetOwnersForTokenResponse } from '../models/AlchemyGetOwnersForTokenResponse';\nimport type { AlchemyIsHolderOfCollectionResponse } from '../models/AlchemyIsHolderOfCollectionResponse';\nimport type { AlchemyNFTMetadata } from '../models/AlchemyNFTMetadata';\nimport type { AlchemyReingestContractResponse } from '../models/AlchemyReingestContractResponse';\nimport type { AlchemySearchContractMetadataResponse } from '../models/AlchemySearchContractMetadataResponse';\nimport type { AlchemySummarizeNFTAttributesResponse } from '../models/AlchemySummarizeNFTAttributesResponse';\nimport type { TraitsAttributeWithPrevalence } from '../models/TraitsAttributeWithPrevalence';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class AlchemyCompatibleExperimentalService {\n\n    constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n    /**\n     * computeRarity\n     * Computes the rarity of each attribute of an NFT.\n     * @returns TraitsAttributeWithPrevalence OK\n     * @throws ApiError\n     */\n    public alchemyComputeRarity({\n        apiKey = 'test',\n        network = 'ethereum-mainnet',\n        contractAddress = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',\n        tokenId = '1',\n    }: {\n        /** API Key **/\n        apiKey?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        /** Contract address for the NFTMetadata collection (ERC721 and ERC1155 supported). **/\n        contractAddress?: string,\n        /** The ID of the token. Can be in hex or decimal format. **/\n        tokenId?: string,\n    }): CancelablePromise<Array<TraitsAttributeWithPrevalence>> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/experimental/alchemy/{network}/nft/v2/{apiKey}/computeRarity',\n            path: {\n                'apiKey': apiKey,\n                'network': network,\n            },\n            query: {\n                'contractAddress': contractAddress,\n                'tokenId': tokenId,\n            },\n            errors: {\n                400: `Validation Error`,\n                403: `Access not enabled`,\n            },\n        });\n    }\n\n    /**\n     * getContractMetadata\n     * Queries NFT high-level collection/contract level information.\n     * @returns AlchemyContractMetadataResponse OK\n     * @throws ApiError\n     */\n    public alchemyGetContractMetadata({\n        apiKey = 'test',\n        network = 'ethereum-mainnet',\n        contractAddress = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',\n    }: {\n        /** API Key **/\n        apiKey?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        /** Contract address for the NFTMetadata collection (ERC721 and ERC1155 supported). **/\n        contractAddress?: string,\n    }): CancelablePromise<AlchemyContractMetadataResponse> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/experimental/alchemy/{network}/nft/v2/{apiKey}/getContractMetadata',\n            path: {\n                'apiKey': apiKey,\n                'network': network,\n            },\n            query: {\n                'contractAddress': contractAddress,\n            },\n            errors: {\n                400: `Validation Error`,\n                403: `Access not enabled`,\n            },\n        });\n    }\n\n    /**\n     * getContractsForOwner\n     * Gets all NFT contracts held by an owner address.\n     * @returns AlchemyGetContractsForOwnerResponse OK\n     * @throws ApiError\n     */\n    public alchemyGetContractsForOwner({\n        owner,\n        apiKey = 'test',\n        network = 'ethereum-mainnet',\n        pageKey,\n    }: {\n        /** Address for NFT owner (can be in ENS format!). **/\n        owner: string,\n        /** API Key **/\n        apiKey?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        /** key for pagination. If more results are available, a pageKey will be returned in the response. Pass back the pageKey as a param to fetch the next page of results. **/\n        pageKey?: string | null,\n    }): CancelablePromise<AlchemyGetContractsForOwnerResponse> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/experimental/alchemy/{network}/nft/v2/{apiKey}/getContractsForOwner',\n            path: {\n                'apiKey': apiKey,\n                'network': network,\n            },\n            query: {\n                'owner': owner,\n                'pageKey': pageKey,\n            },\n            errors: {\n                400: `Validation Error`,\n                403: `Access not enabled`,\n            },\n        });\n    }\n\n    /**\n     * getFloorPrice\n     * Returns the floor prices of a NFT collection by marketplace.\n     * @returns AlchemyGetFloorPriceResponse OK\n     * @throws ApiError\n     */\n    public alchemyGetFloorPrice({\n        apiKey = 'test',\n        network = 'ethereum-mainnet',\n        contractAddress = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',\n    }: {\n        /** API Key **/\n        apiKey?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        /** Contract address for the NFTMetadata collection (ERC721 and ERC1155 supported). **/\n        contractAddress?: string,\n    }): CancelablePromise<AlchemyGetFloorPriceResponse> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/experimental/alchemy/{network}/nft/v2/{apiKey}/getFloorPrice',\n            path: {\n                'apiKey': apiKey,\n                'network': network,\n            },\n            query: {\n                'contractAddress': contractAddress,\n            },\n            errors: {\n                400: `Validation Error`,\n                403: `Access not enabled`,\n            },\n        });\n    }\n\n    /**\n     * getNFTMetadata\n     * Gets the metadata associated with a given NFT.\n     * @returns AlchemyNFTMetadata OK\n     * @throws ApiError\n     */\n    public alchemyGetNftMetadata({\n        apiKey = 'test',\n        network = 'ethereum-mainnet',\n        contractAddress = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',\n        tokenId = '1',\n        tokenUriTimeoutInMs,\n    }: {\n        /** API Key **/\n        apiKey?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        /** Contract address for the NFTMetadata collection (ERC721 and ERC1155 supported). **/\n        contractAddress?: string,\n        /** The ID of the token. Can be in hex or decimal format. **/\n        tokenId?: string,\n        /** No set timeout by default - When metadata is requested, this parameter is the timeout (in milliseconds) for the website hosting the metadata to respond. If you want to only access the cache and not live fetch any metadata for cache misses then set this value to 0. **/\n        tokenUriTimeoutInMs?: number | null,\n    }): CancelablePromise<AlchemyNFTMetadata> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/experimental/alchemy/{network}/nft/v2/{apiKey}/getNFTMetadata',\n            path: {\n                'apiKey': apiKey,\n                'network': network,\n            },\n            query: {\n                'contractAddress': contractAddress,\n                'tokenId': tokenId,\n                'tokenUriTimeoutInMs': tokenUriTimeoutInMs,\n            },\n            errors: {\n                400: `Validation Error`,\n                403: `Access not enabled`,\n            },\n        });\n    }\n\n    /**\n     * getNFTs\n     * Gets all NFTs currently owned by a given address.\n     * @returns AlchemyGetNFTsResponse OK\n     * @throws ApiError\n     */\n    public alchemyGetNfTs({\n        apiKey = 'test',\n        network = 'ethereum-mainnet',\n        contractAddresses,\n        filters,\n        owner = 'vitalik.eth',\n        pageKey,\n        pageSize,\n        tokenUriTimeoutInMs,\n        withMetadata,\n    }: {\n        /** API Key **/\n        apiKey?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        /** Array of contract addresses to filter the responses with. Max limit 100 contracts. **/\n        contractAddresses?: Array<string>,\n        /** Filters are not supported **/\n        filters?: Array<string>,\n        /** Address for NFTMetadata owner (can be in ENS format!). **/\n        owner?: string,\n        /** key for pagination. If more results are available, a pageKey will be returned in the response. Pass back the pageKey as a param to fetch the next page of results. **/\n        pageKey?: string | null,\n        /** Number of NFTs to be returned per page. Defaults to 100. Max is 100. **/\n        pageSize?: number | null,\n        /** No set timeout by default - When metadata is requested, this parameter is the timeout (in milliseconds) for the website hosting the metadata to respond. If you want to only access the cache and not live fetch any metadata for cache misses then set this value to 0. **/\n        tokenUriTimeoutInMs?: number | null,\n        /** if set to true, returns NFTMetadata metadata. Setting this to false will reduce payload size and may result in a faster API call. Defaults to false. **/\n        withMetadata?: boolean,\n    }): CancelablePromise<AlchemyGetNFTsResponse> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/experimental/alchemy/{network}/nft/v2/{apiKey}/getNFTs',\n            path: {\n                'apiKey': apiKey,\n                'network': network,\n            },\n            query: {\n                'contractAddresses[]': contractAddresses,\n                'filters[]': filters,\n                'owner': owner,\n                'pageKey': pageKey,\n                'pageSize': pageSize,\n                'tokenUriTimeoutInMs': tokenUriTimeoutInMs,\n                'withMetadata': withMetadata,\n            },\n            errors: {\n                400: `Validation Error`,\n                403: `Access not enabled`,\n            },\n        });\n    }\n\n    /**\n     * getNFTsForCollection\n     * Gets all NFTs for a given NFT contract.\n     * @returns AlchemyGetNFTsForCollectionResponse OK\n     * @throws ApiError\n     */\n    public alchemyGetNfTsForCollection({\n        apiKey = 'test',\n        network = 'ethereum-mainnet',\n        contractAddress = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',\n        limit,\n        startToken,\n        tokenUriTimeoutInMs,\n        withMetadata,\n    }: {\n        /** API Key **/\n        apiKey?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        /** Contract address for the NFTMetadata collection (ERC721 and ERC1155 supported). **/\n        contractAddress?: string,\n        /** Sets the total number of NFTs returned in the response. Defaults to 100. **/\n        limit?: number | null,\n        /** A tokenID offset used for pagination. Can be a hex string, or a decimal. Users can specify the offset themselves to start from a custom offset, or to fetch multiple token ranges in parallel. **/\n        startToken?: string | null,\n        /** No set timeout by default - When metadata is requested, this parameter is the timeout (in milliseconds) for the website hosting the metadata to respond. If you want to only access the cache and not live fetch any metadata for cache misses then set this value to 0. **/\n        tokenUriTimeoutInMs?: number | null,\n        /** if set to true, returns NFTMetadata metadata. Setting this to false will reduce payload size and may result in a faster API call. Defaults to false. **/\n        withMetadata?: boolean,\n    }): CancelablePromise<AlchemyGetNFTsForCollectionResponse> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/experimental/alchemy/{network}/nft/v2/{apiKey}/getNFTsForCollection',\n            path: {\n                'apiKey': apiKey,\n                'network': network,\n            },\n            query: {\n                'contractAddress': contractAddress,\n                'limit': limit,\n                'startToken': startToken,\n                'tokenUriTimeoutInMs': tokenUriTimeoutInMs,\n                'withMetadata': withMetadata,\n            },\n            errors: {\n                400: `Validation Error`,\n                403: `Access not enabled`,\n            },\n        });\n    }\n\n    /**\n     * getOwnersForCollection\n     * Gets all owners for a given NFT contract.\n     * @returns AlchemyGetOwnersForCollectionResponse OK\n     * @throws ApiError\n     */\n    public alchemyGetOwnersForCollection({\n        apiKey = 'test',\n        network = 'ethereum-mainnet',\n        contractAddress = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',\n        pageKey,\n    }: {\n        /** API Key **/\n        apiKey?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        /** Contract address for the NFTMetadata collection (ERC721 and ERC1155 supported). **/\n        contractAddress?: string,\n        /** key for pagination. If more results are available, a pageKey will be returned in the response. Pass back the pageKey as a param to fetch the next page of results. **/\n        pageKey?: string | null,\n    }): CancelablePromise<AlchemyGetOwnersForCollectionResponse> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/experimental/alchemy/{network}/nft/v2/{apiKey}/getOwnersForCollection',\n            path: {\n                'apiKey': apiKey,\n                'network': network,\n            },\n            query: {\n                'contractAddress': contractAddress,\n                'pageKey': pageKey,\n            },\n            errors: {\n                400: `Validation Error`,\n                403: `Access not enabled`,\n            },\n        });\n    }\n\n    /**\n     * getOwnersForToken\n     * Get the owner(s) for a token.\n     * @returns AlchemyGetOwnersForTokenResponse OK\n     * @throws ApiError\n     */\n    public alchemyGetOwnersForToken({\n        apiKey = 'test',\n        network = 'ethereum-mainnet',\n        contractAddress = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',\n        tokenId = '1',\n    }: {\n        /** API Key **/\n        apiKey?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        /** Contract address for the NFTMetadata collection (ERC721 and ERC1155 supported). **/\n        contractAddress?: string,\n        /** The ID of the token. Can be in hex or decimal format. **/\n        tokenId?: string,\n    }): CancelablePromise<AlchemyGetOwnersForTokenResponse> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/experimental/alchemy/{network}/nft/v2/{apiKey}/getOwnersForToken',\n            path: {\n                'apiKey': apiKey,\n                'network': network,\n            },\n            query: {\n                'contractAddress': contractAddress,\n                'tokenId': tokenId,\n            },\n            errors: {\n                400: `Validation Error`,\n                403: `Access not enabled`,\n            },\n        });\n    }\n\n    /**\n     * isHolderOfCollection\n     * Checks whether a wallet holds a NFT in a given collection.\n     * @returns AlchemyIsHolderOfCollectionResponse OK\n     * @throws ApiError\n     */\n    public alchemyIsHolderOfCollection({\n        apiKey = 'test',\n        network = 'ethereum-mainnet',\n        contractAddress = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',\n        wallet = 'vitalik.eth',\n    }: {\n        /** API Key **/\n        apiKey?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        /** Contract address for the NFTMetadata collection (ERC721 and ERC1155 supported). **/\n        contractAddress?: string,\n        /** Wallet address to check for collection ownership. **/\n        wallet?: string,\n    }): CancelablePromise<AlchemyIsHolderOfCollectionResponse> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/experimental/alchemy/{network}/nft/v2/{apiKey}/isHolderOfCollection',\n            path: {\n                'apiKey': apiKey,\n                'network': network,\n            },\n            query: {\n                'contractAddress': contractAddress,\n                'wallet': wallet,\n            },\n            errors: {\n                400: `Validation Error`,\n                403: `Access not enabled`,\n            },\n        });\n    }\n\n    /**\n     * reingestContract\n     * Triggers metadata refresh for an entire NFT collection and refreshes stale metadata after a collection reveal/collection changes.\n     * @returns AlchemyReingestContractResponse OK\n     * @throws ApiError\n     */\n    public alchemyReingestContract({\n        apiKey = 'test',\n        network = 'ethereum-mainnet',\n        contractAddress = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',\n    }: {\n        /** API Key **/\n        apiKey?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        /** Contract address for the NFTMetadata collection (ERC721 and ERC1155 supported). **/\n        contractAddress?: string,\n    }): CancelablePromise<AlchemyReingestContractResponse> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/experimental/alchemy/{network}/nft/v2/{apiKey}/reingestContract',\n            path: {\n                'apiKey': apiKey,\n                'network': network,\n            },\n            query: {\n                'contractAddress': contractAddress,\n            },\n            errors: {\n                400: `Validation Error`,\n                403: `Access not enabled`,\n            },\n        });\n    }\n\n    /**\n     * searchContractMetadata\n     * Search for a keyword across metadata of all ERC-721 and ERC-1155 smart contracts\n     * @returns AlchemySearchContractMetadataResponse OK\n     * @throws ApiError\n     */\n    public alchemySearchContractMetadata({\n        query,\n        apiKey = 'test',\n        network = 'ethereum-mainnet',\n    }: {\n        /** The search string that you want to search for in contract metadata **/\n        query: string,\n        /** API Key **/\n        apiKey?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n    }): CancelablePromise<AlchemySearchContractMetadataResponse> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/experimental/alchemy/{network}/nft/v2/{apiKey}/searchContractMetadata',\n            path: {\n                'apiKey': apiKey,\n                'network': network,\n            },\n            query: {\n                'query': query,\n            },\n            errors: {\n                400: `Validation Error`,\n                403: `Access not enabled`,\n            },\n        });\n    }\n\n    /**\n     * summarizeNFTAttributes\n     * Generate a summary of attribute prevalence for an NFT collection.\n     * @returns AlchemySummarizeNFTAttributesResponse OK\n     * @throws ApiError\n     */\n    public alchemySummarizeNftAttributes({\n        apiKey = 'test',\n        network = 'ethereum-mainnet',\n        contractAddress = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',\n    }: {\n        /** API Key **/\n        apiKey?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        /** Contract address for the NFTMetadata collection (ERC721 and ERC1155 supported). **/\n        contractAddress?: string,\n    }): CancelablePromise<AlchemySummarizeNFTAttributesResponse> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/experimental/alchemy/{network}/nft/v2/{apiKey}/summarizeNFTAttributes',\n            path: {\n                'apiKey': apiKey,\n                'network': network,\n            },\n            query: {\n                'contractAddress': contractAddress,\n            },\n            errors: {\n                400: `Validation Error`,\n                403: `Access not enabled`,\n            },\n        });\n    }\n\n}","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { HealthCheckResponse } from '../models/HealthCheckResponse';\nimport type { Network } from '../models/Network';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class CenterApiInfoService {\n\n    constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n    /**\n     * API capabilities\n     * Returns Center contact information, example requests, and other helpful resources (e.g., links to tutorials)\n     * @returns any OK\n     * @throws ApiError\n     */\n    public homepage(): CancelablePromise<Record<string, any>> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/',\n        });\n    }\n\n    /**\n     * API healthcheck\n     * Returns current status of Center.dev API\n     * @returns HealthCheckResponse OK\n     * @throws ApiError\n     */\n    public getHealth(): CancelablePromise<HealthCheckResponse> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/_health',\n        });\n    }\n\n    /**\n     * List blockchain networks\n     * Returns blockchain networks currently accessible through this API\n     * @returns Network OK\n     * @throws ApiError\n     */\n    public networksV1NetworksGet(): CancelablePromise<Array<Network>> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/v1/networks',\n        });\n    }\n\n}","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { Asset } from '../models/Asset';\nimport type { Collection } from '../models/Collection';\nimport type { CollectionSpecificTraitResponse } from '../models/CollectionSpecificTraitResponse';\nimport type { CollectionTraitsResponse } from '../models/CollectionTraitsResponse';\nimport type { GetAssetsInput } from '../models/GetAssetsInput';\nimport type { RoutesAssetRarityResponse } from '../models/RoutesAssetRarityResponse';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class CollectionAndAssetDataService {\n\n    constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n    /**\n     * Get asset data (multiple assets)\n     * Returns key data (e.g., metadata, preview image, collection name) on multiple assets with single call\n     * @returns Asset OK\n     * @throws ApiError\n     */\n    public getAssets({\n        network = 'ethereum-mainnet',\n        fallbackToChain,\n        requestBody,\n    }: {\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        /** If true, any missing data will be fetched from the blockchain node, this can be slow and should not be used for performance-sensitive cases **/\n        fallbackToChain?: boolean | null,\n        requestBody?: GetAssetsInput,\n    }): CancelablePromise<Array<Asset>> {\n        return this.httpRequest.request({\n            method: 'POST',\n            url: '/v1/{network}/assets',\n            path: {\n                'network': network,\n            },\n            query: {\n                'fallbackToChain': fallbackToChain,\n            },\n            body: requestBody,\n            mediaType: 'application/json',\n            errors: {\n                400: `Validation Error`,\n            },\n        });\n    }\n\n    /**\n     * Get NFT collection data\n     * Returns key data (e.g., name, preview image, symbol, creator) for a collection\n     * @returns Collection OK\n     * @throws ApiError\n     */\n    public getCollection({\n        address = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',\n        network = 'ethereum-mainnet',\n        refresh,\n    }: {\n        /** Collection Address **/\n        address?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        /** If true then refresh the asset's metadata and media **/\n        refresh?: boolean | null,\n    }): CancelablePromise<Collection> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/v1/{network}/{address}',\n            path: {\n                'address': address,\n                'network': network,\n            },\n            query: {\n                'refresh': refresh,\n            },\n            errors: {\n                303: `collection not found on this network but available on another network`,\n                400: `Validation Error`,\n            },\n        });\n    }\n\n    /**\n     * Get collection traits\n     * Returns list of traits of assets in collection\n     * @returns CollectionTraitsResponse OK\n     * @throws ApiError\n     */\n    public getAllTraitsForCollection({\n        address = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',\n        network = 'ethereum-mainnet',\n        limit,\n        offset,\n    }: {\n        /** Collection Address **/\n        address?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        limit?: number | null,\n        offset?: number | null,\n    }): CancelablePromise<CollectionTraitsResponse> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/v1/{network}/{address}/traits',\n            path: {\n                'address': address,\n                'network': network,\n            },\n            query: {\n                'limit': limit,\n                'offset': offset,\n            },\n            errors: {\n                400: `Validation Error`,\n            },\n        });\n    }\n\n    /**\n     * Get distribution of attributes for a particular trait\n     * Returns all attribute values for a particular trait within a collection\n     * @returns CollectionSpecificTraitResponse OK\n     * @throws ApiError\n     */\n    public getAttributesForTraitWithinCollection({\n        address = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',\n        network = 'ethereum-mainnet',\n        trait = 'Mouth',\n        limit,\n        offset,\n    }: {\n        /** Collection Address **/\n        address?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        trait?: string,\n        limit?: number | null,\n        offset?: number | null,\n    }): CancelablePromise<CollectionSpecificTraitResponse> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/v1/{network}/{address}/traits/{trait}',\n            path: {\n                'address': address,\n                'network': network,\n                'trait': trait,\n            },\n            query: {\n                'limit': limit,\n                'offset': offset,\n            },\n            errors: {\n                400: `Validation Error`,\n            },\n        });\n    }\n\n    /**\n     * Get asset data (single asset)\n     * Returns key data (e.g., metadata, preview image, collection name) for given asset\n     * @returns Asset OK\n     * @throws ApiError\n     */\n    public getAsset({\n        address = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',\n        network = 'ethereum-mainnet',\n        tokenId = '1',\n        refresh,\n    }: {\n        /** Collection Address **/\n        address?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        /** Token ID **/\n        tokenId?: string,\n        /** If true then refresh the asset's metadata and media **/\n        refresh?: boolean | null,\n    }): CancelablePromise<Asset> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/v1/{network}/{address}/{tokenID}',\n            path: {\n                'address': address,\n                'network': network,\n                'tokenID': tokenId,\n            },\n            query: {\n                'refresh': refresh,\n            },\n            errors: {\n                400: `Validation Error`,\n                422: `network ID is invalid or asset does not have associated metadata`,\n                504: `Failed to fetch data from the external site before timeout`,\n            },\n        });\n    }\n\n    /**\n     * Get asset rarity\n     * Returns rarity (ranking and score) of an asset in a given collection\n     * @returns RoutesAssetRarityResponse OK\n     * @throws ApiError\n     */\n    public getAssetRarity({\n        address = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',\n        network = 'ethereum-mainnet',\n        tokenId = '1',\n    }: {\n        /** Collection Address **/\n        address?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        /** Token ID **/\n        tokenId?: string,\n    }): CancelablePromise<RoutesAssetRarityResponse> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/v1/{network}/{address}/{tokenID}/rarity',\n            path: {\n                'address': address,\n                'network': network,\n                'tokenID': tokenId,\n            },\n            errors: {\n                400: `Validation Error`,\n            },\n        });\n    }\n\n}","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { NumericData } from '../models/NumericData';\nimport type { RoutesCollectionVolumeResponse } from '../models/RoutesCollectionVolumeResponse';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class MarketDataService {\n\n    constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n    /**\n     * Get floor price of a collection\n     * Returns collection floor price\n     * @returns NumericData OK\n     * @throws ApiError\n     */\n    public getCollectionFloorPrice({\n        address = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',\n        network = 'ethereum-mainnet',\n    }: {\n        /** Collection Address **/\n        address?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n    }): CancelablePromise<NumericData> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/v1/{network}/{address}/market-data/floor-price',\n            path: {\n                'address': address,\n                'network': network,\n            },\n            errors: {\n                400: `Validation Error`,\n                403: `Access not enabled`,\n            },\n        });\n    }\n\n    /**\n     * Get market cap of a collection\n     * Returns collection market cap\n     * @returns NumericData OK\n     * @throws ApiError\n     */\n    public getCollectionMarketCap({\n        address = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',\n        network = 'ethereum-mainnet',\n    }: {\n        /** Collection Address **/\n        address?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n    }): CancelablePromise<NumericData> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/v1/{network}/{address}/market-data/market-cap',\n            path: {\n                'address': address,\n                'network': network,\n            },\n            errors: {\n                400: `Validation Error`,\n                403: `Access not enabled`,\n            },\n        });\n    }\n\n    /**\n     * Get volume of a collection\n     * Returns collection volume\n     * @returns RoutesCollectionVolumeResponse OK\n     * @throws ApiError\n     */\n    public getCollectionVolume({\n        address = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',\n        network = 'ethereum-mainnet',\n    }: {\n        /** Collection Address **/\n        address?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n    }): CancelablePromise<RoutesCollectionVolumeResponse> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/v1/{network}/{address}/market-data/volume',\n            path: {\n                'address': address,\n                'network': network,\n            },\n            errors: {\n                400: `Validation Error`,\n                403: `Access not enabled`,\n            },\n        });\n    }\n\n}","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class NotificationStreamsService {\n\n    constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n    /**\n     * Subscribe to notification stream via Web Socket\n     * Returns an ongoing list of updates (transfers, burns, mints)\n     * @returns any OK\n     * @throws ApiError\n     */\n    public subscribeToNotifications({\n        network = 'ethereum-mainnet',\n    }: {\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n    }): CancelablePromise<any> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/v1/{network}/notifications/subscribe',\n            path: {\n                'network': network,\n            },\n            errors: {\n                400: `Validation Error`,\n                403: `Access not enabled`,\n            },\n        });\n    }\n\n}","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { RoutesAPIOrderResponse } from '../models/RoutesAPIOrderResponse';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class OrderbookDataExperimentalService {\n\n    constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n    /**\n     * Get listings / offers for all NFTs in a collection\n     * Returns order data (from supported marketplaces) for all assets in a specified collection\n     * @returns RoutesAPIOrderResponse OK\n     * @throws ApiError\n     */\n    public getOrderbookData({\n        address = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',\n        network = 'ethereum-mainnet',\n        limit,\n        marketplace = '',\n        offset,\n        orderType = '',\n    }: {\n        /** Collection Address **/\n        address?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        limit?: number | null,\n        /** The marketplace can be filtered by selecting one of the following options: opensea, looksrare, or x2y2. If no selection is made, the API will return a combined result **/\n        marketplace?: '' | 'looksrare' | 'x2y2' | 'opensea',\n        offset?: number | null,\n        /** The order type for the optional parameter can either be BID or ASK. If left blank, the API will provide a consolidated result **/\n        orderType?: '' | 'bid' | 'ask',\n    }): CancelablePromise<RoutesAPIOrderResponse> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/experimental/{network}/{address}/orderbook',\n            path: {\n                'address': address,\n                'network': network,\n            },\n            query: {\n                'limit': limit,\n                'marketplace': marketplace,\n                'offset': offset,\n                'orderType': orderType,\n            },\n        });\n    }\n\n    /**\n     * Get listings / offers for a particular NFT\n     * Returns order data (from supported marketplaces) for a specified asset\n     * @returns RoutesAPIOrderResponse OK\n     * @throws ApiError\n     */\n    public getOrderbookDataByTokenId({\n        address = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',\n        network = 'ethereum-mainnet',\n        tokenId = '1',\n        includeCollectionOffers = true,\n        limit,\n        marketplace = '',\n        offset,\n        orderType = '',\n    }: {\n        /** Collection Address **/\n        address?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        /** Token ID **/\n        tokenId?: string,\n        /** If false, the response will exclude collection offers **/\n        includeCollectionOffers?: boolean,\n        limit?: number | null,\n        /** The marketplace can be filtered by selecting one of the following options: opensea, looksrare, or x2y2. If no selection is made, the API will return a combined result **/\n        marketplace?: '' | 'looksrare' | 'x2y2' | 'opensea',\n        offset?: number | null,\n        /** The order type for the optional parameter can either be BID or ASK. If left blank, the API will provide a consolidated result. **/\n        orderType?: '' | 'bid' | 'ask',\n    }): CancelablePromise<RoutesAPIOrderResponse> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/experimental/{network}/{address}/{tokenID}/orderbook',\n            path: {\n                'address': address,\n                'network': network,\n                'tokenID': tokenId,\n            },\n            query: {\n                'includeCollectionOffers': includeCollectionOffers,\n                'limit': limit,\n                'marketplace': marketplace,\n                'offset': offset,\n                'orderType': orderType,\n            },\n        });\n    }\n\n}","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { AssetOwners } from '../models/AssetOwners';\nimport type { RoutesAssetOwnedByResponse } from '../models/RoutesAssetOwnedByResponse';\nimport type { RoutesAssetTransfersResponse } from '../models/RoutesAssetTransfersResponse';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class OwnershipAndTransferDataService {\n\n    constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n    /**\n     * Get assets owned by an address\n     * Returns all assets owned by a particular account address\n     * @returns RoutesAssetOwnedByResponse OK\n     * @throws ApiError\n     */\n    public getAssetsOwnedByAccount({\n        address = 'vitalik.eth',\n        network = 'ethereum-mainnet',\n        collection,\n        excludeCollection,\n        limit,\n        offset,\n    }: {\n        /** Owner's Account Address **/\n        address?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        /** Optional collection address (or comma-separated list of collection addresses) **/\n        collection?: string | null,\n        /** Optional collection address (or comma-separated list of collection addresses) **/\n        excludeCollection?: string | null,\n        limit?: number | null,\n        offset?: number | null,\n    }): CancelablePromise<RoutesAssetOwnedByResponse> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/v1/{network}/account/{address}/assets-owned',\n            path: {\n                'address': address,\n                'network': network,\n            },\n            query: {\n                'collection': collection,\n                'excludeCollection': excludeCollection,\n                'limit': limit,\n                'offset': offset,\n            },\n            errors: {\n                400: `Validation Error`,\n                403: `Access not enabled`,\n            },\n        });\n    }\n\n    /**\n     * Get asset transfers\n     * Returns transfers for a particular asset\n     * @returns RoutesAssetTransfersResponse OK\n     * @throws ApiError\n     */\n    public getTransfersOfAsset({\n        network = 'ethereum-mainnet',\n        collection = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',\n        fromAddress,\n        limit,\n        offset,\n        toAddress,\n        tokenId = '1',\n    }: {\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        /** collection address (or comma-separated list of collection addresses) **/\n        collection?: string,\n        /** Optional 'from' Address **/\n        fromAddress?: string | null,\n        limit?: number | null,\n        offset?: number | null,\n        /** Optional 'to' Address **/\n        toAddress?: string | null,\n        /** Token ID **/\n        tokenId?: string,\n    }): CancelablePromise<RoutesAssetTransfersResponse> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/v1/{network}/transfers',\n            path: {\n                'network': network,\n            },\n            query: {\n                'collection': collection,\n                'fromAddress': fromAddress,\n                'limit': limit,\n                'offset': offset,\n                'toAddress': toAddress,\n                'tokenID': tokenId,\n            },\n            errors: {\n                400: `Validation Error`,\n            },\n        });\n    }\n\n    /**\n     * Get owners of a collection\n     * Returns owners who own an asset in given collection\n     * @returns AssetOwners OK\n     * @throws ApiError\n     */\n    public getAssetOwners({\n        address = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',\n        network = 'ethereum-mainnet',\n        limit,\n        offset,\n        owner,\n    }: {\n        /** Collection Address **/\n        address?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        limit?: number | null,\n        offset?: number | null,\n        /** Optional owner/holder address to filter assets **/\n        owner?: string | null,\n    }): CancelablePromise<AssetOwners> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/v1/{network}/{address}/asset-owners',\n            path: {\n                'address': address,\n                'network': network,\n            },\n            query: {\n                'limit': limit,\n                'offset': offset,\n                'owner': owner,\n            },\n            errors: {\n                400: `Validation Error`,\n            },\n        });\n    }\n\n}","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { Preset } from '../models/Preset';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class RenderingService {\n\n    constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n    /**\n     * Render NFT (CDN URL)\n     * Returns CDN URL for NFT media\n     * @returns Preset OK\n     * @throws ApiError\n     */\n    public renderNft({\n        address = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',\n        network = 'ethereum-mainnet',\n        preset = 'small',\n        tokenId = '1',\n    }: {\n        /** Collection Address **/\n        address?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        /** Preset Type **/\n        preset?: 'small' | 'medium' | 'original',\n        /** Token ID **/\n        tokenId?: string,\n    }): CancelablePromise<Preset> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/v1/{network}/{address}/{tokenID}/{preset}',\n            path: {\n                'address': address,\n                'network': network,\n                'preset': preset,\n                'tokenID': tokenId,\n            },\n            errors: {\n                400: `Validation Error`,\n                422: `network ID is invalid or asset does not have associated metadata`,\n                504: `Failed to fetch data from the external site before timeout`,\n            },\n        });\n    }\n\n    /**\n     * Render NFT (Direct Media)\n     * Returns NFT media directly\n     * @returns any OK\n     * @throws ApiError\n     */\n    public renderNftMedia({\n        address = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',\n        network = 'ethereum-mainnet',\n        preset = 'small',\n        tokenId = '1',\n    }: {\n        /** Collection Address **/\n        address?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        /** Preset Type **/\n        preset?: 'small' | 'medium',\n        /** Token ID **/\n        tokenId?: string,\n    }): CancelablePromise<any> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/v1/{network}/{address}/{tokenID}/{preset}/media',\n            path: {\n                'address': address,\n                'network': network,\n                'preset': preset,\n                'tokenID': tokenId,\n            },\n            errors: {\n                400: `Validation Error`,\n                422: `network ID is invalid or asset does not have associated metadata`,\n                504: `Failed to fetch data from the external site before timeout`,\n            },\n        });\n    }\n\n}","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { CollectionSearchByTraitResponse } from '../models/CollectionSearchByTraitResponse';\nimport type { SearchAssetsWithinCollectionByTraitsInput } from '../models/SearchAssetsWithinCollectionByTraitsInput';\nimport type { SearchResults } from '../models/SearchResults';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class SearchService {\n\n    constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n    /**\n     * NFT search\n     * Searches for an NFT asset or collection based on an input query\n     * @returns SearchResults OK\n     * @throws ApiError\n     */\n    public getSearchResults({\n        network = 'ethereum-mainnet',\n        limit,\n        offset,\n        query,\n        type,\n    }: {\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        limit?: number | null,\n        offset?: number | null,\n        /** Query string **/\n        query?: string,\n        /** Desired result type, valid options are asset, collection, or all **/\n        type?: string,\n    }): CancelablePromise<SearchResults> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/v1/{network}/search',\n            path: {\n                'network': network,\n            },\n            query: {\n                'limit': limit,\n                'offset': offset,\n                'query': query,\n                'type': type,\n            },\n            errors: {\n                400: `Validation Error`,\n            },\n        });\n    }\n\n    /**\n     * Search assets within a collection by traits\n     * Returns all assets within a collection with particular attributes\n     * @returns CollectionSearchByTraitResponse OK\n     * @throws ApiError\n     */\n    public searchAssetsWithinCollectionByTraits({\n        address = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',\n        network = 'ethereum-mainnet',\n        limit,\n        offset,\n        requestBody,\n    }: {\n        /** Collection Address **/\n        address?: string,\n        /** Network ID **/\n        network?: 'arbitrum-mainnet' | 'avalanche-mainnet' | 'bsc-mainnet' | 'celo-mainnet' | 'ethereum-goerli' | 'ethereum-mainnet' | 'ethereum-rinkeby' | 'ethereum-ropsten' | 'fantom-mainnet' | 'harmony-mainnet' | 'optimism-mainnet' | 'polygon-mainnet' | 'solana-mainnet',\n        limit?: number | null,\n        offset?: number | null,\n        requestBody?: SearchAssetsWithinCollectionByTraitsInput,\n    }): CancelablePromise<CollectionSearchByTraitResponse> {\n        return this.httpRequest.request({\n            method: 'POST',\n            url: '/v1/{network}/{address}/assets/searchByTraits',\n            path: {\n                'address': address,\n                'network': network,\n            },\n            query: {\n                'limit': limit,\n                'offset': offset,\n            },\n            body: requestBody,\n            mediaType: 'application/json',\n            errors: {\n                400: `Validation Error`,\n            },\n        });\n    }\n\n}","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { BaseHttpRequest } from './core/BaseHttpRequest';\nimport type { OpenAPIConfig } from './core/OpenAPI';\nimport { FetchHttpRequest } from './core/FetchHttpRequest';\n\nimport { AlchemyCompatibleExperimentalService } from './services/AlchemyCompatibleExperimentalService';\nimport { CenterApiInfoService } from './services/CenterApiInfoService';\nimport { CollectionAndAssetDataService } from './services/CollectionAndAssetDataService';\nimport { MarketDataService } from './services/MarketDataService';\nimport { NotificationStreamsService } from './services/NotificationStreamsService';\nimport { OrderbookDataExperimentalService } from './services/OrderbookDataExperimentalService';\nimport { OwnershipAndTransferDataService } from './services/OwnershipAndTransferDataService';\nimport { RenderingService } from './services/RenderingService';\nimport { SearchService } from './services/SearchService';\n\ntype HttpRequestConstructor = new (config: OpenAPIConfig) => BaseHttpRequest;\n\nexport class CenterClient {\n\n    public readonly alchemyCompatibleExperimental: AlchemyCompatibleExperimentalService;\n    public readonly centerApiInfo: CenterApiInfoService;\n    public readonly collectionAndAssetData: CollectionAndAssetDataService;\n    public readonly marketData: MarketDataService;\n    public readonly notificationStreams: NotificationStreamsService;\n    public readonly orderbookDataExperimental: OrderbookDataExperimentalService;\n    public readonly ownershipAndTransferData: OwnershipAndTransferDataService;\n    public readonly rendering: RenderingService;\n    public readonly search: SearchService;\n\n    public readonly request: BaseHttpRequest;\n\n    constructor(config?: Partial<OpenAPIConfig>, HttpRequest: HttpRequestConstructor = FetchHttpRequest) {\n        this.request = new HttpRequest({\n            BASE: config?.BASE ?? 'https://api.center.dev',\n            VERSION: config?.VERSION ?? '1.0.0',\n            WITH_CREDENTIALS: config?.WITH_CREDENTIALS ?? false,\n            CREDENTIALS: config?.CREDENTIALS ?? 'include',\n            TOKEN: config?.TOKEN,\n            USERNAME: config?.USERNAME,\n            PASSWORD: config?.PASSWORD,\n            HEADERS: config?.HEADERS,\n            ENCODE_PATH: config?.ENCODE_PATH,\n        });\n\n        this.alchemyCompatibleExperimental = new AlchemyCompatibleExperimentalService(this.request);\n        this.centerApiInfo = new CenterApiInfoService(this.request);\n        this.collectionAndAssetData = new CollectionAndAssetDataService(this.request);\n        this.marketData = new MarketDataService(this.request);\n        this.notificationStreams = new NotificationStreamsService(this.request);\n        this.orderbookDataExperimental = new OrderbookDataExperimentalService(this.request);\n        this.ownershipAndTransferData = new OwnershipAndTransferDataService(this.request);\n        this.rendering = new RenderingService(this.request);\n        this.search = new SearchService(this.request);\n    }\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ApiRequestOptions } from './ApiRequestOptions';\nimport { BaseHttpRequest } from './BaseHttpRequest';\nimport type { CancelablePromise } from './CancelablePromise';\nimport type { OpenAPIConfig } from './OpenAPI';\nimport { request as __request } from './request';\n\nexport class FetchHttpRequest extends BaseHttpRequest {\n\n    constructor(config: OpenAPIConfig) {\n        super(config);\n    }\n\n    /**\n     * Request method\n     * @param options The request options from the service\n     * @returns CancelablePromise<T>\n     * @throws ApiError\n     */\n    public override request<T>(options: ApiRequestOptions): CancelablePromise<T> {\n        return __request(this.config, options);\n    }\n}","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ApiRequestOptions } from './ApiRequestOptions';\nimport type { CancelablePromise } from './CancelablePromise';\nimport type { OpenAPIConfig } from './OpenAPI';\n\nexport abstract class BaseHttpRequest {\n\n    constructor(public readonly config: OpenAPIConfig) {}\n\n    public abstract request<T>(options: ApiRequestOptions): CancelablePromise<T>;\n}","export const allMediaTypes = ['image', 'audio', 'video', 'other'] as const\n\nexport type MediaType = typeof allMediaTypes[number]\n","export const DEFAULT_BASE_URL = 'https://api.center.dev'\n","export type { MediaPreset } from './src/data/MediaPreset'\nexport { allMediaPresets } from './src/data/MediaPreset'\n\nimport { CenterClient } from './src/gen'\n\nexport type { MediaType } from './src/data/MediaType'\nexport { allMediaTypes } from './src/data/MediaType'\nexport { Asset } from './src/gen'\nexport { Collection, SearchResult, ApiError, CenterClient } from './src/gen'\n\nexport type { NetworkId } from './src/data/NetworkId'\nexport {\n  CancelablePromise,\n  CancelError\n} from './src/gen/core/CancelablePromise'\n\nexport * from './src/config'\n\nexport const client = new CenterClient({\n  HEADERS: {\n    'X-Center-User-Agent': '@center-inc/api-client'\n  }\n})\n"],"names":["allMediaPresets","ApiError","Error","constructor","response","message","super","this","url","status","statusText","body","name","_Symbol$toStringTag","CancelError","isCancelled","Symbol","toStringTag","executor","_isResolved","_isRejected","_isCancelled","_cancelHandlers","_promise","_resolve","_reject","Promise","resolve","reject","cancelHandler","push","Object","defineProperty","onCancel","get","value","_this$_resolve","reason","_this$_reject","then","onFulfilled","onRejected","catch","finally","onFinally","cancel","length","error","console","warn","_this$_reject2","call","isDefined","isString","isBlob","type","stream","arrayBuffer","test","async","options","resolver","getHeaders","config","TOKEN","username","USERNAME","password","PASSWORD","HEADERS","headers","entries","_extends","Accept","additionalHeaders","filter","_","reduce","key","String","isStringWithValue","token","str","btoa","err","from","toString","base64","credentials","mediaType","isFormData","AlchemyCompatibleExperimentalService","httpRequest","alchemyComputeRarity","apiKey","network","contractAddress","tokenId","request","method","path","query","errors","alchemyGetContractMetadata","alchemyGetContractsForOwner","owner","pageKey","alchemyGetFloorPrice","alchemyGetNftMetadata","tokenUriTimeoutInMs","alchemyGetNfTs","contractAddresses","filters","pageSize","withMetadata","alchemyGetNfTsForCollection","limit","startToken","alchemyGetOwnersForCollection","alchemyGetOwnersForToken","alchemyIsHolderOfCollection","wallet","alchemyReingestContract","alchemySearchContractMetadata","alchemySummarizeNftAttributes","CenterApiInfoService","homepage","getHealth","networksV1NetworksGet","getAssets","fallbackToChain","requestBody","getCollection","address","refresh","getAllTraitsForCollection","offset","getAttributesForTraitWithinCollection","trait","getAsset","tokenID","getAssetRarity","MarketDataService","getCollectionFloorPrice","getCollectionMarketCap","getCollectionVolume","NotificationStreamsService","subscribeToNotifications","OrderbookDataExperimentalService","getOrderbookData","marketplace","orderType","getOrderbookDataByTokenId","includeCollectionOffers","OwnershipAndTransferDataService","getAssetsOwnedByAccount","collection","excludeCollection","getTransfersOfAsset","fromAddress","toAddress","getAssetOwners","RenderingService","renderNft","preset","renderNftMedia","SearchService","getSearchResults","searchAssetsWithinCollectionByTraits","CenterClient","HttpRequest","BaseHttpRequest","CancelablePromise","encoder","ENCODE_PATH","encodeURI","replace","VERSION","substring","group","_options$path","hasOwnProperty","BASE","params","qs","Array","isArray","forEach","v","process","k","encodeURIComponent","append","join","getQueryString","getUrl","formData","FormData","JSON","stringify","undefined","getFormData","_options$mediaType","includes","getRequestBody","signal","controller","WITH_CREDENTIALS","CREDENTIALS","abort","fetch","sendRequest","contentType","toLowerCase","startsWith","json","text","getResponseBody","responseHeader","content","getResponseHeader","result","ok","responseBody","catchErrorCodes","alchemyCompatibleExperimental","centerApiInfo","collectionAndAssetData","marketData","notificationStreams","orderbookDataExperimental","ownershipAndTransferData","rendering","search","_config$BASE","_config$VERSION","_config$WITH_CREDENTI","_config$CREDENTIALS","CollectionAndAssetDataService","allMediaTypes","DEFAULT_BASE_URL","client"],"mappings":"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"}