export declare const SOURCE_TYPES: readonly ["gmail", "monday_api", "monday_chrome", "demo"];
export type SourceType = (typeof SOURCE_TYPES)[number];
export declare const DECISIONS: readonly ["pending", "approved", "ignored", "auto_ignored"];
export type Decision = (typeof DECISIONS)[number];
export declare const STATUSES: readonly ["none", "approved", "claimed", "created", "in_progress", "completed", "failed"];
export type Status = (typeof STATUSES)[number];
export interface AttachmentMeta {
    filename: string;
    mimeType?: string;
    size?: number;
    sourceRef?: string;
    url?: string;
}
export interface IntakeItem {
    id: string;
    source_type: SourceType;
    source_account: string | null;
    source_external_id: string;
    source_url: string | null;
    sender_id: string | null;
    sender_name: string | null;
    sender_email: string | null;
    client_project: string | null;
    title: string;
    body: string;
    metadata: Record<string, unknown>;
    attachments: AttachmentMeta[];
    parse_warnings: string[];
    raw_payload: unknown;
    received_at: string;
    ingested_at: string;
    decision: Decision;
    status: Status;
    maj_wp_ticket_id: string | null;
    remote_status: string | null;
    remote_message: string | null;
    last_sync_at: string | null;
    error: string | null;
    claim_token: string | null;
    claim_expires_at: string | null;
    claimed_by: string | null;
    idempotency_key: string;
}
export interface IgnoredSender {
    id: string;
    sender_type: 'email' | 'monday_user';
    sender_key: string;
    sender_label: string | null;
    reason: string | null;
    created_at: string;
    active: boolean;
}
export interface IngestInput {
    source_type: SourceType;
    source_account?: string | null;
    source_external_id: string;
    source_url?: string | null;
    sender_id?: string | null;
    sender_name?: string | null;
    sender_email?: string | null;
    client_project?: string | null;
    title: string;
    body?: string;
    metadata?: Record<string, unknown>;
    attachments?: AttachmentMeta[];
    parse_warnings?: string[];
    raw_payload?: unknown;
    received_at?: string;
}
export interface IntakeListFilters {
    decision?: Decision | Decision[];
    status?: Status | Status[];
    source_type?: SourceType;
    limit?: number;
    offset?: number;
}
export declare function isTerminalStatus(status: Status): boolean;
export declare function canClaim(item: Pick<IntakeItem, 'decision' | 'status' | 'claim_expires_at'>): boolean;
