import { completeSimple, type Api, type Model } from "@earendil-works/pi-ai";
import type { ResolvedProviderAuth } from "../../agents/model-auth.js";
import type { KaijiBotConfig } from "../../config/types.kaijibot.js";
import type { PersonaTree } from "../types.js";
import type { ExtractionResult } from "./types.js";
export type LlmExtractorDeps = {
    complete: typeof completeSimple;
    prepareModel: (cfg: KaijiBotConfig, modelRef?: string) => Promise<{
        model: Model<Api>;
        auth: ResolvedProviderAuth;
    } | {
        error: string;
    }>;
};
export type LlmExtractorOptions = {
    modelRef?: string;
    timeout?: number;
    maxTokens?: number;
};
export declare function createDefaultDeps(): LlmExtractorDeps;
/**
 * LLM-based persona extraction with rule-based fallback.
 *
 * Sends the conversation turn + existing persona to the LLM and asks it to
 * extract structured persona attributes. Falls back to the rule-based
 * `extractFromMessage()` on timeout, error, or empty/unparseable response.
 *
 * This function **never throws**.
 */
export declare function extractFromMessageLLM(userMessage: string, assistantMessage: string, existingPersona: PersonaTree | undefined, config: KaijiBotConfig, deps: LlmExtractorDeps, options?: LlmExtractorOptions): Promise<ExtractionResult>;
