/// <reference types="node" />
/// <reference types="node" />
import looksSame from "looks-same";
import { DiffOptions, ImageSize } from "./types";
interface PngImageData {
    data: Buffer;
    size: ImageSize;
}
export interface Point {
    top: number;
    left: number;
}
export interface Size {
    width: number;
    height: number;
}
export type Rect = Point & Size;
export interface RGB {
    R: number;
    G: number;
    B: number;
}
export interface RGBA {
    r: number;
    g: number;
    b: number;
    a: number;
}
interface CompareOptions {
    canHaveCaret?: boolean;
    pixelRatio?: number;
    compareOpts?: looksSame.LooksSameOptions;
    tolerance?: number;
    antialiasingTolerance?: number;
}
export declare const extractBase64PngSize: (base64EncodedPng: string) => ImageSize;
export declare class Image {
    private _imgDataPromise;
    private _imgData;
    private _width;
    private _height;
    private _composeImages;
    private _clearAreas;
    private _decodeError;
    private _hasICCPChunk;
    static create(buffer: Buffer): Image;
    constructor(buffer: Buffer);
    constructor(size: Size);
    get hasICCPChunk(): boolean;
    _getImgData(): Promise<Buffer>;
    _ensureImagesHaveSameWidth(): void;
    getSize(): ImageSize;
    clone(): Promise<Image>;
    crop(rect: Rect): Promise<void>;
    addJoin(attachedImages: this[]): void;
    applyJoin(): Promise<void>;
    clearArea(rect: Rect): Promise<void>;
    addClear(rect: Rect): Promise<void>;
    private _clipRect;
    getRGB(x: number, y: number): Promise<RGB>;
    _getPngBuffer(): Promise<Buffer>;
    save(file: string): Promise<void>;
    static fromBase64(base64: string): Image;
    toPngBuffer(opts: {
        resolveWithObject: true;
    }): Promise<PngImageData>;
    toPngBuffer(opts: {
        resolveWithObject?: false;
    }): Promise<Buffer>;
    static compare(path1: string, path2: string, opts?: CompareOptions): Promise<looksSame.LooksSameResult>;
    static buildDiff(opts: DiffOptions): Promise<null>;
}
export {};
