import { status } from '@synnaxlabs/client'; import { observe } from '@synnaxlabs/x'; import { z } from 'zod'; export interface FieldState { value: V; status: status.Crude; touched: boolean; required: boolean; } export interface RequiredGetOptions { optional?: false; defaultValue?: undefined; } export interface DefaultGetOptions { optional?: boolean; defaultValue: V; } export interface OptionalGetOptions { optional: true; defaultValue?: undefined; } export interface ExtensionGetOptions { optional?: boolean; defaultValue?: V; } export type GetOptions = RequiredGetOptions | OptionalGetOptions | DefaultGetOptions | ExtensionGetOptions; interface SetValueOptions { markTouched?: boolean; } export declare class State extends observe.Observer { private readonly schema?; values: z.infer; initialValues: z.infer; private readonly statuses; private readonly touched; private readonly cachedRefs; constructor(values: z.infer, schema?: Z); setValue(path: string, value: unknown, options?: SetValueOptions): void; private checkTouched; private clearOrphanedTouchedPaths; setStatus(path: string, status: status.Crude): void; clearStatus(path?: string): void; reset(initialValues?: z.infer): void; setCurrentStateAsInitialValues(): void; setTouched(path: string): void; clearTouched(path?: string): void; remove(path: string): void; validate(validateUntouched?: boolean, path?: string): boolean; validateAsync(validateUntouched?: boolean, path?: string): Promise; private errorsToStatuses; private processValidation; get hasBeenTouched(): boolean; getStatuses(): status.Crude[]; getState(path: string, opts?: RequiredGetOptions | DefaultGetOptions): FieldState; getState(path: string, opts?: OptionalGetOptions | ExtensionGetOptions): FieldState | null; private updateCachedRefs; } export {}; //# sourceMappingURL=state.d.ts.map