/**
 * @packageDocumentation
 * @module Entities
 */
import { DbOpcode, Id64String } from "@itwin/core-bentley";
import { AxisAlignedBox3dProps } from "./geometry/Placement";
/** Bitflags describing which aspects of an [Element]($backend) changed as part of a [[ChangedElements]].
 * @public
 * @extensions
 */
export declare enum TypeOfChange {
    /** Element contains no changes */
    NoChange = 0,
    /** A property in the element changed */
    Property = 1,
    /** The geometry stream of a [GeometricElement]($backend) changed */
    Geometry = 2,
    /** The [[Placement]] of a [GeometricElement]($backend) changed */
    Placement = 4,
    /** Indirect change occurred to this element by a related instance */
    Indirect = 8,
    /** Hidden properties of the element changed */
    Hidden = 16,
    /** The top-most parent of the element has changed */
    Parent = 32
}
/** Changed elements found in a changeset or between a range of changesets.
 * All arrays in this object will have the same number of items.
 * Each index for those arrays refer to the same element, e.g. to get the class Id of
 * the element given by element Id changedElements.elements[index], you can use changedElements.classIds[index].
 * @public
 * @extensions
 */
export interface ChangedElements {
    /** Ids of elements that changed */
    elements: Id64String[];
    /** ECClass Ids of elements that changed */
    classIds: Id64String[];
    /** Operation that occurred on the element. Whether the element was inserted, updated or deleted.
     * See [DbOpcode]($core-bentley)
     */
    opcodes: DbOpcode[];
    /** Type of change bitflags, see [[TypeOfChange]] */
    type: TypeOfChange[];
    /** Model Ids of the changed elements
     * This may be undefined if the agent that did the processing job did not export model Ids
     */
    modelIds?: Id64String[];
    /** Property accessor strings of properties that changed, if any, for each changed element
     * This may be undefined if the agent that did the processing job did not export properties
    */
    properties?: string[][];
    /** Before state checksums of the property value
     * Useful to determine if property values have changed
     * between the versions being inspected
     * This may be undefined if the agent that did the processing job did not export checksums
     */
    oldChecksums?: number[][];
    /** After state checksums of the property value
     * Useful to determine if property values have changed
     * between the versions being inspected
     * This may be undefined if the agent that did the processing job did not export checksums
     */
    newChecksums?: number[][];
    /**
     * Parent ids of the changed elements
     * Will be "0" if the element has no parent
     * This may be undefined if the agent that did the processing job did not export parent information
     */
    parentIds?: Id64String[];
    /**
     * Parent ECClass Ids of the changed elements
     * Will be "0" if the element has no parent
     * This may be undefined if the agent that did the processing job did not export parent information
     */
    parentClassIds?: Id64String[];
}
/** @internal */
export interface ChangedModels {
    modelIds: Id64String[];
    bboxes: AxisAlignedBox3dProps[];
}
/** @internal */
export interface ChangeData {
    changedElements: ChangedElements;
    changedModels: ChangedModels;
}
//# sourceMappingURL=ChangedElements.d.ts.map