import type { Database } from "bun:sqlite";
import type { Task } from "../types/index.js";
export type InboxSourceType = "pasted_error" | "ci_log" | "git_context" | "github_issue" | "file" | "other";
export type InboxStatus = "new" | "triaged" | "ignored";
export interface InboxItem {
    id: string;
    task_id: string | null;
    source_type: InboxSourceType;
    source_name: string | null;
    source_url: string | null;
    title: string;
    body: string | null;
    fingerprint: string;
    status: InboxStatus;
    metadata: Record<string, unknown>;
    created_at: string;
    updated_at: string;
}
export interface CreateInboxItemInput {
    title?: string;
    body: string;
    source_type?: InboxSourceType;
    source_name?: string;
    source_url?: string;
    metadata?: Record<string, unknown>;
    project_id?: string;
    task_list_id?: string;
    priority?: Task["priority"];
    tags?: string[];
    create_task?: boolean;
    status?: InboxStatus;
}
export declare function fingerprintInboxInput(input: Pick<CreateInboxItemInput, "body" | "source_type" | "source_url">): string;
export declare function detectInboxSourceType(body: string, sourceUrl?: string): InboxSourceType;
export declare function deriveInboxTitle(body: string, sourceType: InboxSourceType, sourceUrl?: string): string;
export declare function createInboxItem(input: CreateInboxItemInput, db?: Database): {
    item: InboxItem;
    task: Task | null;
    duplicate: boolean;
};
export declare function getInboxItem(id: string, db?: Database): InboxItem | null;
export declare function listInboxItems(opts?: {
    status?: InboxStatus;
    source_type?: InboxSourceType;
    limit?: number;
}, db?: Database): InboxItem[];
//# sourceMappingURL=inbox.d.ts.map