import type Database from 'better-sqlite3';
export interface CreateLeadData {
    email: string;
    name?: string;
    company?: string;
    metadata?: Record<string, unknown>;
    source?: string;
    source_detail?: string;
}
export interface LeadFilters {
    tag?: string;
    list?: string;
    status?: string;
    search?: string;
    source?: string;
    page?: number;
    limit?: number;
}
export interface Lead {
    id: string;
    email: string;
    name: string | null;
    company: string | null;
    metadata: string | null;
    status: string;
    source: string | null;
    source_detail: string | null;
    created_at: string;
    updated_at: string;
}
export declare class LeadService {
    private db;
    constructor(db: Database.Database);
    createLead(data: CreateLeadData): Lead;
    getLead(id: string): Lead | undefined;
    updateLead(id: string, data: Partial<CreateLeadData>): Lead | undefined;
    deleteLead(id: string): boolean;
    addTags(leadId: string, tags: string[]): void;
    removeTags(leadId: string, tags: string[]): void;
    getTagsForLead(leadId: string): string[];
    addToList(leadId: string, listName: string): void;
    removeFromList(leadId: string, listName: string): void;
    getListsForLead(leadId: string): string[];
    queryLeads(filters: LeadFilters): {
        data: Lead[];
        total: number;
    };
    unsubscribe(email: string): boolean;
    getListsWithCounts(): {
        list_name: string;
        count: number;
    }[];
    getTagsWithCounts(): {
        tag: string;
        count: number;
    }[];
    importBatch(leads: {
        email: string;
        name?: string;
        company?: string;
        metadata?: Record<string, unknown>;
    }[], sourceDetail: string, source: string): {
        imported: number;
    };
}
//# sourceMappingURL=lead-service.d.ts.map