import { AbstractCommand } from '../AbstractCommand';
import { Document } from '../../core/models/Document';
import { SecurityScheme } from '../../core/models/common/SecurityScheme';
/**
 * A command used to modify a security scheme.
 * @author eric.wittmann@gmail.com
 * @extends AbstractCommand
 * @class
 */
export declare abstract class ChangeSecuritySchemeCommand extends AbstractCommand {
    _schemeName: string;
    _schemeObj: any;
    _oldScheme: any;
    constructor(scheme?: 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;
    /**
     * Gets the scheme from the document.
     * @param {Document} document
     * @return {SecurityScheme}
     */
    abstract getSchemeFromDocument(document: Document): SecurityScheme;
    /**
     * Replaces the content of a scheme with the content from another scheme.
     * @param {SecurityScheme} toScheme
     * @param {*} fromScheme
     */
    replaceSchemeWith(toScheme: SecurityScheme, fromScheme: any): void;
    /**
     * Null out all values in the given scheme.
     * @param {SecurityScheme} scheme
     */
    nullScheme(scheme: SecurityScheme): void;
}
