import { z } from 'zod';
import { ManifestSchema } from '../schemas/iiif.js';
import { EmbeddedManifest2Schema } from '../schemas/presentation.2.js';
import { EmbeddedManifest3Schema } from '../schemas/presentation.3.js';
import { Image } from './image.js';
import { Canvas } from './canvas.js';
import type { LanguageString, Metadata, MajorVersion, FetchNextResults } from '../lib/types.js';
type ManifestType = z.infer<typeof ManifestSchema>;
type EmbeddedManifestType = z.infer<typeof EmbeddedManifest2Schema> | z.infer<typeof EmbeddedManifest3Schema>;
declare const ManifestTypeString = "manifest";
/**
 * Parsed IIIF Manifest, embedded in a Collection
 * @class EmbeddedManifest
 * @property {boolean} embedded - Whether the Manifest is embedded in a Collection
 * @property {string} [uri] - URI of Manifest
 * @property {LanguageString} [label] - Label of Manifest
 * @property {MajorVersion} [majorVersion] - IIIF API version of Manifest
 * @property {string} [type] - Resource type, equals 'manifest'
 */
export declare class EmbeddedManifest {
    embedded: boolean;
    uri: string;
    type: typeof ManifestTypeString;
    label?: LanguageString;
    majorVersion: MajorVersion;
    constructor(parsedManifest: ManifestType | EmbeddedManifestType);
}
/**
 * Parsed IIIF Manifest
 * @class Manifest
 * @extends EmbeddedManifest
 * @property {Canvas[]} canvases - Array of parsed canvases
 * @property {LanguageString} [description] - Description of Manifest
 * @property {Metadata} [metadata] - Metadata of Manifest
 */
export declare class Manifest extends EmbeddedManifest {
    canvases: Canvas[];
    description?: LanguageString;
    metadata?: Metadata;
    embedded: boolean;
    constructor(parsedManifest: ManifestType);
    /**
     * Parses a IIIF resource and returns a [Manifest](#manifest) containing the parsed version
     * @param {any} iiifManifest - Source data of IIIF Manifest
     * @param {MajorVersion} [majorVersion=null] - IIIF API version of Manifest. If not provided, it will be determined automatically
     * @returns {Manifest} Parsed IIIF Manifest
     * @static
     */
    static parse(iiifManifest: unknown, majorVersion?: MajorVersion | null): Manifest;
    fetchAll(fetchFn?: typeof fetch): Promise<FetchNextResults<Image>[]>;
    fetchNext(fetchFn?: typeof fetch, depth?: number): AsyncGenerator<FetchNextResults<Image>, void, void>;
}
export {};
