import type { CoreNode } from '../CoreNode.js';
import type { StopMethodOptions } from './Playback.js';
import type { TimingFunction } from './utils.js';
export type TransitionTarget = CoreNode | Record<string, number | string>;
export interface TransitionSettings {
    duration: number;
    delay: number;
    easing?: string | TimingFunction;
    stopMethod?: StopMethodOptions;
}
export type TransitionProps = TransitionSettings & {
    to: number | string;
    from?: number | string;
    start: number;
    end: number;
};
export interface Transition {
    to: number;
    from: number;
    current: number;
    startTime: number | null;
    endTime: number | null;
    progress: number;
    duration: number;
    delay: number;
    easing?: TimingFunction;
    update: (animationTime: number) => number;
    progressFn: (p: number) => number;
}
export type RunningTransition = Omit<TransitionProps, 'startTime' | 'endTime'> & {
    startTime: number;
    endTime: number;
};
export type TransitionTypes = TransitionProps | number | string | (TransitionProps | number | string)[];
export declare function easedProgressFn(this: Required<Transition>, p: number): number;
export declare function linearProgressFn(this: Required<Transition>, p: number): number;
export declare function updateTransition(this: Required<Transition>, animationTime: number): number;
export declare function createTransition(props: TransitionProps): Transition;
