/**
 * DIN A sizes per ISO 216 have √2 aspect ratio, with A0 area = 1 m².
 * A0: 841 × 1189 mm (exact by ISO rounding), each A(n+1) halves the long side (rounded to mm).
 */
export type DinLevel = `A${0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10}`;
export declare const DIN_LEVELS: DinLevel[];
/**
 * Compute pixel size for a DIN level at given DPI.
 * Returns both integer px and the precise float before rounding.
 */
export declare function dinPixels(level: DinLevel, dpi: number): {
    widthPx: number;
    heightPx: number;
    widthPxExact: number;
    heightPxExact: number;
    aspect: number;
    sizeMm: {
        w: number;
        h: number;
    };
};
/**
 * Identify if an arbitrary pixel size at a given DPI matches a DIN A format (A0..A10),
 * irrespective of orientation, within a millimeter tolerance.
 *
 * @param widthPx  width in pixels
 * @param heightPx height in pixels
 * @param dpi      dots per inch used for the pixel dims
 * @param toleranceMm allowed deviation per side in millimeters (default 2mm)
 */
export declare function identifyDin(widthPx: number, heightPx: number, dpi: number, toleranceMm?: number): null | {
    level: DinLevel;
    matchedOrientation: "portrait" | "landscape";
    measuredMm: {
        w: number;
        h: number;
    };
    isoMm: {
        w: number;
        h: number;
    };
    deltaMm: {
        dw: number;
        dh: number;
    };
    aspectError: number;
};
