import { CdkDragDrop, CdkDragMove } from '@angular/cdk/drag-drop';
import { ChangeDetectorRef } from '@angular/core';
import { FormGroup } from '@angular/forms';
import { SdBaseSecureComponent } from '@sd-angular/core/components/base';
import { SdModal } from '@sd-angular/core/components/modal';
import { SdConfirmService, SdNotifyService } from '@sd-angular/core/services';
import { FormBuilderComponent, SdFormGenericComponent, SdFormGenericGroup, SdFormGenericVariable } from '../../models';
import { SdFormGenericValidation } from '../../models/form-generic-validation.model';
import { SdFormGeneric } from '../../models/form-generic.model';
import { SdFormRender } from '../form-render/form-render.component';
import { ConfigureValidationComponent } from './components/configure-validation/configure-validation.component';
import { BuilderService } from './services';
import * as i0 from "@angular/core";
interface DragDropRowItem {
    items: (SdFormGenericComponent | SdFormGenericGroup)[];
    rowIndex?: number;
}
export declare class SdFormBuilder extends SdBaseSecureComponent {
    #private;
    private ref;
    private notifyService;
    private confirmService;
    private builderService;
    popupViewJSON?: SdModal;
    popupConfigureVariables?: SdModal;
    configureValidation?: ConfigureValidationComponent;
    formRender?: SdFormRender;
    form: FormGroup<{}>;
    constructor(ref: ChangeDetectorRef, notifyService: SdNotifyService, confirmService: SdConfirmService, builderService: BuilderService);
    components: Required<SdFormGeneric>['components'];
    variables: Required<SdFormGeneric>['variables'];
    validations: Required<SdFormGeneric>['validations'];
    clonedVariables: SdFormGenericVariable[];
    set _formGeneric(formGeneric: SdFormGeneric);
    formBuilderComponents: FormBuilderComponent[];
    selectedComponent?: SdFormGenericComponent | SdFormGenericGroup;
    expand: boolean;
    dragDropRows: DragDropRowItem[];
    isDragging: boolean;
    targetItem?: DragDropRowItem;
    isPreview: boolean;
    ngOnInit(): void;
    ngOnDestroy(): void;
    addComponent: (item: FormBuilderComponent, index?: number) => void;
    removeComponent: (id: string) => void;
    selectComponent: (item?: SdFormGenericComponent | SdFormGenericGroup) => void;
    onClickedOutside: (e: any) => void;
    clickFormContentEmpty: () => void;
    drop: (event: CdkDragDrop<any[]>) => void;
    dragStartComponentItem: (event: any) => void;
    dragEndComponentItem: (event: any) => void;
    onMouseover: (event: MouseEvent, rowItem: DragDropRowItem) => void;
    onFocus: (event: FocusEvent) => void;
    xuLyKeoCheo: (dragItem?: SdFormGenericComponent | SdFormGenericGroup) => void;
    noReturnPredicate: () => boolean;
    changeSizeControl: (event: CdkDragMove<SdFormGenericComponent | SdFormGenericGroup>, item: SdFormGenericComponent | SdFormGenericGroup, items: (SdFormGenericComponent | SdFormGenericGroup)[], currentIndex: number) => Promise<void>;
    dragEndChangeSizeControl: (event: any) => void;
    onChangeViewed: (component: SdFormGenericComponent) => void;
    onChangeHidden: (component: SdFormGenericComponent | SdFormGenericGroup) => void;
    onDuplicate: (component: SdFormGenericComponent | SdFormGenericGroup) => void;
    jsonString?: string;
    viewJSON: () => void;
    updateJSON: () => void;
    configureVariables: () => void;
    addVariables: () => void;
    removeVariables: (id: string) => void;
    updateVariables: () => void;
    getComponents: () => (SdFormGenericComponent | SdFormGenericGroup)[];
    getVariables: () => SdFormGenericVariable[];
    getForm: () => SdFormGeneric;
    openConfigureValidation: () => void;
    onUpdateValidations: (validations: SdFormGenericValidation[]) => void;
    onValidate: () => Promise<void>;
    static ɵfac: i0.ɵɵFactoryDeclaration<SdFormBuilder, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SdFormBuilder, "sd-form-builder", never, { "_formGeneric": { "alias": "formGeneric"; "required": false; }; }, {}, never, never, true, never>;
}
export {};
