import { ExtensibleNode } from '../../core/models/ExtensibleNode';
import { IReferenceNode } from '../../core/models/IReferenceNode';
import { IVisitor } from '../../core/visitors/IVisitor';
/**
 * Constructor.
 * @param {string} path
 * @class
 * @extends ExtensibleNode
 * @author eric.wittmann@gmail.com
 */
export declare abstract class OasPathItem extends ExtensibleNode implements IOasParameterParent, IReferenceNode {
    _path: string;
    $ref: string;
    get: OasOperation;
    put: OasOperation;
    post: OasOperation;
    delete: OasOperation;
    options: OasOperation;
    head: OasOperation;
    patch: OasOperation;
    parameters: Array<OasParameter>;
    constructor(path: string);
    /**
     * Rename the path item (change its path value).
     * @param {string} newPath
     */
    rename(newPath: string): void;
    /**
     *
     * @return {string}
     */
    getReference(): string;
    /**
     *
     * @param {string} reference
     */
    setReference(reference: string): void;
    /**
     * @see io.apicurio.datamodels.openapi.models.IOasParameterParent#getParameters()
     * @return {OasParameter[]}
     */
    getParameters(): Array<OasParameter>;
    /**
     * @see io.apicurio.datamodels.openapi.models.IOasParameterParent#getParametersIn(java.lang.String)
     * @param {string} in
     * @return {OasParameter[]}
     */
    getParametersIn(__in: string): Array<OasParameter>;
    /**
     * Gets the path string.
     * @return {string}
     */
    getPath(): string;
    /**
     * @see io.apicurio.datamodels.core.models.Node#accept(io.apicurio.datamodels.core.visitors.IVisitor)
     * @param {*} visitor
     */
    accept(visitor: IVisitor): void;
    /**
     * Creates an OAS operation object.
     * @param {string} method
     * @return {OasOperation}
     */
    abstract createOperation(method: string): OasOperation;
    /**
     * Creates a child parameter.
     * @return {OasParameter}
     */
    abstract createParameter(): OasParameter;
    /**
     * Adds a parameter.
     * @param {OasParameter} param
     * @return {OasParameter}
     */
    addParameter(param: OasParameter): OasParameter;
    /**
     * Returns a single, unique parameter identified by "in" and "name" (which are the two
     * properties that uniquely identify a parameter).  Returns null if no parameter is found.
     * @param {string} in
     * @param {string} name
     * @return {OasParameter}
     */
    getParameter(__in: string, name: string): OasParameter;
    /**
     * Sets the given operation on this path item.
     * @param {OasOperation} operation
     */
    setOperation(operation: OasOperation): void;
}
import { OasParameter } from './OasParameter';
import { OasOperation } from './OasOperation';
import { IOasParameterParent } from './IOasParameterParent';
