export type InboundChannel = 'slack' | 'discord' | 'telegram' | 'whatsapp' | 'email' | 'webhook';
export type TriageBucket = 'urgent' | 'reply_now' | 'draft' | 'digest' | 'ignore';
export interface InboundMessage {
    id: string;
    channel: InboundChannel;
    from: string;
    to?: string;
    subject?: string;
    body: string;
    receivedAt: string;
    threadId?: string;
    metadata?: Record<string, unknown>;
}
export interface TriageRule {
    /** Lowercased substring tested against body + subject + from. */
    match: string;
    bucket: TriageBucket;
    reason: string;
}
export interface TriageResult {
    message: InboundMessage;
    bucket: TriageBucket;
    reason: string;
    matchedRule?: TriageRule;
    suggestedReply?: string;
}
export interface TriageOptions {
    rules?: TriageRule[];
    /** Optional draft-reply generator. Skipped if not provided. */
    draftReply?: (message: InboundMessage, bucket: TriageBucket) => Promise<string | undefined>;
}
export declare function triageInboundMessage(message: InboundMessage, options?: TriageOptions): Promise<TriageResult>;
export interface TriageBatch {
    results: TriageResult[];
    counts: Record<TriageBucket, number>;
}
export declare function triageBatch(messages: InboundMessage[], options?: TriageOptions): Promise<TriageBatch>;
export interface InboundTriageStatus {
    pollersInstalled: string[];
    /** How many channels have a poller registered. Zero means feature is interface-only. */
    ready: boolean;
}
export declare function registerInboundPoller(channel: InboundChannel): void;
export declare function getInboundTriageStatus(): InboundTriageStatus;
//# sourceMappingURL=inboundTriage.d.ts.map