import { Provider, Type } from '@angular/core';
import { ValidatorFn, UntypedFormControl } from '@angular/forms';
import * as i0 from "@angular/core";
export declare enum TdDynamicType {
    Text = "text",
    Boolean = "boolean",
    Number = "number",
    Array = "array",
    Date = "date"
}
export declare enum TdDynamicElement {
    Input = "input",
    Datepicker = "datepicker",
    Password = "password",
    Textarea = "textarea",
    Slider = "slider",
    SlideToggle = "slide-toggle",
    Checkbox = "checkbox",
    Select = "select",
    FileInput = "file-input"
}
export interface ITdDynamicElementValidator {
    validator: ValidatorFn;
}
export interface ITdDynamicElementCustomConfig {
    [name: string]: any;
}
export interface ITdDynamicElementConfig {
    label?: string;
    name: string;
    hint?: string;
    type: TdDynamicType | TdDynamicElement | Type<any>;
    required?: boolean;
    disabled?: boolean;
    min?: any;
    max?: any;
    minLength?: any;
    maxLength?: any;
    selections?: string[] | {
        value: any;
        label: string;
    }[];
    multiple?: boolean;
    default?: any;
    flex?: number;
    validators?: ITdDynamicElementValidator[];
    customConfig?: ITdDynamicElementCustomConfig;
    placeholder?: string;
}
export declare const DYNAMIC_ELEMENT_NAME_REGEX: RegExp;
export declare class TdDynamicFormsService {
    /**
     * Method to validate if the [name] is a proper element name.
     * Throws error if name is not valid.
     */
    validateDynamicElementName(name: string): void;
    /**
     * Gets component to be rendered depending on [TdDynamicElement | TdDynamicType]
     * Throws error if it does not exists or not supported.
     */
    getDynamicElement(element: TdDynamicElement | TdDynamicType | Type<any> | undefined): any;
    /**
     * Creates form control for element depending [ITdDynamicElementConfig] properties.
     */
    createFormControl(config: ITdDynamicElementConfig): UntypedFormControl;
    /**
     * Creates form validationdepending [ITdDynamicElementConfig] properties.
     */
    createValidators(config: ITdDynamicElementConfig): ValidatorFn | null;
    static ɵfac: i0.ɵɵFactoryDeclaration<TdDynamicFormsService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<TdDynamicFormsService>;
}
export declare function DYNAMIC_FORMS_PROVIDER_FACTORY(parent: TdDynamicFormsService): TdDynamicFormsService;
export declare const DYNAMIC_FORMS_PROVIDER: Provider;
