import { FormItemRule } from '../Rule/Props';
import { FORCE_PASS, IGNORE_VALIDATE, ValidType, PublishType } from './types';
import { FormDatumOptions, FormValid } from './Props';
import { ObjectType } from '../@types/common';
export default class<V extends ObjectType> {
    rules: FormDatumOptions<V>['rules'];
    onChange: FormDatumOptions<V>['onChange'];
    removeUndefined: FormDatumOptions<V>['removeUndefined'];
    $defaultValues: V;
    $inputNames: {
        [name: string]: boolean;
    };
    $values: Partial<V>;
    $validator: ObjectType<FormValid>;
    $events: ObjectType<((...args: any) => void)[]>;
    $errors: ObjectType;
    updateLock: boolean;
    deepSetOptions: {
        removeUndefined: boolean;
        forceSet: boolean;
    };
    formUnmount: boolean;
    constructor(options?: FormDatumOptions<V>);
    handleChange(): void;
    reset(): void;
    setLock(lock: boolean): void;
    get(name: string | (string[])): any;
    set(value: ObjectType): void;
    set(name: string | string[], value: any, pub?: boolean): void;
    setArrayValue(names: string[], values: any[]): void;
    insert(name: string, index: number, value: any): void;
    splice(name: string, index: number): void;
    remove(name: string): void;
    publishValue(name: string, type: PublishType): void;
    getError(name: string, firstHand?: boolean): any;
    resetFormError(error?: ObjectType<string | Error>): void;
    removeFormError(name: string): void;
    setFormError(name: string, error?: Error): void;
    setError(name: string, error?: Error, pub?: boolean): void;
    insertError(name: string, index: number, error?: Error): void;
    spliceError(name: string, index: number): void;
    publishError(name: string): void;
    getRule(name: string): FormItemRule<any>;
    getValue(): any;
    setValue(v?: any, type?: typeof IGNORE_VALIDATE | typeof FORCE_PASS, forceSet?: boolean): void;
    bind(name: string, fn: (...args: any) => void, value: any, validate: FormValid): void;
    unbind(name: string | string[], _cb?: any, reserveAble?: boolean): void;
    dispatch(name: string, ...args: any): void;
    subscribe(name: string, fn: (...args: any) => void): void;
    unsubscribe(name: string, fn?: (...args: any) => void): void;
    validate(type?: ValidType): Promise<unknown>;
    validateFieldsByName(name: string, type?: ValidType): Promise<unknown>;
    validateFields(names: string[], type?: ValidType): Promise<unknown>;
    validateClear(): void;
}
