/// <reference types="node" />
export type Rational = {
    readonly numerator: number;
    readonly denominator: number;
};
export declare function parseRational(str: string): Rational;
export type Rectangle = {
    x: number;
    y: number;
    width: number;
    height: number;
};
export type Dimension = {
    width: number;
    height: number;
};
export interface ColorPlane {
    getWidth(): number;
    getHeight(): number;
    getBounds(): Rectangle;
    readonly data: Buffer;
    getDimension(): Dimension;
    getSubimage(r: Rectangle, dest?: Buffer): this;
}
export declare class Gray implements ColorPlane {
    readonly width: number;
    readonly height: number;
    readonly data: Buffer;
    constructor(width: number, height: number, data?: Buffer);
    getPixel(x: number, y: number): number;
    putPixel(x: number, y: number, pix: number): void;
    getWidth(): number;
    getHeight(): number;
    getBounds(): Rectangle;
    getDimension(): Dimension;
    getSubimage(this: Gray, r: Rectangle, dest?: Buffer): this;
}
export declare class InterleavedPlane implements ColorPlane {
    readonly width: number;
    readonly height: number;
    readonly data: Buffer;
    readonly colorComponents: string[];
    private readonly stride;
    constructor(width: number, height: number, colorComponents: string[], data?: Buffer);
    private colorComponentIdx;
    getPixel(x: number, y: number, colorComponent: string): number;
    putPixel(x: number, y: number, colorComponent: string, pix: number): void;
    getWidth(): number;
    getHeight(): number;
    getBounds(): Rectangle;
    getDimension(): Dimension;
    getSubimage(this: InterleavedPlane, r: Rectangle, dest?: Buffer): this;
}
export interface FrameHeader {
    width: number;
    height: number;
    fn: number;
}
export interface Frame {
    header: FrameHeader;
    colorPlanes: {
        [key: string]: ColorPlane;
    };
}
export interface YuvFrame extends Frame {
    colorPlanes: {
        y: ColorPlane;
        u: ColorPlane;
        v: ColorPlane;
    };
}
export interface RgbFrame extends Frame {
    colorPlanes: {
        r: ColorPlane;
        g: ColorPlane;
        b: ColorPlane;
    };
}
export interface InterleavedRgbFrame extends Frame {
    colorPlanes: {
        rgb: ColorPlane;
    };
}
export interface InterleavedRgbaFrame extends Frame {
    colorPlanes: {
        rgba: ColorPlane;
    };
}
