/** @packageDocumentation
 * @module Content
 */
import { InstanceId, InstanceKey } from "../EC.js";
import { LabelDefinition } from "../LabelDefinition.js";
import { ValuesDictionary } from "../Utils.js";
/**
 * Raw value type
 * @public
 */
export type Value = string | number | boolean | undefined | ValuesMap | ValuesArray | NavigationPropertyValue | NestedContentValue[];
/** @public */
export declare namespace Value {
    /** Is the value a primitive */
    function isPrimitive(value: Value): value is string | number | boolean | undefined;
    /** Is the value an array */
    function isArray(value: Value): value is ValuesArray;
    /** Is the value a map / struct */
    function isMap(value: Value): value is ValuesMap;
    /** Is the value a nested content value */
    function isNestedContent(value: Value): value is NestedContentValue[];
    /** Is the value a navigation value */
    function isNavigationValue(value: Value): value is NavigationPropertyValue;
}
/**
 * A map of raw values
 * @public
 */
export interface ValuesMap extends ValuesDictionary<Value> {
}
/**
 * An array of raw values
 * @public
 */
export interface ValuesArray extends Array<Value> {
}
/**
 * Display value type.
 * @public
 */
export type DisplayValue = string | undefined | DisplayValuesMap | DisplayValuesArray;
/** @public */
export declare namespace DisplayValue {
    /** Is the value a primitive */
    function isPrimitive(value: DisplayValue): value is string | undefined;
    /** Is the value an array */
    function isArray(value: DisplayValue): value is DisplayValuesArray;
    /** Is the value a map / struct */
    function isMap(value: DisplayValue): value is DisplayValuesMap;
}
/**
 * A map of display values
 * @public
 */
export interface DisplayValuesMap extends ValuesDictionary<DisplayValue> {
}
/**
 * An array of display values
 * @public
 */
export interface DisplayValuesArray extends Array<DisplayValue> {
}
/**
 * Data structure that describes nested content value.
 * @public
 */
export interface NestedContentValue {
    /** Keys of instances whose content is contained in this value */
    primaryKeys: InstanceKey[];
    /** Content values map */
    values: ValuesDictionary<Value>;
    /** Content display values map */
    displayValues: ValuesDictionary<DisplayValue>;
    /** Names of fields whose values are merged */
    mergedFieldNames: string[];
    /**
     * Label of the ECInstance that this `NestedContentValue` is based on.
     * @deprecated in 5.x - will not be removed until after 2026-06-13. Use [[label]] instead.
     */
    labelDefinition?: LabelDefinition;
    label?: LabelDefinition;
}
/**
 * Data structure that describes value of the navigation property.
 * @public
 */
export interface NavigationPropertyValue {
    /** Label of target instance. */
    label: LabelDefinition;
    /** Full class name of target instance in format `SchemaName:ClassName` */
    className: string;
    /** Id of target instance. */
    id: InstanceId;
}
/**
 * A group of raw values and their common display value.
 * @public
 */
export interface DisplayValueGroup {
    /** Common display value for all grouped raw values */
    displayValue: DisplayValue;
    /** A list of grouped raw values */
    groupedRawValues: Value[];
}
//# sourceMappingURL=Value.d.ts.map