import type { Indices, Arrayable } from "./types"; import type { Equatable, Comparator } from "./util/eq"; import { equals } from "./util/eq"; export declare abstract class Uniform implements Equatable { abstract readonly is_scalar: boolean; abstract readonly length: number; abstract get(i: number): T; abstract [Symbol.iterator](): Generator; abstract select(indices: Indices): Uniform; abstract [equals](that: this, cmp: Comparator): boolean; abstract map(fn: (v: T) => U): Uniform; abstract unique(): T[]; is_Scalar(): this is UniformScalar; is_Vector(): this is UniformVector; } export declare class UniformScalar extends Uniform { readonly value: T; readonly length: number; readonly is_scalar = true; constructor(value: T, length: number); get(_i: number): T; [Symbol.iterator](): Generator; select(indices: Indices): UniformScalar; [equals](that: this, cmp: Comparator): boolean; map(fn: (v: T) => U): UniformScalar; unique(): T[]; } export declare class UniformVector extends Uniform { readonly array: Arrayable; readonly is_scalar = false; readonly length: number; constructor(array: Arrayable); get(i: number): T; [Symbol.iterator](): Generator; select(indices: Indices): UniformVector; [equals](that: this, cmp: Comparator): boolean; map(fn: (v: T) => U): UniformVector; unique(): T[]; } export declare class ColorUniformVector extends UniformVector { readonly array: Uint32Array; private readonly _view; constructor(array: Uint32Array); get(i: number): number; [Symbol.iterator](): Generator; copy_buffer(): ArrayBufferLike; } export declare function min(u: Uniform): number; export declare function max(u: Uniform): number; export declare function some(u: Uniform, predicate: (item: T) => boolean): boolean; export declare function every(u: Uniform, predicate: (item: T) => boolean): boolean; //# sourceMappingURL=uniforms.d.ts.map