import { AbstractCommand } from '../AbstractCommand';
import { SimplifiedParameterType } from '../models/SimplifiedParameterType';
import { Document } from '../../core/models/Document';
import { NodePath } from '../../core/models/NodePath';
import { Parameter } from '../../core/models/common/Parameter';
/**
 * A command used to modify the type of a parameter of an operation.
 * @author eric.wittmann@gmail.com
 * @extends AbstractCommand
 * @class
 */
export declare abstract class ChangeParameterTypeCommand extends AbstractCommand {
    _paramPath: NodePath;
    _newType: SimplifiedParameterType;
    _oldParameter: any;
    constructor(parameter?: any, newType?: any);
    /**
     * @see io.apicurio.datamodels.cmd.ICommand#execute(io.apicurio.datamodels.core.models.Document)
     * @param {Document} document
     */
    execute(document: Document): void;
    /**
     * @see io.apicurio.datamodels.cmd.ICommand#undo(io.apicurio.datamodels.core.models.Document)
     * @param {Document} document
     */
    undo(document: Document): void;
    /**
     * Changes the parameter.
     * @param {Document} document
     * @param {Parameter} parameter
     */
    abstract doChangeParameter(document: Document, parameter: Parameter): any;
    /**
     * Called to resotre the given parameter back to the old settings (provided in oldParameter).
     * @param {Parameter} param
     * @param {Parameter} oldParam
     */
    abstract doRestoreParameter(param: Parameter, oldParam: Parameter): any;
}
