import type { Connector } from './connectors/Connector.js';
import type { Cache, Logger, QueryEntry, QueryRequest } from './types.js';
import { QueryResult } from './util/query-result.js';
export declare const Priority: Readonly<{
    High: 0;
    Normal: 1;
    Low: 2;
}>;
export declare class QueryManager {
    private queue;
    private db;
    private clientCache;
    private _logger;
    private _logQueries;
    private _consolidate;
    /** Requests pending with the query manager. */
    pendingResults: QueryResult[];
    private maxConcurrentRequests;
    private pendingExec;
    constructor(maxConcurrentRequests?: number);
    next(): void;
    /**
     * Add an entry to the query queue with a priority.
     * @param entry The entry to add.
     * @param priority The query priority, defaults to `Priority.Normal`.
     */
    enqueue(entry: QueryEntry, priority?: number): void;
    /**
     * Submit the query to the connector.
     * @param request The request.
     * @param result The query result.
     */
    submit(request: QueryRequest, result: QueryResult): Promise<void>;
    /**
     * Get or set the current query cache.
     * @param value Cache value to set
     * @returns Current cache
     */
    cache(): Cache | null;
    cache(value: Cache | boolean): Cache;
    /**
     * Get or set the current logger.
     * @param value Logger to set
     * @returns Current logger
     */
    logger(): Logger;
    logger(value: Logger): Logger;
    /**
     * Get or set if queries should be logged.
     * @param value Whether to log queries
     * @returns Current logging state
     */
    logQueries(): boolean;
    logQueries(value: boolean): boolean;
    /**
     * Get or set the database connector.
     * @param connector Connector to set
     * @returns Current connector
     */
    connector(): Connector | null;
    connector(connector: Connector): Connector;
    /**
     * Indicate if query consolidation should be performed.
     * @param flag Whether to enable consolidation
     */
    consolidate(flag: boolean): void;
    /**
     * Request a query result.
     * @param request The request.
     * @param priority The query priority, defaults to `Priority.Normal`.
     * @returns A query result promise.
     */
    request(request: QueryRequest, priority?: number): QueryResult;
    cancel(requests: QueryResult[]): void;
    clear(): void;
}
//# sourceMappingURL=QueryManager.d.ts.map