import type { Invoice, InvoiceListInput, Client } from '../models/invoice.js'; /** JSON file-based storage with AsyncLock for concurrent write protection. Supports optional custom data directory for test isolation. */ export declare class Storage { private readonly dataDir; private readonly invoicesPath; private readonly clientsPath; private readonly counterPath; private readonly lock; private initialized; constructor(dataDir?: string); private init; private read; private write; nextInvoiceNumber(): Promise; getAllInvoices(): Promise; getInvoiceById(id: string): Promise; addInvoice(invoice: Invoice): Promise; updateInvoice(id: string, updates: Partial): Promise; searchInvoices(filters: InvoiceListInput): Promise<{ invoices: Invoice[]; total: number; }>; getAllClients(): Promise; getClientById(id: string): Promise; getClientByEmail(email: string): Promise; addClient(client: Client): Promise; updateClient(id: string, updates: Partial): Promise; } /** Default global storage instance using process.cwd()/data directory. */ export declare const storage: Storage;