export interface Document {
    id: number;
    dropbox_path: string;
    name: string;
    mime_type: string;
    size: number;
    created_time: string;
    modified_time: string;
    ai_model: string;
    ai_processing_time_ms?: number;
    doc_type: string;
    synopsis: string;
    confidence_score: number;
    indexed_at: string;
    updated_at: string;
}
export interface DocumentInsert {
    dropbox_path: string;
    name: string;
    mime_type: string;
    size: number;
    created_time: string;
    modified_time: string;
    ai_model: string;
    ai_processing_time_ms?: number;
    doc_type: string;
    synopsis: string;
    confidence_score: number;
}
export interface Contract {
    id: number;
    document_id: number;
    contract_number?: string;
    contract_type?: string;
    effective_date?: string;
    expiration_date?: string;
    auto_renewal?: boolean;
    notice_period_days?: number;
    total_value?: number;
    currency?: string;
    payment_terms?: string;
    governing_law?: string;
    created_at: string;
}
export interface ContractParty {
    id: number;
    contract_id: number;
    party_name: string;
    party_role: string;
    created_at: string;
}
export interface Invoice {
    id: number;
    document_id: number;
    invoice_number?: string;
    invoice_date?: string;
    due_date?: string;
    supplier_name?: string;
    supplier_address?: string;
    customer_name?: string;
    customer_address?: string;
    subtotal?: number;
    tax_amount?: number;
    total_amount?: number;
    currency?: string;
    payment_status?: string;
    payment_method?: string;
    created_at: string;
}
export interface InvoiceItem {
    id: number;
    invoice_id: number;
    description?: string;
    quantity?: number;
    unit_price?: number;
    total_price?: number;
    created_at: string;
}
export interface Proposal {
    id: number;
    document_id: number;
    proposal_number?: string;
    proposal_date?: string;
    client_name?: string;
    project_title?: string;
    total_value?: number;
    currency?: string;
    validity_period?: string;
    timeline?: string;
    created_at: string;
}
export interface Report {
    id: number;
    document_id: number;
    report_title?: string;
    report_date?: string;
    report_type?: string;
    author?: string;
    period_covered?: string;
    created_at: string;
}
export declare class DocumentDatabase {
    private db;
    private dbPath;
    constructor(dbPath?: string);
    private initializeSchema;
    private createLegacyTables;
    getDocumentByDropboxPath(path: string): Promise<Document | null>;
    insertDocument(doc: DocumentInsert): Promise<number>;
    insertDocumentsBatch(docs: DocumentInsert[]): Promise<number[]>;
    batchStoreTypeSpecificData(dataEntries: Array<{
        docId: number;
        analysisResult: any;
    }>): Promise<void>;
    private batchInsertDocumentType;
    private getTableNameForType;
    private batchInsertInvoices;
    private batchInsertContracts;
    private batchInsertProposals;
    private batchInsertReports;
    searchDocuments(query: string, docType?: string, limit?: number): Promise<Document[]>;
    deleteDocument(id: number): Promise<void>;
    insertContract(documentId: number, contract: Partial<Contract>): Promise<number>;
    insertContractParties(contractId: number, parties: Array<{
        party_name: string;
        party_role: string;
    }>): Promise<void>;
    getExpiringContracts(days?: number): Promise<any[]>;
    insertInvoice(documentId: number, invoice: Partial<Invoice>): Promise<number>;
    insertInvoiceItems(invoiceId: number, items: Array<Partial<InvoiceItem>>): Promise<void>;
    getOverdueInvoices(): Promise<any[]>;
    insertProposal(documentId: number, proposal: Partial<Proposal>): Promise<number>;
    insertReport(documentId: number, report: Partial<Report>): Promise<number>;
    getDocumentStats(): Promise<any>;
    close(): void;
}
declare let documentDb: DocumentDatabase;
export { documentDb };
