import { z } from 'zod';
import { CollectionSchema } from '../schemas/iiif.js';
import { EmbeddedManifest, Manifest } from './manifest.js';
import type { Image } from './image.js';
import type { LanguageString, MajorVersion, FetchNextOptions, FetchNextResults } from '../lib/types.js';
type CollectionType = z.infer<typeof CollectionSchema>;
declare const CollectionTypeString = "collection";
/**
 * Parsed IIIF Collection
 * @class Collection
 * @property {string} [uri] - URI of Collection
 * @property {LanguageString} [label] - Label of Collection
 * @property {Collection[] | Manifest[] | EmbeddedManifest[]} [items] - Items in Collection
 * @property {MajorVersion} [majorVersion] - IIIF API version of Collection
 * @property {string} [type] - Resource type, equals 'collection'
 */
export declare class Collection {
    uri: string;
    type: typeof CollectionTypeString;
    majorVersion: MajorVersion;
    items: (Collection | Manifest | EmbeddedManifest)[];
    label?: LanguageString;
    constructor(parsedCollection: CollectionType);
    /**
     * Parses a IIIF Collection and returns a [Collection](#collection) containing the parsed version
     * @param {any} iiifCollection - Source data of IIIF Collection
     * @param {MajorVersion} [majorVersion=null] - IIIF API version of Collection. If not provided, it will be determined automatically
     * @returns {Collection} Parsed IIIF Collection
     * @static
     */
    static parse(iiifCollection: unknown, majorVersion?: MajorVersion | null): Collection;
    fetchAll(options?: Partial<FetchNextOptions>): Promise<FetchNextResults<Collection | Manifest | Image>[]>;
    fetchNext(options?: Partial<FetchNextOptions>, depth?: number): AsyncGenerator<FetchNextResults<Collection | Manifest | Image>, void, void>;
}
export {};
