import { Q as QuestionType, m as ValidationCode } from './analytics-B1eUnjBp.cjs'; import './lifecycle.cjs'; import './i18n/keys.cjs'; type FormInteractionEventType = "form.viewed" | "form.started" | "page.viewed" | "page.completed" | "field.presented" | "field.focused" | "field.completed" | "validation.failed" | "form.submit_attempted" | "form.submitted" | "form.submit_failed" | "form.exited"; type FormTelemetryContextValue = string | number | boolean | null; interface FormInteractionEventBase { readonly eventId: string; readonly eventVersion: 1; readonly type: FormInteractionEventType; readonly sessionId: string; readonly sequence: number; readonly formId: string; readonly formVersion: number; readonly occurredAt: string; readonly elapsedMs: number; readonly context?: Readonly>; } interface FormViewedEvent extends FormInteractionEventBase { readonly type: "form.viewed"; } interface FormStartedEvent extends FormInteractionEventBase { readonly type: "form.started"; } interface PageViewedEvent extends FormInteractionEventBase { readonly type: "page.viewed"; readonly pageId: string; } interface PageCompletedEvent extends FormInteractionEventBase { readonly type: "page.completed"; readonly pageId: string; readonly durationMs?: number; } interface FieldPresentedEvent extends FormInteractionEventBase { readonly type: "field.presented"; readonly fieldId: string; readonly fieldType: QuestionType; readonly pageId?: string; } interface FieldFocusedEvent extends FormInteractionEventBase { readonly type: "field.focused"; readonly fieldId: string; readonly fieldType: QuestionType; readonly pageId?: string; } interface FieldCompletedEvent extends FormInteractionEventBase { readonly type: "field.completed"; readonly fieldId: string; readonly fieldType: QuestionType; readonly pageId?: string; readonly durationMs?: number; } interface ValidationFailedEvent extends FormInteractionEventBase { readonly type: "validation.failed"; readonly scope: "field" | "page" | "form"; readonly pageId?: string; readonly issues: readonly { readonly fieldId: string; readonly code: ValidationCode; }[]; } interface FormSubmitAttemptedEvent extends FormInteractionEventBase { readonly type: "form.submit_attempted"; } interface FormSubmittedEvent extends FormInteractionEventBase { readonly type: "form.submitted"; readonly durationMs?: number; } interface FormSubmitFailedEvent extends FormInteractionEventBase { readonly type: "form.submit_failed"; readonly code?: string; } interface FormExitedEvent extends FormInteractionEventBase { readonly type: "form.exited"; readonly reason?: "pagehide" | "unmount"; } type FormInteractionEvent = FormViewedEvent | FormStartedEvent | PageViewedEvent | PageCompletedEvent | FieldPresentedEvent | FieldFocusedEvent | FieldCompletedEvent | ValidationFailedEvent | FormSubmitAttemptedEvent | FormSubmittedEvent | FormSubmitFailedEvent | FormExitedEvent; interface FormTelemetryAdapter { track(event: FormInteractionEvent): void | Promise; flush?(): void | Promise; } export type { FieldCompletedEvent, FieldFocusedEvent, FieldPresentedEvent, FormExitedEvent, FormInteractionEvent, FormInteractionEventBase, FormInteractionEventType, FormStartedEvent, FormSubmitAttemptedEvent, FormSubmitFailedEvent, FormSubmittedEvent, FormTelemetryAdapter, FormTelemetryContextValue, FormViewedEvent, PageCompletedEvent, PageViewedEvent, ValidationFailedEvent };