import type { Fn2, FnN2, ICopy, IEmpty, NumericArray, Range0_3 } from "@thi.ng/api";
import type { BlendFnFloat, BlitCanvasOpts, BlitOpts, Filter, FloatFormat, FloatFormatSpec, FloatSampler, IBlend, IBlit, IInvert, IPixelBuffer, IResizable, IRotate, ISetImageData, IToImageData, IntFormat } from "./api.js";
import { IntBuffer } from "./int.js";
/**
 * Syntax sugar for {@link FloatBuffer} ctor.
 *
 * @param w -
 * @param h -
 * @param fmt -
 * @param data -
 */
export declare function floatBuffer(w: number, h: number, fmt?: FloatFormat | FloatFormatSpec, data?: Float32Array): FloatBuffer;
export declare function floatBuffer(src: IntBuffer, fmt?: FloatFormat | FloatFormatSpec): FloatBuffer;
/**
 * Creates a new `FloatBuffer` from given {@link IntBuffer} and using
 * provided {@link FloatFormat}.
 *
 * @remarks
 * See {@link FloatBuffer.as} for reverse operation.
 *
 * @param src -
 * @param fmt -
 *
 * @deprecated use `IntBuffer.as(float_format)` instead
 */
export declare const floatBufferFromInt: (src: IntBuffer, fmt?: FloatFormat | FloatFormatSpec) => FloatBuffer;
export declare const floatBufferFromImage: (img: HTMLImageElement, fmt?: FloatFormat, width?: number, height?: number | undefined) => FloatBuffer;
export declare const floatBufferFromCanvas: (canvas: HTMLCanvasElement | OffscreenCanvas, fmt?: FloatFormat) => FloatBuffer;
export declare class FloatBuffer implements IPixelBuffer<Float32Array, NumericArray>, IBlend<FloatBuffer, BlendFnFloat>, IBlit<FloatBuffer>, ICopy<FloatBuffer>, IEmpty<FloatBuffer>, IInvert<FloatBuffer>, IResizable<FloatBuffer, FloatSampler>, IRotate<FloatBuffer>, ISetImageData, IToImageData {
    readonly size: [number, number];
    readonly stride: [number, number];
    format: FloatFormat;
    data: Float32Array;
    protected __empty: NumericArray;
    constructor(w: number, h: number, fmt?: FloatFormat | FloatFormatSpec, data?: Float32Array);
    /** @deprecated use `.data` instead */
    get pixels(): Float32Array<ArrayBufferLike>;
    get width(): number;
    get height(): number;
    get offset(): number;
    get dim(): 2;
    [Symbol.iterator](): Generator<Float32Array<ArrayBufferLike>, void, unknown>;
    as(fmt: IntFormat): IntBuffer;
    as(fmt: FloatFormat): FloatBuffer;
    copy(): FloatBuffer;
    empty(): FloatBuffer;
    order(): number[];
    includes(x: number, y: number): boolean;
    indexAt(x: number, y: number): number;
    indexAtUnsafe(x: number, y: number): number;
    getAt(x: number, y: number): NumericArray;
    getAtUnsafe(x: number, y: number): Float32Array<ArrayBufferLike>;
    setAt(x: number, y: number, col: NumericArray): boolean;
    setAtUnsafe(x: number, y: number, col: NumericArray): boolean;
    getChannelAt(x: number, y: number, id: number): number | undefined;
    setChannelAt(x: number, y: number, id: number, col: number): this;
    getChannel(id: number): FloatBuffer;
    setChannel(id: number, src: FloatBuffer | number): this;
    blend(op: BlendFnFloat, dest: FloatBuffer, opts?: Partial<BlitOpts>): FloatBuffer;
    blit(dest: FloatBuffer, opts?: Partial<BlitOpts>): FloatBuffer;
    blitCanvas(canvas: HTMLCanvasElement | CanvasRenderingContext2D | OffscreenCanvas | OffscreenCanvasRenderingContext2D, opts?: Partial<BlitCanvasOpts>): void;
    setImageData(idata: ImageData): this;
    toImageData(idata?: ImageData): ImageData;
    getRegion(x: number, y: number, width: number, height: number): FloatBuffer | undefined;
    forEach(f: Fn2<NumericArray, number, NumericArray>): this;
    fill(x: NumericArray): void;
    premultiply(): this;
    postmultiply(): this;
    isPremultiplied(): boolean;
    clamp(): this;
    clampChannel(id: number): void;
    flipX(): this;
    /**
     * Flips image vertically.
     */
    flipY(): this;
    rotateByID(id: Range0_3): this;
    rotateCW(): this;
    rotateCCW(): this;
    rotate180(): this;
    invert(): this;
    scale(scale: number, sampler?: FloatSampler | Filter): FloatBuffer;
    resize(w: number, h: number, sampler?: FloatSampler | Filter): FloatBuffer;
    upsize(): FloatBuffer;
    protected _rotate(idxFn: FnN2): void;
    protected ensureFormat(dest: FloatBuffer): void;
    protected ensureRGBA(): void;
}
//# sourceMappingURL=float.d.ts.map