import { InjectionKey } from 'vue';
import { BaseFormPayload, CustomInstance, ExtractModelKey, FieldsStates, FieldState, FormContext, FormFieldOptions, FormSchema, StrictOptions } from './types';
export declare function getFieldState<Model extends BaseFormPayload = BaseFormPayload, ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>, FieldType = Model[ModelKey]>({ name, schema, initialValue, fieldState, options, }: {
    name: ModelKey;
    schema?: FormSchema<Model>;
    initialValue?: FieldType;
    fieldState: FieldState<Model, ModelKey, FieldType>;
    options?: Pick<StrictOptions<Model, ModelKey>, 'debouncedFields' | 'throttledFields' | 'mode'>;
}): FieldState<Model, ModelKey, FieldType>;
export declare function fieldHasValidation<Model extends BaseFormPayload, ModelKey extends ExtractModelKey<FormSchema<Model>>>(field: ModelKey, schema: FormSchema<Model>): boolean;
export declare function getFieldsStates<Model extends BaseFormPayload, ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>>({ schema, payload, options, }: {
    schema: FormSchema<Model>;
    payload: Partial<Model>;
    options: StrictOptions<Model, ModelKey>;
}): FieldsStates<Model, ModelKey>;
export declare function updateFieldsStates<Model extends BaseFormPayload, ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>>({ fieldsStates, payload, schema, options, updateMode, }: {
    fieldsStates: FieldsStates<Model, ModelKey>;
    payload: Model;
    schema: FormSchema<Model>;
    options: StrictOptions<Model, ModelKey>;
    updateMode?: boolean;
}): void;
export declare function updateFieldState<Model extends BaseFormPayload, ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>, FieldType = Model[ModelKey]>({ name, fieldState, payload, schema, options, updateMode, }: {
    name: ModelKey;
    fieldState: FieldState<Model, ModelKey, FieldType>;
    payload: Model;
    schema: FormSchema<Model>;
    options: FormFieldOptions<Model, ModelKey, FieldType> & StrictOptions<Model, ModelKey>;
    updateMode?: boolean;
}): {
    blurred: boolean;
    dirty: boolean;
    error: boolean;
    errors: import('./types').ValidationIssues;
    valid: boolean;
    validating: boolean;
    validated: boolean;
    validateFunction: ((args_0: {
        name: ModelKey;
        fieldState: FieldState<Model, ModelKey, Model[ModelKey]>;
        schema: FormSchema<Model>;
        payload: Model;
        setError?: boolean;
        setErrorIfInvalidAndNotEmpty?: boolean;
    }) => Promise<void>) | undefined;
    initialValue: Readonly<FieldType> | undefined;
    mode: "blur" | "eager" | "lazy" | "aggressive" | "progressive" | undefined;
};
export declare function canExecuteValidation<Model extends BaseFormPayload, ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>, FieldType = Model[ModelKey]>({ eventName, fieldState, isSubmitted, }: {
    eventName: 'blur' | 'input';
    fieldState: FieldState<Model, ModelKey, FieldType>;
    isSubmitted: boolean;
}): boolean;
export declare function handleFieldBlur<Model extends BaseFormPayload, ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>, FieldType = Model[ModelKey]>({ name, force, payload, fieldState, schema, isSubmitted, }: {
    name: ModelKey;
    payload: Model;
    fieldState: FieldState<Model, ModelKey, FieldType>;
    schema: FormSchema<Model>;
    isSubmitted: boolean;
    force?: boolean;
}): Promise<void> | undefined;
export declare function handleFieldInput<Model extends BaseFormPayload, ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>, FieldType = Model[ModelKey]>({ name, payload, fieldState, schema, isSubmitted, forceValidation, }: {
    name: ModelKey;
    payload: Model;
    fieldState: FieldState<Model, ModelKey, FieldType>;
    schema: FormSchema<Model>;
    isSubmitted: boolean;
    forceValidation?: boolean;
}): Promise<void> | undefined;
export declare function hasModeIncludes<Model extends BaseFormPayload, ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>>(modes: StrictOptions<Model, ModelKey>['mode'][], value?: StrictOptions<Model, ModelKey>['mode']): value is StrictOptions<Model, ModelKey>['mode'];
export declare function getInstance<Model extends BaseFormPayload, ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>>(composableName: string): CustomInstance<Model, ModelKey>;
export declare function getContext<Model extends BaseFormPayload, ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>>(identifier: string | symbol | InjectionKey<FormContext<Model, ModelKey>>, composableName: string): FormContext<Model, ModelKey>;
