import { FieldBuilder } from "../builders/FieldBuilder.mjs";
import { FieldType, FieldsProps, FieldsToObject, ValidateInputsValidator, ValidationError } from "../../types.mjs";

//#region src/utils/validate/InputsValidator.d.ts
declare class InputsValidator<Fields extends FieldBuilder<any>[]> {
  valid: boolean;
  get invalid(): boolean;
  fields: Fields;
  fieldsMap: FieldsToObject<Fields>;
  _validate: ValidateInputsValidator<Fields>;
  get validate(): ValidateInputsValidator<Fields> | undefined;
  set validate(validate: ValidateInputsValidator<Fields> | undefined);
  constructor({
    fields,
    validate
  }: Pick<FieldsProps<Fields>, 'fields' | 'validate'>);
  callbackField(callback: (field: FieldBuilder<FieldType>, cancel: () => void) => void): Promise<Fields>;
  private validityBase;
  validity(): Promise<boolean>;
  hasErrors(params?: {
    setErrors?: boolean;
    throwFirstError?: boolean;
    validateDisabled?: boolean;
  }): Promise<boolean>;
  addErrors<Field extends Fields[number]>(errors: { [key in Field['name']]?: ValidationError[] }): void;
  setErrors<Field extends Fields[number]>(errors?: { [key in Field['name']]?: ValidationError[] }): void;
  getErrors(): Promise<{ [P in keyof FieldsToObject<Fields>]: FieldsToObject<Fields>[P]["errors"] }>;
}
//#endregion
export { InputsValidator as default };