import { BehaviorSubject } from 'rxjs';
import { IModel } from './base';
import { ValidateOption, IMaybeError, IValidators } from '../validate';
import { Maybe } from '../maybe';
import { REF_ID } from './is';
declare class ModelRef<Value, Parent extends IModel<any>, Model extends IModel<Value>> implements IModel<Value> {
    initialValue: Maybe<Value>;
    [REF_ID]: boolean;
    patchedValue: Maybe<Value>;
    id: string;
    model$: BehaviorSubject<Model | null>;
    private _owner;
    get owner(): IModel<any> | null;
    set owner(owner: IModel<any> | null);
    get form(): import("./form").FormModel<import("..").UnknownFieldSetModelChildren>;
    constructor(current: Model | null, initialValue: Maybe<Value>, owner: Parent | null);
    get validators(): IValidators<Value>;
    set validators(validators: IValidators<Value>);
    getModel(): Model;
    setModel(model: Model | null): void;
    getParent(): IModel<any>;
    dirty(): boolean;
    touched(): boolean;
    validate(option?: ValidateOption): Promise<void>;
    getRawValue(): Value | null;
    pristine(): boolean;
    valid(): boolean;
    get error(): IMaybeError<Value>;
    set error(error: IMaybeError<Value>);
    patchValue(value: Value): void;
    initialize(value: Value): void;
    reset(): void;
    clear(): void;
    clearError(): void;
    dispose(): void;
    getSubmitValue(): void;
}
export { ModelRef };
