import type { InputOption, InputResponse } from "#shared/input.js"; /** The request fields plain text is resolved against. */ interface TextResolvableRequest { readonly allowFreeform?: boolean; readonly options?: readonly InputOption[]; readonly requestId: string; } /** * Renders a request's prompt and numbered options as the plain text that * {@link resolveTextToResponse} parses, so a reply with the number, label, or * id answers it. Channels append their own reply instructions. */ export declare function renderTextInputRequest(request: TextResolvableRequest & { readonly prompt: string; }): string; /** * Maps freeform text to an {@link InputResponse} for a single request. * * Resolution order: * 1. Exact option ID (case-insensitive) * 2. Exact option label (case-insensitive) * 3. 1-based numeric index into the options array * 4. Freeform text when {@link InputRequest.allowFreeform} is `true` or the * request has no options */ export declare function resolveTextToResponse(text: string, request: TextResolvableRequest): InputResponse | undefined; /** * Resolves text against all pending requests, returning one * {@link InputResponse} for each request that could be matched. */ export declare function resolveTextToResponses(text: string, requests: readonly TextResolvableRequest[]): readonly InputResponse[]; export {};