import { BlockTag } from '@ethersproject/abstract-provider'; import { BigNumberish } from '@ethersproject/bignumber'; import { OpenSeaSafelistRequestStatus, SortingOrder } from './types'; /** * An enum for specifying the token type on NFTs. * * @public */ export declare enum NftTokenType { ERC721 = "ERC721", ERC1155 = "ERC1155", NO_SUPPORTED_NFT_STANDARD = "NO_SUPPORTED_NFT_STANDARD", NOT_A_CONTRACT = "NOT_A_CONTRACT", UNKNOWN = "UNKNOWN" } /** * Represents NFT metadata that holds fields. Note that since there is no * standard metadata format, the fields are not guaranteed to be present. * * @public */ export interface NftMetadata extends Record { /** Name of the NFT asset. */ name?: string; /** A human-readable description of the NFT asset. */ description?: string; /** URL to the NFT asset image. */ image?: string; /** * The image URL that appears along the top of the NFT asset page. This tends * to be the highest resolution image. */ external_url?: string; /** Background color of the NFT item. Usually defined as a 6 character hex string. */ background_color?: string; /** The traits, attributes, and characteristics for the NFT asset. */ attributes?: Array>; } /** Media URLs and information for an NFT. */ export interface NftImage { /** URL of the image stored in Alchemy's cache. */ cachedUrl?: string; /** URL of a thumbnail sized image. */ thumbnailUrl?: string; /** URL of the image in png format */ pngUrl?: string; /** The type of the media image. */ contentType?: string; /** The size of the media asset in bytes. */ size?: number; /** The original URL of the image as stored on the contract. */ originalUrl?: string; } /** Potential reasons why an NFT contract was classified as spam. */ export declare enum NftSpamClassification { Erc721TooManyOwners = "Erc721TooManyOwners", Erc721TooManyTokens = "Erc721TooManyTokens", Erc721DishonestTotalSupply = "Erc721DishonestTotalSupply", MostlyHoneyPotOwners = "MostlyHoneyPotOwners", OwnedByMostHoneyPots = "OwnedByMostHoneyPots", LowDistinctOwnersPercent = "LowDistinctOwnersPercent", HighHoneyPotOwnerPercent = "HighHoneyPotOwnerPercent", HighHoneyPotPercent = "HighHoneyPotPercent", HoneyPotsOwnMultipleTokens = "HoneyPotsOwnMultipleTokens", NoSalesActivity = "NoSalesActivity", HighAirdropPercent = "HighAirdropPercent", Unknown = "Unknown" } /** Block time and number at which an NFT was acquired. */ export interface AcquiredAt { /** Timestamp of the block at which an NFT was last acquired. */ blockTimestamp?: string; /** Block number of the block at which an NFT was last acquired. */ blockNumber?: number; } /** * Optional parameters object for the {@link getNftsForOwner} and * {@link getNftsForOwnerIterator} functions. * * This interface is used to fetch NFTs with their associated metadata. To get * Nfts without their associated metadata, use {@link GetBaseNftsForOwnerOptions}. * * @public */ export interface GetNftsForOwnerOptions { /** * Optional page key from an existing {@link OwnedBaseNftsResponse} or * {@link OwnedNftsResponse}to use for pagination. */ pageKey?: string; /** Optional list of contract addresses to filter the results by. Limit is 20. */ contractAddresses?: string[]; /** * Optional list of filters applied to the query. NFTs that match one or more * of these filters are excluded from the response. */ excludeFilters?: NftFilters[]; /** * Optional list of filters applied to the query. NFTs that match one or more * of these filters are included in the response. */ includeFilters?: NftFilters[]; /** * Sets the total number of NFTs to return in the response. Defaults to 100. * Maximum page size is 100. */ pageSize?: number; /** Optional boolean flag to omit NFT metadata. Defaults to `false`. */ omitMetadata?: boolean; /** * 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. */ tokenUriTimeoutInMs?: number; /** * Order in which to return results. By default, results are ordered by * contract address and token ID in lexicographic order. */ orderBy?: NftOrdering; } /** * Optional parameters object for the {@link getNftsForOwner} and * {@link getNftsForOwnerIterator} functions. * * This interface is used to fetch NFTs without their associated metadata. To * get Nfts with their associated metadata, use {@link GetNftsForOwnerOptions}. * * @public */ export interface GetBaseNftsForOwnerOptions { /** * Optional page key from an existing {@link OwnedBaseNftsResponse} or * {@link OwnedNftsResponse}to use for pagination. */ pageKey?: string; /** Optional list of contract addresses to filter the results by. Limit is 20. */ contractAddresses?: string[]; /** * Optional list of filters applied to the query. NFTs that match one or more * of these filters are excluded from the response. */ excludeFilters?: NftFilters[]; /** * Optional list of filters applied to the query. NFTs that match one or more * of these filters are included in the response. */ includeFilters?: NftFilters[]; /** * Sets the total number of NFTs to return in the response. Defaults to 100. * Maximum page size is 100. */ pageSize?: number; /** Optional boolean flag to include NFT metadata. Defaults to `false`. */ omitMetadata: true; /** * 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. */ tokenUriTimeoutInMs?: number; /** * Order in which to return results. By default, results are ordered by * contract address and token ID in lexicographic order. */ orderBy?: NftOrdering; } /** * Enum of NFT filters that can be applied to a {@link getNftsForOwner} or a * {@link getContractsForOwner} request. * * @beta */ export declare enum NftFilters { /** NFTs that have been classified as spam. */ SPAM = "SPAM", /** NFTs that have been airdropped to a user. */ AIRDROPS = "AIRDROPS" } /** * Enum of ordering that can be applied to a {@link getNftsForOwner} or a * {@link getContractsForOwner} response. * * @beta */ export declare enum NftOrdering { TRANSFERTIME = "TRANSFERTIME" } /** * The response object for the {@link getNftsForOwner} and * {@link getNftsForOwnerIterator} functions. The object contains the NFTs with * metadata owned by the provided address, along with pagination information and * the total count. * * @public */ export interface OwnedNftsResponse { /** The NFTs owned by the provided address. */ ownedNfts: OwnedNft[]; /** * Pagination token that can be passed into another request to fetch the next * NFTs. If there is no page key, then there are no more NFTs to fetch. */ pageKey?: string; /** The total count of NFTs owned by the provided address. */ totalCount: number; /** * Block Information of the block as of which the corresponding data is valid */ validAt: OwnedNftsValidAt; } /** * The response object for the {@link getNftsForOwner} and * {@link getNftsForOwnerIterator} functions. The object contains the NFTs * without metadata owned by the provided address, along with pagination * information and the total count. * * @public */ export interface OwnedBaseNftsResponse { /** The NFTs owned by the provided address. */ ownedNfts: OwnedBaseNft[]; /** * Pagination token that can be passed into another request to fetch the next * NFTs. If there is no page key, then there are no more NFTs to fetch. */ pageKey?: string; /** The total count of NFTs owned by the provided address. */ totalCount: number; /** * Block Information of the block as of which the corresponding data is valid */ validAt: OwnedNftsValidAt; } /** * Represents an NFT with metadata owned by an address. * * @public */ export interface OwnedNft extends Nft { /** The token balance of the NFT. */ balance: string; } /** * Represents an NFT without metadata owned by an address. * * @public */ export interface OwnedBaseNft extends BaseNft { /** The token balance of the NFT. */ balance: string; } /** The block information at which the NFT sale information is valid at. */ export interface OwnedNftsValidAt { /** The block number the sale information is valid at. */ blockNumber?: number; /** The block hash. Used to detect reorgs. */ blockHash: string; /** The timestamp for the block. */ blockTimestamp?: string; } /** * The response object for the {@link getOwnersForNft}. * * @public */ export interface GetOwnersForNftResponse { /** An array of owner addresses for the provided token. */ owners: string[]; /** Optional The key for the next page of results, if applicable. */ pageKey?: string; } /** * The response object for the {@link getOwnersForContract}. * * @public */ export interface GetOwnersForContractResponse { /** An array of owner addresses for the provided contract address */ owners: string[]; /** * Total count of unique owners. Only present if * {@link GetOwnersForContractOptions.includeCount} is true. */ totalCount?: number; /** Optional page key that is returned when a collection has more than 50,000 owners. */ pageKey?: string; } /** * The response object for the {@link getOwnersForContract}. * * @public */ export interface GetOwnersForContractWithTokenBalancesResponse { /** An array of owner addresses for the provided contract address */ owners: NftContractOwner[]; /** Optional page key that is returned when a collection has more than 50,000 owners. */ pageKey?: string; } export interface GetNftMetadataBatchResponse { /** An array of NFT metadata objects. */ nfts: Nft[]; } export interface GetContractMetadataBatchResponse { contracts: NftContract[]; } /** * An object representing the owner of an NFT and its corresponding token * balances in a {@link GetOwnersForContractWithTokenBalancesResponse} object. */ export interface NftContractOwner { /** The NFT's owner address. */ ownerAddress: string; /** A list of objects containing token balances for the provided NFT contract. */ tokenBalances: NftContractTokenBalance[]; } /** * An object representing the owned token and balance values in a * {@link GetOwnersForContractWithTokenBalancesResponse} object. */ export interface NftContractTokenBalance { /** The token id owned in the NFT contract. */ tokenId: string; /** The token id balance for the provided owner. */ balance: string; } export interface IsSpamContractResponse { isSpamContract: boolean; } export interface GetSpamContractsResponse { contractAddresses: string[]; } /** * Additional options for the {@link NftNamespace.getNftMetadata} method. */ export interface GetNftMetadataOptions { /** Optional field to specify the type of token to speed up the query. */ tokenType?: NftTokenType; /** * 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. */ tokenUriTimeoutInMs?: number; /** * Whether to refresh the metadata for the given NFT token before returning * the response. Defaults to false for faster response times. */ refreshCache?: boolean; } /** * Represents an NFT token to fetch metadata for in a * {@link NftNamespace.getNftMetadataBatch} method. */ export interface NftMetadataBatchToken { /** The NFT contract address. Limited to ERC721 and ERC1155 tokens. */ contractAddress: string; /** The id of the NFT. */ tokenId: BigNumberish; /** Optional field to specify the type of token to speed up the query. */ tokenType?: NftTokenType.ERC1155 | NftTokenType.ERC721; } /** Additional options for the {@link NftNamespace.getNftMetadataBatch} method. */ export interface NftMetadataBatchOptions { /** * 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. */ tokenUriTimeoutInMs?: number; /** * Whether to refresh the metadata for the given NFT token before returning * the response. Defaults to false for faster response times. */ refreshCache?: boolean; } /** * The successful object returned by the {@link getFloorPrice} call for each * marketplace (e.g. looksRare). * * @public */ export interface FloorPriceMarketplace { /** The floor price of the collection on the given marketplace */ floorPrice: number; /** The currency in which the floor price is denominated */ priceCurrency: string; /** The link to the collection on the given marketplace */ collectionUrl: string; /** UTC timestamp of when the floor price was retrieved from the marketplace */ retrievedAt: string; } /** * The failing object returned by the {@link getFloorPrice} call for each * marketplace (e.g. looksRare). * * @public */ export interface FloorPriceError { /** Error fetching floor prices from the given marketplace */ error: string; } /** * The response object for the {@link getFloorPrice} method. * * @public */ export interface GetFloorPriceResponse { /** * Name of the NFT marketplace where the collection is listed. Current * marketplaces supported: OpenSea, LooksRare */ openSea: FloorPriceMarketplace | FloorPriceError; looksRare: FloorPriceMarketplace | FloorPriceError; } /** * Optional parameters object for the {@link getContractsForOwner} method * * @public */ export interface GetContractsForOwnerOptions { /** Key for pagination to use to fetch results from the next page if available. */ pageKey?: string; /** * Configure the number of NFTs to return in each response. Maximum pages size * is 100. Defaults to 100. */ pageSize?: number; /** * Optional list of filters applied to the query. NFTs that match one or more * of these filters are included in the response. May not be used in * conjunction with {@link excludeFilters}. */ includeFilters?: NftFilters[]; /** * Optional list of filters applied to the query. NFTs that match one or more * of these filters are excluded from the response. May not be used in * conjunction with {@link includeFilters} */ excludeFilters?: NftFilters[]; /** * Order in which to return results. By default, results are ordered by * contract address and token ID in lexicographic order. */ orderBy?: NftOrdering; } /** * The response for the {@link NftNamespace.getContractsForOwner} method. * * @public */ export interface GetContractsForOwnerResponse { /** The list of contracts, that match the query, held by the given address. */ contracts: NftContractForOwner[]; /** Key for pagination to use to fetch results from the next page if available. */ pageKey?: string; /** Total number of NFT contracts held by the given address. */ totalCount: number; } /** Represents a single NFT contract data in the {@link GetContractsForOwnerResponse}. */ export interface NftContractForOwner extends NftContract { /** * Sum of NFT balances across all token IDs held by the owner. For * non-fungible tokens this will be equal to the numDistinctTokensOwned, but * it may be higher if the user holds some fungible ERC1155 tokens. */ totalBalance: string; /** * Number of distinct token IDs held by the owner. For non-fungible tokens * this will be equal to the totalBalance, but it may be lower if the user * holds some fungible ERC1155 tokens. */ numDistinctTokensOwned: string; /** Whether the NFT contract is considered spam. */ isSpam: boolean; /** * Object containing an NFT owned by the owner for this particular contract. * Use this to display a sample NFT for the contract. */ displayNft: DisplayNftForContract; /** Object containing different URLs for the NFT media. */ image: NftImage; } /** Sample owned NFT on a {@link NftContract}, used to display placeholder info. */ export interface DisplayNftForContract { /** A token id of an NFT owned by the owner on the contract. */ tokenId: string; /** The name of the NFT, if available. */ name?: string; } /** * Optional parameters object for the {@link NftNamespace.getTransfersForOwner} * method. */ export interface GetTransfersForContractOptions { /** Starting block (inclusive) to get transfers from. */ fromBlock?: BlockTag; /** Ending block (inclusive) to get transfers from. */ toBlock?: BlockTag; /** * Whether to return results in ascending or descending order by block number. * Defaults to ascending if omitted. */ order?: SortingOrder; /** * Optional page key from an existing {@link TransfersNftResponse} to use for * pagination. */ pageKey?: string; } /** * Response object for NFT methods that fetch NFTs that were transferred or * minted (ex: {@link NftNamespace.getTransfersForOwner} or * {@link NftNamespace.getMintedNfts}). */ export interface TransfersNftResponse { /** An array of NFTs.*/ nfts: TransferredNft[]; /** Optional page key to use to fetch the next group of NFTs. */ pageKey?: string; } /** * NFT with extra data for a single NFT that was transferred or minted. */ export interface TransferredNft extends Nft { /** * The address the NFT was from. For minted NFTs, this field is the set to * `0x0000000000000000000000000000000000000000`. **/ from: string; /** The address the NFT was sent or minted to. */ to?: string; /** The transaction hash where the transfer or mint occurred. */ transactionHash: string; /** The block number as a hex string of when the transfer or mint occurred. */ blockNumber: string; } /** * Optional parameters object for the {@link NftNamespace.getMintedNfts} method. */ export interface GetMintedNftsOptions { /** * List of NFT contract addresses to filter mints by. If omitted, defaults to * all contract addresses. */ contractAddresses?: string[]; /** * Filter mints by ERC721 vs ERC1155 contracts. If omitted, defaults to all * NFTs. */ tokenType?: NftTokenType.ERC1155 | NftTokenType.ERC721; /** * Optional page key from an existing {@link TransfersNftResponse} to use for * pagination. */ pageKey?: string; } /** * Optional parameters object for the {@link NftNamespace.getNftSales} method. * * This interface is used to filter the NFT sales data. * * @public */ export interface GetNftSalesOptions { /** The block number to start fetching NFT sales data from. */ fromBlock?: number | 'latest'; /** The block number limit to fetch NFT sales data from. */ toBlock?: number | 'latest'; /** Whether to return the results in ascending or descending order by block number. */ order?: SortingOrder; /** The NFT marketplace to filter sales by. */ marketplace?: NftSaleMarketplace; /** The address of the NFT buyer to filter sales by. */ buyerAddress?: string; /** The address of the NFT seller to filter sales by. */ sellerAddress?: string; /** * Filter by whether the buyer or seller was the taker in the NFT trade. * Defaults to returning both buyer and seller taker trades. */ taker?: NftSaleTakerType; /** The maximum number of NFT sales to return. */ limit?: number; /** Key for pagination to use to fetch results from the next page if available. */ pageKey?: string; } /** * Alternative optional parameters object for the {@link NftNamespace.getNftSales} * method that allows filtering results by contractAddress. * * This interface is used to filter the NFT sales data. * * @public */ export interface GetNftSalesOptionsByContractAddress extends GetNftSalesOptions { /** The contract address of a NFT collection to filter sales by. */ contractAddress: string; /** The token ID of an NFT within the specified contractAddress to filter sales by. */ tokenId?: BigNumberish; } /** * The response for the {@link NftNamespace.getNftSales} method. * * @public */ export interface GetNftSalesResponse { /** List of NFT sales that match the query */ nftSales: NftSale[]; /** * Block Information of the block as of which the corresponding data is valid. */ validAt: NftSaleValidAt; /** * The page key to use to fetch the next page if more results are available. */ pageKey?: string; } /** Represents a single NFT sale data in the {@link GetNftSalesResponse}. */ export interface NftSale { /** The marketplace the sale took place on. */ marketplace: NftSaleMarketplace; /** The marketplace address the sale was on. */ marketplaceAddress: string; /** The NFT contract address. */ contractAddress: string; /** The decimal token ID of the NFT being sold. */ tokenId: string; /** The number of tokens sold in the sale as a decimal integer string. */ quantity: string; /** The address of the buyer in the NFT sale. */ buyerAddress: string; /** The address of the seller in the NFT sale. */ sellerAddress: string; /** Whether the price taker in the trade was the buyer or the seller. */ taker: NftSaleTakerType; /** The payment from buyer to the seller. */ sellerFee: NftSaleFeeData; /** The payment from buyer to the marketplace. */ protocolFee: NftSaleFeeData; /** The payment from buyer to the royalty address of the NFT collection. */ royaltyFee: NftSaleFeeData; /** The block number the NFT sale took place in. */ blockNumber: number; /** The log number of the sale event emitted within the block. */ logIndex: number; /** The index of the token within the bundle of NFTs sold in the sale. */ bundleIndex: number; /** The transactionHash of the NFT sale. */ transactionHash: string; } /** The block information at which the NFT sale information is valid at. */ export interface NftSaleValidAt { /** The block number the sale information is valid at. */ blockNumber: number; /** The block hash. Used to detect reorgs. */ blockHash?: string; /** The timestamp for the block. */ blockTimestamp?: string; } /** * Fee detail for an NFT sale. * * @public */ export interface NftSaleFeeData { /** The fee payment amount as a decimal integer string. */ amount?: string; tokenAddress?: string; /** The symbol of the token used for the payment. */ symbol?: string; /** The number of decimals of the token used for the payment. */ decimals?: number; } /** * Enum representing the supported NFT marketplaces by the * {@link NftNamespace.getNftSales} method. * * @public */ export declare enum NftSaleMarketplace { SEAPORT = "seaport", LOOKSRARE = "looksrare", X2Y2 = "x2y2", WYVERN = "wyvern", CRYPTOPUNKS = "cryptopunks", BLUR = "blur", UNKNOWN = "unknown" } /** * Mint information for the NFT. */ export interface NftMint { /** The address that the NFT was minted to. */ mintAddress?: string; /** The block number that the NFT was minted on. */ blockNumber?: number; /** The timestamp the NFT was minted on. */ timestamp?: string; /** The transaction hash of the transaction that minted the NFT. */ transactionHash?: string; } /** * Enum for specifying the taker type for the {@link NftNamespace.getNftSales} * method. * * @public */ export declare enum NftSaleTakerType { BUYER = "buyer", SELLER = "seller" } export interface SearchContractMetadataResponse { contracts: NftContract[]; } /** * Response object for the {@link NftNamespace.computeRarity} method. */ export interface ComputeRarityResponse { rarities: NftAttributeRarity[]; } /** * Information about the rarity of an NFT's attribute in the specified collection. * * @public */ export interface NftAttributeRarity { /** Name of the NFT's attribute. */ value: string; /** The type of NFT attribute. */ traitType: string; /** * A number from 0 to 1 representing the prevalence of this value for this * trait type in the current collection. */ prevalence: number; } /** * Summary of the attribute prevalence for the specified NFT contract. * * @public */ export interface NftAttributesResponse { /** The specified NFT contract's address. */ contractAddress: string; /** The specified NFT contract's total supply. */ totalSupply: string; /** * The attribute prevalence of each trait grouped by the trait type for the * provided NFT. */ summary: Record>; } /** The current state of the NFT contract refresh process. */ export declare enum NftRefreshState { /** The provided contract is not an NFT or does not contain metadata. */ DOES_NOT_EXIST = "does_not_exist", /** The contract has already been queued for refresh. */ ALREADY_QUEUED = "already_queued", /** The contract is currently being refreshed. */ IN_PROGRESS = "in_progress", /** The contract refresh is complete. */ FINISHED = "finished", /** The contract refresh has been queued and await execution. */ QUEUED = "queued", /** The contract was unable to be queued due to an internal error. */ QUEUE_FAILED = "queue_failed" } /** * Metadata object returned in a {@link AssetTransfersResult} object if the asset * transferred is an ERC1155. * * @public */ export interface ERC1155Metadata { tokenId: string; value: string; } /** * Information about the underlying contract for the asset that was transferred * in a {@link AssetTransfersResult} object. * * @public */ export interface RawContract { /** * The raw transfer value as a hex string. `null` if the transfer was for an * ERC721 or ERC1155 token. */ value: string | null; /** The contract address. `null` if it was an internal or external transfer. */ address: string | null; /** * The number of decimals in the contract as a hex string. `null` if the value * is not in the contract and not available from other sources. */ decimal: string | null; } /** * Optional parameters object for the {@link getNftsForContract} and * {@link getNftsForContractIterator} functions. * * This interface is used to fetch NFTs with their associated metadata. To get * Nfts without their associated metadata, use {@link GetBaseNftsForContractOptions}. * * @public */ export interface GetNftsForContractOptions { /** * Optional page key from an existing {@link NftContractBaseNftsResponse} or * {@link NftContractNftsResponse}to use for pagination. */ pageKey?: string; /** Optional boolean flag to omit NFT metadata. Defaults to `false`. */ omitMetadata?: boolean; /** * Sets the total number of NFTs to return in the response. Defaults to 100. * Maximum page size is 100. */ pageSize?: number; /** * 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. */ tokenUriTimeoutInMs?: number; } /** * Optional parameters object for the {@link getNftsForContract} and * {@link getNftsForContractIterator} functions. * * This interface is used to fetch NFTs without their associated metadata. To * get Nfts with their associated metadata, use {@link GetNftsForContractOptions}. * * @public */ export interface GetBaseNftsForContractOptions { /** * Optional page key from an existing {@link NftContractBaseNftsResponse} or * {@link NftContractNftsResponse}to use for pagination. */ pageKey?: string; /** Optional boolean flag to omit NFT metadata. Defaults to `false`. */ omitMetadata: false; /** * Sets the total number of NFTs to return in the response. Defaults to 100. * Maximum page size is 100. */ pageSize?: number; /** * 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. */ tokenUriTimeoutInMs?: number; } /** * Optional parameters object for the {@link getNftsForContract} method. * * This interface configures options when fetching the owner addresses of the * provided contract. * * @public */ export interface GetOwnersForContractOptions { /** * Whether to include the token balances per token id for each owner. Defaults * to false when omitted. */ withTokenBalances?: boolean; /** The block number in hex or decimal to fetch owners for. */ block?: string; /** Optional page key to paginate the next page for large requests. */ pageKey?: string; /** * If true, include total count of owners in the response. Only applicable * when `withTokenBalances` is not set to `true`. */ includeCount?: boolean; } /** * Optional parameters object for the {@link getNftsForContract} method. * * This interface configures options when fetching the owner addresses of the * provided contract. * * @public */ export interface GetOwnersForContractWithTokenBalancesOptions { /** * Whether to include the token balances per token id for each owner. Defaults * to false when omitted. */ withTokenBalances: true; /** The block number in hex or decimal to fetch owners for. */ block?: string; /** Optional page key to paginate the next page for large requests. */ pageKey?: string; } /** * Optional parameters object for the {@link getOwnersForNft} method. * * This interface configures options when fetching the owner addresses of the * provided NFT contract. * * @public */ export interface GetOwnersForNftOptions { /** Optional page key to paginate the next page for large requests. */ pageKey?: string; /** * Sets the total number of owners to return in the response. */ pageSize?: number; } /** * The response object for the {@link getNftsForContract} function. The object * contains the NFTs without metadata inside the NFT contract. * * @public */ export interface NftContractBaseNftsResponse { /** An array of NFTs without metadata. */ nfts: BaseNft[]; /** * Pagination token that can be passed into another request to fetch the next * NFTs. If there is no page key, then there are no more NFTs to fetch. */ pageKey?: string; } /** * The response object for the {@link getNftsForContract} function. The object * contains the NFTs with metadata inside the NFT contract. * * @public */ export interface NftContractNftsResponse { /** An array of NFTs with metadata. */ nfts: Nft[]; /** * Pagination token that can be passed into another request to fetch the next * NFTs. If there is no page key, then there are no more NFTs to fetch. */ pageKey?: string; } /** OpenSea's metadata for an NFT collection. */ export interface OpenSeaCollectionMetadata { /** The floor price of the collection. */ floorPrice?: number; /** The name of the collection on OpenSea. */ collectionName?: string; /** The slug of the collection on OpenSea. */ collectionSlug?: string; /** The approval status of the collection on OpenSea. */ safelistRequestStatus?: OpenSeaSafelistRequestStatus; /** The image URL determined by OpenSea. */ imageUrl?: string; /** * The banner image URL determined by OpenSea. * @deprecated Use {@link bannerImageUrl} instead. */ imageBannerUrl?: string; /** The banner image URL determined by OpenSea. */ bannerImageUrl?: string; /** The description of the collection on OpenSea. */ description?: string; /** The homepage of the collection as determined by OpenSea. */ externalUrl?: string; /** The Twitter handle of the collection. */ twitterUsername?: string; /** The Discord URL of the collection. */ discordUrl?: string; /** Timestamp of when the OpenSea metadata was last ingested by Alchemy. */ lastIngestedAt: string; } /** * Alchemy representation of an NFT contract. * * The BaseNftContract does not hold any metadata information and only contains * the address. The NftContract additionally contains the tokenType, name, * symbol, and more. * * @public */ export interface NftContract { /** The address of the NFT contract. */ address: string; /** The type of the token in the contract. */ tokenType: NftTokenType; /** The name of the contract. */ name?: string; /** The symbol of the contract. */ symbol?: string; /** * The number of NFTs in the contract as an integer string. This field is only * available on ERC-721 contracts. */ totalSupply?: string; /** OpenSea's metadata for the contract. */ openSeaMetadata: OpenSeaCollectionMetadata; /** The address that deployed the NFT contract. */ contractDeployer?: string; /** The block number the NFT contract deployed in. */ deployedBlockNumber?: number; } /** NFT contract metadata with spam information. */ export interface NftContractForNft extends NftContract { /** Whether the NFT contract is marked as spam. */ isSpam?: boolean; /** Potential reasons why an NFT Contract was classified as spam. */ spamClassifications: NftSpamClassification[]; } /** * Alchemy representation of an NFT collection * * @public */ export interface NftCollection { /** The name of the collection. */ name: string; /** The OpenSea human-readable slug of the collection. */ slug?: string; /** The floor price of the collection*/ floorPrice?: NftCollectionFloorPrice; /** The description of the collection. */ description?: string; /** The homepage of the collection as determined by OpenSea. */ externalUrl?: string; /** The Twitter handle of the collection. */ twitterUsername?: string; /** The Discord URL of the collection. */ discordUrl?: string; } /** * Floor price object for an NFT collection. */ export interface NftCollectionFloorPrice { /** The marketplace where the floor price was determined. */ marketplace?: NftCollectionMarketplace; /** The floor price of the collection. */ floorPrice?: number; /** The currency of the floor price. */ priceCurrency?: string; } /** * Enum representing the supported NFT marketplaces on a * {@link NftCollectionFloorPrice} object. */ export declare enum NftCollectionMarketplace { OPENSEA = "OpenSea" } /** * Alchemy representation of an NFT that doesn't contain metadata. * * The BaseNft object does not hold any metadata information and only contains * the NFT contract and token ID. The Nft object additionally contains the NFT * metadata, token URI information, and media. * * @public */ export interface BaseNft { /** The contract address of the NFT. */ contractAddress: string; /** The NFT token ID as an integer string. */ tokenId: string; } /** * Alchemy representation of an NFT. * * The BaseNft object does not hold any metadata information and only contains * the NFT contract and token ID. The Nft object additionally contains the NFT * metadata, token URI information, and media. * * @public */ export interface Nft { /** The NFT's underlying contract and relevant contract metadata. */ contract: NftContractForNft; /** The NFT token ID as an integer string. */ tokenId: string; /** The type of NFT.*/ tokenType: NftTokenType; /** The NFT name. */ name?: string; /** The NFT description. */ description?: string; /** Media URLs and information for the NFT */ image: NftImage; /** The raw metadata for the NFT based on the metadata URI on the NFT contract. */ raw: NftRawMetadata; /** URIs for accessing the NFT's metadata blob. */ tokenUri?: string; /** When the NFT was last updated in the blockchain. Represented in ISO-8601 format. */ timeLastUpdated: string; /** * Time at which the NFT was most recently acquired by the user. Only * available when specifying `orderBy: NftOrdering.TRANSFERTIME` in the * request. */ acquiredAt?: AcquiredAt; /** Collection metadata for the NFT, if available. */ collection?: BaseNftCollection; /** Mint information for the NFT. */ mint?: NftMint; } /** * A base collection object as part of an {@link Nft}. */ export interface BaseNftCollection { /** The name of the collection. */ name: string; /** The OpenSea human-readable slug of the collection. */ slug?: string; /** The external URL for the collection. */ externalUrl?: string; /** The banner image URL for the collection. */ bannerImageUrl?: string; } /** * The raw metadata for the NFT based on the metadata URI on the NFT contract. */ export interface NftRawMetadata { /** The raw token URI on the NFT contract. */ tokenUri?: string; /** The raw metadata parsed from the raw token URI. */ metadata: Record; /** Error message if the raw metadata could not be fetched. */ error?: string; }