import { Node } from '../Node';
import { IVisitor } from '../../visitors/IVisitor';
/**
 * Constructor.
 * @class
 * @extends Node
 * @author eric.wittmann@gmail.com
 */
export declare abstract class SecurityRequirement extends Node {
    _items: any;
    constructor();
    /**
     * Gets the names of all the security requirements.
     * @return {string[]}
     */
    getSecurityRequirementNames(): Array<string>;
    /**
     * Gets the scopes defined for this security requirement.  This is only valid if the
     * type of security is oauth2.
     * @param {string} name
     * @return {string[]}
     */
    getScopes(name: string): Array<string>;
    /**
     * Adds a security requirement item.
     * @param {string} name
     * @param {string[]} scopes
     */
    addSecurityRequirementItem(name: string, scopes: Array<string>): void;
    /**
     * Removes a single security requirement item (reference to an existing security scheme)
     * by scheme name and returns the array of scopes previously mapped to the scheme name.
     * @param {string} name
     * @return {string[]}
     */
    removeSecurityRequirementItem(name: string): Array<string>;
    /**
     * @see io.apicurio.datamodels.core.models.Node#accept(io.apicurio.datamodels.core.visitors.IVisitor)
     * @param {*} visitor
     */
    accept(visitor: IVisitor): void;
}
