export type SurveyAttemptEvent = 'first_interaction' | 'stage_entered' | 'stage_completed' | 'meaningful_activity'; export interface SurveyFlowStage { stageKey: string; stageLabel: string; } type AttemptFetch = typeof fetch; export declare const createSurveyFlowVersion: (stages: SurveyFlowStage[]) => string; export declare class SurveyAttemptTracker { private readonly endpoint; private readonly surveyType; private readonly attemptFetch; private attemptId; private surveyPublicKey; private flowVersion; private stages; private currentStage; private encounteredStageKeys; private completedStageKeys; private firstInteractionSent; private firstInteractionRequest; private lastMeaningfulActivityAt; constructor(endpoint: string, surveyType: string, attemptFetch?: AttemptFetch | null); reset(surveyPublicKey: string, stages?: SurveyFlowStage[]): void; configureFlow(stages: SurveyFlowStage[]): void; markFirstInteraction(): void; markStageEntered(stageKey: string): void; markStageCompleted(stageKey: string): void; markMeaningfulActivity(): void; waitForFirstInteraction(timeoutMs?: number): Promise; getSubmissionFields(): { attemptId: string; }; getFlowVersion(): string; private canSend; private findStage; private send; } export {};