export declare const CONVERSATION_SOURCES: readonly ["whatsapp", "telegram", "signal", "linkedin-messages", "zoom-transcript", "meeting-minutes", "imessage", "slack", "x-dm", "email", "other"];
export type ConversationSource = (typeof CONVERSATION_SOURCES)[number];
export declare function isConversationSource(s: unknown): s is ConversationSource;
/**
 * One message after source-specific timestamp scanning. Identical shape across
 * every source. Bodies are the raw post-prefix remainder — for WhatsApp this
 * still carries the `Sender: ...` segment; the chat-mode classifier prompt
 * preserves these prefixes verbatim in chunk bodies.
 */
export interface ParsedLine {
    /** ISO 8601 instant with timezone offset (e.g. "2026-04-30T18:42:00+01:00"). */
    dateSent: string;
    /** Everything after the timestamp prefix; multi-line continuations glued on `\n`. */
    body: string;
    /** Position within the parsed sequence, 0-based. */
    sequenceIndex: number;
}
export interface NormaliserCounters {
    parsed: number;
    systemSkipped: number;
    mediaSkipped: number;
    parseErrors: number;
}
export interface NormaliserInput {
    /** Absolute path to the source file or directory the normaliser knows. */
    filePath: string;
    /** Account scope for any provenance composition. */
    accountId: string;
    /** IANA timezone the operator confirmed (e.g. "Europe/London"). */
    timezone: string;
    /**
     * Source-specific options. WhatsApp: `dateFormat`. Other sources may add
     * their own keys; unknown keys are ignored by every normaliser.
     */
    opts?: Record<string, unknown>;
}
export interface NormaliserResult {
    parsedLines: ParsedLine[];
    /** SHA-256 hex of the source file bytes (or the canonical digest the
     *  normaliser computes for non-file sources). */
    archiveSha256: string;
    /** Basename suitable for operator audit (e.g. "_chat.txt"). */
    archiveSourceFile: string;
    counters: NormaliserCounters;
}
export type ConversationNormaliser = (input: NormaliserInput) => Promise<NormaliserResult> | NormaliserResult;
//# sourceMappingURL=types.d.ts.map