import { Response } from "../../Response.js";
import type { ServiceContext } from "../../ServiceContext.js";
import { PromptMixin } from "../../prompts/index.js";
import type { BaseSelector } from "../../selectors/index.js";
import { TreeSummarize } from "../../synthesizers/index.js";
import type { QueryEngine, QueryEngineParamsNonStreaming, QueryEngineParamsStreaming } from "../../types.js";
type RouterQueryEngineTool = {
    queryEngine: QueryEngine;
    description: string;
};
/**
 * A query engine that uses multiple query engines and selects the best one.
 */
export declare class RouterQueryEngine extends PromptMixin implements QueryEngine {
    private selector;
    private queryEngines;
    private metadatas;
    private summarizer;
    private verbose;
    constructor(init: {
        selector: BaseSelector;
        queryEngineTools: RouterQueryEngineTool[];
        serviceContext?: ServiceContext;
        summarizer?: TreeSummarize;
        verbose?: boolean;
    });
    _getPromptModules(): Record<string, any>;
    static fromDefaults(init: {
        queryEngineTools: RouterQueryEngineTool[];
        selector?: BaseSelector;
        serviceContext?: ServiceContext;
        summarizer?: TreeSummarize;
        verbose?: boolean;
    }): RouterQueryEngine;
    query(params: QueryEngineParamsStreaming): Promise<AsyncIterable<Response>>;
    query(params: QueryEngineParamsNonStreaming): Promise<Response>;
    private queryRoute;
}
export {};
