import { type VoiceFormat } from "../lib/voice-corpus.js";
export interface VoiceRetrieveConditioningParams {
    accountId: string;
    userId: string;
    brief: {
        topic?: string;
        /**
         * Writing format for corpus and profile scoping (required, Task 462).
         * One :VoiceProfile per (accountId, userId, format).
         */
        format: VoiceFormat;
        /**
         * K-selector: 'short' = K=5 (16k token budget, email/post);
         *             'long'  = K=15 (96k token budget, brochure/prospectus).
         * Renamed from `format` in Task 462 to free the name for VoiceFormat.
         */
        length?: "short" | "long";
        register?: string;
    };
    tokenBudget?: number;
}
export interface VoiceExemplar {
    nodeId: string;
    label: string;
    body: string;
    source: string;
}
/**
 * Outcome discriminator (Task 493). Three mutually-exclusive states so the
 * drafting agent and operator can tell genuine no-data apart from a failed
 * lookup — both previously collapsed into the same empty payload:
 *   - "ok"      — query ran; a style card and/or exemplars were returned.
 *   - "no-data" — query ran; no profile exists and the corpus is empty.
 *   - "error"   — the lookup failed (blank identity, driver/connection
 *                 fault, or Cypher error). `error` carries the message.
 * Drafting degrades gracefully to default register on both "no-data" and
 * "error"; the caller must only report "no profile exists" on "no-data".
 */
export type VoiceRetrieveStatus = "ok" | "no-data" | "error";
export interface VoiceRetrieveConditioningResult {
    styleCard: string | null;
    exemplars: VoiceExemplar[];
    status: VoiceRetrieveStatus;
    error?: string;
}
export declare function voiceRetrieveConditioning(params: VoiceRetrieveConditioningParams): Promise<VoiceRetrieveConditioningResult>;
//# sourceMappingURL=voice-retrieve-conditioning.d.ts.map