import type { LLM } from "@llamaindex/core/llms";
import type { ModuleRecord } from "@llamaindex/core/prompts";
import type { QueryBundle } from "@llamaindex/core/query-engine";
import type { BaseOutputParser } from "@llamaindex/core/schema";
import type { Answer } from "../outputParsers/selectors.js";
import type { StructuredOutput, ToolMetadataOnlyDescription } from "../types.js";
import type { SelectorResult } from "./base.js";
import { BaseSelector } from "./base.js";
import type { MultiSelectPrompt, SingleSelectPrompt } from "./prompts.js";
/**
 * A selector that uses the LLM to select a single or multiple choices from a list of choices.
 */
export declare class LLMMultiSelector extends BaseSelector {
    llm: LLM;
    prompt: MultiSelectPrompt;
    maxOutputs: number;
    outputParser: BaseOutputParser<StructuredOutput<Answer[]>>;
    constructor(init: {
        llm: LLM;
        prompt?: MultiSelectPrompt;
        maxOutputs?: number;
        outputParser?: BaseOutputParser<StructuredOutput<Answer[]>>;
    });
    _getPrompts(): {
        prompt: MultiSelectPrompt;
    };
    _updatePrompts(prompts: {
        prompt: MultiSelectPrompt;
    }): void;
    protected _getPromptModules(): ModuleRecord;
    /**
     * Selects a single choice from a list of choices.
     * @param choices
     * @param query
     */
    _select(choices: ToolMetadataOnlyDescription[], query: QueryBundle): Promise<SelectorResult>;
    asQueryComponent(): unknown;
}
/**
 * A selector that uses the LLM to select a single choice from a list of choices.
 */
export declare class LLMSingleSelector extends BaseSelector {
    llm: LLM;
    prompt: SingleSelectPrompt;
    outputParser: BaseOutputParser<StructuredOutput<Answer[]>>;
    constructor(init: {
        llm: LLM;
        prompt?: SingleSelectPrompt;
        outputParser?: BaseOutputParser<StructuredOutput<Answer[]>>;
    });
    _getPrompts(): Record<string, SingleSelectPrompt>;
    _updatePrompts(prompts: Record<string, SingleSelectPrompt>): void;
    /**
     * Selects a single choice from a list of choices.
     * @param choices
     * @param query
     */
    _select(choices: ToolMetadataOnlyDescription[], query: QueryBundle): Promise<SelectorResult>;
    asQueryComponent(): unknown;
    protected _getPromptModules(): {};
}
