import { BehaviorSubject, Observable } from 'rxjs';
import { FieldSetModel } from './set';
import { ValidateOption } from '../validate';
import type { UnknownFieldSetBuilderChildren, UnknownFieldSetModelChildren } from '../utils';
import { FORM_ID } from './is';
import type { FormBuilder } from '../builders/form';
declare enum FormStrategy {
    Model = 0,
    View = 1
}
declare class FormModel<Children extends UnknownFieldSetModelChildren = UnknownFieldSetModelChildren> extends FieldSetModel<Children> {
    readonly children: Children;
    [FORM_ID]: boolean;
    protected readonly _displayName = "FormModel";
    private readonly workingValidators;
    readonly isValidating$: BehaviorSubject<boolean>;
    readonly owner: this;
    readonly builder?: FormBuilder<UnknownFieldSetBuilderChildren>;
    get form(): FormModel<UnknownFieldSetModelChildren>;
    constructor(children: Children);
    validate(option?: ValidateOption): Promise<import("../validate").IValidateResult<any> | import("../validate").IValidateResult<any>[]>;
    addWorkingValidator(v: Observable<unknown>): void;
    removeWorkingValidator(v: Observable<unknown>): void;
    private updateIsValidating;
    dispose(): void;
}
export { FormStrategy, FormModel };
