import { BatchProcessor } from '../utils/batch-processor.js';
import type { Database } from './types/database.js';
type Tables = Database['public']['Tables'];
/**
 * Batch operations for use cases
 */
export declare const useCaseBatch: {
    insert: BatchProcessor<{
        id?: string;
        project_id: string;
        name: string;
        category: string;
        current_state: import("./types/database.js").Json;
        future_state: import("./types/database.js").Json;
        implementation: import("./types/database.js").Json;
        created_at?: string;
        updated_at?: string;
    }, any>;
    update: BatchProcessor<Partial<{
        id: string;
        project_id: string;
        name: string;
        category: string;
        current_state: import("./types/database.js").Json;
        future_state: import("./types/database.js").Json;
        implementation: import("./types/database.js").Json;
        created_at: string;
        updated_at: string;
    }> & {
        id: string;
    }, any>;
};
/**
 * Batch operations for projections
 */
export declare const projectionBatch: {
    insert: BatchProcessor<{
        id?: string;
        project_id: string;
        scenario_name?: string;
        metadata: import("./types/database.js").Json;
        implementation_costs: import("./types/database.js").Json;
        timeline_months: number;
        financial_metrics: import("./types/database.js").Json;
        calculations: import("./types/database.js").Json;
        created_at?: string;
        updated_at?: string;
    }, any>;
};
/**
 * Batch fetch operations with optimal chunking
 */
export declare class BatchFetcher {
    /**
     * Fetch multiple records by IDs with optimal batching
     */
    static fetchByIds<T extends keyof Tables>(table: T, ids: string[], options?: {
        batchSize?: number;
        select?: string;
    }): Promise<Tables[T]['Row'][]>;
    /**
     * Fetch related records with optimal query strategy
     */
    static fetchRelated<T extends keyof Tables>(table: T, parentField: string, parentIds: string[], options?: {
        batchSize?: number;
        select?: string;
        orderBy?: string;
    }): Promise<Map<string, Tables[T]['Row'][]>>;
}
/**
 * Example usage of batch operations
 */
export declare function exampleBatchOperations(): Promise<void>;
export {};
//# sourceMappingURL=batch-operations.d.ts.map