/** @packageDocumentation
 * @module Elements
 */
import { Code, CodeScopeProps, EntityReferenceSet, RelatedElementProps, SheetIndexEntryProps, SheetIndexReferenceProps, SheetReferenceProps } from "@itwin/core-common";
import { InformationReferenceElement } from "./Element";
import { IModelDb } from "./IModelDb";
import { Id64String } from "@itwin/core-bentley";
import { SheetIndexReferenceRefersToSheetIndex, SheetReferenceRefersToSheet } from "./NavigationRelationship";
/** Arguments used to create a [[SheetIndexEntry]].
 * @beta
 */
export interface SheetIndexEntryCreateArgs {
    /** The iModel that will contain the sheet index entry. */
    iModelDb: IModelDb;
    /** The Id of the [[SheetIndexModel]] that will contain the sheet index entry. */
    sheetIndexModelId: Id64String;
    /** The [[SheetIndex]] or [[SheetIndexFolder]] that is parent to this SheetIndexEntry */
    parentId: Id64String;
    /** The name of the SheetIndexEntry */
    name: string;
    /** The priority of the SheetIndexEntry */
    priority: number;
}
/** Arguments supplied when creating a [[SheetIndexReference]].
 * @beta
 */
export interface SheetIndexReferenceCreateArgs extends SheetIndexEntryCreateArgs {
    /** The [[SheetIndex]] to which the reference refers. */
    sheetIndexId?: Id64String;
}
/** Arguments supplied when creating a [[SheetReference]].
 * @beta
 */
export interface SheetReferenceCreateArgs extends SheetIndexEntryCreateArgs {
    /** The [[Sheet]] to which the reference refers. */
    sheetId?: Id64String;
}
/** A [structured collection]($docs/bis/domains/drawings-sheets#sheet-index) of [[SheetIndexEntry]]s.
 * The sheet index is a tree whose leaf nodes refer to [[Sheet]]s, optionally grouped by [[SheetIndexFolder]]s and/or incorporating
 * sub-trees via [[SheetIndexReference]]s.
 * @beta
 */
export declare class SheetIndex extends InformationReferenceElement {
    static get className(): string;
    /** Create a Code for a SheetIndex given a name that is meant to be unique within the scope of the specified SheetIndexModel.
     * @param iModel  The IModelDb
     * @param scopeSheetIndexModelId The Id of the Model that contains the LinkElement and provides the scope for its name.
     * @param codeValue The SheetIndex name
     */
    static createCode(iModel: IModelDb, scopeSheetIndexModelId: CodeScopeProps, codeValue: string): Code;
    /** Create a SheetIndex
     * @param iModelDb The IModelDb
     * @param modelId The Id of the Model that contains the SheetIndex and provides the scope for its name.
     * @param name The name (codeValue) of the SheetIndex
     * @returns The newly constructed SheetIndex
     * @throws [[IModelError]] if there is a problem creating the SheetIndex
     */
    static create(iModelDb: IModelDb, modelId: Id64String, name: string): SheetIndex;
    /** Insert a SheetIndex
     * @param iModelDb The IModelDb
     * @param modelId The Id of the Model that contains the SheetIndex and provides the scope for its name.
     * @param name The name (codeValue) of the SheetIndex
     * @returns The Id of the newly inserted SheetIndex
     * @throws [[IModelError]] if there is a problem inserting the SheetIndex
     */
    static insert(iModelDb: IModelDb, modelId: Id64String, name: string): Id64String;
}
/** The base class for all elements that can participate in a [[SheetIndex]] hierarchy.
 * @beta
*/
export declare abstract class SheetIndexEntry extends InformationReferenceElement {
    static get className(): string;
    /** Can be used to prioritize or order members within a SheetIndex or SheetIndexFolder. */
    entryPriority: number;
    protected constructor(props: SheetIndexEntryProps, iModel: IModelDb);
    toJSON(): SheetIndexEntryProps;
    /** Create a Code for a Sheet Index Entry given a name that is meant to be unique within the scope of the specified SheetIndexModel.
     * @param iModel  The IModel
     * @param scopeModelId The Id of the [[SheetIndexModel]] that contains the [[SheetIndexEntry]] and provides the scope for its name.
     * @param codeValue The name of the entry
     */
    static createCode(iModelDb: IModelDb, scopeModelId: CodeScopeProps, codeValue: string): Code;
    protected static createParentRelationshipProps(iModelDb: IModelDb, id: Id64String): RelatedElementProps;
    protected static createProps(arg: SheetIndexEntryCreateArgs): SheetIndexEntryProps;
}
/** A container used to group [[SheetIndexEntry]]s within a [[SheetIndex]].
 * @beta
 */
export declare class SheetIndexFolder extends SheetIndexEntry {
    static get className(): string;
    /** Create a new SheetIndexFolder
     * @returns The newly constructed SheetIndexFolder element.
     * @throws [[IModelError]] if unable to create the element.
     */
    static create(arg: SheetIndexEntryCreateArgs): SheetIndexFolder;
    /** Create a new SheetIndexFolder
     * @returns The Id of the newly inserted SheetIndexFolder element.
     * @throws [[IModelError]] if unable to create the element.
     */
    static insert(arg: SheetIndexEntryCreateArgs): Id64String;
}
/** A node within one [[SheetIndex]] that incorporates another [[SheetIndex]] as a sub-tree.
 * @beta
*/
export declare class SheetIndexReference extends SheetIndexEntry {
    static get className(): string;
    /** The bis:SheetIndex that this bis:SheetIndexReference is pointing to. */
    sheetIndex?: SheetIndexReferenceRefersToSheetIndex;
    protected constructor(props: SheetIndexReferenceProps, iModel: IModelDb);
    protected static createReferenceRelationshipProps(id: Id64String): RelatedElementProps;
    toJSON(): SheetIndexReferenceProps;
    /** Create a new SheetIndexReference
     * @returns The newly constructed SheetIndexReference element.
     * @throws [[IModelError]] if unable to create the element.
     */
    static create(arg: SheetIndexReferenceCreateArgs): SheetIndexReference;
    /** Create a new SheetIndexReference
     * @returns The Id of the newly inserted SheetIndexReference element.
     * @throws [[IModelError]] if unable to create the element.
     */
    static insert(arg: SheetIndexReferenceCreateArgs): Id64String;
    /** @alpha */
    protected collectReferenceIds(referenceIds: EntityReferenceSet): void;
}
/** A leaf node in a [[SheetIndex]] that refers to a specific [[Sheet]].
 * @beta
*/
export declare class SheetReference extends SheetIndexEntry {
    static get className(): string;
    /** The bis:Sheet that this bis:SheetReference is pointing to. */
    sheet: SheetReferenceRefersToSheet | undefined;
    protected constructor(props: SheetReferenceProps, iModel: IModelDb);
    protected static createReferenceRelationshipProps(id: Id64String): RelatedElementProps;
    toJSON(): SheetReferenceProps;
    /** Create a new SheetReference
     * @returns The newly constructed SheetReference element.
     * @throws [[IModelError]] if unable to create the element.
     */
    static create(arg: SheetReferenceCreateArgs): SheetReference;
    /** Insert a new SheetReference
     * @returns The Id of the newly inserted SheetReference element.
     * @throws [[IModelError]] if unable to create the element.
     */
    static insert(arg: SheetReferenceCreateArgs): Id64String;
    /** @alpha */
    protected collectReferenceIds(referenceIds: EntityReferenceSet): void;
}
//# sourceMappingURL=SheetIndex.d.ts.map