/**
 * @fileoverview Pure data layer for the Realtime "Voice Transcripts" view. Loads the unified per-room
 * meeting transcripts the bridge writes (one `MJ: Conversations` of `Type='Meeting Room'` per room +
 * `MJ: Conversation Details` per utterance), and resolves each line's speaker — agent lines via `AgentID`,
 * heard ('User') lines via the diarized `ExternalID` → the room's `AIAgentSessionBridgeParticipant` roster
 * (DisplayName + IsAgent). No Angular imports — RunView(s) + client-side aggregation only.
 *
 * @module @memberjunction/ng-dashboards
 */
import { IMetadataProvider } from '@memberjunction/core';
/** One meeting-room transcript in the list view. */
export interface MeetingRoomSummary {
    ConversationID: string;
    Name: string;
    /** The room's external connection id (`ExternalID`) — the join key to the bridge/participant rows. */
    RoomKey: string;
    CreatedAt: Date;
    LastActivity: Date;
}
/** A speaker-attributed transcript line for the drill-in view. */
export interface TranscriptLine {
    ID: string;
    /** `'agent'` = an agent spoke; `'human'` = a human/participant spoke; `'error'` = an error row. */
    Kind: 'agent' | 'human' | 'error';
    /** Resolved display name of the speaker (agent name, participant name, or a sensible fallback). */
    Speaker: string;
    Message: string;
    At: Date;
}
/**
 * Loads the meeting-room transcript LIST (light — no per-room detail load). Newest activity first.
 *
 * @param provider The request-scoped metadata provider.
 * @param maxRows Cap on rooms returned (default 500).
 */
export declare function LoadMeetingRooms(provider: IMetadataProvider, maxRows?: number): Promise<MeetingRoomSummary[]>;
/**
 * Loads + speaker-attributes one room's transcript. Resolves agent lines via `AgentID` (AIEngine cache) and
 * heard lines via the diarized `ExternalID` against the room's participant roster (so a `User` line reads as
 * the actual person, and another agent heard in the room reads as that agent — not a generic "User").
 *
 * @param provider The request-scoped metadata provider.
 * @param conversationID The room conversation id.
 * @param roomKey The room's external id (to load its bridge participants for attribution).
 */
export declare function LoadRoomTranscript(provider: IMetadataProvider, conversationID: string, roomKey: string): Promise<TranscriptLine[]>;
/**
 * Resolves one raw detail row into a display-ready, speaker-attributed line — the diarization-attribution
 * core. Exported for unit testing (the maps are easy to construct directly, no RunView mocking needed).
 *
 * @param d The raw `MJ: Conversation Details` row.
 * @param participantNames `ExternalParticipantID(lower) → { name, isAgent }` from the room roster.
 * @param agentName `AgentID(lower) → agent name`.
 */
export declare function attributeLine(d: Record<string, unknown>, participantNames: Map<string, {
    name: string;
    isAgent: boolean;
}>, agentName: Map<string, string>): TranscriptLine;
//# sourceMappingURL=realtime-transcripts-data.d.ts.map