/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
/** @packageDocumentation
 * @module Relationships
 */
import { RelatedElement, TypeDefinition } from "@itwin/core-common";
/** Relates a parent Element to child Elements which represent parts of the Entity modeled by the parent Element.
 * @public
 */
export class ElementOwnsChildElements extends RelatedElement {
    static classFullName = "BisCore:ElementOwnsChildElements";
    constructor(parentId, relClassName = ElementOwnsChildElements.classFullName) {
        super({ id: parentId, relClassName });
    }
}
/** Relates a parent [[Subject]] to [[Subject]] child elements.
 * @public
 */
export class SubjectOwnsSubjects extends ElementOwnsChildElements {
    static classFullName = "BisCore:SubjectOwnsSubjects";
    constructor(parentId, relClassName = SubjectOwnsSubjects.classFullName) {
        super(parentId, relClassName);
    }
}
/** Relates a parent [[Subject]] to [[InformationPartitionElement]] child elements.
 * @public
 */
export class SubjectOwnsPartitionElements extends ElementOwnsChildElements {
    static classFullName = "BisCore:SubjectOwnsPartitionElements";
    constructor(parentId, relClassName = SubjectOwnsPartitionElements.classFullName) {
        super(parentId, relClassName);
    }
}
/** Relates a parent [[Category]] to [[SubCategory]] child elements.
 * @public
 */
export class CategoryOwnsSubCategories extends ElementOwnsChildElements {
    static classFullName = "BisCore:CategoryOwnsSubCategories";
    constructor(parentId, relClassName = CategoryOwnsSubCategories.classFullName) {
        super(parentId, relClassName);
    }
}
/** Relates a parent [[RenderMaterial]] to [[RenderMaterial]] child elements.
 * @public
 */
export class RenderMaterialOwnsRenderMaterials extends ElementOwnsChildElements {
    static classFullName = "BisCore:RenderMaterialOwnsRenderMaterials";
    constructor(parentId, relClassName = RenderMaterialOwnsRenderMaterials.classFullName) {
        super(parentId, relClassName);
    }
}
/** Relates a parent Element to child Elements which represent **hidden** parts of the Entity.
 * @public
 */
export class ElementEncapsulatesElements extends ElementOwnsChildElements {
    static classFullName = "BisCore:ElementEncapsulatesElements";
    constructor(parentId, relClassName = ElementEncapsulatesElements.classFullName) {
        super(parentId, relClassName);
    }
}
/** Relates a parent [[PhysicalElement]] to [[PhysicalElement]] children that it assembles.
 * @public
 */
export class PhysicalElementAssemblesElements extends ElementOwnsChildElements {
    static classFullName = "BisCore:PhysicalElementAssemblesElements";
    constructor(parentId, relClassName = PhysicalElementAssemblesElements.classFullName) {
        super(parentId, relClassName);
    }
}
/** Relates a parent [[ExternalSource]] to its [[ExternalSourceAttachment]] children.
 * @note The associated ECClass was added to the BisCore schema in version 1.0.13
 * @beta
 */
export class ExternalSourceOwnsAttachments extends ElementOwnsChildElements {
    static classFullName = "BisCore:ExternalSourceOwnsAttachments";
    constructor(parentId, relClassName = ExternalSourceOwnsAttachments.classFullName) {
        super(parentId, relClassName);
    }
}
/** Relates a parent [[FolderLink]] to its [[RepositoryLink]] children.
 * @note The associated ECClass was added to the BisCore schema in version 1.0.13
 * @beta
 */
export class FolderContainsRepositories extends ElementOwnsChildElements {
    static classFullName = "BisCore:FolderContainsRepositories";
    constructor(parentId, relClassName = FolderContainsRepositories.classFullName) {
        super(parentId, relClassName);
    }
}
/** Relates a [[SheetIndexFolder]] to the [[SheetIndexEntry]]'s that it contains.
 * @beta
 */
export class SheetIndexFolderOwnsEntries extends ElementOwnsChildElements {
    static classFullName = "BisCore:SheetIndexFolderOwnsEntries";
    constructor(parentId, relClassName = SheetIndexFolderOwnsEntries.classFullName) {
        super(parentId, relClassName);
    }
}
/** Relates a [[SheetIndex]] to the [SheetIndexEntry]]'s that it contains.
 * @beta
 */
export class SheetIndexOwnsEntries extends ElementOwnsChildElements {
    static classFullName = "BisCore:SheetIndexOwnsEntries";
    constructor(parentId, relClassName = SheetIndexOwnsEntries.classFullName) {
        super(parentId, relClassName);
    }
}
/** Relates a [[GeometricElement2d]] to its [[TypeDefinitionElement]]
 * @public
 */
export class GeometricElement2dHasTypeDefinition extends TypeDefinition {
    static classFullName = "BisCore:GeometricElement2dHasTypeDefinition";
    constructor(id, relClassName = GeometricElement2dHasTypeDefinition.classFullName) {
        super({ id, relClassName });
    }
}
/** Relates a [[GraphicalElement2d]] to its [[GraphicalType2d]]
 * @public
 */
export class GraphicalElement2dIsOfType extends GeometricElement2dHasTypeDefinition {
    static classFullName = "BisCore:GraphicalElement2dIsOfType";
    constructor(id, relClassName = GraphicalElement2dIsOfType.classFullName) {
        super(id, relClassName);
    }
}
/** Relates a [[GeometricElement3d]] to its [[TypeDefinitionElement]]
 * @public
 */
export class GeometricElement3dHasTypeDefinition extends TypeDefinition {
    static classFullName = "BisCore:GeometricElement3dHasTypeDefinition";
    constructor(id, relClassName = GeometricElement3dHasTypeDefinition.classFullName) {
        super({ id, relClassName });
    }
}
/** Relates a [[SpatialLocationElement]] to its [[SpatialLocationType]]
 * @public
 */
export class SpatialLocationIsOfType extends GeometricElement3dHasTypeDefinition {
    static classFullName = "BisCore:SpatialLocationIsOfType";
    constructor(id, relClassName = SpatialLocationIsOfType.classFullName) {
        super(id, relClassName);
    }
}
/** Relates a [[PhysicalElement]] to its [[PhysicalType]]
 * @public
 */
export class PhysicalElementIsOfType extends GeometricElement3dHasTypeDefinition {
    static classFullName = "BisCore:PhysicalElementIsOfType";
    constructor(id, relClassName = PhysicalElementIsOfType.classFullName) {
        super(id, relClassName);
    }
}
/** Relates a [[PhysicalElement]] to its [[PhysicalMaterial]]
 * @public
 */
export class PhysicalElementIsOfPhysicalMaterial extends RelatedElement {
    static classFullName = "BisCore:PhysicalElementIsOfPhysicalMaterial";
    constructor(id) {
        super({ id });
    }
}
/** Relates a [[PhysicalType]] to its [[PhysicalMaterial]]
 * @public
 */
export class PhysicalTypeIsOfPhysicalMaterial extends RelatedElement {
    static classFullName = "BisCore:PhysicalTypeIsOfPhysicalMaterial";
    constructor(id) {
        super({ id });
    }
}
/** Relates an [[Element]] and an [[ElementUniqueAspect]] that it owns.
 * @public
 */
export class ElementOwnsUniqueAspect extends RelatedElement {
    static classFullName = "BisCore:ElementOwnsUniqueAspect";
    constructor(elementId, relClassName = ElementOwnsUniqueAspect.classFullName) {
        super({ id: elementId, relClassName });
    }
}
/** Relates an [[Element]] and an [[ElementMultiAspect]] that it owns.
 * @public
 */
export class ElementOwnsMultiAspects extends RelatedElement {
    static classFullName = "BisCore:ElementOwnsMultiAspects";
    constructor(elementId, relClassName = ElementOwnsMultiAspects.classFullName) {
        super({ id: elementId, relClassName });
    }
}
/** Relates an [[Element]] and an [[ExternalSourceAspect]] that it owns.
 * @public
 */
export class ElementOwnsExternalSourceAspects extends ElementOwnsMultiAspects {
    static classFullName = "BisCore:ElementOwnsExternalSourceAspects";
    constructor(elementId, relClassName = ElementOwnsExternalSourceAspects.classFullName) {
        super(elementId, relClassName);
    }
}
/** Relates an [[ExternalSource]] to the [[RepositoryLink]] that it is persisted in.
 * @note The associated ECClass was added to the BisCore schema in version 1.0.13
 * @beta
 */
export class ExternalSourceIsInRepository extends RelatedElement {
    static classFullName = "BisCore:ExternalSourceIsInRepository";
    constructor(repositoryId, relClassName = ExternalSourceIsInRepository.classFullName) {
        super({ id: repositoryId, relClassName });
    }
}
/** Relates an [[ExternalSource]] to the [[RepositoryLink]] that it is persisted in.
 * @note The associated ECClass was added to the BisCore schema in version 1.0.13
 * @beta
 */
export class ExternalSourceAttachmentAttachesSource extends RelatedElement {
    static classFullName = "BisCore:ExternalSourceAttachmentAttachesSource";
    constructor(externalSourceId, relClassName = ExternalSourceAttachmentAttachesSource.classFullName) {
        super({ id: externalSourceId, relClassName });
    }
}
/** Relates a [[SheetReference]] and [[Sheet]] that it refers.
 * @beta
 */
export class SheetReferenceRefersToSheet extends RelatedElement {
    static classFullName = "BisCore:SheetReferenceRefersToSheet";
    constructor(sheetId, relClassName = SheetReferenceRefersToSheet.classFullName) {
        super({ id: sheetId, relClassName });
    }
}
/** Relates a [[SheetIndexReference]] to a [[SheetIndex]] it refers.
 * @beta
 */
export class SheetIndexReferenceRefersToSheetIndex extends RelatedElement {
    static classFullName = "BisCore:SheetIndexReferenceRefersToSheetIndex";
    constructor(sheetIndexId, relClassName = SheetIndexReferenceRefersToSheetIndex.classFullName) {
        super({ id: sheetIndexId, relClassName });
    }
}
//# sourceMappingURL=NavigationRelationship.js.map