import type { ControlVar } from "./ControlVar.js" export type Interpolator = ControlVar> = (options: InterpolatorOptions) => T["value"] export type KeyNamer = (opts: { i: number, steps: number | number[], totalSteps: number, name: string, keyLimit: number, separator: string }) => string export type InterpolatorOptions = ControlVar> = { state: any step: number totalSteps: number percent: number steps: number | number[] start: T end: T keyName: string name: string exclude: string[] roundTo: number | false } export type InterpolatedVarsOptions = ControlVar> = { interpolator: Interpolator roundTo: number | false keyName: KeyNamer exclude: string[] steps: number | number[] separator: string keyLimit: number } export type StopEntry> = [percent: number, entry: ControlVar] export type Value< TUnit extends Record, > = ControlVar [] | StopEntry []