import { AppContext } from '../types.js';
import { ResolverBase } from '../generic/ResolverBase.js';
/**
 * Input type for batch query execution - allows running multiple queries in a single network call
 */
export declare class RunQueryInput {
    QueryID?: string;
    QueryName?: string;
    CategoryID?: string;
    CategoryPath?: string;
    Parameters?: Record<string, unknown>;
    MaxRows?: number;
    StartRow?: number;
    ForceAuditLog?: boolean;
    AuditLogDescription?: string;
}
export declare class RunQueryResultType {
    QueryID: string;
    QueryName: string;
    Success: boolean;
    Results: string;
    RowCount: number;
    TotalRowCount: number;
    ExecutionTime: number;
    ErrorMessage: string;
    AppliedParameters?: string;
    CacheHit?: boolean;
    CacheTTLRemaining?: number;
}
export declare class RunQueryCacheStatusInput {
    maxUpdatedAt: string;
    rowCount: number;
}
export declare class RunQueryWithCacheCheckInput {
    params: RunQueryInput;
    cacheStatus?: RunQueryCacheStatusInput;
}
export declare class RunQueryWithCacheCheckResultOutput {
    queryIndex: number;
    queryId: string;
    status: string;
    Results?: string;
    maxUpdatedAt?: string;
    rowCount?: number;
    errorMessage?: string;
}
export declare class RunQueriesWithCacheCheckOutput {
    success: boolean;
    results: RunQueryWithCacheCheckResultOutput[];
    errorMessage?: string;
}
export declare class RunQueryResolver extends ResolverBase {
    private findQuery;
    GetQueryData(QueryID: string, context: AppContext, CategoryID?: string, CategoryPath?: string, Parameters?: Record<string, any>, MaxRows?: number, StartRow?: number, ForceAuditLog?: boolean, AuditLogDescription?: string): Promise<RunQueryResultType>;
    GetQueryDataByName(QueryName: string, context: AppContext, CategoryID?: string, CategoryPath?: string, Parameters?: Record<string, any>, MaxRows?: number, StartRow?: number, ForceAuditLog?: boolean, AuditLogDescription?: string): Promise<RunQueryResultType>;
    GetQueryDataSystemUser(QueryID: string, context: AppContext, CategoryID?: string, CategoryPath?: string, Parameters?: Record<string, any>, MaxRows?: number, StartRow?: number, ForceAuditLog?: boolean, AuditLogDescription?: string): Promise<RunQueryResultType>;
    GetQueryDataByNameSystemUser(QueryName: string, context: AppContext, CategoryID?: string, CategoryPath?: string, Parameters?: Record<string, any>, MaxRows?: number, StartRow?: number, ForceAuditLog?: boolean, AuditLogDescription?: string): Promise<RunQueryResultType>;
    /**
     * Batch query execution - runs multiple queries in a single network call
     * This is more efficient than making multiple individual query calls
     */
    RunQueries(input: RunQueryInput[], context: AppContext): Promise<RunQueryResultType[]>;
    /**
     * Batch query execution with system user privileges
     */
    RunQueriesSystemUser(input: RunQueryInput[], context: AppContext): Promise<RunQueryResultType[]>;
    /**
     * RunQueriesWithCacheCheck - Smart cache validation for batch RunQueries.
     * For each query, if cacheStatus is provided, the server checks if the cache is current
     * using the Query's CacheValidationSQL. If current, returns status='current' with no data.
     * If stale, returns status='stale' with fresh data.
     * If the Query doesn't have CacheValidationSQL configured, returns 'no_validation' with data.
     */
    RunQueriesWithCacheCheck(input: RunQueryWithCacheCheckInput[], context: AppContext): Promise<RunQueriesWithCacheCheckOutput>;
    /**
     * RunQueriesWithCacheCheck with system user privileges
     */
    RunQueriesWithCacheCheckSystemUser(input: RunQueryWithCacheCheckInput[], context: AppContext): Promise<RunQueriesWithCacheCheckOutput>;
}
//# sourceMappingURL=QueryResolver.d.ts.map