import type { LLM } from "../llm/index.js";
import type { Answer } from "../outputParsers/selectors.js";
import type { BaseOutputParser, QueryBundle, StructuredOutput, ToolMetadataOnlyDescription } from "../types.js";
import type { SelectorResult } from "./base.js";
import { BaseSelector } from "./base.js";
import type { MultiSelectPrompt, SingleSelectPrompt } from "./prompts.js";
type LLMPredictorType = LLM;
/**
 * 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: LLMPredictorType;
    prompt: MultiSelectPrompt;
    maxOutputs: number;
    outputParser: BaseOutputParser<StructuredOutput<Answer[]>>;
    constructor(init: {
        llm: LLMPredictorType;
        prompt?: MultiSelectPrompt;
        maxOutputs?: number;
        outputParser?: BaseOutputParser<StructuredOutput<Answer[]>>;
    });
    _getPrompts(): Record<string, MultiSelectPrompt>;
    _updatePrompts(prompts: Record<string, MultiSelectPrompt>): void;
    /**
     * 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: LLMPredictorType;
    prompt: SingleSelectPrompt;
    outputParser: BaseOutputParser<StructuredOutput<Answer[]>>;
    constructor(init: {
        llm: LLMPredictorType;
        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;
}
export {};
