import { type PRNG } from "./random"; export type TypedArrayNoiseTarget = { data: Uint8ClampedArray; width: number; stride: number; }; export type NoiseTarget = ImageData | number[][] | TypedArrayNoiseTarget; type Noise2DFillOptions = { z?: never; }; type Noise3DFillOptions = { z: number; }; export type NoiseFillOptions = { freq?: number; set?: (cell: { x: number; y: number; z: number; v: number; }) => void; } & (Noise2DFillOptions | Noise3DFillOptions); export type EasingFunction = (value: number) => number; export declare abstract class NoiseGenerator { abstract seed(init: number): this; abstract xy(x: number, y: number): number; abstract xyz(x: number, y: number, z: number): number; abstract fill(target: NoiseTarget, options?: NoiseFillOptions): void; } declare class Perlin implements NoiseGenerator { #private; static linear(t: number): number; static cubic(t: number): number; static quintic(t: number): number; constructor(rng?: PRNG); ease(easingFn: EasingFunction): this; seed(seed: number): this; xy(x: number, y: number): number; xyz(x: number, y: number, z: number): number; fill(target: NoiseTarget, options?: NoiseFillOptions): void; } declare class Simplex implements NoiseGenerator { #private; constructor(rng?: PRNG | null); seed(seed: number): this; xy(x: number, y: number): number; xyz(x: number, y: number, z: number): number; fill(target: NoiseTarget, options?: NoiseFillOptions): void; } declare class Worley implements NoiseGenerator { #private; constructor(rng?: PRNG | null, size?: number); seed(size: number): this; xy(x: number, y: number): number; xyz(x: number, y: number, z: number): number; fill(target: NoiseTarget, options?: NoiseFillOptions | undefined): void; } declare class Color implements NoiseGenerator { #private; constructor(rng?: PRNG | null); seed(seed: number): this; xy(_x: number, _y: number): number; xyz(x: number, y: number, _z: number): number; fill(target: NoiseTarget, options?: NoiseFillOptions): void; } export declare const Noise: { readonly Perlin: typeof Perlin; readonly Simplex: typeof Simplex; readonly Worley: typeof Worley; readonly Color: typeof Color; }; export {};