import { Parameter } from '@zeainc/zea-engine';
import Change from '../Change';
/**
 * Represents a `Change` class for storing `Parameter` values.
 *
 * **Events**
 * * **updated:** Triggered when the `ParameterValueChange` value is updated.
 *
 * @extends Change
 */
declare class ParameterValueChange extends Change {
    param: Parameter<unknown>;
    nextValue: any;
    prevValue: any;
    supressed: boolean;
    /**
     * Creates an instance of ParameterValueChange.
     *
     * @param param - The Parameter object that is modified by this change.
     * @param newValue - The newValue value.
     */
    constructor(param?: Parameter<unknown>, newValue?: any);
    /**
     * Rollbacks the value of the parameter to the previous one, passing it to the redo stack in case you wanna recover it later on.
     */
    undo(): void;
    /**
     * Rollbacks the `undo` action by moving the change from the `redo` stack to the `undo` stack
     * and updating the parameter with the new value.
     */
    redo(): void;
    /**
     * Updates the state of the current parameter change value.
     *
     * @param updateData - The updateData param.
     */
    update(updateData: Record<string, any>): void;
    /**
     * Serializes `Parameter` instance value as a JSON object, allowing persistence/replication.
     *
     * @param context - The context param.
     * @return {object} The return value.
     */
    toJSON(context: Record<any, any>): Record<any, any>;
    /**
     * Restores `Parameter` instance's state with the specified JSON object.
     *
     * @param j - The j param.
     * @param context - The context param.
     */
    fromJSON(j: Record<any, any>, context: Record<any, any>): Record<any, any>;
}
export default ParameterValueChange;
export { ParameterValueChange };
//# sourceMappingURL=ParameterValueChange.d.ts.map