/**
 * @license
 * Copyright 2022 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import * as Blockly from 'blockly/core';
import { ProcedureParameterBase, ProcedureParameterBaseJson } from './events_procedure_parameter_base';
import { ObservableParameterModel } from './observable_parameter_model';
/**
 * Notifies listeners that a procedure parameter was renamed.
 */
export declare class ProcedureParameterRename extends ProcedureParameterBase {
    readonly oldName: string;
    static readonly TYPE = "procedure_parameter_rename";
    /** A string used to check the type of the event. */
    type: string;
    /** The new name of the procedure parameter. */
    private readonly newName;
    /** The new ID the backing variable for the parameter. */
    private readonly newVarId;
    /**
     * Constructs the procedure parameter rename event.
     *
     * @param workspace The workpace this event is associated with.
     * @param procedure The procedure model this event is associated with.
     * @param parameter The parameter model this event is associated with.
     * @param oldName The old name of the procedure parameter.
     * @param newName The (optional) new name of the procedure parameter. If not
     *     provided, the parameter model will be inspected to see what its current
     *     name is.
     * @param newVarId The (optional) new id of the procedure parameter's backing
     *     variable. If not provided, the parameter model will be inspected to
     *     see what its current name is.
     */
    constructor(workspace: Blockly.Workspace, procedure: Blockly.procedures.IProcedureModel, parameter: ObservableParameterModel, oldName: string, newName?: string, newVarId?: string);
    /**
     * Replays the event in the workspace.
     *
     * @param forward if true, play the event forward (redo), otherwise play it
     *     backward (undo).
     */
    run(forward: boolean): void;
    /**
     * Encode the event as JSON.
     *
     * @returns JSON representation.
     */
    toJson(): ProcedureParameterRenameJson;
    /**
     * Deserializes the JSON event.
     *
     * @param json The JSON representation of a procedure parameter rename event.
     * @param workspace The workspace to deserialize the event into.
     * @returns The new procedure parameter rename event.
     * @internal
     */
    static fromJson(json: ProcedureParameterRenameJson, workspace: Blockly.Workspace): ProcedureParameterRename;
}
export interface ProcedureParameterRenameJson extends ProcedureParameterBaseJson {
    oldName: string;
    newName: string;
    newVarId: string;
}
//# sourceMappingURL=events_procedure_parameter_rename.d.ts.map