import { Verification, LSP2ArrayKey } from '@lukso/lsp2-contracts';

type LSP4DigitalAssetMetadataJSON = {
    LSP4Metadata: LSP4DigitalAssetMetadata;
};
type LSP4DigitalAssetMetadata = {
    name: string;
    description: string;
    links: LinkMetadata[];
    images: ImageMetadata[][];
    assets: AssetMetadata[];
    icon: ImageMetadata[];
    attributes?: AttributeMetadata[];
};
type LinkMetadata = {
    title: string;
    url: string;
};
type ImageMetadata = {
    width: number;
    height: number;
    verification?: Verification;
    url: string;
};
type AssetMetadata = FileAsset | ContractAsset;
type FileAsset = {
    verification?: Verification;
    url: string;
};
type ContractAsset = {
    address: string;
    tokenId?: string;
};
type AttributeMetadata = {
    key: string;
    value: string;
    type: string | number | boolean;
};
declare const LSP4SupportedStandard: {
    readonly key: "0xeafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c";
    readonly value: "0xa4d96624";
};
declare const LSP4DataKeys: {
    readonly SupportedStandards_LSP4: "0xeafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c";
    readonly LSP4TokenName: "0xdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af1";
    readonly LSP4TokenSymbol: "0x2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db932756";
    readonly LSP4TokenType: "0xe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3";
    readonly LSP4Metadata: "0x9afb95cacc9f95858ec44aa8c3b685511002e30ae54415823f406128b85b238e";
    readonly LSP4CreatorsMap: "0x6de85eaf5d982b4e5da00000";
    readonly 'LSP4Creators[]': LSP2ArrayKey;
};
/**
 * @dev List of LSP4 Token types to describe the type of token a digital asset contract represents.
 * @see for details see: https://github.com/lukso-network/LIPs/blob/main/LSPs/LSP-4-DigitalAsset-Metadata.md#lsp4tokentype
 */
declare const LSP4_TOKEN_TYPES: {
    readonly TOKEN: 0;
    readonly NFT: 1;
    readonly COLLECTION: 2;
};

export { LSP4DataKeys, LSP4SupportedStandard, LSP4_TOKEN_TYPES };
export type { AssetMetadata, AttributeMetadata, ContractAsset, FileAsset, ImageMetadata, LSP4DigitalAssetMetadata, LSP4DigitalAssetMetadataJSON, LinkMetadata };
