import { AfterViewInit, DestroyRef, EventEmitter, ViewContainerRef } from '@angular/core';
import { ControlValueAccessor, FormControl, FormGroup } from '@angular/forms';
import { MatDialog } from '@angular/material/dialog';
import { AggregationRole, CalculationProperty, CalculationType, DataSettings, Dimension, DisplayBehaviour, EntityType, isVisible, LevelProperty, Measure, Member, OrderDirection, Property, PropertyHierarchy, Syntax, ParameterProperty, RuntimeLevelType } from '@metad/ocap-core';
import { BehaviorSubject, Observable } from 'rxjs';
import { PropertyAttributes } from '@metad/ocap-core';
import { DisplayDensity, NgmDSCoreService, NgmOcapCoreService } from '@metad/ocap-angular/core';
import { PropertyCapacity } from '../types';
import * as i0 from "@angular/core";
export declare class NgmPropertySelectComponent implements ControlValueAccessor, AfterViewInit {
    #private;
    AggregationRole: typeof AggregationRole;
    DISPLAY_BEHAVIOUR: typeof DisplayBehaviour;
    DisplayDensity: typeof DisplayDensity;
    CalculationType: typeof CalculationType;
    isVisible: typeof isVisible;
    LevelType: typeof RuntimeLevelType;
    isPropertySelect: boolean;
    readonly _dialog?: MatDialog;
    readonly _viewContainerRef: ViewContainerRef;
    readonly _destroyRef: DestroyRef;
    readonly coreService: NgmOcapCoreService;
    readonly DISPLAY_BEHAVIOUR_LIST: {
        value: string;
        label: string;
    }[];
    /**
    |--------------------------------------------------------------------------
    | Inputs and Outputs
    |--------------------------------------------------------------------------
    */
    readonly label: import("@angular/core").InputSignal<string>;
    readonly capacities: import("@angular/core").InputSignal<PropertyCapacity[]>;
    readonly required: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
    readonly editable: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
    readonly showAttributes: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
    readonly dataSettings: import("@angular/core").InputSignal<DataSettings>;
    readonly dataSettings$: Observable<DataSettings>;
    readonly entityType: import("@angular/core").InputSignal<EntityType>;
    readonly restrictedDimensions: import("@angular/core").InputSignal<string[]>;
    readonly restrictedDimensions$: Observable<string[]>;
    readonly dsCoreService: import("@angular/core").InputSignal<NgmDSCoreService>;
    readonly syntax: import("@angular/core").InputSignal<Syntax>;
    readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
    readonly displayDensity: import("@angular/core").InputSignal<string>;
    valueChange: EventEmitter<any>;
    calculationChange: EventEmitter<any>;
    private _propertySelect;
    readonly keyControl: FormControl<any>;
    readonly formGroup: FormGroup<{
        name: FormControl<string>;
        caption: FormControl<string>;
        dimension: FormControl<string>;
        hierarchy: FormControl<string>;
        level: FormControl<string>;
        exclude: FormControl<boolean>;
        members: FormControl<Member[]>;
        measure: FormControl<string>;
        properties: FormControl<any>;
        memberCaption: FormControl<string>;
        displayBehaviour: FormControl<DisplayBehaviour>;
        displayHierarchy: FormControl<boolean>;
        unbookedData: FormControl<boolean>;
        zeroSuppression: FormControl<boolean>;
        formatting: FormControl<any>;
        parameter: FormControl<any>;
        order: FormControl<OrderDirection>;
    }>;
    private readonly _formValue;
    searchControl: FormControl<string>;
    get search(): string;
    readonly _disabled: import("@angular/core").WritableSignal<boolean>;
    readonly entityTypeLoading: import("@angular/core").WritableSignal<boolean>;
    readonly entityTypeError: import("@angular/core").WritableSignal<string>;
    readonly _entityType: import("@angular/core").Signal<EntityType>;
    readonly entityType$: Observable<EntityType>;
    /**
     * 包含 parameters 字段们
     */
    readonly entityProperties$: Observable<Array<PropertyAttributes>>;
    readonly entityProperties: import("@angular/core").Signal<PropertyAttributes[]>;
    readonly parameters$: Observable<ParameterProperty[]>;
    readonly dimensions$: Observable<Array<Property>>;
    readonly property$: BehaviorSubject<Property>;
    readonly property: import("@angular/core").Signal<Property>;
    readonly hierarchies$: Observable<Array<PropertyHierarchy>>;
    readonly hierarchy$: Observable<PropertyHierarchy>;
    readonly levels$: Observable<import("@metad/ocap-core").PropertyLevel[]>;
    readonly level$: Observable<import("@metad/ocap-core").PropertyLevel>;
    readonly properties$: Observable<LevelProperty[]>;
    readonly labels$: Observable<LevelProperty[]>;
    readonly measures$: Observable<Property[]>;
    readonly notCalculations$: Observable<Property[]>;
    /**
     * Calculation measures exclude indicator measure
     */
    readonly measures: import("@angular/core").Signal<Property[]>;
    readonly calculations: import("@angular/core").Signal<Property[]>;
    readonly measureControls: import("@angular/core").Signal<import("@metad/ocap-core").MeasureControlProperty[]>;
    readonly isMeasure$: Observable<boolean>;
    readonly isMeasure: import("@angular/core").Signal<boolean>;
    /**
     * Calculation property exclude indicator measure property
     */
    readonly calculationProperty: import("@angular/core").Signal<CalculationProperty>;
    readonly isParameter: import("@angular/core").Signal<boolean>;
    readonly isVariable: import("@angular/core").Signal<boolean>;
    readonly isDimension: import("@angular/core").Signal<boolean>;
    readonly showDisplayAs: import("@angular/core").Signal<boolean>;
    readonly indicators$: Observable<import("@metad/ocap-core").RestrictedMeasureProperty[]>;
    private readonly _members;
    readonly membersSignal: import("@angular/core").Signal<{
        selected: boolean;
        formatting?: {
            shortNumber?: boolean;
            decimal?: number;
            digitsInfo?: string;
            unit?: string;
            useUnderlyingUnit?: boolean;
            currencyCode?: string;
        };
        column?: string;
        aggregator?: string;
        formatString?: string;
        measureExpression?: import("@metad/ocap-core").SQLExpression;
        entity?: string;
        description?: string;
        dataType?: string;
        semantic?: import("@metad/ocap-core").Semantics;
        formatter?: string;
        semantics?: {
            semantic?: import("@metad/ocap-core").Semantics;
            formatter?: string;
            hidden?: boolean;
        };
        text?: string | import("@metad/ocap-core").EntityProperty;
        unit?: string | import("@metad/ocap-core").EntityProperty;
        memberCaption?: string;
        dimension?: string;
        members?: Member[];
        caption?: string;
        __id__?: string;
        uniqueName?: string;
        name: string;
        role?: AggregationRole;
        rt?: boolean;
        visible?: boolean;
    }[]>;
    readonly label$: Observable<{
        icon: any;
        label: any;
    }>;
    private readonly selectTrigger$;
    readonly selectTrigger: import("@angular/core").Signal<Property | PropertyHierarchy | import("@metad/ocap-core").PropertyLevel>;
    get caption(): string;
    set caption(value: string);
    get dimensionControl(): import("@angular/forms").AbstractControl<string, string>;
    readonly dimension: import("@angular/core").Signal<string>;
    get hierarchyControl(): import("@angular/forms").AbstractControl<string, string>;
    get hierarchy(): string;
    set hierarchy(value: string);
    get level(): string;
    set level(value: string);
    get exclude(): boolean;
    set exclude(exclude: boolean);
    get members(): Member[];
    set members(value: Member[]);
    get properties(): any;
    set properties(value: any);
    get memberCaption(): string;
    set memberCaption(memberCaption: string);
    get displayHierarchy(): boolean;
    set displayHierarchy(value: boolean);
    get displayBehaviour(): DisplayBehaviour;
    set displayBehaviour(value: DisplayBehaviour);
    get unbookedData(): boolean;
    set unbookedData(value: boolean);
    get zeroSuppression(): boolean;
    set zeroSuppression(value: boolean);
    get parameter(): any;
    set parameter(value: any);
    get order(): OrderDirection;
    set order(value: OrderDirection);
    readonly showDimension: import("@angular/core").Signal<boolean>;
    readonly showMeasure: import("@angular/core").Signal<boolean>;
    readonly showParameter: import("@angular/core").Signal<boolean>;
    readonly showMeasureControl: import("@angular/core").Signal<boolean>;
    readonly showMeasureAttributes: import("@angular/core").Signal<boolean>;
    readonly showOrder: import("@angular/core").Signal<boolean>;
    readonly showMore: import("@angular/core").WritableSignal<boolean>;
    private onChange;
    private onTouched;
    readonly dimensionError: import("@angular/core").WritableSignal<string>;
    readonly error: import("@angular/core").Signal<string>;
    /**
     * When dimension changed
     */
    private keySub;
    private hierarchySub;
    constructor();
    writeValue(obj: any): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    setDisabledState?(isDisabled: boolean): void;
    ngAfterViewInit(): void;
    patchValue(value: string | Measure | Dimension): void;
    trackByName(index: any, item: any): any;
    filterLevels(hierarchy: PropertyHierarchy): import("@metad/ocap-core").PropertyLevel[];
    patchCalculationProperty(property: CalculationProperty): void;
    toggleMember(name: string, checked: boolean): void;
    selectMembers(event: any): Promise<void>;
    onCreateCalculation(event: any, calculationType?: CalculationType): Promise<void>;
    openEditCalculation(calculationProperty: CalculationProperty): Promise<void>;
    openFormatting(event: any): Promise<void>;
    /**
     * 为 Restricted Measure 创建 Restrict Dimension Input Control
     * Restrict Dimension Input Control: members 成员只取来源于相应 Input Control 的值
     */
    createCalcInputControl(event: any): Promise<void>;
    openCreateParameter(): Promise<void>;
    openEditParameter(name?: string): Promise<void>;
    focus(options?: FocusOptions): void;
    /**
     * Prevent space keydown event to trigger select panel open when searching
     *
     * @param event
     */
    onSearchKeydown(event: KeyboardEvent): void;
    getTranslation(key: string, params?: any): any;
    static ɵfac: i0.ɵɵFactoryDeclaration<NgmPropertySelectComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NgmPropertySelectComponent, "ngm-property-select", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "capacities": { "alias": "capacities"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "showAttributes": { "alias": "showAttributes"; "required": false; "isSignal": true; }; "dataSettings": { "alias": "dataSettings"; "required": false; "isSignal": true; }; "entityType": { "alias": "entityType"; "required": false; "isSignal": true; }; "restrictedDimensions": { "alias": "restrictedDimensions"; "required": false; "isSignal": true; }; "dsCoreService": { "alias": "dsCoreService"; "required": false; "isSignal": true; }; "syntax": { "alias": "syntax"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "displayDensity": { "alias": "displayDensity"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "calculationChange": "calculationChange"; }, never, ["[ngmPrefix]", "[ngmSuffix]", "*"], true, never>;
}
export declare function filterProperty(properties: Property[], text: string): Property[];
