import type { BoundingBox } from "./index.interface.js";
import type { CanvasLike, Context2DLike } from "./canvas-factory.js";
/** Structural type for contour-like objects with 32-bit signed integer point data. */
export type ContourLike = {
    /** Flat `[x0, y0, x1, y1, ...]` point array. Matches `cv.Mat.data32S` for contour Mats. */
    data32S: Int32Array | number[];
};
/**
 * Cross-platform base class for canvas manipulation utilities.
 * Contains only methods that work in both Node and browser environments.
 */
export declare class CanvasToolkitBase {
    protected static _baseInstance: CanvasToolkitBase | null;
    protected step: number;
    protected constructor();
    /** Return the singleton instance of {@link CanvasToolkitBase}. */
    static getInstance(): CanvasToolkitBase;
    /**
     * Crop a part of source canvas and return a new canvas of the cropped part
     */
    crop(options: {
        bbox: BoundingBox;
        canvas: CanvasLike;
    }): CanvasLike;
    /**
     * Check whether a binary canvas is dirty (full of major color either black or white) or not
     */
    isDirty(options: {
        canvas: CanvasLike;
        threshold?: number;
        majorColorThreshold?: number;
    }): boolean;
    /**
     * Draw a non-filled rectangle on the canvas
     */
    drawLine(options: {
        ctx: Context2DLike;
        x: number;
        y: number;
        width: number;
        height: number;
        lineWidth?: number;
        color?: string;
    }): void;
    /**
     * Draw a contour on the canvas
     */
    drawContour(options: {
        ctx: Context2DLike;
        contour: ContourLike;
        strokeStyle?: string;
        lineWidth?: number;
    }): void;
}
