import Form, { FormEventName, FormErrors } from './Form';
declare const eventNames: {
    readonly replace: "replace";
    readonly setValues: "set values";
    readonly unsetValues: "unset values";
    readonly attachForms: "attach forms";
    readonly detachForms: "detach forms";
    readonly forceUpdate: "force update";
    readonly submit: "submit";
};
export declare type FormGroupEventName = typeof eventNames[keyof typeof eventNames];
declare type FormsValues<FormsFieldValues> = {
    [K in keyof FormsFieldValues]: any;
};
declare type FormsErrors<FormsFieldValues> = {
    [K in keyof FormsFieldValues]: FormErrors<FormsFieldValues[K]> | null;
};
declare type FormInstances<FormsFieldValues> = {
    [K in keyof FormsFieldValues]: Form<FormsFieldValues[K]>;
};
declare class FormGroup<FormsFieldValues extends {}> {
    private _events;
    forms: FormInstances<FormsFieldValues>;
    constructor(forms?: FormInstances<FormsFieldValues>);
    private _handleFormEvent;
    private _subscribe;
    private _unsubscribe;
    attachForms(forms: Partial<FormInstances<FormsFieldValues>>): void;
    detachForms(formNames: Array<keyof FormsFieldValues>): void;
    replace(newForms: FormInstances<FormsFieldValues>): void;
    forceUpdate(): void;
    validate(): Promise<boolean>;
    setValues(values: FormsValues<Partial<FormsFieldValues>>): void;
    getValues(): FormsValues<FormsFieldValues>;
    unsetValues(): void;
    getErrors(): FormsErrors<FormsFieldValues> | null;
    submit(): Promise<{
        values: FormsValues<FormsFieldValues>;
        errors: FormsErrors<FormsFieldValues> | null;
    }>;
    on(eventName: FormGroupEventName | FormEventName, handler: Function): void;
    off(eventName: FormGroupEventName | FormEventName, handler: Function): void;
}
export default FormGroup;
//# sourceMappingURL=FormGroup.d.ts.map