/** * Shared between the transactional email list and detail pages so both * render the same "unknown vs. zero" and provider-availability rules. */ export interface EmailEngagement { templateId: string; delivered: number; uniqueOpens: number; uniqueClicks: number; /** null when nothing was delivered in the window, so there is no rate yet. */ openRate: number | null; } export type ProviderMetricsResult = { available: true; data: T; } | { available: false; reason: string; }; /** * Renders a metric the backend could not read. "Unknown" and "zero" must stay * visibly different — a dash with a reason is the only honest rendering. */ export declare function UnknownMetric({ reason }: { reason: string; }): import("node_modules/@types/react").JSX.Element; export declare function SendsCell({ sent, failed, }: { sent: number | null; failed: number | null; }): import("node_modules/@types/react").JSX.Element; export declare function OpenRateCell({ engagement, unavailableReason, loading, }: { engagement: EmailEngagement | undefined; unavailableReason: string | null; loading: boolean; }): import("node_modules/@types/react").JSX.Element; export declare function LastSentCell({ lastSentAt, sent, }: { lastSentAt: number | null; sent: number | null; }): import("node_modules/@types/react").JSX.Element; //# sourceMappingURL=transactional-email-metrics.d.ts.map