import { VectorLike, VectorLikes } from '@use-gpu/core'; export type Lerpable = number | VectorLike | VectorLikes; export type LerpableRecord = Record; export type Tracks = { [K in keyof T]: Keyframe[]; }; export type TrackTypes = { [K in keyof T]?: EaseType; }; export type KeyframeTypeOf = T extends Keyframe ? E : never; export type Ease = 'cosine' | 'linear' | 'hold' | 'bezier'; export type EaseType = 'mat4' | 'quat' | 'angle' | 'number'; export type MakeSpline = (a: T, b: T, knots?: T[]) => Spline; export type AutoSpline = (a: T, b: T, c: T, d: T) => T[]; export type Spline = (target: T, t: number) => T; export type Lerp = (target: T, a: T, b: T, t: number) => T; export type Measure = (a: T, b: T) => number; export type EaseTypeImpl = { spline: MakeSpline; auto: AutoSpline; lerp: Lerp; measure: Measure; }; export type Keyframe = { time: number; value: T; ease?: Ease; bezier?: number[]; knots?: T[]; }; export type AutoKeyframe = { time: number; value: T; speed?: number; in?: number; out?: number; knots?: T[]; };