/**
 * Core form state management with reactive field-level tracking
 */
import type { FieldConfig, FieldError, FieldState, FieldValue, FieldValues, FormConfig, FormInstance, FormState } from './types.js';
export declare class ReactiveForm implements FormInstance {
    private state;
    private fieldConfigs;
    private fieldStates;
    private subscribers;
    private fieldSubscribers;
    private validationTimeouts;
    private config;
    constructor(config?: FormConfig);
    private createInitialState;
    private createInitialFieldState;
    private notifySubscribers;
    private notifyFieldSubscribers;
    private validateFieldInternal;
    private updateFormValidity;
    private debounceValidation;
    getState(): FormState;
    getFieldState(name: string): FieldState | undefined;
    getValues(): FieldValues;
    getValue(name: string): FieldValue;
    getErrors(): Record<string, FieldError>;
    getError(name: string): FieldError | null;
    setValue(name: string, value: FieldValue, shouldValidate?: boolean): void;
    setValues(values: FieldValues, shouldValidate?: boolean): void;
    setError(name: string, error: FieldError): void;
    setErrors(errors: Record<string, FieldError>): void;
    clearError(name: string): void;
    clearErrors(): void;
    registerField(config: FieldConfig): () => void;
    unregisterField(name: string): void;
    touchField(name: string): void;
    untouchField(name: string): void;
    focusField(name: string): void;
    blurField(name: string): void;
    validateField(name: string): Promise<boolean>;
    validateForm(): Promise<boolean>;
    isValid(): boolean;
    isValidating(): boolean;
    submit(): Promise<void>;
    reset(values?: FieldValues): void;
    resetField(name: string, value?: FieldValue): void;
    isDirty(): boolean;
    isTouched(): boolean;
    isSubmitting(): boolean;
    hasBeenSubmitted(): boolean;
    getSubmitCount(): number;
    handleSubmit(event?: Event): Promise<void>;
    handleReset(event?: Event): void;
    handleFieldChange(name: string, value: FieldValue): void;
    handleFieldBlur(name: string): void;
    handleFieldFocus(name: string): void;
    subscribe(callback: (state: FormState) => void): () => void;
    subscribeToField(name: string, callback: (state: FieldState) => void): () => void;
}
/**
 * Create a new reactive form instance
 */
export declare function createForm(config?: FormConfig): FormInstance;
//# sourceMappingURL=form.d.ts.map