import type { BaseRoutingTrace, RoutingTrace } from "./RoutingTraceRepository.interface"; export interface RoutingTraceWithQueuedResponse extends BaseRoutingTrace { queuedFormResponseId: string; } export interface PendingRoutingTraceRecord { id: string; createdAt: Date; trace: RoutingTrace; formResponseId: number | null; queuedFormResponseId: string | null; } export interface IPendingRoutingTraceRepository { create(args: IPendingRoutingTraceRepositoryCreateArgs): Promise; findByFormResponseId(formResponseId: number): Promise; findByQueuedFormResponseId(queuedFormResponseId: string): Promise; /** Link a pending trace (created with queuedFormResponseId) to a formResponseId when the queued response is processed */ linkToFormResponse(args: { queuedFormResponseId: string; formResponseId: number }): Promise; } interface BaseCreateArgs { trace: RoutingTrace; } interface CreateWithFormResponse extends BaseCreateArgs { formResponseId: number; } interface CreateWithQueuedFormResponse extends BaseCreateArgs { queuedFormResponseId: string; } export type IPendingRoutingTraceRepositoryCreateArgs = CreateWithFormResponse | CreateWithQueuedFormResponse;