import { SmrtCollection, SmrtObject } from '@happyvertical/smrt-core'; import { SupportActorKind, SupportChannelKind, SupportInteractionDirection } from '../types.js'; export declare class SupportInteraction extends SmrtObject { tenantId: string | null; caseId: string; direction: SupportInteractionDirection; channelKind: SupportChannelKind; actorKind: SupportActorKind; /** Author identity when known (client contact, specialist, bot profile). */ authorProfileId: string | null; /** When the exchange happened on its channel (not when it was ingested). */ occurredAt: Date; /** Denormalized text body for the case timeline (source stays canonical). */ body: string; /** * Qualified class of the source transport record, e.g. * `@happyvertical/smrt-chat:ChatMessage` or * `@happyvertical/smrt-messages:Email`. Null for manual notes. */ sourceType: string | null; /** Id of the source transport record. Null for manual notes. */ sourceId: string | null; /** * Globally unique idempotency key for intake dedup (`conflictColumns`): * `chat:`, `email:`, or `manual:` for * service-authored notes. */ sourceKey: string; /** * RFC 822 Message-ID for email interactions — a first-class column so * reply threading (`In-Reply-To` joins) is a keyed lookup instead of a * bounded metadata scan. Empty for non-email interactions. */ rfcMessageId: string; metadata: string; getMetadata(): Record; setMetadata(value: Record): void; } export declare class SupportInteractionCollection extends SmrtCollection { static readonly _itemClass: typeof SupportInteraction; /** All interactions for a case in channel chronology (oldest first). */ forCase(caseId: string): Promise; /** Look up an interaction by its idempotency key. */ bySourceKey(sourceKey: string): Promise; /** Keyed lookup of an email interaction by its RFC 822 Message-ID. */ byRfcMessageId(rfcMessageId: string): Promise; } export default SupportInteraction; //# sourceMappingURL=support-interaction.d.ts.map