import type { Payload } from '@xyo-network/sdk'; import { AbstractControl } from './control/index.js'; import type { ErrorSummary } from './InputError.js'; import type { FormGroupStorage } from './storage/index.js'; /** Payload that may include a `timestamp` used for storage TTL checks. */ export type PayloadWithTimestamp = Payload<{ timestamp?: number; }>; /** String-key subset of `keyof T`, or `never` when keys are not strings. */ export type KeyOfString = keyof T extends string ? keyof T : never; type FormGroupErrors = Record, string>; /** Construction options for {@link FormGroup}, including optional persistence. */ export interface FormGroupParams { serialize?: boolean; storage?: { sensitive?: FormGroupStorage; storage?: FormGroupStorage; }; ttlStorage?: number; } /** * Organize form controls in a group. * * NOTE: This is a work in progress and only supports top level controls. Nested controls are not supported. */ export declare class FormGroup extends AbstractControl { private _controls; private fgParams?; private serializeListeners; private serializedSensitiveState; private serializedState; constructor(fgParams?: FormGroupParams); get errorSummary(): ErrorSummary; get errors(): FormGroupErrors; get nonSensitiveStorage(): FormGroupStorage | undefined; get sensitiveStorage(): FormGroupStorage | undefined; get touched(): boolean; get valid(): boolean; get values(): TValue; getControl(name: string): Record, AbstractControl>[KeyOfString]; getSerializedValue(name: string, sensitive?: boolean): Promise; registerControl(name: string, control: AbstractControl): void; resetControls(): void; resetValues(): void; unregisterControl(name: string): void; validateFields(requiredFields?: string[]): void; private serializeControlValue; private serializeValues; private setStateValueFromStorage; } export {}; //# sourceMappingURL=FormGroup.d.ts.map