import { type CoreNode, type CoreNodeAnimateProps } from '../CoreNode.js';
import { type TimingFunction } from '../utils.js';
import { EventEmitter } from '../../common/EventEmitter.js';
export interface AnimationSettings {
    duration: number;
    delay: number;
    easing: string | TimingFunction;
    loop: boolean;
    repeat: number;
    stopMethod: 'reverse' | 'reset' | false;
}
type PropValues = {
    start: number;
    target: number;
    isColor: boolean;
};
type PropGroup = {
    keys: string[];
    values: PropValues[];
};
type PropValuesMap = {
    props: PropGroup | null;
    shaderProps: PropGroup | null;
};
export declare class CoreAnimation extends EventEmitter {
    private node;
    private props;
    readonly id: number;
    settings: AnimationSettings;
    private progress;
    private delayFor;
    private delay;
    private timingFunction;
    propValuesMap: PropValuesMap;
    constructor(node: CoreNode, props: Partial<CoreNodeAnimateProps>, settings: Partial<AnimationSettings>);
    reset(): void;
    private restoreValues;
    restore(): void;
    private reverseValues;
    reverse(): void;
    private applyEasing;
    updateValue(isColor: boolean, propValue: number, startValue: number, easing: string | TimingFunction | undefined): number;
    private updateValues;
    update(dt: number): void;
}
export {};
