import type { Point3 } from '../types/index.js';
export interface WSIImageMetadataSource {
    NumberOfFrames?: number;
    TotalPixelMatrixColumns: number;
    TotalPixelMatrixRows: number;
    ImageOrientationSlide?: number[];
    ImagedVolumeWidth?: number;
    ImagedVolumeHeight?: number;
    ImagedVolumeDepth?: number;
    TotalPixelMatrixOriginSequence?: Array<{
        XOffsetInSlideCoordinateSystem?: number;
        YOffsetInSlideCoordinateSystem?: number;
        ZOffsetInSlideCoordinateSystem?: number;
    }>;
    ['00080008']?: {
        Value?: string[];
    };
    ['00200052']?: {
        Value?: string[];
    };
    isMultiframe?: unknown;
    frameNumber?: unknown;
    [key: string]: unknown;
}
export interface WSIImageVolumeLike extends WSIImageMetadataSource {
    ImageType: string[];
}
export interface WSIClientLike {
    getDICOMwebMetadata(imageId: string): WSIImageMetadataSource;
}
export interface WSIMapViewLike {
    getCenter(): [number, number];
    getExtent?(): number[];
    getProjection(): {
        getExtent(): number[];
    };
    getResolution(): number;
    getResolutionForZoom?(zoom: number): number;
    getRotation(): number;
    getZoom(): number;
    setCenter(center: [number, number]): void;
    setResolution?(resolution: number): void;
    setRotation(rotation: number): void;
    setZoom(zoom: number): void;
}
export interface WSIMapLike {
    getView(): WSIMapViewLike;
    getViewport(): HTMLElement;
    on(eventName: string, handler: () => void): void;
    render(): void;
    un(eventName: string, handler: () => void): void;
    updateSize?(): void;
}
export interface WSIViewerLike {
    cleanup?(): void;
    deactivateDragPanInteraction(): void;
    getAffine(): unknown;
    getMap(): WSIMapLike;
    render(args: {
        container: HTMLElement;
    }): void;
}
export interface WSITransformUtilitiesLike {
    applyInverseTransform(args: {
        coordinate: [number, number];
        affine: unknown;
    }): [number, number];
    applyTransform(args: {
        coordinate: [number, number];
        affine: unknown;
    }): [number, number];
}
export interface DicomMicroscopyViewerLike {
    metadata: {
        VLWholeSlideMicroscopyImage: new (args: {
            metadata: WSIImageMetadataSource;
        }) => WSIImageVolumeLike;
    };
    utils?: WSITransformUtilitiesLike;
    viewer: {
        VolumeImageViewer: new (args: {
            client: unknown;
            metadata: WSIImageVolumeLike[];
            controls: string[];
            retrieveRendered: boolean;
            bindings: Record<string, unknown>;
        }) => WSIViewerLike;
    };
}
export interface WSIImageDataMetadata {
    bitsAllocated: number;
    numberOfComponents: number;
    origin: Point3;
    direction: number[];
    dimensions: [number, number, number];
    spacing: [number, number, number];
    hasPixelSpacing: boolean;
    numVoxels: number;
    imagePlaneModule: Record<string, unknown>;
}
export interface LoadedWSIData {
    volumeImages: WSIImageVolumeLike[];
    metadataDicomweb: WSIImageMetadataSource[];
    metadata: WSIImageDataMetadata;
    frameOfReferenceUID: string | null;
    imageURISet: Set<string>;
}
export declare function getDicomMicroscopyViewer(): Promise<DicomMicroscopyViewerLike>;
export declare function addWSIMiniNavigationOverlayCss(): void;
export declare function getWSIImageDataMetadata(args: {
    metadataDicomweb: WSIImageMetadataSource[];
    imageIds: string[];
    imageIndex?: number;
}): WSIImageDataMetadata;
export declare function loadWSIData(args: {
    imageIds: string[];
    client: WSIClientLike;
    dicomMicroscopyViewer?: DicomMicroscopyViewerLike;
}): Promise<LoadedWSIData>;
