import type {MixingValue} from '../MixingValue' import type {Config} from '../Config' import type {Lookup, Any, Readable} from './utils' type FluidValue = any // TODO export type MixingConfig = Partial export interface AnimationResult { value: T extends Readable ? U : never noop?: boolean finished?: boolean cancelled?: boolean } export type AsyncResult = Promise> export type Mixingify = Lookup & { [P in keyof T]: T[P] | MixingValue } export type MixingValues = [T] extends [Any] ? Lookup // Special case: "any" : { [P in keyof T]: MixingWrap } type MixingWrap = [ Exclude, Extract // Arrays are animated. ] extends [object | void, never] ? never // Object literals cannot be animated. : MixingValue> | Extract