import { ILeaferImage, InnerId, IImageLOD, IImageCrossOrigin, IObject, ILeaferImageConfig, IFunction, ILeaferImageCacheCanvas, ISizeData, IInterlace, IMatrixData, ILeaferImagePatternPaint, ICanvasPattern, ILeaf, ILeaferImageLevel, ILeaferFilm, ILeaferVideo, IImageManager } from '@leafer/interface';

declare class LeaferImage implements ILeaferImage {
    readonly innerId: InnerId;
    get tag(): string;
    get url(): string;
    lod?: IImageLOD;
    get crossOrigin(): IImageCrossOrigin;
    view: any;
    width: number;
    height: number;
    isSVG: boolean;
    hasAlphaPixel: boolean;
    get completed(): boolean;
    ready: boolean;
    error: IObject;
    loading: boolean;
    use: number;
    config: ILeaferImageConfig;
    protected waitComplete: IFunction[];
    protected cache: ILeaferImageCacheCanvas;
    constructor(config: ILeaferImageConfig);
    load(onSuccess?: IFunction, onError?: IFunction, thumbSize?: ISizeData): number;
    unload(index: number, stopEvent?: boolean): void;
    protected setView(img: any): void;
    protected onComplete(isSuccess: boolean): void;
    getFull(_filters?: IObject): any;
    getCanvas(width: number, height: number, opacity?: number, filters?: IObject, xGap?: number, yGap?: number, smooth?: boolean, interlace?: IInterlace): any;
    getPattern(canvas: any, repeat: string | null, transform?: IMatrixData, paint?: ILeaferImagePatternPaint): ICanvasPattern;
    render(canvas: any, x: number, y: number, width: number, height: number, _leaf: ILeaf, _paint: any, _imageScaleX: number, _imageScaleY: number): void;
    getLoadUrl(_thumbSize?: ISizeData): string;
    setThumbView(_view: number): void;
    getThumbSize(_lod?: IImageLOD): ISizeData;
    getMinLevel(): number;
    getLevelData(_level: number, _width?: number, _height?: number): ILeaferImageLevel;
    clearLevels(_checkUse?: boolean): void;
    destroyFilter(): void;
    destroy(): void;
}

declare class LeaferFilm extends LeaferImage implements ILeaferFilm {
    get tag(): string;
}

declare class LeaferVideo extends LeaferImage implements ILeaferVideo {
    get tag(): string;
}

declare const ImageManager: IImageManager;

export { ImageManager, LeaferFilm, LeaferImage, LeaferVideo };
