/** @packageDocumentation
 * @module ECSQL
 */
import { Id64String } from "@itwin/core-bentley";
/** Describes the different data types an ECSQL value can be of.
 * See also [ECSQL]($docs/learning/ECSQL).
 * @public
 * @extensions
 */
export declare enum ECSqlValueType {
    Blob = 1,
    Boolean = 2,
    DateTime = 3,
    Double = 4,
    Geometry = 5,
    Id = 6,
    Int = 7,
    Int64 = 8,
    Point2d = 9,
    Point3d = 10,
    String = 11,
    Navigation = 12,
    Struct = 13,
    PrimitiveArray = 14,
    StructArray = 15,
    Guid = 16
}
/** An ECSQL Navigation value.
 * It is returned from ECSQL SELECT statements for navigation properties.
 * See also [ECSQL]($docs/learning/ECSQL).
 * @public
 * @extensions
 */
export interface NavigationValue {
    /** ECInstanceId of the related instance */
    id: Id64String;
    /** Fully qualified class name of the relationship backing the Navigation property */
    relClassName?: string;
}
/** An ECSQL Navigation value which can be bound to a navigation property ECSQL parameter
 * See also [ECSQL]($docs/learning/ECSQL).
 * @public
 * @extensions
 */
export interface NavigationBindingValue {
    /** ECInstanceId of the related instance */
    id: Id64String;
    /** Fully qualified class name of the relationship backing the Navigation property */
    relClassName?: string;
    /** Table space where the relationship's schema is persisted. This is only required
     * if other ECDb files are attached to the primary one. In case a schema exists in more than one of the files,
     * pass the table space to disambiguate.
     */
    relClassTableSpace?: string;
}
/** Equivalent of the ECEnumeration OpCode in the **ECDbChange** ECSchema.
 * The enum can be used when programmatically binding values to the InstanceChange.OpCode property of
 * the ECDbChange ECSchema.
 *
 * See also
 * - [ChangeSummary Overview]($docs/learning/ChangeSummaries)
 * @public
 * @extensions
 */
export declare enum ChangeOpCode {
    Insert = 1,
    Update = 2,
    Delete = 4
}
/** The enum represents the values for the ChangedValueState argument of the ECSQL function **Changes**.
 * The enum can be used when programmatically binding values to the ChangedValueState argument
 * in an ECSQL using the **Changes** ECSQL function.
 *
 * See also
 * - [ChangeSummary Overview]($docs/learning/ChangeSummaries)
 * @public
 * @extensions
 */
export declare enum ChangedValueState {
    AfterInsert = 1,
    BeforeUpdate = 2,
    AfterUpdate = 3,
    BeforeDelete = 4
}
/** Defines the ECSQL system properties.
 * See also [ECSQL]($docs/learning/ECSQL).
 * @public
 * @extensions
 */
export declare enum ECSqlSystemProperty {
    ECInstanceId = 0,
    ECClassId = 1,
    SourceECInstanceId = 2,
    SourceECClassId = 3,
    TargetECInstanceId = 4,
    TargetECClassId = 5,
    NavigationId = 6,
    NavigationRelClassId = 7,
    PointX = 8,
    PointY = 9,
    PointZ = 10
}
/** Utility to format ECProperty names according to the iTwin.js formatting rules.
 * See also [ECSQL Row Format]($docs/learning/ECSQLRowFormat).
 * @public
 */
export declare class ECJsNames {
    /** Formats the specified ECProperty name according to the iTwin.js formatting rules.
     *
     *  See [ECSQL Row Format]($docs/learning/ECSQLRowFormat) which describes the formatting rules.
     *
     * @param ecProperty Property name as defined in the ECSchema for regular ECProperties
     *        or the name of an ECSQL system properties
     * @param isSystemProperty if omitted, the method will try to find out whether the given property
     *        is a system property or not. If true is specified, the method will throw if the property name
     *        is not a known system property. If false is specified, the method will not attempt to recognize
     *        the property name as system property.
     */
    static toJsName(propName: string, isSystemProperty?: boolean): string;
    /** Returns the name of the specified ECSQL system property according to the
     *  iTwin.js formatting rules.
     *
     *  See [ECSQL Row Format]($docs/learning/ECSQLRowFormat) which describes the formatting rules.
     * @param systemPropertyType System property type
     */
    static systemPropertyToJsName(systemPropertyType: ECSqlSystemProperty): string;
    private static lowerFirstChar;
}
//# sourceMappingURL=ECSqlTypes.d.ts.map