import { OnInit, OnDestroy, ComponentFactoryResolver, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
import { FormItemDirective } from './form-item.directive';
import { FormItem, FormItemOptionItem } from './form-item';
import { FormItemString, FormItemStringComponent } from './form-item-string/form-item-string.component';
import { FormItemRating, FormItemRatingComponent } from './form-item-rating/form-item-rating.component';
import { FormItemText, FormItemTextComponent } from './form-item-text/form-item-text.component';
import { FormItemDate, FormItemDateComponent } from './form-item-date/form-item-date.component';
import { FormItemSegments, FormItemSegmentsComponent } from './form-item-segments/form-item-segments.component';
import { FormItemRadio, FormItemRadioComponent } from './form-item-radio/form-item-radio.component';
import { FormItemNumericRating, FormItemNumericRatingComponent } from './form-item-numeric-rating/form-item-numeric-rating.component';
import { FormItemSelect, FormItemSelectComponent } from './form-item-select/form-item-select.component';
import { FormItemOptionsEditor, FormItemOptionsEditorComponent } from './form-item-options-editor/form-item-options-editor.component';
import { FormItemCheckbox, FormItemCheckboxComponent } from './form-item-checkbox/form-item-checkbox.component';
import { FormItemFile, FormItemFileComponent } from './form-item-file/form-item-file.component';
import { FormItemVoice, FormItemVoiceComponent } from './form-item-voice/form-item-voice.component';
import { FormItemLabel, FormItemLabelComponent } from './form-item-label/form-item-label.component';
import * as i0 from "@angular/core";
export declare const FormItemTypes: {
    label: {
        component: typeof FormItemLabelComponent;
        model: typeof FormItemLabel;
        label: string;
    };
    string: {
        component: typeof FormItemStringComponent;
        model: typeof FormItemString;
        label: string;
    };
    text: {
        component: typeof FormItemTextComponent;
        model: typeof FormItemText;
        label: string;
    };
    rating: {
        component: typeof FormItemRatingComponent;
        model: typeof FormItemRating;
        label: string;
    };
    numericRating: {
        component: typeof FormItemNumericRatingComponent;
        model: typeof FormItemNumericRating;
        label: string;
    };
    segments: {
        component: typeof FormItemSegmentsComponent;
        model: typeof FormItemSegments;
        label: string;
    };
    radio: {
        component: typeof FormItemRadioComponent;
        model: typeof FormItemRadio;
        label: string;
    };
    select: {
        component: typeof FormItemSelectComponent;
        model: typeof FormItemSelect;
    };
    optionsEditor: {
        component: typeof FormItemOptionsEditorComponent;
        model: typeof FormItemOptionsEditor;
    };
    checkbox: {
        component: typeof FormItemCheckboxComponent;
        model: typeof FormItemCheckbox;
        label: string;
    };
    date: {
        component: typeof FormItemDateComponent;
        model: typeof FormItemDate;
        label: string;
    };
    file: {
        component: typeof FormItemFileComponent;
        model: typeof FormItemFile;
        label: string;
    };
    voice: {
        component: typeof FormItemVoiceComponent;
        model: typeof FormItemVoice;
        label: string;
    };
};
export declare function buildOption(optionValue: string, label: string): FormItemOptionItem;
export declare function buildField(type: string, data: any, required?: boolean): FormItem;
export declare class FormItemComponent implements OnInit, OnDestroy, OnChanges {
    private componentFactoryResolver;
    type: string;
    item: FormItem | FormItemString | FormItemRating | FormItemText | FormItemDate | FormItemSegments | FormItemRadio | FormItemNumericRating | FormItemSelect | FormItemOptionsEditor | FormItemCheckbox | FormItemFile | FormItemLabel;
    editable: boolean;
    isMobile: boolean;
    id: string;
    changes: EventEmitter<any>;
    itemHost: FormItemDirective;
    private subscription;
    constructor(componentFactoryResolver: ComponentFactoryResolver);
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    loadComponent(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<FormItemComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<FormItemComponent, "ngx-survey-form-item", never, { "type": { "alias": "type"; "required": false; }; "item": { "alias": "item"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "isMobile": { "alias": "isMobile"; "required": false; }; "id": { "alias": "id"; "required": false; }; }, { "changes": "changes"; }, never, never, false, never>;
}
