import { FieldBuilder } from "./FieldBuilder.mjs";
import InputsValidator from "../validate/InputsValidator.mjs";
import { EventChangeValue, EventField, FieldsProps, FieldsToObject, GetArrayValues, GetFieldsValue } from "../../types.mjs";

//#region src/utils/builders/FieldsBuilder.d.ts
declare class FieldsBuilder<Fields extends FieldBuilder<any>[]> extends InputsValidator<Fields> {
  private _ns?;
  get ns(): string | undefined;
  set ns(ns: string | undefined);
  actionsExtra?: object;
  get values(): GetFieldsValue<Fields>;
  constructor(props: FieldsProps<Fields>);
  private setField;
  restore(): void;
  getValues(): GetFieldsValue<Fields>;
  get<FieldName extends keyof FieldsToObject<Fields>>(fieldName: FieldName): FieldsToObject<Fields>[FieldName];
  getField<FieldName extends keyof FieldsToObject<Fields>>(fieldName: FieldName): FieldsToObject<Fields>[FieldName];
  onChangeField<FieldName extends keyof GetFieldsValue<Fields>>(event: EventField<GetFieldsValue<Fields>[FieldName], FieldName>): void;
  onChangeFields<Values extends GetFieldsValue<Fields>>(events: GetArrayValues<{ [Field in keyof Values]: EventField<Values[Field], Field> }>): void;
  changeValue<FieldName extends keyof GetFieldsValue<Fields>>({
    name,
    value
  }: EventChangeValue<GetFieldsValue<Fields>[FieldName], FieldName>): void;
  changeValues(events: { [K in keyof GetFieldsValue<Fields>]: EventChangeValue<GetFieldsValue<Fields>[K], K> }[keyof GetFieldsValue<Fields>][]): void;
  setValidation(validate: boolean): void;
}
//#endregion
export { FieldsBuilder, FieldsBuilder as default };