import { NftDataFetchStrategy } from '../hooks/useNFT';
import { NFTDataType } from './AuctionInfoTypes';
import { MediaFetchAgent } from './MediaFetchAgent';
import { MetadataIsh } from './MetadataTypes';
/**
 * This removes undefined values to sanitize
 * data objects to work with nextJS server-side
 * page props.
 *
 * @param json Object to sanitize for JSON fields
 * @returns JSON-safe object
 */
export declare function prepareJson<T>(json: T): T;
declare type fetchNFTDataType = {
    tokenId: string;
    contractAddress?: string;
    fetchAgent: MediaFetchAgent;
    prepareDataJSON?: boolean;
    fetchStrategy?: NftDataFetchStrategy;
    loadAuctionInfo?: boolean;
    requireData?: boolean;
};
/**
 * Async function to fetch auction information and metadata for any
 * NFT or zNFT. Mirrors behavior of useNFT hook but for server-side rendering.
 * Fetches all metadata and auction information server-side. Will be re-validated client-side.
 * Can pass return value directly into `initialData` for useNFT hook.
 *
 * @param tokenId: Token ID to fetch
 * @param contractAddress: Contract address to fetch token from
 * @param fetchAgent: MediaFetchAgent instance
 * @param prepareDataJSON: Sanitizes undefined fields to allow data to work with next.js
 * @returns object with nft and metadata fields, any issues throw an RequestError
 */
export declare const fetchNFTData: (args: fetchNFTDataType) => Promise<{
    nft: NFTDataType;
    metadata: MetadataIsh;
}>;
export {};
