import { Type } from '@angular/core';
import { CustomControlMapper } from '../interfaces';
import { ControlVisitor } from './control-visitor';
import { FormArrayMetadata } from './form-array-metadata';
import { FormControlMetadata } from './form-control-metadata';
import { FormGroupMetadata } from './form-group-metadata';
import { ValidableMetadata, ValidationOpts } from './validable-metadata';
declare type FormPropertyMetadata = FormControlMetadata | FormGroupMetadata | FormArrayMetadata;
export declare class FormMetadata extends ValidableMetadata {
    readonly type: Type<any>;
    private _controls;
    constructor(type: Type<any>);
    accept<T>(visitor: ControlVisitor<T>): T;
    get controls(): {
        [key: string]: FormPropertyMetadata;
    };
    setFormControl(name: string, opts: ValidationOpts): void;
    setFormGroup(name: string, form: FormMetadata): void;
    setCustomControl(name: string, mapper: Type<CustomControlMapper>, opts: ValidationOpts): void;
    setFormArray(name: string, itemform: FormMetadata, opts: ValidationOpts): void;
}
export {};
