/**
 * Follow-up suggestion runner for the embedded (web) runtime.
 *
 * Owns prompt assembly + response parsing in the runtime. The actual
 * `/api/llm/invoke` HTTP call is dispatched through `bridge.request(...)`
 * and handled by the client side — same pattern as `web_search` etc. The
 * runtime never touches `fetch`, `baseUrl`, or `apiKey`.
 *
 * This module is reached by `composeEmbeddedAgentRuntime` callers.
 */
import { type PendingHostToolRequests } from '../contracts/host-tool.js';
import type { AgentMessage } from '../core/core-types.js';
export interface SuggestionsResult {
    readonly suggestions: readonly string[];
    readonly skillProposal: {
        readonly name: string;
        readonly description: string;
        readonly prompt: string;
    } | null;
}
/**
 * Outcome of a suggestions run. `ok` carries the parsed result (possibly
 * empty); `failed` carries a short reason. Lets callers fire distinct
 * `FollowupSuggestionsReady` vs `FollowupSuggestionsFailed` events.
 */
export type SuggestionsOutcome = {
    readonly status: 'ok';
    readonly result: SuggestionsResult | undefined;
} | {
    readonly status: 'failed';
    readonly reason: string;
};
/**
 * Generate follow-up suggestions through pending host-tool requests. Best-effort
 * — never throws, never blocks. Returns a structured outcome so callers can emit
 * `_failed` events.
 */
/** Best-effort run of the follow-up suggestions LLM call through the host-tool bridge. */
export declare function runSuggestionsViaBridge(messages: readonly AgentMessage[], toolDescriptions: string, pendingHostToolRequests: PendingHostToolRequests, signal?: AbortSignal): Promise<SuggestionsOutcome>;
//# sourceMappingURL=suggestions.d.ts.map