import type { LoadOmeTiffReturnValue } from './ome-tiff-types.js';
import type { LoadOmeZarrReturnValue } from './ome-zarr-types.js';
declare type VivLoaderType<S extends string[]> = LoadOmeTiffReturnValue<S> | LoadOmeZarrReturnValue<S>;
declare type VivLoaderDataType<S extends string[]> = VivLoaderType<S>['data'];
declare type ImageOptions = {
    coordinateTransformations?: object[];
    offsetsUrl?: string;
};
declare type ChannelObject = {
    name: string;
    defaultColor?: number[];
    defaultWindow?: [number, number];
    autoDefaultColor?: number[];
};
declare type ResolutionObject = {
    height: number;
    width: number;
    depthDownsampled: number;
    totalBytes: number;
    canLoad: boolean;
};
declare type BoundingCube = [
    [
        number,
        number
    ],
    [
        number,
        number
    ],
    [
        number,
        number
    ]
];
/**
 * A wrapper around the Viv loader, to provide a common interface for
 * all image file types.
 */
export default class ImageWrapper<S extends string[]> {
    vivLoader: VivLoaderType<S>;
    options: ImageOptions;
    constructor(vivLoader: VivLoaderType<S>, options: ImageOptions);
    getType(): 'ome-tiff' | 'ome-zarr';
    hasPhysicalSize(): boolean;
    getData(): VivLoaderDataType<S>;
    getModelMatrix(): number[];
    getDefaultTargetT(): number;
    getDefaultTargetZ(): number;
    getName(): string;
    getNumChannels(): number;
    getChannelNames(): string[];
    getChannelObjects(): ChannelObject[];
    getDtype(): string | undefined;
    hasZStack(): boolean;
    hasTStack(): boolean;
    getNumZ(): number;
    getNumT(): number;
    isMultiResolution(): boolean;
    getMultiResolutionStats(): ResolutionObject[];
    /**
     * Compute an index of an array element returned by getMultiResolutionStats()
     * which corresponds to a "good" automatic target resolution to select.
     * In the future, we could make this more sophisticated, for example
     * to take into account the network speed.
     */
    getAutoTargetResolution(): number | null;
    getBoundingCube(): BoundingCube;
    isInterleaved(): boolean;
}
export {};
//# sourceMappingURL=ImageWrapper.d.ts.map