/** @packageDocumentation
 * @module ElementState
 */
import { GuidString, Id64String } from "@itwin/core-bentley";
import { Code, ElementProps, EntityProps, RelatedElement } from "@itwin/core-common";
import { IModelConnection } from "./IModelConnection";
/** The "state" of an Entity as represented in a web browser. Every subclass of EntityState handles one BIS class.
 * @public
 * @extensions
 */
export declare class EntityState implements EntityProps {
    /** The name of the BIS schema for this class.
     * @note Subclasses from other than the BisCore domain must override the static member "schemaName" with their schema name.
     */
    static get schemaName(): string;
    private get _ctor();
    /** The name of the BIS class associated with this class.
     * @note Every subclass of EntityState **MUST** override this method to identify its BIS class.
     * Failure to do so will ordinarily result in an error when the class is registered, since there may only
     * be one JavaScript class for a given BIS class (usually the errant class will collide with its superclass.)
     */
    static get className(): string;
    /** The name of the BIS class associated with this class. */
    get className(): string;
    /** The Id of this Entity. May be invalid if the Entity has not yet been saved in the database. */
    readonly id: Id64String;
    /** The iModel from which this Entity was loaded */
    readonly iModel: IModelConnection;
    /** The full class name in the form "schema:class". */
    readonly classFullName: string;
    /** Optional [json properties]($docs/bis/guide/fundamentals/element-fundamentals.md#jsonproperties) of this Entity. */
    readonly jsonProperties: {
        [key: string]: any;
    };
    /** Constructor for EntityState
     * @param props the properties of the Entity for this EntityState
     * @param iModel the iModel from which this EntityState is to be constructed
     * @param _state source EntityState for clone
     */
    constructor(props: EntityProps, iModel: IModelConnection, _state?: EntityState);
    /** @internal */
    toJSON(): EntityProps;
    /** Return true if this EntityState is equal to another one. */
    equals(other: this): boolean;
    /** Make an independent copy of this EntityState */
    clone(iModel?: IModelConnection): this;
    /** Get full BIS class name of this Entity in the form "SchemaName:ClassName".  */
    static get classFullName(): string;
}
/** The "state" of an Element as represented in a web browser.
 * @public
 * @extensions
 */
export declare class ElementState extends EntityState implements ElementProps {
    static get className(): string;
    /** The ModelId of the [Model]($docs/bis/guide/fundamentals/model-fundamentals.md) containing this element */
    readonly model: Id64String;
    /** The [Code]($docs/bis/guide/fundamentals/codes.md) for this element */
    readonly code: Code;
    /** The parent Element of this, or undefined if no parent. */
    readonly parent?: RelatedElement;
    /** A [FederationGuid]($docs/bis/guide/fundamentals/element-fundamentals.md#federationguid) assigned to this element by some other federated database */
    readonly federationGuid?: GuidString;
    /** A [user-assigned label]($docs/bis/guide/fundamentals/element-fundamentals.md#userlabel) for this element. */
    readonly userLabel?: string;
    constructor(props: ElementProps, iModel: IModelConnection);
    /** Obtain this element's JSON representation. Subclasses of ElementState typically override this method with a more
     * specific return type.
     */
    toJSON(): ElementProps;
}
//# sourceMappingURL=EntityState.d.ts.map