/** * Manual typings for types.js. * * Why not name this types.d.ts? Because then it won't be included in the build, * see https://stackoverflow.com/a/56440335/2747370. dts files are good for * specifying types that are only consumed in our source code, but no good for * specifying types that should be included in the output. */ import type { Color, Matrix3, Matrix4, Quaternion, Vector2, Vector3, Vector4 } from "three"; import type { MathboxNode, MathboxSelection } from "../../types"; declare type OnInvalid = () => void; declare type Validate = (value: In, target: unknown, invalid: OnInvalid) => Out; export interface Type { validate: Validate; make(): Out; } export declare type Optional = T | null | undefined; export declare type BlendingModes = "no" | "normal" | "add" | "subtract" | "multiply" | "custom"; export declare type Axes = "x" | "y" | "z" | "w" | "W" | "H" | "D" | "I" | "width" | "height" | "depth" | "items" | 1 | 2 | 3 | 4; export declare type AxesWithZero = Axes | 0 | "zero" | "null"; /** * Values 'left' and 'right' correspond to -1 and +1, respectively. */ export declare type Alignments = "left" | "middle" | "right" | number; /** * If specified as a number, should range between -1 ("enter") to +1 ("exit"). */ export declare type TransitionStates = "enter" | "visible" | "exiit" | number; /** * A representation of a color. Can be: * - a string, which is parsed by THREE.Color * - a THREE.Color instance * - a number, which is interpreted as a hex value * - an array of numbers, which is interpreted as an RGB value */ declare type ColorDescription = string | Color | number | number[]; declare type Vec2Like = number | number[] | Vector2; declare type Vec3Like = number | number[] | Vector3; declare type Vec4Like = number | number[] | Vector4; export declare type TypeGenerators = { nullable(type: Type): Type; nullable(type: Type, make: true): Type; array(type: Type, size?: number, value?: O): Type; string(defaultValue?: string): Type, string>; bool(defaultValue?: boolean): Type, boolean>; number(defaultValue?: number): Type, number>; enum(value: E, keys: E[], map?: Record): Type, E>; enumber(value: E | number, keys: E[], map?: Record): Type, E | number>; classes(): Type, string[]>; blending(defaultValue?: BlendingModes): Type, BlendingModes>; anchor(defaultValue?: Alignments): Type, Alignments>; transitionState(defaultValue?: TransitionStates): Type, TransitionStates>; axis(value?: Axes, allowZero?: false): Type, number>; axis(value: AxesWithZero, allowZero: true): Type, number>; select(defaultValue?: string): Type, string | MathboxNode | MathboxSelection>; letters(type: Type, size?: number, value?: string): Type, O[]>; int(value?: number): Type, number>; round(value?: number): Type, number>; positive(type: Type, strict?: boolean): Type; func: any; emitter: any; object: any; timestamp: any; vec2(x?: number, y?: number): Type; ivec2(x?: number, y?: number): Type; vec3(x?: number, y?: number, z?: number): Type; ivec3(x?: number, y?: number, z?: number): Type; vec4(x?: number, y?: number, z?: number, w?: number): Type; ivec4(x?: number, y?: number, z?: number, w?: number): Type; mat3(n11?: number, n12?: number, n13?: number, n21?: number, n22?: number, n23?: number, n31?: number, n32?: number, n33?: number): Type; mat4(n11?: number, n12?: number, n13?: number, n14?: number, n21?: number, n22?: number, n23?: number, n24?: number, n31?: number, n32?: number, n33?: number, n34?: number, n41?: number, n42?: number, n43?: number, n44?: number): Type; quat(x?: number, y?: number, z?: number, w?: number): Type; color(r?: number, g?: number, b?: number, a?: number): Type; transpose(order?: string | Axes[]): Type, number[]>; swizzle(order?: string | Axes[], size?: number): Type, number[]>; filter: any; type: any; scale: any; mapping: any; indexing: any; shape: any; join: any; stroke: any; vertexPass: any; fragmentPass: any; ease: any; fit: any; font: any; data: any; }; export declare const Types: TypeGenerators; declare type Emit = (...xyzw: number[]) => void; export declare type ArrayEmitter = (emit: Emit, i: number, t: number, delta: number) => void; export declare type IntervalEmitter = (emit: Emit, x: number, i: number, t: number, delta: number) => void; export declare type MatrixEmitter = (emit: Emit, i: number, j: number, t: number, delta: number) => void; export declare type AreaEmitter = (emit: Emit, x: number, y: number, i: number, j: number, t: number, delta: number) => void; export declare type VoxelEmitter = (emit: Emit, i: number, j: number, k: number, t: number, delta: number) => void; export declare type VolumeEmitter = (emit: Emit, x: number, y: number, z: number, i: number, j: number, k: number, t: number, delta: number) => void; export {};