import type { ProjectFolder } from './ProjectFolder.js';
import { Kind as ProjectRequestKind, ProjectRequest } from './ProjectRequest.js';
import { Kind as EnvironmentKind, Environment } from './Environment.js';
import { HttpProject } from './HttpProject.js';
import { ProjectFolderKind } from './kinds.js';
type Kind = typeof ProjectFolderKind | typeof ProjectRequestKind | typeof EnvironmentKind;
export interface IProjectItem {
    /**
     * The kind of the item.
     */
    kind: Kind;
    /**
     * The identifier in the `definitions` array of the project.
     */
    key: string;
}
export declare class ProjectItem {
    /**
     * The kind of the item.
     */
    kind: Kind;
    /**
     * The identifier of the object in the `definitions` array of the project.
     */
    key: string;
    /**
     * A reference to the top level project object.
     */
    private project;
    /**
     * Checks whether the input is a definition of a project item.
     */
    static isProjectItem(input: unknown): boolean;
    /**
     * @return An instance that represents a request item
     */
    static projectRequest(project: HttpProject, key: string): ProjectItem;
    /**
     * @return An instance that represents a folder item
     */
    static projectFolder(project: HttpProject, key: string): ProjectItem;
    /**
     * @return An instance that represents an environment item
     */
    static projectEnvironment(project: HttpProject, key: string): ProjectItem;
    /**
     * @param project The top-most project.
     * @param input The project item definition used to restore the state.
     */
    constructor(project: HttpProject, input: string | IProjectItem);
    /**
     * Creates a new project item clearing anything that is so far defined.
     *
     * Note, this throws an error when the project item is not a project item.
     */
    new(init: IProjectItem): void;
    toJSON(): IProjectItem;
    /**
     * @returns The instance of the definition associated with this item.
     */
    getItem(): ProjectFolder | ProjectRequest | Environment | undefined;
    /**
     * @returns The instance of the HttpProject or a ProjectFolder that is a closest parent of this item.
     */
    getParent(): ProjectFolder | HttpProject | undefined;
}
export {};
//# sourceMappingURL=ProjectItem.d.ts.map