import { CIPClient } from '../cip-client';
import { DateRange } from './types';
export interface QueryTemplateParams {
    dateRange: DateRange;
}
export interface SiteSpecificQueryTemplateParams extends QueryTemplateParams {
    siteId: string;
}
export type SqlTemplateFunction<T extends QueryTemplateParams = QueryTemplateParams> = (params: T) => {
    sql: string;
    parameters: any[];
};
export interface QueryMetadata {
    name: string;
    description: string;
    category: string;
    requiredParams: string[];
    optionalParams?: string[];
}
export interface EnhancedQueryFunction<TResult = any, TParams extends QueryTemplateParams = QueryTemplateParams> {
    (client: CIPClient, params: TParams, batchSize?: number): AsyncGenerator<TResult[], void, unknown>;
    metadata: QueryMetadata;
    QUERY: (params: TParams) => {
        sql: string;
        parameters: any[];
    };
}
export declare function executeQuery<T>(client: CIPClient, sql: string, batchSize?: number): AsyncGenerator<T[], void, unknown>;
export declare function executeParameterizedQuery<T>(client: CIPClient, sql: string, parameters?: any[], batchSize?: number): AsyncGenerator<T[], void, unknown>;
export declare function formatDateRange(dateRange: DateRange): {
    startDate: string;
    endDate: string;
};
export declare function validateRequiredParams<T extends Record<string, any>>(params: T, requiredFields: (keyof T)[]): void;
