Skip to content

Latest commit

 

History

History
2977 lines (2588 loc) · 86.9 KB

presentation-common.api.md

File metadata and controls

2977 lines (2588 loc) · 86.9 KB

API Report File for "@itwin/presentation-common"

Do not edit this file. It is a report generated by API Extractor.

import { BentleyError } from '@itwin/core-bentley';
import { CompressedId64Set } from '@itwin/core-bentley';
import { EntityProps } from '@itwin/core-common';
import { FormatProps } from '@itwin/core-quantity';
import { GetMetaDataFunction } from '@itwin/core-bentley';
import { GuidString } from '@itwin/core-bentley';
import { Id64String } from '@itwin/core-bentley';
import { IDisposable } from '@itwin/core-bentley';
import { IModelRpcProps } from '@itwin/core-common';
import { RpcInterface } from '@itwin/core-common';
import { UnitSystemKey } from '@itwin/core-quantity';

// @alpha (undocumented)
export function addFieldHierarchy(rootHierarchies: FieldHierarchy[], hierarchy: FieldHierarchy): void;

// @internal (undocumented)
export function applyOptionalPrefix(str: string, prefix?: string): string;

// @public
export interface ArrayTypeDescription extends BaseTypeDescription {
    memberType: TypeDescription;
    valueFormat: PropertyValueFormat.Array;
}

// @internal
export class AsyncTasksTracker {
    // (undocumented)
    get pendingAsyncs(): Set<string>;
    // (undocumented)
    trackAsyncTask(): IDisposable;
}

// @public
export interface BaseFieldJSON {
    // (undocumented)
    category: string;
    // (undocumented)
    editor?: EditorDescription;
    // (undocumented)
    isReadonly: boolean;
    // (undocumented)
    label: string;
    // (undocumented)
    name: string;
    // (undocumented)
    priority: number;
    // (undocumented)
    renderer?: RendererDescription;
    // (undocumented)
    type: TypeDescription;
}

// @public
export interface BaseNodeKey {
    pathFromRoot: string[];
    type: string;
    version: number;
}

// @public
export interface BaseNodeKeyJSON {
    // (undocumented)
    pathFromRoot: string[];
    // (undocumented)
    type: string;
    // (undocumented)
    version?: number;
}

// @public
export interface BaseTypeDescription {
    typeName: string;
    valueFormat: PropertyValueFormat;
}

// @public
export interface BooleanRulesetVariable extends RulesetVariableBase {
    // (undocumented)
    type: VariableValueTypes.Bool;
    // (undocumented)
    value: boolean;
}

// @public
export interface BooleanRulesetVariableJSON extends RulesetVariableBaseJSON {
    // (undocumented)
    type: VariableValueTypes.Bool;
    // (undocumented)
    value: boolean;
}

// @public
export interface CalculatedPropertiesSpecification {
    label: string;
    priority?: number;
    value: string;
}

// @public
export interface CategoryDescription {
    description: string;
    expand: boolean;
    label: string;
    name: string;
    parent?: CategoryDescription;
    priority: number;
    renderer?: RendererDescription;
}

// @public (undocumented)
export namespace CategoryDescription {
    export function fromJSON(json: CategoryDescriptionJSON): CategoryDescription;
    export function listFromJSON(json: CategoryDescriptionJSON[]): CategoryDescription[];
    export function toJSON(category: CategoryDescription): CategoryDescriptionJSON;
}

// @public
export interface CategoryDescriptionJSON {
    // (undocumented)
    description: string;
    // (undocumented)
    expand: boolean;
    // (undocumented)
    label: string;
    // (undocumented)
    name: string;
    // (undocumented)
    parent?: string;
    // (undocumented)
    priority: number;
    // (undocumented)
    renderer?: RendererDescription;
}

// @public
export type CategoryIdentifier = ParentCategoryIdentifier | RootCategoryIdentifier | IdCategoryIdentifier;

// @public
export interface CheckBoxRule extends RuleBase, ConditionContainer {
    condition?: string;
    defaultValue?: boolean;
    isEnabled?: string | boolean;
    propertyName?: string;
    ruleType: RuleTypes.CheckBox;
    useInversedPropertyValue?: boolean;
}

// @public
export interface ChildNodeRule extends NavigationRuleBase, ConditionContainer {
    ruleType: RuleTypes.ChildNodes;
}

// @public
export type ChildNodeSpecification = CustomNodeSpecification | InstanceNodesOfSpecificClassesSpecification | RelatedInstanceNodesSpecification | CustomQueryInstanceNodesSpecification;

// @public
export interface ChildNodeSpecificationBase {
    doNotSort?: boolean;
    hasChildren?: "Always" | "Never" | "Unknown";
    hideExpression?: string;
    hideIfNoChildren?: boolean;
    hideNodesInHierarchy?: boolean;
    nestedRules?: ChildNodeRule[];
    priority?: number;
    relatedInstances?: RelatedInstanceSpecification[];
    specType: ChildNodeSpecificationTypes;
    // @beta
    suppressSimilarAncestorsCheck?: boolean;
}

// @public
export enum ChildNodeSpecificationTypes {
    // (undocumented)
    CustomNode = "CustomNode",
    // (undocumented)
    CustomQueryInstanceNodes = "CustomQueryInstanceNodes",
    // (undocumented)
    InstanceNodesOfSpecificClasses = "InstanceNodesOfSpecificClasses",
    // (undocumented)
    RelatedInstanceNodes = "RelatedInstanceNodes"
}

// @public
export interface ClassGroup extends GroupingSpecificationBase {
    baseClass?: SingleSchemaClassSpecification;
    createGroupForSingleItem?: boolean;
    specType: GroupingSpecificationTypes.Class;
}

// @public
export type ClassId = Id64String;

// @public
export interface ClassInfo {
    id: ClassId;
    label: string;
    name: string;
}

// @public (undocumented)
export namespace ClassInfo {
    export function fromJSON(json: ClassInfoJSON): ClassInfo;
    export function toJSON(info: ClassInfo): ClassInfoJSON;
}

// @public
export interface ClassInfoJSON {
    // (undocumented)
    id: string;
    // (undocumented)
    label: string;
    // (undocumented)
    name: string;
}

// @internal (undocumented)
export interface CommonIpcParams {
    // (undocumented)
    clientId: string;
}

// @public
export interface CompressedClassInfoJSON {
    // (undocumented)
    label: string;
    // (undocumented)
    name: string;
}

// @public
export type ComputeDisplayValueCallback = (type: string, value: PrimitivePropertyValue, displayValue: string) => Promise<string>;

// @public
export interface ConditionContainer {
    condition?: string;
}

// @public
export class Content {
    constructor(descriptor: Descriptor, items: Item[]);
    readonly contentSet: Item[];
    readonly descriptor: Descriptor;
    static fromJSON(json: ContentJSON | string | undefined): Content | undefined;
    // @internal
    static reviver(key: string, value: any): any;
    toJSON(): ContentJSON;
}

// @public
export interface ContentDescriptorRequestOptions<TIModel, TKeySet, TRulesetVariable = RulesetVariable> extends RequestOptionsWithRuleset<TIModel, TRulesetVariable> {
    displayType: string;
    keys: TKeySet;
    selection?: SelectionInfo;
}

// @public
export type ContentDescriptorRpcRequestOptions = PresentationRpcRequestOptions<ContentDescriptorRequestOptions<never, KeySetJSON, RulesetVariableJSON>>;

// @public
export enum ContentFlags {
    DistinctValues = 16,
    // @beta
    IncludeInputKeys = 256,
    KeysOnly = 1,
    MergeResults = 8,
    NoFields = 32,
    ShowImages = 2,
    ShowLabels = 4
}

// @beta
export interface ContentInstanceKeysRequestOptions<TIModel, TKeySet, TRulesetVariable = RulesetVariable> extends Paged<RequestOptionsWithRuleset<TIModel, TRulesetVariable>> {
    displayType?: string;
    keys: TKeySet;
}

// @beta
export type ContentInstanceKeysRpcRequestOptions = PresentationRpcRequestOptions<ContentInstanceKeysRequestOptions<never, KeySetJSON, RulesetVariableJSON>>;

// @public
export interface ContentInstancesOfSpecificClassesSpecification extends ContentSpecificationBase {
    classes: MultiSchemaClassesSpecification | MultiSchemaClassesSpecification[];
    excludedClasses?: MultiSchemaClassesSpecification | MultiSchemaClassesSpecification[];
    // @deprecated
    handleInstancesPolymorphically?: boolean;
    handlePropertiesPolymorphically?: boolean;
    instanceFilter?: string;
    specType: ContentSpecificationTypes.ContentInstancesOfSpecificClasses;
}

// @public
export interface ContentJSON {
    // (undocumented)
    contentSet: ItemJSON[];
    // (undocumented)
    descriptor: DescriptorJSON;
}

// @public
export interface ContentModifier extends RuleBase, ContentModifiersList {
    class?: SingleSchemaClassSpecification;
    ruleType: RuleTypes.ContentModifier;
}

// @public
export interface ContentModifiersList {
    calculatedProperties?: CalculatedPropertiesSpecification[];
    propertyCategories?: PropertyCategorySpecification[];
    propertyOverrides?: PropertySpecification[];
    relatedProperties?: RelatedPropertiesSpecification[];
}

// @public
export interface ContentRelatedInstancesSpecification extends ContentSpecificationBase {
    instanceFilter?: string;
    relationshipPaths: RepeatableRelationshipPathSpecification[];
    specType: ContentSpecificationTypes.ContentRelatedInstances;
}

// @public
export interface ContentRequestOptions<TIModel, TDescriptor, TKeySet, TRulesetVariable = RulesetVariable> extends RequestOptionsWithRuleset<TIModel, TRulesetVariable> {
    descriptor: TDescriptor;
    keys: TKeySet;
}

// @public
export type ContentRpcRequestOptions = PresentationRpcRequestOptions<ContentRequestOptions<never, DescriptorOverrides, KeySetJSON, RulesetVariableJSON>>;

// @public
export interface ContentRule extends RuleBase, ConditionContainer {
    condition?: string;
    ruleType: RuleTypes.Content;
    specifications: ContentSpecification[];
}

// @beta
export interface ContentSourcesRequestOptions<TIModel> extends RequestOptions<TIModel> {
    classes: string[];
}

// @beta
export type ContentSourcesRpcRequestOptions = PresentationRpcRequestOptions<ContentSourcesRequestOptions<never>>;

// @beta
export interface ContentSourcesRpcResult {
    classesMap: {
        [id: string]: CompressedClassInfoJSON;
    };
    sources: SelectClassInfoJSON<Id64String>[];
}

// @public
export type ContentSpecification = ContentInstancesOfSpecificClassesSpecification | ContentRelatedInstancesSpecification | SelectedNodeInstancesSpecification;

// @public
export interface ContentSpecificationBase extends ContentModifiersList {
    onlyIfNotHandled?: boolean;
    priority?: number;
    relatedInstances?: RelatedInstanceSpecification[];
    showImages?: boolean;
    specType: ContentSpecificationTypes;
}

// @public
export enum ContentSpecificationTypes {
    // (undocumented)
    ContentInstancesOfSpecificClasses = "ContentInstancesOfSpecificClasses",
    // (undocumented)
    ContentRelatedInstances = "ContentRelatedInstances",
    // (undocumented)
    SelectedNodeInstances = "SelectedNodeInstances"
}

// @alpha (undocumented)
export type ContentUpdateInfo = typeof UPDATE_FULL;

// @internal
export function createFieldHierarchies(fields: Field[], ignoreCategories?: Boolean): FieldHierarchy[];

// @public
export type CustomizationRule = InstanceLabelOverride | CheckBoxRule | GroupingRule | ImageIdOverride | LabelOverride | // eslint-disable-line deprecation/deprecation
SortingRule | StyleOverride | ExtendedDataRule | NodeArtifactsRule;

// @public
export interface CustomNodeSpecification extends ChildNodeSpecificationBase {
    description?: string;
    imageId?: string;
    label: string;
    specType: ChildNodeSpecificationTypes.CustomNode;
    type: string;
}

// @public
export interface CustomQueryInstanceNodesSpecification extends ChildNodeSpecificationBase, DefaultGroupingPropertiesContainer {
    queries?: QuerySpecification[];
    specType: ChildNodeSpecificationTypes.CustomQueryInstanceNodes;
}

// @public
export interface CustomRendererSpecification {
    rendererName: string;
}

// @public
export const DEFAULT_KEYS_BATCH_SIZE = 5000;

// @public
export enum DefaultContentDisplayTypes {
    Grid = "Grid",
    List = "List",
    PropertyPane = "PropertyPane",
    Undefined = "Undefined",
    Viewport = "Graphics"
}

// @public
export interface DefaultGroupingPropertiesContainer {
    groupByClass?: boolean;
    groupByLabel?: boolean;
}

// @public
export interface DefaultPropertyCategoryOverride extends RuleBase {
    ruleType: RuleTypes.DefaultPropertyCategoryOverride;
    specification: PropertyCategorySpecification;
}

// @public
export class Descriptor implements DescriptorSource {
    constructor(source: DescriptorSource);
    readonly categories: CategoryDescription[];
    readonly connectionId?: string;
    readonly contentFlags: number;
    readonly contentOptions: any;
    createDescriptorOverrides(): DescriptorOverrides;
    readonly displayType: string;
    readonly fields: Field[];
    filterExpression?: string;
    static fromJSON(json: DescriptorJSON | undefined): Descriptor | undefined;
    getFieldByName(name: string, recurse?: boolean): Field | undefined;
    readonly inputKeysHash?: string;
    readonly selectClasses: SelectClassInfo[];
    readonly selectionInfo?: SelectionInfo;
    sortDirection?: SortDirection;
    sortingField?: Field;
    toJSON(): DescriptorJSON;
}

// @public
export interface DescriptorJSON {
    // (undocumented)
    categories: CategoryDescriptionJSON[];
    // (undocumented)
    classesMap: {
        [id: string]: CompressedClassInfoJSON;
    };
    // (undocumented)
    connectionId: string;
    // (undocumented)
    contentFlags: number;
    // (undocumented)
    contentOptions: any;
    // (undocumented)
    displayType: string;
    // (undocumented)
    fields: FieldJSON<Id64String>[];
    // (undocumented)
    filterExpression?: string;
    // (undocumented)
    inputKeysHash: string;
    // (undocumented)
    selectClasses: SelectClassInfoJSON<Id64String>[];
    // (undocumented)
    selectionInfo?: SelectionInfo;
    // (undocumented)
    sortDirection?: SortDirection;
    // (undocumented)
    sortingFieldName?: string;
}

// @public
export interface DescriptorOverrides {
    contentFlags?: number;
    displayType?: string;
    fieldsSelector?: {
        type: "include" | "exclude";
        fields: FieldDescriptor[];
    };
    filterExpression?: string;
    sorting?: {
        field: FieldDescriptor;
        direction: SortDirection;
    };
}

// @public
export interface DescriptorSource {
    readonly categories: CategoryDescription[];
    readonly connectionId?: string;
    readonly contentFlags: number;
    readonly displayType: string;
    readonly fields: Field[];
    readonly filterExpression?: string;
    readonly inputKeysHash?: string;
    readonly selectClasses: SelectClassInfo[];
    readonly selectionInfo?: SelectionInfo;
    readonly sortDirection?: SortDirection;
    readonly sortingField?: Field;
}

// @alpha (undocumented)
export type DiagnosticsHandler = (logs: DiagnosticsScopeLogs[]) => void;

// @alpha (undocumented)
export type DiagnosticsLogEntry = DiagnosticsLogMessage | DiagnosticsScopeLogs;

// @alpha (undocumented)
export namespace DiagnosticsLogEntry {
    // (undocumented)
    export function isMessage(entry: DiagnosticsLogEntry): entry is DiagnosticsLogMessage;
    // (undocumented)
    export function isScope(entry: DiagnosticsLogEntry): entry is DiagnosticsScopeLogs;
}

// @alpha (undocumented)
export type DiagnosticsLoggerSeverity = "error" | "warning" | "info" | "debug" | "trace";

// @alpha (undocumented)
export interface DiagnosticsLogMessage {
    // (undocumented)
    category: string;
    // (undocumented)
    message: string;
    // (undocumented)
    severity: {
        dev?: DiagnosticsLoggerSeverity;
        editor?: DiagnosticsLoggerSeverity;
    };
    // (undocumented)
    timestamp: number;
}

// @alpha (undocumented)
export interface DiagnosticsOptions {
    dev?: boolean | DiagnosticsLoggerSeverity;
    editor?: boolean | DiagnosticsLoggerSeverity;
    perf?: boolean;
}

// @alpha (undocumented)
export interface DiagnosticsOptionsWithHandler extends DiagnosticsOptions {
    // (undocumented)
    handler: DiagnosticsHandler;
}

// @alpha (undocumented)
export interface DiagnosticsScopeLogs {
    // (undocumented)
    duration?: number;
    // (undocumented)
    logs?: DiagnosticsLogEntry[];
    // (undocumented)
    scope: string;
}

// @public
export interface DisabledSortingRule extends SortingRuleBase {
    ruleType: RuleTypes.DisabledSorting;
}

// @public
export interface DisplayLabelRequestOptions<TIModel, TInstanceKey> extends RequestOptions<TIModel> {
    key: TInstanceKey;
}

// @public
export type DisplayLabelRpcRequestOptions = PresentationRpcRequestOptions<DisplayLabelRequestOptions<never, InstanceKeyJSON>>;

// @public
export interface DisplayLabelsRequestOptions<TIModel, TInstanceKey> extends RequestOptions<TIModel> {
    keys: TInstanceKey[];
}

// @public
export type DisplayLabelsRpcRequestOptions = PresentationRpcRequestOptions<DisplayLabelsRequestOptions<never, InstanceKeyJSON>>;

// @public
export type DisplayValue = string | undefined | DisplayValuesMap | DisplayValuesArray;

// @public (undocumented)
export namespace DisplayValue {
    export function fromJSON(json: DisplayValueJSON): DisplayValue;
    export function isArray(value: DisplayValue): value is DisplayValuesArray;
    export function isMap(value: DisplayValue): value is DisplayValuesMap;
    export function isPrimitive(value: DisplayValue): value is string | undefined;
    export function toJSON(value: DisplayValue): DisplayValueJSON;
}

// @public
export interface DisplayValueGroup {
    displayValue: DisplayValue;
    groupedRawValues: Value[];
}

// @public (undocumented)
export namespace DisplayValueGroup {
    export function fromJSON(json: DisplayValueGroupJSON): DisplayValueGroup;
    export function toJSON(group: DisplayValueGroup): DisplayValueGroupJSON;
}

// @public
export interface DisplayValueGroupJSON {
    // (undocumented)
    displayValue: DisplayValueJSON;
    // (undocumented)
    groupedRawValues: ValueJSON[];
}

// @public
export type DisplayValueJSON = string | null | DisplayValuesMapJSON | DisplayValuesArrayJSON;

// @public
export interface DisplayValuesArray extends Array<DisplayValue> {
}

// @public
export interface DisplayValuesArrayJSON extends Array<DisplayValueJSON> {
}

// @public
export interface DisplayValuesMap extends ValuesDictionary<DisplayValue> {
}

// @public
export interface DisplayValuesMapJSON extends ValuesDictionary<DisplayValueJSON> {
}

// @public
export interface DistinctValuesRequestOptions<TIModel, TDescriptor, TKeySet, TRulesetVariable = RulesetVariable> extends Paged<RequestOptionsWithRuleset<TIModel, TRulesetVariable>> {
    descriptor: TDescriptor;
    fieldDescriptor: FieldDescriptor;
    keys: TKeySet;
}

// @public
export type DistinctValuesRpcRequestOptions = PresentationRpcRequestOptions<DistinctValuesRequestOptions<never, DescriptorOverrides, KeySetJSON, RulesetVariableJSON>>;

// @public
export interface ECClassGroupingNodeKey extends GroupingNodeKey {
    className: string;
    // (undocumented)
    type: StandardNodeTypes.ECClassGroupingNode;
}

// @public
export interface ECClassGroupingNodeKeyJSON extends GroupingNodeKeyJSON {
    // (undocumented)
    className: string;
    // (undocumented)
    type: StandardNodeTypes.ECClassGroupingNode;
}

// @public
export interface ECInstancesNodeKey extends BaseNodeKey {
    instanceKeys: InstanceKey[];
    // (undocumented)
    type: StandardNodeTypes.ECInstancesNode;
}

// @public
export interface ECInstancesNodeKeyJSON extends BaseNodeKeyJSON {
    // (undocumented)
    instanceKeys: InstanceKeyJSON[];
    // (undocumented)
    type: StandardNodeTypes.ECInstancesNode;
}

// @public
export interface ECPropertyGroupingNodeKey extends GroupingNodeKey {
    className: string;
    groupingValues: any[];
    propertyName: string;
    // (undocumented)
    type: StandardNodeTypes.ECPropertyGroupingNode;
}

// @public
export interface ECPropertyGroupingNodeKeyJSON extends GroupingNodeKeyJSON {
    // (undocumented)
    className: string;
    // (undocumented)
    groupingValues: any[];
    // (undocumented)
    propertyName: string;
    // (undocumented)
    type: StandardNodeTypes.ECPropertyGroupingNode;
}

// @public
export interface ECPropertyValueQuerySpecification extends QuerySpecificationBase {
    parentPropertyName: string;
    specType: QuerySpecificationTypes.ECPropertyValue;
}

// @public
export interface EditorDescription {
    name: string;
    params?: any;
}

// @beta
export interface ElementProperties {
    class: string;
    id: Id64String;
    items: {
        [label: string]: ElementPropertiesItem;
    };
    label: string;
}

// @beta
export type ElementPropertiesArrayPropertyItem = ElementPropertiesPrimitiveArrayPropertyItem | ElementPropertiesStructArrayPropertyItem;

// @beta
export interface ElementPropertiesArrayPropertyItemBase extends ElementPropertiesPropertyItemBase {
    type: "array";
    valueType: "primitive" | "struct";
}

// @beta
export interface ElementPropertiesCategoryItem extends ElementPropertiesItemBase {
    items: {
        [label: string]: ElementPropertiesItem;
    };
    type: "category";
}

// @beta
export type ElementPropertiesItem = ElementPropertiesCategoryItem | ElementPropertiesPropertyItem;

// @beta
export interface ElementPropertiesItemBase {
    type: "category" | ElementPropertiesPropertyValueType;
}

// @beta
export interface ElementPropertiesPrimitiveArrayPropertyItem extends ElementPropertiesArrayPropertyItemBase {
    values: string[];
    valueType: "primitive";
}

// @beta
export interface ElementPropertiesPrimitivePropertyItem extends ElementPropertiesPropertyItemBase {
    type: "primitive";
    value: string;
}

// @beta
export type ElementPropertiesPropertyItem = ElementPropertiesPrimitivePropertyItem | ElementPropertiesArrayPropertyItem | ElementPropertiesStructPropertyItem;

// @beta
export interface ElementPropertiesPropertyItemBase extends ElementPropertiesItemBase {
    type: ElementPropertiesPropertyValueType;
}

// @beta
export type ElementPropertiesPropertyValueType = "primitive" | "array" | "struct";

// @beta
export type ElementPropertiesRequestOptions<TIModel> = SingleElementPropertiesRequestOptions<TIModel> | MultiElementPropertiesRequestOptions<TIModel>;

// @beta
export interface ElementPropertiesStructArrayPropertyItem extends ElementPropertiesArrayPropertyItemBase {
    values: Array<{
        [memberLabel: string]: ElementPropertiesPropertyItem;
    }>;
    valueType: "struct";
}

// @beta
export interface ElementPropertiesStructPropertyItem extends ElementPropertiesPropertyItemBase {
    members: {
        [memberLabel: string]: ElementPropertiesPropertyItem;
    };
    type: "struct";
}

// @public
export interface EnumerationChoice {
    label: string;
    value: string | number;
}

// @public
export interface EnumerationInfo {
    choices: EnumerationChoice[];
    isStrict: boolean;
}

// @alpha (undocumented)
export interface ExpandedNodeUpdateRecord {
    // (undocumented)
    node: Node;
    // (undocumented)
    position: number;
}

// @alpha (undocumented)
export namespace ExpandedNodeUpdateRecord {
    export function fromJSON(json: ExpandedNodeUpdateRecordJSON): ExpandedNodeUpdateRecord;
    export function toJSON(obj: ExpandedNodeUpdateRecord): ExpandedNodeUpdateRecordJSON;
}

// @alpha (undocumented)
export interface ExpandedNodeUpdateRecordJSON {
    // (undocumented)
    node: NodeJSON;
    // (undocumented)
    position: number;
}

// @public
export interface ExtendedDataRule extends RuleBase, ConditionContainer {
    condition?: string;
    items: {
        [key: string]: string;
    };
    ruleType: RuleTypes.ExtendedData;
}

// @public
export class Field {
    constructor(category: CategoryDescription, name: string, label: string, type: TypeDescription, isReadonly: boolean, priority: number, editor?: EditorDescription, renderer?: RendererDescription);
    category: CategoryDescription;
    // (undocumented)
    clone(): Field;
    editor?: EditorDescription;
    static fromCompressedJSON(json: FieldJSON<string> | undefined, classesMap: {
        [id: string]: CompressedClassInfoJSON;
    }, categories: CategoryDescription[]): Field | undefined;
    static fromJSON(json: FieldJSON | undefined, categories: CategoryDescription[]): Field | undefined;
    // (undocumented)
    protected static getCategoryFromFieldJson(fieldJson: FieldJSON, categories: CategoryDescription[]): CategoryDescription;
    getFieldDescriptor(): FieldDescriptor;
    isNestedContentField(): this is NestedContentField;
    isPropertiesField(): this is PropertiesField;
    isReadonly: boolean;
    label: string;
    name: string;
    get parent(): NestedContentField | undefined;
    priority: number;
    // @internal (undocumented)
    rebuildParentship(parentField?: NestedContentField): void;
    renderer?: RendererDescription;
    // @internal (undocumented)
    resetParentship(): void;
    toCompressedJSON(classesMap: {
        [id: string]: CompressedClassInfoJSON;
    }): FieldJSON<string>;
    toJSON(): FieldJSON;
    type: TypeDescription;
}

// @internal (undocumented)
export const FIELD_NAMES_SEPARATOR = "$";

// @public
export type FieldDescriptor = NamedFieldDescriptor | PropertiesFieldDescriptor;

// @public (undocumented)
export namespace FieldDescriptor {
    export function isNamed(d: FieldDescriptor): d is NamedFieldDescriptor;
    export function isProperties(d: FieldDescriptor): d is PropertiesFieldDescriptor;
}

// @public
export interface FieldDescriptorBase {
    // (undocumented)
    type: FieldDescriptorType;
}

// @public
export enum FieldDescriptorType {
    // (undocumented)
    Name = "name",
    // (undocumented)
    Properties = "properties"
}

// @alpha (undocumented)
export interface FieldHierarchy {
    // (undocumented)
    childFields: FieldHierarchy[];
    // (undocumented)
    field: Field;
}

// @public
export type FieldJSON<TClassInfoJSON = ClassInfoJSON> = BaseFieldJSON | PropertiesFieldJSON<TClassInfoJSON> | NestedContentFieldJSON<TClassInfoJSON>;

// @public
export interface FilterByInstancePathsHierarchyRequestOptions<TIModel, TRulesetVariable = RulesetVariable> extends RequestOptionsWithRuleset<TIModel, TRulesetVariable> {
    instancePaths: InstanceKey[][];
    markedIndex?: number;
}

// @public
export type FilterByInstancePathsHierarchyRpcRequestOptions = PresentationRpcRequestOptions<FilterByInstancePathsHierarchyRequestOptions<never, RulesetVariableJSON>>;

// @public
export interface FilterByTextHierarchyRequestOptions<TIModel, TRulesetVariable = RulesetVariable> extends RequestOptionsWithRuleset<TIModel, TRulesetVariable> {
    filterText: string;
}

// @public
export type FilterByTextHierarchyRpcRequestOptions = PresentationRpcRequestOptions<FilterByTextHierarchyRequestOptions<never, RulesetVariableJSON>>;

// @internal (undocumented)
export const getFieldByName: (fields: Field[], name: string | undefined, recurse?: boolean | undefined) => Field | undefined;

// @public
export const getInstancesCount: (keys: Readonly<KeySet>) => number;

// @internal (undocumented)
export const getLocalesDirectory: (assetsDirectory: string) => string;

// @public
export interface GroupingNodeKey extends BaseNodeKey {
    groupedInstancesCount: number;
}

// @public
export interface GroupingNodeKeyJSON extends BaseNodeKeyJSON {
    // (undocumented)
    groupedInstancesCount: number;
}

// @public
export interface GroupingRule extends RuleBase, ConditionContainer {
    class: SingleSchemaClassSpecification;
    condition?: string;
    groups: GroupingSpecification[];
    ruleType: RuleTypes.Grouping;
}

// @public
export type GroupingSpecification = ClassGroup | PropertyGroup | SameLabelInstanceGroup;

// @public
export interface GroupingSpecificationBase {
    specType: GroupingSpecificationTypes;
}

// @public
export enum GroupingSpecificationTypes {
    // (undocumented)
    Class = "Class",
    // (undocumented)
    Property = "Property",
    // (undocumented)
    SameLabelInstance = "SameLabelInstance"
}

// @public
export interface HierarchyCompareInfo {
    changes: PartialHierarchyModification[];
    continuationToken?: {
        prevHierarchyNode: string;
        currHierarchyNode: string;
    };
}

// @public (undocumented)
export namespace HierarchyCompareInfo {
    export function fromJSON(json: HierarchyCompareInfoJSON): HierarchyCompareInfo;
    export function toJSON(obj: HierarchyCompareInfo): HierarchyCompareInfoJSON;
}

// @public
export interface HierarchyCompareInfoJSON {
    // (undocumented)
    changes: PartialHierarchyModificationJSON[];
    // (undocumented)
    continuationToken?: {
        prevHierarchyNode: string;
        currHierarchyNode: string;
    };
}

// @public
export interface HierarchyCompareOptions<TIModel, TNodeKey, TRulesetVariable = RulesetVariable> extends RequestOptionsWithRuleset<TIModel, TRulesetVariable> {
    // (undocumented)
    continuationToken?: {
        prevHierarchyNode: string;
        currHierarchyNode: string;
    };
    // (undocumented)
    expandedNodeKeys?: TNodeKey[];
    // (undocumented)
    prev: {
        rulesetOrId?: Ruleset | string;
        rulesetVariables?: TRulesetVariable[];
    };
    // (undocumented)
    resultSetSize?: number;
}

// @public
export interface HierarchyRequestOptions<TIModel, TNodeKey, TRulesetVariable = RulesetVariable> extends RequestOptionsWithRuleset<TIModel, TRulesetVariable> {
    parentKey?: TNodeKey;
}

// @public
export type HierarchyRpcRequestOptions = PresentationRpcRequestOptions<HierarchyRequestOptions<never, NodeKeyJSON, RulesetVariableJSON>>;

// @alpha (undocumented)
export type HierarchyUpdateInfo = typeof UPDATE_FULL | HierarchyUpdateRecord[];

// @alpha (undocumented)
export namespace HierarchyUpdateInfo {
    export function fromJSON(json: HierarchyUpdateInfoJSON): HierarchyUpdateInfo;
    export function toJSON(obj: HierarchyUpdateInfo): HierarchyUpdateInfoJSON;
}

// @alpha (undocumented)
export type HierarchyUpdateInfoJSON = typeof UPDATE_FULL | HierarchyUpdateRecordJSON[];

// @alpha (undocumented)
export interface HierarchyUpdateRecord {
    // (undocumented)
    expandedNodes?: ExpandedNodeUpdateRecord[];
    // (undocumented)
    nodesCount: number;
    // (undocumented)
    parent?: NodeKey;
}

// @alpha (undocumented)
export namespace HierarchyUpdateRecord {
    export function fromJSON(json: HierarchyUpdateRecordJSON): HierarchyUpdateRecord;
    export function toJSON(obj: HierarchyUpdateRecord): HierarchyUpdateRecordJSON;
}

// @alpha (undocumented)
export interface HierarchyUpdateRecordJSON {
    // (undocumented)
    expandedNodes?: ExpandedNodeUpdateRecordJSON[];
    // (undocumented)
    nodesCount: number;
    // (undocumented)
    parent?: NodeKeyJSON;
}

// @alpha (undocumented)
export interface IContentVisitor {
    // (undocumented)
    finishArray(): void;
    // (undocumented)
    finishCategory(): void;
    // (undocumented)
    finishContent(): void;
    // (undocumented)
    finishField(): void;
    // (undocumented)
    finishItem(): void;
    // (undocumented)
    finishStruct(): void;
    // (undocumented)
    processFieldHierarchies(props: ProcessFieldHierarchiesProps): void;
    // (undocumented)
    processMergedValue(props: ProcessMergedValueProps): void;
    // (undocumented)
    processPrimitiveValue(props: ProcessPrimitiveValueProps): void;
    // (undocumented)
    startArray(props: StartArrayProps): boolean;
    // (undocumented)
    startCategory(props: StartCategoryProps): boolean;
    // (undocumented)
    startContent(props: StartContentProps): boolean;
    // (undocumented)
    startField(props: StartFieldProps): boolean;
    // (undocumented)
    startItem(props: StartItemProps): boolean;
    // (undocumented)
    startStruct(props: StartStructProps): boolean;
}

// @public
export interface Id64RulesetVariable extends RulesetVariableBase {
    // (undocumented)
    type: VariableValueTypes.Id64;
    // (undocumented)
    value: Id64String;
}

// @public
export interface Id64RulesetVariableJSON extends RulesetVariableBaseJSON {
    // (undocumented)
    type: VariableValueTypes.Id64;
    // (undocumented)
    value: Id64String;
}

// @public
export interface Id64sRulesetVariable extends RulesetVariableBase {
    // (undocumented)
    type: VariableValueTypes.Id64Array;
    // (undocumented)
    value: Id64String[];
}

// @public
export interface Id64sRulesetVariableJSON extends RulesetVariableBaseJSON {
    // (undocumented)
    type: VariableValueTypes.Id64Array;
    // (undocumented)
    value: Id64String[] | CompressedId64Set;
}

// @public
export interface IdCategoryIdentifier {
    categoryId: string;
    type: "Id";
}

// @public
export interface ImageIdOverride extends RuleBase, ConditionContainer {
    condition?: string;
    imageIdExpression: string;
    ruleType: RuleTypes.ImageIdOverride;
}

// @public
export type InstanceId = Id64String;

// @public
export interface InstanceKey {
    className: string;
    id: InstanceId;
}

// @public (undocumented)
export namespace InstanceKey {
    export function compare(lhs: InstanceKey, rhs: InstanceKey): number;
    export function fromJSON(json: InstanceKeyJSON): {
        id: string;
        className: string;
    };
    export function toJSON(json: InstanceKey): InstanceKeyJSON;
}

// @public
export interface InstanceKeyJSON {
    // (undocumented)
    className: string;
    // (undocumented)
    id: string;
}

// @public
export interface InstanceLabelOverride extends RuleBase {
    class: SingleSchemaClassSpecification;
    ruleType: RuleTypes.InstanceLabelOverride;
    values: InstanceLabelOverrideValueSpecification[];
}

// @public
export interface InstanceLabelOverrideBriefcaseIdSpecification extends InstanceLabelOverrideValueSpecificationBase {
    // (undocumented)
    specType: InstanceLabelOverrideValueSpecificationType.BriefcaseId;
}

// @public
export interface InstanceLabelOverrideClassLabelSpecification extends InstanceLabelOverrideValueSpecificationBase {
    // (undocumented)
    specType: InstanceLabelOverrideValueSpecificationType.ClassLabel;
}

// @public
export interface InstanceLabelOverrideClassNameSpecification extends InstanceLabelOverrideValueSpecificationBase {
    full?: boolean;
    // (undocumented)
    specType: InstanceLabelOverrideValueSpecificationType.ClassName;
}

// @public
export interface InstanceLabelOverrideCompositeValueSpecification extends InstanceLabelOverrideValueSpecificationBase {
    parts: Array<{
        spec: InstanceLabelOverrideValueSpecification;
        isRequired?: boolean;
    }>;
    separator?: string;
    // (undocumented)
    specType: InstanceLabelOverrideValueSpecificationType.Composite;
}

// @public
export interface InstanceLabelOverrideLocalIdSpecification extends InstanceLabelOverrideValueSpecificationBase {
    // (undocumented)
    specType: InstanceLabelOverrideValueSpecificationType.LocalId;
}

// @public
export interface InstanceLabelOverridePropertyValueSpecification extends InstanceLabelOverrideValueSpecificationBase {
    propertyName: string;
    // @beta
    propertySource?: RelationshipPathSpecification;
    // (undocumented)
    specType: InstanceLabelOverrideValueSpecificationType.Property;
}

// @public
export interface InstanceLabelOverrideRelatedInstanceLabelSpecification extends InstanceLabelOverrideValueSpecificationBase {
    pathToRelatedInstance: RelationshipPathSpecification;
    // (undocumented)
    specType: InstanceLabelOverrideValueSpecificationType.RelatedInstanceLabel;
}

// @public
export interface InstanceLabelOverrideStringValueSpecification extends InstanceLabelOverrideValueSpecificationBase {
    // (undocumented)
    specType: InstanceLabelOverrideValueSpecificationType.String;
    value: string;
}

// @public
export type InstanceLabelOverrideValueSpecification = InstanceLabelOverrideCompositeValueSpecification | InstanceLabelOverridePropertyValueSpecification | InstanceLabelOverrideStringValueSpecification | InstanceLabelOverrideClassNameSpecification | InstanceLabelOverrideClassLabelSpecification | InstanceLabelOverrideBriefcaseIdSpecification | InstanceLabelOverrideLocalIdSpecification | InstanceLabelOverrideRelatedInstanceLabelSpecification;

// @public
export interface InstanceLabelOverrideValueSpecificationBase {
    specType: InstanceLabelOverrideValueSpecificationType;
}

// @public
export enum InstanceLabelOverrideValueSpecificationType {
    // (undocumented)
    BriefcaseId = "BriefcaseId",
    // (undocumented)
    ClassLabel = "ClassLabel",
    // (undocumented)
    ClassName = "ClassName",
    // (undocumented)
    Composite = "Composite",
    // (undocumented)
    LocalId = "LocalId",
    // (undocumented)
    Property = "Property",
    // (undocumented)
    RelatedInstanceLabel = "RelatedInstanceLabel",
    // (undocumented)
    String = "String"
}

// @public
export interface InstanceNodesOfSpecificClassesSpecification extends ChildNodeSpecificationBase, DefaultGroupingPropertiesContainer {
    // @deprecated
    arePolymorphic?: boolean;
    classes: MultiSchemaClassesSpecification | MultiSchemaClassesSpecification[];
    excludedClasses?: MultiSchemaClassesSpecification | MultiSchemaClassesSpecification[];
    instanceFilter?: string;
    specType: ChildNodeSpecificationTypes.InstanceNodesOfSpecificClasses;
}

// @public
export interface IntRulesetVariable extends RulesetVariableBase {
    // (undocumented)
    type: VariableValueTypes.Int;
    // (undocumented)
    value: number;
}

// @public
export interface IntRulesetVariableJSON extends RulesetVariableBaseJSON {
    // (undocumented)
    type: VariableValueTypes.Int;
    // (undocumented)
    value: number;
}

// @public
export interface IntsRulesetVariable extends RulesetVariableBase {
    // (undocumented)
    type: VariableValueTypes.IntArray;
    // (undocumented)
    value: number[];
}

// @public
export interface IntsRulesetVariableJSON extends RulesetVariableBaseJSON {
    // (undocumented)
    type: VariableValueTypes.IntArray;
    // (undocumented)
    value: number[];
}

// @beta
export function isSingleElementPropertiesRequestOptions<TIModel>(options: ElementPropertiesRequestOptions<TIModel>): options is SingleElementPropertiesRequestOptions<TIModel>;

// @public
export class Item {
    constructor(primaryKeys: InstanceKey[], label: string | LabelDefinition, imageId: string, classInfo: ClassInfo | undefined, values: ValuesDictionary<Value>, displayValues: ValuesDictionary<DisplayValue>, mergedFieldNames: string[], extendedData?: {
        [key: string]: any;
    });
    classInfo?: ClassInfo;
    displayValues: ValuesDictionary<DisplayValue>;
    extendedData?: {
        [key: string]: any;
    };
    static fromJSON(json: ItemJSON | string | undefined): Item | undefined;
    imageId: string;
    // @beta
    inputKeys?: InstanceKey[];
    isFieldMerged(fieldName: string): boolean;
    label: LabelDefinition;
    mergedFieldNames: string[];
    primaryKeys: InstanceKey[];
    // @internal
    static reviver(key: string, value: any): any;
    toJSON(): ItemJSON;
    values: ValuesDictionary<Value>;
}

// @public
export interface ItemJSON {
    // (undocumented)
    classInfo?: ClassInfoJSON;
    // (undocumented)
    displayValues: ValuesDictionary<DisplayValueJSON>;
    // (undocumented)
    extendedData?: {
        [key: string]: any;
    };
    // (undocumented)
    imageId: string;
    // @beta (undocumented)
    inputKeys?: InstanceKeyJSON[];
    // (undocumented)
    labelDefinition: LabelDefinitionJSON;
    // (undocumented)
    mergedFieldNames: string[];
    // (undocumented)
    primaryKeys: InstanceKeyJSON[];
    // (undocumented)
    values: ValuesDictionary<ValueJSON>;
}

// @public
export type Key = Readonly<NodeKey> | Readonly<InstanceKey> | Readonly<EntityProps>;

// @public (undocumented)
export namespace Key {
    export function isEntityProps(key: Key): key is EntityProps;
    export function isInstanceKey(key: Key): key is InstanceKey;
    export function isNodeKey(key: Key): key is NodeKey;
}

// @public
export type Keys = ReadonlyArray<Key> | Readonly<KeySet>;

// @public
export class KeySet {
    constructor(source?: Keys);
    add(value: Keys | Key, pred?: (key: Key) => boolean): KeySet;
    clear(): KeySet;
    delete(value: Keys | Key): KeySet;
    forEach(callback: (key: InstanceKey | NodeKey, index: number) => void): void;
    forEachBatch(batchSize: number, callback: (batch: KeySet, index: number) => void): void;
    static fromJSON(json: KeySetJSON): KeySet;
    get guid(): GuidString;
    has(value: Key): boolean;
    hasAll(keys: Keys): boolean;
    hasAny(keys: Keys): boolean;
    get instanceKeys(): Map<string, Set<InstanceId>>;
    get instanceKeysCount(): number;
    get isEmpty(): boolean;
    get nodeKeys(): Set<NodeKey>;
    get nodeKeysCount(): number;
    get size(): number;
    some(callback: (key: Key) => boolean): boolean;
    toJSON(): KeySetJSON;
}

// @public
export interface KeySetJSON {
    instanceKeys: Array<[string, string]>;
    nodeKeys: NodeKeyJSON[];
}

// @public
export interface KindOfQuantityInfo {
    // @alpha
    activeFormat?: FormatProps;
    label: string;
    name: string;
    // @alpha
    persistenceUnit: string;
}

// @public
export interface LabelCompositeValue {
    // (undocumented)
    separator: string;
    // (undocumented)
    values: LabelDefinition[];
}

// @public (undocumented)
export namespace LabelCompositeValue {
    export function fromJSON(json: LabelCompositeValueJSON): LabelCompositeValue;
    export function toJSON(compositeValue: LabelCompositeValue): LabelCompositeValueJSON;
}

// @public
export interface LabelCompositeValueJSON {
    // (undocumented)
    separator: string;
    // (undocumented)
    values: LabelDefinitionJSON[];
}

// @public
export interface LabelDefinition {
    displayValue: string;
    rawValue: LabelRawValue;
    typeName: string;
}

// @public (undocumented)
export namespace LabelDefinition {
    export function fromJSON(json: LabelDefinitionJSON | string): LabelDefinition;
    // @internal (undocumented)
    export function fromLabelString(label: string): LabelDefinitionJSON;
    const // @internal (undocumented)
    COMPOSITE_DEFINITION_TYPENAME = "composite";
    // @internal (undocumented)
    export function isCompositeDefinition(def: LabelDefinition): def is LabelDefinition & {
        rawValue: LabelCompositeValue;
    };
    // @internal
    export function reviver(key: string, value: any): any;
    export function toJSON(labelDefinition: LabelDefinition): LabelDefinitionJSON;
}

// @public
export interface LabelDefinitionJSON {
    // (undocumented)
    displayValue: string;
    // (undocumented)
    rawValue: LabelRawValueJSON;
    // (undocumented)
    typeName: string;
}

// @public
export interface LabelGroupingNodeKey extends GroupingNodeKey {
    label: string;
    // (undocumented)
    type: StandardNodeTypes.DisplayLabelGroupingNode;
}

// @public
export interface LabelGroupingNodeKeyJSON extends GroupingNodeKeyJSON {
    // (undocumented)
    label: string;
    // (undocumented)
    type: StandardNodeTypes.DisplayLabelGroupingNode;
}

// @public
export interface LabelOverride extends RuleBase, ConditionContainer {
    condition?: string;
    description?: string;
    label?: string;
    ruleType: RuleTypes.LabelOverride;
}

// @public
export type LabelRawValue = string | number | boolean | LabelCompositeValue;

// @public
export type LabelRawValueJSON = string | number | boolean | LabelCompositeValueJSON;

// @beta
export interface MultiElementPropertiesRequestOptions<TIModel> extends RequestOptions<TIModel> {
    elementClasses?: string[];
}

// @public
export interface MultiSchemaClassesSpecification {
    arePolymorphic?: boolean;
    classNames: string[];
    schemaName: string;
}

// @public
export interface NamedFieldDescriptor extends FieldDescriptorBase {
    // (undocumented)
    fieldName: string;
    // (undocumented)
    type: FieldDescriptorType.Name;
}

// @public
export type NavigationRule = RootNodeRule | ChildNodeRule;

// @public
export interface NavigationRuleBase extends RuleBase {
    condition?: string;
    customizationRules?: CustomizationRule[];
    specifications?: ChildNodeSpecification[];
    stopFurtherProcessing?: boolean;
    subConditions?: SubCondition[];
}

// @public
export class NestedContentField extends Field {
    constructor(category: CategoryDescription, name: string, label: string, description: TypeDescription, isReadonly: boolean, priority: number, contentClassInfo: ClassInfo, pathToPrimaryClass: RelationshipPath, nestedFields: Field[], editor?: EditorDescription, autoExpand?: boolean, renderer?: RendererDescription);
    // @alpha (undocumented)
    actualPrimaryClassIds: Id64String[];
    autoExpand?: boolean;
    // (undocumented)
    clone(): NestedContentField;
    contentClassInfo: ClassInfo;
    static fromCompressedJSON(json: NestedContentFieldJSON<Id64String>, classesMap: {
        [id: string]: CompressedClassInfoJSON;
    }, categories: CategoryDescription[]): any;
    static fromJSON(json: NestedContentFieldJSON | undefined, categories: CategoryDescription[]): NestedContentField | undefined;
    getFieldByName(name: string, recurse?: boolean): Field | undefined;
    nestedFields: Field[];
    pathToPrimaryClass: RelationshipPath;
    // @internal (undocumented)
    rebuildParentship(parentField?: NestedContentField): void;
    // @alpha (undocumented)
    relationshipMeaning: RelationshipMeaning;
    // @internal (undocumented)
    resetParentship(): void;
    toJSON(): NestedContentFieldJSON;
}

// @public
export interface NestedContentFieldJSON<TClassInfoJSON = ClassInfoJSON> extends BaseFieldJSON {
    // @alpha (undocumented)
    actualPrimaryClassIds?: Id64String[];
    // (undocumented)
    autoExpand?: boolean;
    // (undocumented)
    contentClassInfo: TClassInfoJSON;
    // (undocumented)
    nestedFields: FieldJSON<TClassInfoJSON>[];
    // (undocumented)
    pathToPrimaryClass: RelationshipPathJSON<TClassInfoJSON>;
    // @alpha (undocumented)
    relationshipMeaning?: RelationshipMeaning;
}

// @public
export interface NestedContentValue {
    displayValues: ValuesDictionary<DisplayValue>;
    mergedFieldNames: string[];
    primaryKeys: InstanceKey[];
    values: ValuesDictionary<Value>;
}

// @public (undocumented)
export namespace NestedContentValue {
    export function fromJSON(json: NestedContentValueJSON): NestedContentValue;
    export function toJSON(json: NestedContentValue): NestedContentValueJSON;
}

// @public
export interface NestedContentValueJSON {
    // (undocumented)
    displayValues: ValuesDictionary<DisplayValueJSON>;
    // (undocumented)
    mergedFieldNames: string[];
    // (undocumented)
    primaryKeys: InstanceKeyJSON[];
    // (undocumented)
    values: ValuesDictionary<ValueJSON>;
}

// @public
export interface NoCategoryIdentifier {
    type: "None";
}

// @public
export interface Node {
    backColor?: string;
    description?: string;
    extendedData?: {
        [key: string]: any;
    };
    fontStyle?: string;
    foreColor?: string;
    hasChildren?: boolean;
    imageId?: string;
    isCheckboxEnabled?: boolean;
    isCheckboxVisible?: boolean;
    isChecked?: boolean;
    isEditable?: boolean;
    isExpanded?: boolean;
    isSelectionDisabled?: boolean;
    key: NodeKey;
    label: LabelDefinition;
}

// @public (undocumented)
export namespace Node {
    export function fromJSON(json: NodeJSON | string): Node;
    // @internal (undocumented)
    export function fromPartialJSON(json: PartialNodeJSON): PartialNode;
    // @internal
    export function listFromJSON(json: NodeJSON[] | string): Node[];
    // @internal
    export function listReviver(key: string, value: any): any;
    // @internal
    export function reviver(key: string, value: any): any;
    export function toJSON(node: Node): NodeJSON;
    // @internal (undocumented)
    export function toPartialJSON(node: PartialNode): PartialNodeJSON;
}

// @public
export interface NodeArtifactsRule extends RuleBase, ConditionContainer {
    condition?: string;
    items: {
        [key: string]: string;
    };
    ruleType: RuleTypes.NodeArtifacts;
}

// @public
export interface NodeDeletionInfo {
    parent?: NodeKey;
    position: number;
    // (undocumented)
    type: "Delete";
}

// @public
export interface NodeDeletionInfoJSON {
    parent?: NodeKeyJSON;
    position: number;
    // (undocumented)
    type: "Delete";
}

// @public
export interface NodeInsertionInfo {
    node: Node;
    parent?: NodeKey;
    position: number;
    // (undocumented)
    type: "Insert";
}

// @public
export interface NodeInsertionInfoJSON {
    // (undocumented)
    node: NodeJSON;
    // (undocumented)
    parent?: NodeKeyJSON;
    // (undocumented)
    position: number;
    // (undocumented)
    type: "Insert";
}

// @public
export interface NodeJSON {
    // (undocumented)
    backColor?: string;
    // (undocumented)
    description?: string;
    // (undocumented)
    extendedData?: {
        [key: string]: any;
    };
    // (undocumented)
    fontStyle?: string;
    // (undocumented)
    foreColor?: string;
    // (undocumented)
    hasChildren?: boolean;
    // (undocumented)
    imageId?: string;
    // (undocumented)
    isCheckboxEnabled?: boolean;
    // (undocumented)
    isCheckboxVisible?: boolean;
    // (undocumented)
    isChecked?: boolean;
    // (undocumented)
    isEditable?: boolean;
    // (undocumented)
    isExpanded?: boolean;
    // (undocumented)
    isSelectionDisabled?: boolean;
    // (undocumented)
    key: NodeKeyJSON;
    // (undocumented)
    labelDefinition: LabelDefinitionJSON;
}

// @public
export type NodeKey = BaseNodeKey | ECInstancesNodeKey | ECClassGroupingNodeKey | ECPropertyGroupingNodeKey | LabelGroupingNodeKey;

// @public (undocumented)
export namespace NodeKey {
    export function equals(lhs: NodeKey, rhs: NodeKey): boolean;
    export function fromJSON(json: NodeKeyJSON): NodeKey;
    export function isClassGroupingNodeKey(key: NodeKey): key is ECClassGroupingNodeKey;
    export function isClassGroupingNodeKey(key: NodeKeyJSON): key is ECClassGroupingNodeKeyJSON;
    export function isGroupingNodeKey(key: NodeKey): key is GroupingNodeKey;
    export function isGroupingNodeKey(key: NodeKeyJSON): key is GroupingNodeKeyJSON;
    export function isInstancesNodeKey(key: NodeKey): key is ECInstancesNodeKey;
    export function isInstancesNodeKey(key: NodeKeyJSON): key is ECInstancesNodeKeyJSON;
    export function isLabelGroupingNodeKey(key: NodeKey): key is LabelGroupingNodeKey;
    export function isLabelGroupingNodeKey(key: NodeKeyJSON): key is LabelGroupingNodeKeyJSON;
    export function isPropertyGroupingNodeKey(key: NodeKey): key is ECPropertyGroupingNodeKey;
    export function isPropertyGroupingNodeKey(key: NodeKeyJSON): key is ECPropertyGroupingNodeKeyJSON;
    export function toJSON(key: NodeKey): NodeKeyJSON;
}

// @public
export type NodeKeyJSON = BaseNodeKeyJSON | ECInstancesNodeKeyJSON | ECClassGroupingNodeKeyJSON | ECPropertyGroupingNodeKeyJSON | LabelGroupingNodeKeyJSON;

// @public
export type NodeKeyPath = NodeKey[];

// @public
export interface NodePathElement {
    children: NodePathElement[];
    filteringData?: NodePathFilteringData;
    index: number;
    isMarked?: boolean;
    node: Node;
}

// @public (undocumented)
export namespace NodePathElement {
    export function fromJSON(json: NodePathElementJSON | string): NodePathElement;
    // @internal
    export function listFromJSON(json: NodePathElementJSON[] | string): NodePathElement[];
    // @internal
    export function listReviver(key: string, value: any): any;
    // @internal
    export function reviver(key: string, value: any): any;
    export function toJSON(npe: NodePathElement): NodePathElementJSON;
}

// @public
export interface NodePathElementJSON {
    // (undocumented)
    children: NodePathElementJSON[];
    // (undocumented)
    filteringData?: NodePathFilteringDataJSON;
    // (undocumented)
    index: number;
    // (undocumented)
    isMarked?: boolean;
    // (undocumented)
    node: NodeJSON;
}

// @public
export interface NodePathFilteringData {
    childMatchesCount: number;
    matchesCount: number;
}

// @public (undocumented)
export namespace NodePathFilteringData {
    export function fromJSON(json: NodePathFilteringDataJSON): NodePathFilteringData;
    export function toJSON(npfd: NodePathFilteringData): NodePathFilteringDataJSON;
}

// @public
export interface NodePathFilteringDataJSON {
    // (undocumented)
    childrenOccurances: number;
    // (undocumented)
    occurances: number;
}

// @public
export interface NodeUpdateInfo {
    changes: PartialNode;
    target: NodeKey;
    // (undocumented)
    type: "Update";
}

// @public
export interface NodeUpdateInfoJSON {
    // (undocumented)
    changes: PartialNodeJSON;
    // (undocumented)
    target: NodeKeyJSON;
    // (undocumented)
    type: "Update";
}

// @public
export type Omit<T, K> = Pick<T, Exclude<keyof T, K>>;

// @public
export type Paged<TOptions extends {}> = TOptions & {
    paging?: PageOptions;
};

// @public
export interface PagedResponse<T> {
    items: T[];
    total: number;
}

// @public
export interface PageOptions {
    size?: number;
    start?: number;
}

// @public
export interface ParentCategoryIdentifier {
    type: "DefaultParent";
}

// @public
export type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;

// @public
export type PartialHierarchyModification = NodeInsertionInfo | NodeDeletionInfo | NodeUpdateInfo;

// @public (undocumented)
export namespace PartialHierarchyModification {
    export function fromJSON(json: PartialHierarchyModificationJSON): PartialHierarchyModification;
    export function toJSON(obj: PartialHierarchyModification): PartialHierarchyModificationJSON;
}

// @public
export type PartialHierarchyModificationJSON = NodeInsertionInfoJSON | NodeDeletionInfoJSON | NodeUpdateInfoJSON;

// @public
export type PartialNode = AllOrNone<Partial<Node>, "key" | "label">;

// @public
export type PartialNodeJSON = AllOrNone<Partial<NodeJSON>, "key" | "labelDefinition">;

// @internal (undocumented)
export const PRESENTATION_COMMON_ROOT: string;

// @internal (undocumented)
export const PRESENTATION_IPC_CHANNEL_NAME = "presentation-ipc-interface";

// @public
export class PresentationError extends BentleyError {
    constructor(errorNumber: PresentationStatus, message?: string, getMetaData?: GetMetaDataFunction);
    protected _initName(): string;
}

// @alpha (undocumented)
export enum PresentationIpcEvents {
    Update = "presentation.onUpdate"
}

// @internal (undocumented)
export interface PresentationIpcInterface {
    setRulesetVariable(params: SetRulesetVariableParams<RulesetVariableJSON>): Promise<void>;
    unsetRulesetVariable(params: UnsetRulesetVariableParams): Promise<void>;
    updateHierarchyState(params: UpdateHierarchyStateParams<NodeKeyJSON>): Promise<void>;
}

// @public
export class PresentationRpcInterface extends RpcInterface {
    // (undocumented)
    computeSelection(_token: IModelRpcProps, _options: SelectionScopeRpcRequestOptions, _ids: Id64String[], _scopeId: string): PresentationRpcResponse<KeySetJSON>;
    // (undocumented)
    getContentDescriptor(_token: IModelRpcProps, _options: ContentDescriptorRpcRequestOptions): PresentationRpcResponse<DescriptorJSON | undefined>;
    // @beta (undocumented)
    getContentInstanceKeys(_token: IModelRpcProps, _options: ContentInstanceKeysRpcRequestOptions): PresentationRpcResponse<{
        total: number;
        items: KeySetJSON;
    }>;
    // (undocumented)
    getContentSetSize(_token: IModelRpcProps, _options: ContentRpcRequestOptions): PresentationRpcResponse<number>;
    // @beta (undocumented)
    getContentSources(_token: IModelRpcProps, _options: ContentSourcesRpcRequestOptions): PresentationRpcResponse<ContentSourcesRpcResult>;
    // (undocumented)
    getDisplayLabelDefinition(_token: IModelRpcProps, _options: DisplayLabelRpcRequestOptions): PresentationRpcResponse<LabelDefinitionJSON>;
    // @beta (undocumented)
    getElementProperties(_token: IModelRpcProps, _options: SingleElementPropertiesRpcRequestOptions): PresentationRpcResponse<ElementProperties | undefined>;
    // (undocumented)
    getFilteredNodePaths(_token: IModelRpcProps, _options: FilterByTextHierarchyRpcRequestOptions): PresentationRpcResponse<NodePathElementJSON[]>;
    // (undocumented)
    getNodePaths(_token: IModelRpcProps, _options: FilterByInstancePathsHierarchyRpcRequestOptions): PresentationRpcResponse<NodePathElementJSON[]>;
    // (undocumented)
    getNodesCount(_token: IModelRpcProps, _options: HierarchyRpcRequestOptions): PresentationRpcResponse<number>;
    // (undocumented)
    getPagedContent(_token: IModelRpcProps, _options: Paged<ContentRpcRequestOptions>): PresentationRpcResponse<{
        descriptor: DescriptorJSON;
        contentSet: PagedResponse<ItemJSON>;
    } | undefined>;
    // (undocumented)
    getPagedContentSet(_token: IModelRpcProps, _options: Paged<ContentRpcRequestOptions>): PresentationRpcResponse<PagedResponse<ItemJSON>>;
    // (undocumented)
    getPagedDisplayLabelDefinitions(_token: IModelRpcProps, _options: DisplayLabelsRpcRequestOptions): PresentationRpcResponse<PagedResponse<LabelDefinitionJSON>>;
    // (undocumented)
    getPagedDistinctValues(_token: IModelRpcProps, _options: DistinctValuesRpcRequestOptions): PresentationRpcResponse<PagedResponse<DisplayValueGroupJSON>>;
    // (undocumented)
    getPagedNodes(_token: IModelRpcProps, _options: Paged<HierarchyRpcRequestOptions>): PresentationRpcResponse<PagedResponse<NodeJSON>>;
    // (undocumented)
    getSelectionScopes(_token: IModelRpcProps, _options: SelectionScopeRpcRequestOptions): PresentationRpcResponse<SelectionScope[]>;
    static readonly interfaceName = "PresentationRpcInterface";
    static interfaceVersion: string;
}

// @public
export type PresentationRpcRequestOptions<TManagerRequestOptions> = Omit<TManagerRequestOptions, "imodel" | "diagnostics"> & {
    clientId?: string;
    diagnostics?: DiagnosticsOptions;
};

// @public
export type PresentationRpcResponse<TResult = undefined> = Promise<PresentationRpcResponseData<TResult>>;

// @public
export interface PresentationRpcResponseData<TResult = undefined> {
    // @alpha (undocumented)
    diagnostics?: DiagnosticsScopeLogs[];
    errorMessage?: string;
    result?: TResult;
    statusCode: PresentationStatus;
}

// @public
export enum PresentationStatus {
    BackendTimeout = 65543,
    Canceled = 1,
    Error = 65536,
    InvalidArgument = 65539,
    NotInitialized = 65537,
    Success = 0
}

// @public
export type PrimitivePropertyValue = string | number | boolean | Point | InstanceKey | undefined;

// @public
export interface PrimitiveTypeDescription extends BaseTypeDescription {
    valueFormat: PropertyValueFormat.Primitive;
}

// @public
export type Prioritized<TOptions extends {}> = TOptions & {
    priority?: number;
};

// @alpha (undocumented)
export interface ProcessFieldHierarchiesProps {
    // (undocumented)
    hierarchies: FieldHierarchy[];
}

// @alpha (undocumented)
export interface ProcessMergedValueProps {
    // (undocumented)
    mergedField: Field;
    // (undocumented)
    namePrefix?: string;
    // (undocumented)
    requestedField: Field;
}

// @alpha (undocumented)
export interface ProcessPrimitiveValueProps {
    // (undocumented)
    displayValue: DisplayValue;
    // (undocumented)
    field: Field;
    // (undocumented)
    namePrefix?: string;
    // (undocumented)
    rawValue: Value;
    // (undocumented)
    valueType: TypeDescription;
}

// @public
export class PropertiesField extends Field {
    constructor(category: CategoryDescription, name: string, label: string, description: TypeDescription, isReadonly: boolean, priority: number, properties: Property[], editor?: EditorDescription, renderer?: RendererDescription);
    // (undocumented)
    clone(): PropertiesField;
    static fromCompressedJSON(json: PropertiesFieldJSON<Id64String>, classesMap: {
        [id: string]: CompressedClassInfoJSON;
    }, categories: CategoryDescription[]): PropertiesField | undefined;
    static fromJSON(json: PropertiesFieldJSON | undefined, categories: CategoryDescription[]): PropertiesField | undefined;
    getFieldDescriptor(): FieldDescriptor;
    properties: Property[];
    toJSON(): PropertiesFieldJSON;
}

// @public
export interface PropertiesFieldDescriptor extends FieldDescriptorBase {
    // (undocumented)
    pathFromSelectToPropertyClass: StrippedRelationshipPath;
    properties: Array<{
        class: string;
        name: string;
    }>;
    // (undocumented)
    type: FieldDescriptorType.Properties;
}

// @public
export interface PropertiesFieldJSON<TClassInfoJSON = ClassInfoJSON> extends BaseFieldJSON {
    // (undocumented)
    properties: PropertyJSON<TClassInfoJSON>[];
}

// @public
export interface Property {
    property: PropertyInfo;
}

// @public (undocumented)
export namespace Property {
    export function fromJSON(json: PropertyJSON): Property;
    export function toCompressedJSON(prop: Property, classesMap: {
        [id: string]: CompressedClassInfoJSON;
    }): PropertyJSON<string>;
    export function toJSON(prop: Property): PropertyJSON;
}

// @public
export interface PropertyAccessor {
    arrayIndex?: number;
    propertyName: string;
}

// @public
export type PropertyAccessorPath = PropertyAccessor[];

// @public
export interface PropertyCategorySpecification {
    autoExpand?: boolean;
    description?: string;
    id: string;
    label: string;
    parentId?: string | CategoryIdentifier | NoCategoryIdentifier;
    priority?: number;
    renderer?: CustomRendererSpecification;
}

// @public
export interface PropertyEditorJsonParameters extends PropertyEditorParametersBase {
    json: any;
    paramsType: PropertyEditorParameterTypes.Json;
}

// @public
export interface PropertyEditorMultilineParameters extends PropertyEditorParametersBase {
    height?: number;
    paramsType: PropertyEditorParameterTypes.Multiline;
}

// @public
export type PropertyEditorParameters = PropertyEditorJsonParameters | PropertyEditorMultilineParameters | PropertyEditorRangeParameters | PropertyEditorSliderParameters;

// @public
export interface PropertyEditorParametersBase {
    paramsType: PropertyEditorParameterTypes;
}

// @public
export enum PropertyEditorParameterTypes {
    // (undocumented)
    Json = "Json",
    // (undocumented)
    Multiline = "Multiline",
    // (undocumented)
    Range = "Range",
    // (undocumented)
    Slider = "Slider"
}

// @public
export interface PropertyEditorRangeParameters extends PropertyEditorParametersBase {
    max?: number;
    min?: number;
    paramsType: PropertyEditorParameterTypes.Range;
}

// @public
export interface PropertyEditorSliderParameters extends PropertyEditorParametersBase {
    intervalsCount?: number;
    isVertical?: boolean;
    max: number;
    min: number;
    paramsType: PropertyEditorParameterTypes.Slider;
}

// @public
export interface PropertyEditorSpecification {
    editorName: string;
    parameters?: PropertyEditorParameters[];
}

// @public
export interface PropertyGroup extends GroupingSpecificationBase {
    createGroupForSingleItem?: boolean;
    createGroupForUnspecifiedValues?: boolean;
    groupingValue?: PropertyGroupingValue;
    imageId?: string;
    propertyName: string;
    ranges?: PropertyRangeGroupSpecification[];
    sortingValue?: PropertyGroupingValue;
    specType: GroupingSpecificationTypes.Property;
}

// @public
export enum PropertyGroupingValue {
    DisplayLabel = "DisplayLabel",
    PropertyValue = "PropertyValue"
}

// @public
export interface PropertyInfo {
    classInfo: ClassInfo;
    enumerationInfo?: EnumerationInfo;
    extendedType?: string;
    // @alpha
    kindOfQuantity?: KindOfQuantityInfo;
    name: string;
    type: string;
}

// @public (undocumented)
export namespace PropertyInfo {
    export function fromJSON(json: PropertyInfoJSON): PropertyInfo;
    export function toCompressedJSON(propertyInfo: PropertyInfo, classesMap: {
        [id: string]: CompressedClassInfoJSON;
    }): PropertyInfoJSON<string>;
    export function toJSON(info: PropertyInfo): PropertyInfoJSON;
}

// @public
export interface PropertyInfoJSON<TClassInfoJSON = ClassInfoJSON> {
    // (undocumented)
    classInfo: TClassInfoJSON;
    // (undocumented)
    enumerationInfo?: EnumerationInfo;
    // (undocumented)
    kindOfQuantity?: KindOfQuantityInfo;
    // (undocumented)
    name: string;
    // (undocumented)
    type: string;
}

// @public
export interface PropertyJSON<TClassInfoJSON = ClassInfoJSON> {
    // (undocumented)
    property: PropertyInfoJSON<TClassInfoJSON>;
}

// @public
export interface PropertyOverrides {
    categoryId?: string | CategoryIdentifier;
    doNotHideOtherPropertiesOnDisplayOverride?: boolean;
    editor?: PropertyEditorSpecification;
    isDisplayed?: boolean;
    labelOverride?: string;
    overridesPriority?: number;
    renderer?: CustomRendererSpecification;
}

// @public
export interface PropertyRangeGroupSpecification {
    fromValue: string;
    imageId?: string;
    label?: string;
    toValue: string;
}

// @public
export interface PropertySortingRule extends SortingRuleBase {
    propertyName: string;
    ruleType: RuleTypes.PropertySorting;
    sortAscending?: boolean;
}

// @public
export interface PropertySpecification extends PropertyOverrides {
    name: string;
}

// @public
export enum PropertyValueFormat {
    Array = "Array",
    Primitive = "Primitive",
    Struct = "Struct"
}

// @public
export type QuerySpecification = StringQuerySpecification | ECPropertyValueQuerySpecification;

// @public
export interface QuerySpecificationBase {
    class: SingleSchemaClassSpecification;
    specType: QuerySpecificationTypes;
}

// @public
export enum QuerySpecificationTypes {
    // (undocumented)
    ECPropertyValue = "ECPropertyValue",
    // (undocumented)
    String = "String"
}

// @public
export class RegisteredRuleset implements IDisposable, Ruleset {
    constructor(ruleset: Ruleset, uniqueIdentifier: string, disposeFunc: (ruleset: RegisteredRuleset) => void);
    dispose(): void;
    // (undocumented)
    get id(): string;
    // (undocumented)
    get rules(): Rule[];
    // (undocumented)
    get supplementationInfo(): SupplementationInfo | undefined;
    // (undocumented)
    toJSON(): Ruleset;
    // (undocumented)
    get uniqueIdentifier(): string;
    // (undocumented)
    get vars(): VariablesGroup[] | undefined;
}

// @public
export interface RelatedClassInfo {
    isForwardRelationship: boolean;
    isPolymorphicRelationship: boolean;
    isPolymorphicTargetClass: boolean;
    relationshipInfo: ClassInfo;
    sourceClassInfo: ClassInfo;
    targetClassInfo: ClassInfo;
}

// @public (undocumented)
export namespace RelatedClassInfo {
    export function equals(lhs: RelatedClassInfo | StrippedRelatedClassInfo, rhs: RelatedClassInfo | StrippedRelatedClassInfo): boolean;
    export function fromCompressedJSON(json: RelatedClassInfoJSON<string>, classesMap: {
        [id: string]: CompressedClassInfoJSON;
    }): RelatedClassInfo;
    export function fromJSON(json: RelatedClassInfoJSON): RelatedClassInfo;
    export function strip(full: RelatedClassInfo): StrippedRelatedClassInfo;
    export function toCompressedJSON(classInfo: RelatedClassInfo, classesMap: {
        [id: string]: CompressedClassInfoJSON;
    }): RelatedClassInfoJSON<string>;
    export function toJSON(info: RelatedClassInfo): RelatedClassInfoJSON;
}

// @public
export interface RelatedClassInfoJSON<TClassInfoJSON = ClassInfoJSON> {
    // (undocumented)
    isForwardRelationship: boolean;
    // (undocumented)
    isPolymorphicRelationship?: boolean;
    // (undocumented)
    isPolymorphicTargetClass?: boolean;
    // (undocumented)
    relationshipInfo: TClassInfoJSON;
    // (undocumented)
    sourceClassInfo: TClassInfoJSON;
    // (undocumented)
    targetClassInfo: TClassInfoJSON;
}

// @public
export type RelatedClassInfoWithOptionalRelationship = PartialBy<RelatedClassInfo, "relationshipInfo" | "isForwardRelationship" | "isPolymorphicRelationship">;

// @public (undocumented)
export namespace RelatedClassInfoWithOptionalRelationship {
    export function fromCompressedJSON(json: RelatedClassInfoWithOptionalRelationshipJSON<string>, classesMap: {
        [id: string]: CompressedClassInfoJSON;
    }): RelatedClassInfoWithOptionalRelationship;
    export function toCompressedJSON(classInfo: RelatedClassInfoWithOptionalRelationship, classesMap: {
        [id: string]: CompressedClassInfoJSON;
    }): RelatedClassInfoWithOptionalRelationshipJSON<string>;
}

// @public (undocumented)
export type RelatedClassInfoWithOptionalRelationshipJSON<TClassInfoJSON = ClassInfoJSON> = PartialBy<RelatedClassInfoJSON<TClassInfoJSON>, "relationshipInfo" | "isForwardRelationship" | "isPolymorphicRelationship">;

// @public
export interface RelatedInstanceNodesSpecification extends ChildNodeSpecificationBase, DefaultGroupingPropertiesContainer {
    instanceFilter?: string;
    relationshipPaths: RepeatableRelationshipPathSpecification[];
    specType: ChildNodeSpecificationTypes.RelatedInstanceNodes;
}

// @public
export interface RelatedInstanceSpecification {
    alias: string;
    isRequired?: boolean;
    relationshipPath: RelationshipPathSpecification;
}

// @public
export enum RelatedPropertiesSpecialValues {
    All = "*",
    None = "_none_"
}

// @public
export interface RelatedPropertiesSpecification {
    autoExpand?: boolean;
    handleTargetClassPolymorphically?: boolean;
    nestedRelatedProperties?: RelatedPropertiesSpecification[];
    properties?: Array<string | PropertySpecification> | RelatedPropertiesSpecialValues;
    propertiesSource: RelationshipPathSpecification;
    relationshipMeaning?: RelationshipMeaning;
    // @beta
    skipIfDuplicate?: boolean;
}

// @public
export enum RelationshipDirection {
    Backward = "Backward",
    Forward = "Forward"
}

// @public
export enum RelationshipMeaning {
    RelatedInstance = "RelatedInstance",
    SameInstance = "SameInstance"
}

// @public
export type RelationshipPath = RelatedClassInfo[];

// @public (undocumented)
export namespace RelationshipPath {
    export function equals(lhs: Array<RelatedClassInfo | StrippedRelatedClassInfo>, rhs: Array<RelatedClassInfo | StrippedRelatedClassInfo>): boolean;
    export function reverse(path: RelationshipPath): RelationshipPath;
    export function strip(full: RelationshipPath): StrippedRelationshipPath;
}

// @public
export type RelationshipPathJSON<TClassInfoJSON = ClassInfoJSON> = RelatedClassInfoJSON<TClassInfoJSON>[];

// @public
export type RelationshipPathSpecification = RelationshipStepSpecification | RelationshipStepSpecification[];

// @public
export interface RelationshipStepSpecification {
    direction: RelationshipDirection.Forward | RelationshipDirection.Backward;
    relationship: SingleSchemaClassSpecification;
    targetClass?: SingleSchemaClassSpecification;
}

// @public
export interface RendererDescription {
    name: string;
}

// @public
export type RepeatableRelationshipPathSpecification = RepeatableRelationshipStepSpecification | RepeatableRelationshipStepSpecification[];

// @public
export interface RepeatableRelationshipStepSpecification extends RelationshipStepSpecification {
    count?: number | "*";
}

// @public
export interface RequestOptions<TIModel> {
    // @alpha (undocumented)
    diagnostics?: DiagnosticsOptionsWithHandler;
    imodel: TIModel;
    locale?: string;
    unitSystem?: UnitSystemKey;
}

// @public
export interface RequestOptionsWithRuleset<TIModel, TRulesetVariable = RulesetVariable> extends RequestOptions<TIModel> {
    rulesetOrId: Ruleset | string;
    rulesetVariables?: TRulesetVariable[];
}

// @beta
export interface RequiredSchemaSpecification {
    maxVersion?: string;
    minVersion?: string;
    name: string;
}

// @public
export interface RootCategoryIdentifier {
    type: "Root";
}

// @public
export interface RootNodeRule extends NavigationRuleBase {
    autoExpand?: boolean;
    ruleType: RuleTypes.RootNodes;
}

// @internal
export class RpcRequestsHandler implements IDisposable {
    constructor(props?: RpcRequestsHandlerProps);
    readonly clientId: string;
    // (undocumented)
    computeSelection(options: SelectionScopeRequestOptions<IModelRpcProps>, ids: Id64String[], scopeId: string): Promise<KeySetJSON>;
    // (undocumented)
    dispose(): void;
    // (undocumented)
    getContentDescriptor(options: ContentDescriptorRequestOptions<IModelRpcProps, KeySetJSON, RulesetVariableJSON>): Promise<DescriptorJSON | undefined>;
    // (undocumented)
    getContentInstanceKeys(options: ContentInstanceKeysRequestOptions<IModelRpcProps, KeySetJSON, RulesetVariableJSON>): Promise<{
        total: number;
        items: KeySetJSON;
    }>;
    // (undocumented)
    getContentSetSize(options: ContentRequestOptions<IModelRpcProps, DescriptorOverrides, KeySetJSON, RulesetVariableJSON>): Promise<number>;
    // (undocumented)
    getContentSources(options: ContentSourcesRequestOptions<IModelRpcProps>): Promise<ContentSourcesRpcResult>;
    // (undocumented)
    getDisplayLabelDefinition(options: DisplayLabelRequestOptions<IModelRpcProps, InstanceKeyJSON>): Promise<LabelDefinitionJSON>;
    // (undocumented)
    getElementProperties(options: SingleElementPropertiesRequestOptions<IModelRpcProps>): Promise<ElementProperties | undefined>;
    // (undocumented)
    getFilteredNodePaths(options: FilterByTextHierarchyRequestOptions<IModelRpcProps, RulesetVariableJSON>): Promise<NodePathElementJSON[]>;
    // (undocumented)
    getNodePaths(options: FilterByInstancePathsHierarchyRequestOptions<IModelRpcProps, RulesetVariableJSON>): Promise<NodePathElementJSON[]>;
    // (undocumented)
    getNodesCount(options: HierarchyRequestOptions<IModelRpcProps, NodeKeyJSON, RulesetVariableJSON>): Promise<number>;
    // (undocumented)
    getPagedContent(options: Paged<ContentRequestOptions<IModelRpcProps, DescriptorOverrides, KeySetJSON, RulesetVariableJSON>>): Promise<{
        descriptor: DescriptorJSON;
        contentSet: PagedResponse<ItemJSON>;
    } | undefined>;
    // (undocumented)
    getPagedContentSet(options: Paged<ContentRequestOptions<IModelRpcProps, DescriptorOverrides, KeySetJSON, RulesetVariableJSON>>): Promise<PagedResponse<ItemJSON>>;
    // (undocumented)
    getPagedDisplayLabelDefinitions(options: DisplayLabelsRequestOptions<IModelRpcProps, InstanceKeyJSON>): Promise<PagedResponse<LabelDefinitionJSON>>;
    // (undocumented)
    getPagedDistinctValues(options: DistinctValuesRequestOptions<IModelRpcProps, DescriptorOverrides, KeySetJSON, RulesetVariableJSON>): Promise<PagedResponse<DisplayValueGroupJSON>>;
    // (undocumented)
    getPagedNodes(options: Paged<HierarchyRequestOptions<IModelRpcProps, NodeKeyJSON, RulesetVariableJSON>>): Promise<PagedResponse<NodeJSON>>;
    // (undocumented)
    getSelectionScopes(options: SelectionScopeRequestOptions<IModelRpcProps>): Promise<SelectionScope[]>;
    // (undocumented)
    readonly maxRequestRepeatCount: number;
    request<TResult, TOptions extends RequestOptions<IModelRpcProps>, TArg = any>(func: (token: IModelRpcProps, options: PresentationRpcRequestOptions<TOptions>, ...args: TArg[]) => PresentationRpcResponse<TResult>, options: TOptions, ...additionalOptions: TArg[]): Promise<TResult>;
    }

// @internal
export interface RpcRequestsHandlerProps {
    clientId?: string;
}

// @public
export type Rule = CustomizationRule | NavigationRule | ContentRule | ContentModifier | DefaultPropertyCategoryOverride;

// @public
export interface RuleBase {
    onlyIfNotHandled?: boolean;
    priority?: number;
    // @beta
    requiredSchemas?: RequiredSchemaSpecification[];
    ruleType: RuleTypes;
}

// @public
export interface Ruleset {
    id: string;
    // @beta
    requiredSchemas?: RequiredSchemaSpecification[];
    rules: Rule[];
    supplementationInfo?: SupplementationInfo;
    vars?: VariablesGroup[];
    // @beta
    version?: string;
}

// @public
export class RulesetsFactory {
    createSimilarInstancesRuleset(field: Field, record: Item, computeDisplayValue?: ComputeDisplayValueCallback): Promise<{
        ruleset: Ruleset;
        description: string;
    }>;
    }

// @public
export type RulesetVariable = BooleanRulesetVariable | StringRulesetVariable | IntRulesetVariable | IntsRulesetVariable | Id64RulesetVariable | Id64sRulesetVariable;

// @public (undocumented)
export namespace RulesetVariable {
    export function fromJSON(json: RulesetVariableJSON): RulesetVariable;
    export function toJSON(variable: RulesetVariable): RulesetVariableJSON;
}

// @public
export interface RulesetVariableBase {
    // (undocumented)
    id: string;
    // (undocumented)
    type: VariableValueTypes;
    // (undocumented)
    value: VariableValue;
}

// @public
export interface RulesetVariableBaseJSON {
    // (undocumented)
    id: string;
    // (undocumented)
    type: VariableValueTypes;
    // (undocumented)
    value: VariableValueJSON;
}

// @public
export type RulesetVariableJSON = BooleanRulesetVariableJSON | StringRulesetVariableJSON | IntRulesetVariableJSON | IntsRulesetVariableJSON | Id64RulesetVariableJSON | Id64sRulesetVariableJSON;

// @public
export enum RuleTypes {
    // (undocumented)
    CheckBox = "CheckBox",
    // (undocumented)
    ChildNodes = "ChildNodes",
    // (undocumented)
    Content = "Content",
    // (undocumented)
    ContentModifier = "ContentModifier",
    // (undocumented)
    DefaultPropertyCategoryOverride = "DefaultPropertyCategoryOverride",
    // (undocumented)
    DisabledSorting = "DisabledSorting",
    // (undocumented)
    ExtendedData = "ExtendedData",
    // (undocumented)
    Grouping = "Grouping",
    // (undocumented)
    ImageIdOverride = "ImageIdOverride",
    // (undocumented)
    InstanceLabelOverride = "InstanceLabelOverride",
    // (undocumented)
    LabelOverride = "LabelOverride",
    // (undocumented)
    NodeArtifacts = "NodeArtifacts",
    // (undocumented)
    PropertySorting = "PropertySorting",
    // (undocumented)
    RootNodes = "RootNodes",
    // (undocumented)
    StyleOverride = "StyleOverride"
}

// @public
export interface SameLabelInstanceGroup extends GroupingSpecificationBase {
    applicationStage?: SameLabelInstanceGroupApplicationStage;
    specType: GroupingSpecificationTypes.SameLabelInstance;
}

// @public
export enum SameLabelInstanceGroupApplicationStage {
    PostProcess = "PostProcess",
    Query = "Query"
}

// @public
export interface SchemasSpecification {
    isExclude?: boolean;
    schemaNames: string[];
}

// @public
export interface SelectClassInfo {
    isSelectPolymorphic: boolean;
    navigationPropertyClasses?: RelatedClassInfo[];
    pathFromInputToSelectClass?: RelatedClassInfoWithOptionalRelationship[];
    relatedInstancePaths?: RelationshipPath[];
    relatedPropertyPaths?: RelationshipPath[];
    selectClassInfo: ClassInfo;
}

// @public (undocumented)
export namespace SelectClassInfo {
    export function fromCompressedJSON(json: SelectClassInfoJSON<string>, classesMap: {
        [id: string]: CompressedClassInfoJSON;
    }): SelectClassInfo;
    // @internal
    export function listFromCompressedJSON(json: SelectClassInfoJSON<Id64String>[], classesMap: {
        [id: string]: CompressedClassInfoJSON;
    }): SelectClassInfo[];
    export function toCompressedJSON(selectClass: SelectClassInfo, classesMap: {
        [id: string]: CompressedClassInfoJSON;
    }): SelectClassInfoJSON<string>;
}

// @public
export interface SelectClassInfoJSON<TClassInfoJSON = ClassInfoJSON> {
    // (undocumented)
    isSelectPolymorphic: boolean;
    // (undocumented)
    navigationPropertyClasses?: RelatedClassInfoJSON<TClassInfoJSON>[];
    // (undocumented)
    pathFromInputToSelectClass?: RelatedClassInfoWithOptionalRelationshipJSON<TClassInfoJSON>[];
    // (undocumented)
    relatedInstancePaths?: RelationshipPathJSON<TClassInfoJSON>[];
    // (undocumented)
    relatedPropertyPaths?: RelationshipPathJSON<TClassInfoJSON>[];
    // (undocumented)
    selectClassInfo: TClassInfoJSON;
}

// @public
export interface SelectedNodeInstancesSpecification extends ContentSpecificationBase {
    acceptableClassNames?: string[];
    acceptablePolymorphically?: boolean;
    acceptableSchemaName?: string;
    specType: ContentSpecificationTypes.SelectedNodeInstances;
}

// @public
export interface SelectionInfo {
    level?: number;
    providerName: string;
}

// @public
export interface SelectionScope {
    description?: string;
    id: string;
    label: string;
}

// @public
export interface SelectionScopeRequestOptions<TIModel> extends RequestOptions<TIModel> {
}

// @public
export type SelectionScopeRpcRequestOptions = PresentationRpcRequestOptions<SelectionScopeRequestOptions<never>>;

// @internal (undocumented)
export interface SetRulesetVariableParams<TVariable> extends CommonIpcParams {
    // (undocumented)
    rulesetId: string;
    // (undocumented)
    variable: TVariable;
}

// @beta
export interface SingleElementPropertiesRequestOptions<TIModel> extends RequestOptions<TIModel> {
    elementId: Id64String;
}

// @beta
export type SingleElementPropertiesRpcRequestOptions = PresentationRpcRequestOptions<SingleElementPropertiesRequestOptions<never>>;

// @public
export interface SingleSchemaClassSpecification {
    className: string;
    schemaName: string;
}

// @public
export enum SortDirection {
    // (undocumented)
    Ascending = 0,
    // (undocumented)
    Descending = 1
}

// @public
export type SortingRule = PropertySortingRule | DisabledSortingRule;

// @public
export interface SortingRuleBase extends RuleBase, ConditionContainer {
    class?: SingleSchemaClassSpecification;
    condition?: string;
    isPolymorphic?: boolean;
}

// @public
export enum StandardNodeTypes {
    // (undocumented)
    DisplayLabelGroupingNode = "DisplayLabelGroupingNode",
    // (undocumented)
    ECClassGroupingNode = "ECClassGroupingNode",
    // (undocumented)
    ECInstancesNode = "ECInstancesNode",
    // (undocumented)
    ECPropertyGroupingNode = "ECPropertyGroupingNode"
}

// @alpha (undocumented)
export interface StartArrayProps {
    // (undocumented)
    displayValues: DisplayValuesArray;
    // (undocumented)
    hierarchy: FieldHierarchy;
    // (undocumented)
    namePrefix?: string;
    // (undocumented)
    rawValues: ValuesArray;
    // (undocumented)
    valueType: TypeDescription;
}

// @alpha (undocumented)
export interface StartCategoryProps {
    // (undocumented)
    category: CategoryDescription;
}

// @alpha (undocumented)
export interface StartContentProps {
    // (undocumented)
    descriptor: Descriptor;
}

// @alpha (undocumented)
export interface StartFieldProps {
    // (undocumented)
    hierarchy: FieldHierarchy;
}

// @alpha (undocumented)
export interface StartItemProps {
    // (undocumented)
    item: Item;
}

// @alpha (undocumented)
export interface StartStructProps {
    // (undocumented)
    displayValues: DisplayValuesMap;
    // (undocumented)
    hierarchy: FieldHierarchy;
    // (undocumented)
    namePrefix?: string;
    // (undocumented)
    rawValues: ValuesMap;
    // (undocumented)
    valueType: TypeDescription;
}

// @public
export interface StringQuerySpecification extends QuerySpecificationBase {
    query: string;
    specType: QuerySpecificationTypes.String;
}

// @public
export interface StringRulesetVariable extends RulesetVariableBase {
    // (undocumented)
    type: VariableValueTypes.String;
    // (undocumented)
    value: string;
}

// @public
export interface StringRulesetVariableJSON extends RulesetVariableBaseJSON {
    // (undocumented)
    type: VariableValueTypes.String;
    // (undocumented)
    value: string;
}

// @public
export interface StrippedRelatedClassInfo {
    // (undocumented)
    isForwardRelationship: boolean;
    // (undocumented)
    relationshipName: string;
    // (undocumented)
    sourceClassName: string;
    // (undocumented)
    targetClassName: string;
}

// @public
export type StrippedRelationshipPath = StrippedRelatedClassInfo[];

// @public
export interface StructFieldMemberDescription {
    label: string;
    name: string;
    type: TypeDescription;
}

// @public
export interface StructTypeDescription extends BaseTypeDescription {
    members: StructFieldMemberDescription[];
    valueFormat: PropertyValueFormat.Struct;
}

// @public
export interface StyleOverride extends RuleBase, ConditionContainer {
    backColor?: string;
    condition?: string;
    fontStyle?: string;
    foreColor?: string;
    ruleType: RuleTypes.StyleOverride;
}

// @public
export interface SubCondition extends ConditionContainer {
    condition?: string;
    // @beta
    requiredSchemas?: RequiredSchemaSpecification[];
    specifications?: ChildNodeSpecification[];
    subConditions?: SubCondition[];
}

// @public
export type Subtract<T, K> = Omit<T, keyof K>;

// @public
export interface SupplementationInfo {
    supplementationPurpose: string;
}

// @alpha (undocumented)
export function traverseContent(visitor: IContentVisitor, content: Content): void;

// @alpha (undocumented)
export function traverseContentItem(visitor: IContentVisitor, descriptor: Descriptor, item: Item): void;

// @internal (undocumented)
export function traverseFieldHierarchy(hierarchy: FieldHierarchy, cb: (h: FieldHierarchy) => boolean): void;

// @public
export type TypeDescription = PrimitiveTypeDescription | ArrayTypeDescription | StructTypeDescription;

// @internal (undocumented)
export interface UnsetRulesetVariableParams extends CommonIpcParams {
    // (undocumented)
    rulesetId: string;
    // (undocumented)
    variableId: string;
}

// @alpha (undocumented)
export const UPDATE_FULL = "FULL";

// @internal (undocumented)
export interface UpdateHierarchyStateParams<TNodeKey> extends CommonIpcParams {
    // (undocumented)
    changeType: "nodesExpanded" | "nodesCollapsed";
    // (undocumented)
    imodelKey: string;
    // (undocumented)
    nodeKeys: Array<TNodeKey>;
    // (undocumented)
    rulesetId: string;
}

// @alpha (undocumented)
export interface UpdateInfo {
    // (undocumented)
    [imodel: string]: {
        [rulesetId: string]: {
            hierarchy?: HierarchyUpdateInfo;
            content?: ContentUpdateInfo;
        };
    };
}

// @alpha (undocumented)
export namespace UpdateInfo {
    export function fromJSON(json: UpdateInfoJSON): UpdateInfo;
    export function toJSON(obj: UpdateInfo): UpdateInfoJSON;
}

// @alpha (undocumented)
export interface UpdateInfoJSON {
    // (undocumented)
    [imodel: string]: {
        [rulesetId: string]: {
            hierarchy?: HierarchyUpdateInfoJSON;
            content?: ContentUpdateInfo;
        };
    };
}

// @public
export type Value = string | number | boolean | undefined | ValuesMap | ValuesArray | NestedContentValue[];

// @public (undocumented)
export namespace Value {
    export function fromJSON(json: ValueJSON): Value;
    export function isArray(value: Value): value is ValuesArray;
    export function isMap(value: Value): value is ValuesMap;
    export function isNestedContent(value: Value): value is NestedContentValue[];
    export function isPrimitive(value: Value): value is string | number | boolean | undefined;
    export function toJSON(value: Value): ValueJSON;
}

// @public
export type ValueJSON = string | number | boolean | null | ValuesMapJSON | ValuesArrayJSON | NestedContentValueJSON[];

// @public
export interface ValuesArray extends Array<Value> {
}

// @public
export interface ValuesArrayJSON extends Array<ValueJSON> {
}

// @public
export interface ValuesDictionary<T> {
    // (undocumented)
    [key: string]: T;
}

// @public
export interface ValuesMap extends ValuesDictionary<Value> {
}

// @public
export interface ValuesMapJSON extends ValuesDictionary<ValueJSON> {
}

// @public
export interface Variable {
    defaultValue?: string;
    id: string;
    label: string;
    type?: VariableValueType;
}

// @public
export interface VariablesGroup {
    label: string;
    nestedGroups?: VariablesGroup[];
    vars: Variable[];
}

// @public
export type VariableValue = boolean | string | number | number[] | Id64String | Id64String[];

// @public
export type VariableValueJSON = boolean | string | number | number[] | Id64String | Id64String[] | CompressedId64Set;

// @public
export enum VariableValueType {
    Int = "IntValue",
    ShowHide = "ShowHide",
    String = "StringValue",
    YesNo = "YesNo"
}

// @public
export enum VariableValueTypes {
    Bool = "bool",
    Id64 = "id64",
    Id64Array = "id64[]",
    Int = "int",
    IntArray = "int[]",
    String = "string"
}


// (No @packageDocumentation comment for this package)