import { Chain } from "./general";
export declare const marketplaceIdentifiers: readonly ["opensea", "magiceden"];
export declare type MarketplaceIdentifier = typeof marketplaceIdentifiers[number];
export interface MarketplaceInfo {
    /**
     * Display name for marketplace, ie: "OpenSea"
     */
    name: string;
    /**
     * OpenSea for EVM chains has an `/address/id` structure,
     * whereas MagicEden for Solana only requires the NFT's ID
     * (it's mint address)
     */
    nftUrlFormatter: (id: string, address?: string) => string;
    collectionUrlFormatter: (address: string) => string;
}
declare type ChainMarketplace<C extends Chain, M extends MarketplaceIdentifier> = Record<C, Record<M, MarketplaceInfo>>;
export declare type EthereumMarketplace = ChainMarketplace<'ethereum', 'opensea'>;
export declare type PolygonMarketplace = ChainMarketplace<'polygon', 'opensea'>;
export declare type SolanaMarketplace = ChainMarketplace<'solana', 'magiceden' | 'opensea'>;
/**
 * Map of chain to all its marketplaces' info.
 */
export declare type ChainMarketplaceMap = EthereumMarketplace & PolygonMarketplace & SolanaMarketplace;
export {};
