import { FormRule, FormRules, FormTrigger } from './validators';

export interface FormEngine {
    registerField(prop: string, getRules: () => FormRule[]): void;
    unregisterField(prop: string): void;
    validate(): Promise<{
        valid: boolean;
        errors: Record<string, string>;
    }>;
    validateField(prop: string, trigger?: FormTrigger): Promise<string>;
    resetFields(): void;
    clearValidate(props?: string | string[]): void;
    subscribe(listener: (errors: Record<string, string>) => void): () => void;
    getFieldValue(prop: string): unknown;
    getError(prop: string): string;
}
export declare function createFormEngine(opts: {
    getModel: () => Record<string, unknown>;
    getFormRules: () => FormRules;
}): FormEngine;
