/**
 * coach-context — assemble a CoachContext (the grounding for D5's coach prompt)
 * from the on-disk artifacts: the frozen creator scrape (works), the selected
 * platform's trend topics, and the user's configured interests.
 *
 * The disk-reading sources are injected (CoachContextSources) so this stays
 * unit-testable without touching ~/.autoviral. Each source degrades to an empty
 * value on error — the honesty contract is that missing data shows up as empty
 * (the prompt then says so) rather than a fabricated stand-in or a thrown error.
 */
import type { CoachWorkInput } from "./coach-session.js";
import type { CreatorData } from "./analytics-collector.js";
export interface CoachContextSources {
    getLatestCreatorData: () => Promise<CreatorData | null>;
    getTrendTopics: (platform: string) => Promise<string[]>;
    getInterests: () => Promise<string[]>;
}
/** Injected fs/config deps so the disk-backed sources stay unit-testable. */
export interface CoachContextDiskDeps {
    /** Root data dir (e.g. ~/.autoviral) — trends live under `${root}/trends/<p>/data.json`. */
    dataRoot: string;
    getLatestCreatorData: () => Promise<CreatorData | null>;
    loadInterests: () => Promise<string[]>;
}
/**
 * Build the disk-backed CoachContextSources — the SINGLE source of truth for the
 * coach's grounding (works + selected-platform trends + interests). Both the
 * coach system prompt (ws-bridge) and the S9 angle-brief feed read through this,
 * so they can never drift to two different "what the user's data is" answers.
 *
 * Each source degrades to empty on any failure (honest empty, never fabricated).
 */
export declare function buildCoachContextSourcesFromDisk(deps: CoachContextDiskDeps): CoachContextSources;
export interface AssembledCoachContext {
    platform: string;
    works: CoachWorkInput[];
    trendTopics: string[];
    interests: string[];
}
/**
 * Build the CoachContext for `platform` from the injected disk sources. Any
 * source failure degrades to empty (works → [], trends → [], interests → []) so
 * the coach grounds honestly on whatever IS available instead of crashing or
 * inventing data.
 */
export declare function assembleCoachContext(platform: string, sources: CoachContextSources): Promise<AssembledCoachContext>;
//# sourceMappingURL=coach-context.d.ts.map