import * as _ngx_formly_core from '@ngx-formly/core';
import { FormlyFieldConfig, FormlyFormOptions } from '@ngx-formly/core';
import * as i0 from '@angular/core';
import { Injector, OnInit, AfterViewInit, Type, EventEmitter } from '@angular/core';
import { FormGroup } from '@angular/forms';

declare abstract class BaseObjectMapping {
    private formlyFieldCfg;
    private destroy$;
    constructor(config: MappingConfig);
    getFormlyFieldConfig(): FormlyFieldConfig<_ngx_formly_core.FormlyFieldProps & {
        [additionalProperties: string]: any;
    }>;
}

declare class MeasurementObjectMapping extends BaseObjectMapping {
    constructor(_injector?: Injector, measurementKey?: string, smallFormGroup?: boolean, tooltip?: string, fieldGroup?: FormlyFieldConfig[]);
}

declare class EventObjectMapping extends BaseObjectMapping {
    constructor(_injector?: Injector, eventKey?: string, smallFormGroup?: boolean, tooltip?: string, fieldGroup?: FormlyFieldConfig[]);
}

declare class AlarmObjectMapping extends BaseObjectMapping {
    constructor(_injector?: Injector, alarmKey?: string, smallFormGroup?: boolean, tooltip?: string, fieldGroup?: FormlyFieldConfig[]);
}

type MappingConfig = {
    icon: string;
    label: string;
    tooltip?: string;
    formlyFieldConfig?: FormlyFieldConfig;
    disabled?: (config?: FormlyFieldConfig) => boolean;
    buttonType?: 'checkbox' | 'switch' | 'none';
};
declare const ALARM_SEVERITY: {
    WARNING: "WARNING";
    MINOR: "MINOR";
    MAJOR: "MAJOR";
    CRITICAL: "CRITICAL";
};
declare const ALARM_STATUS: {
    ACTIVE: "ACTIVE";
    ACKNOWLEDGED: "ACKNOWLEDGED";
    CLEARED: "CLEARED";
};

declare class ObjectMappingComponent implements OnInit, AfterViewInit {
    private injector;
    model: unknown;
    objectMappingTypes: Type<BaseObjectMapping>[];
    onUpdate: EventEmitter<ObjectMappingsValidationObject>;
    form: FormGroup<{}>;
    fields: FormlyFieldConfig[];
    options: FormlyFormOptions;
    constructor(injector: Injector);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    onChange(_event: any): void;
    private fillFormlyForm;
    static ɵfac: i0.ɵɵFactoryDeclaration<ObjectMappingComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ObjectMappingComponent, "c8y-device-protocol-object-mappings", never, { "model": { "alias": "data"; "required": false; }; "objectMappingTypes": { "alias": "objectMappingTypes"; "required": false; }; }, { "onUpdate": "onUpdate"; }, never, never, true, never>;
}

type ObjectMappingsValidationObject = {
    dirty: boolean;
    touched: boolean;
    valid: boolean;
};

export { ALARM_SEVERITY, ALARM_STATUS, AlarmObjectMapping, BaseObjectMapping, EventObjectMapping, MeasurementObjectMapping, ObjectMappingComponent };
export type { MappingConfig, ObjectMappingsValidationObject };
//# sourceMappingURL=index.d.ts.map
