import type { SubQuestionPrompt } from "./Prompt.js";
import type { BaseQuestionGenerator, SubQuestion } from "./engines/query/types.js";
import type { LLM } from "./llm/types.js";
import { PromptMixin } from "./prompts/index.js";
import type { BaseOutputParser, StructuredOutput, ToolMetadata } from "./types.js";
/**
 * LLMQuestionGenerator uses the LLM to generate new questions for the LLM using tools and a user query.
 */
export declare class LLMQuestionGenerator extends PromptMixin implements BaseQuestionGenerator {
    llm: LLM;
    prompt: SubQuestionPrompt;
    outputParser: BaseOutputParser<StructuredOutput<SubQuestion[]>>;
    constructor(init?: Partial<LLMQuestionGenerator>);
    protected _getPrompts(): {
        [x: string]: SubQuestionPrompt;
    };
    protected _updatePrompts(promptsDict: {
        subQuestion: SubQuestionPrompt;
    }): void;
    generate(tools: ToolMetadata[], query: string): Promise<SubQuestion[]>;
}
