/**
 * AgentPersona — load, save, and resolve a per-agent persona.
 *
 * Pipeline:
 *   1. Resolve persona for agent X
 *   2. base = DEFAULT_PERSONA
 *   3. brain = loadFromBrain(X) (Tier 3 semantic memory query)
 *   4. local = loadFromFile(`.cc/persona.yaml`) — optional
 *   5. effective = merge(base, brain, local)
 *
 * Brain entries use category `agent-persona`, tags `["persona", agentId]`.
 * The latest entry per agent wins (Brain query returns entries sorted by
 * recency).
 *
 * @see ./persona-schema.ts
 * @public
 */
import type { SemanticMemoryPort } from "../ports/brain.js";
import { type AgentPersona } from "./persona-schema.js";
export declare const PERSONA_BRAIN_CATEGORY = "agent-persona";
/** Tags used to query/archive a persona for a given agent. */
export declare function personaTags(agentId: string): string[];
/**
 * Save (archive) a persona for an agent in Brain Tier 3 (semantic).
 *
 * The persona is serialized as JSON in the `content` field — keep this
 * structured so future queries can parse it deterministically. Tags include
 * the agent id so per-agent retrieval is precise.
 *
 * Returns the archived entry id, or null when the brain port returns null
 * (e.g. replay mode, no brain configured).
 */
export declare function savePersonaToBrain(brain: SemanticMemoryPort, agentId: string, persona: AgentPersona): Promise<string | null>;
/**
 * Query Brain for the latest persona for an agent.
 *
 * Returns the parsed persona or `null` if no entry is found (or if the
 * latest entry's content does not parse).
 */
export declare function loadPersonaFromBrain(brain: SemanticMemoryPort, agentId: string): Promise<AgentPersona | null>;
/**
 * Load a persona from a YAML file. Returns null if the file is missing or
 * the content does not validate. Throws only on filesystem errors other
 * than ENOENT.
 */
export declare function loadPersonaFromFile(path: string): Promise<AgentPersona | null>;
/**
 * Persist a persona to a YAML file (overwrites). Validates first.
 */
export declare function savePersonaToFile(path: string, persona: AgentPersona): Promise<void>;
export interface ResolvePersonaOptions {
    agentId: string;
    brain?: SemanticMemoryPort;
    localPath?: string;
}
export interface ResolvedPersona {
    effective: AgentPersona;
    /** Layers actually applied, in order (latest wins). */
    layers: Array<"defaults" | "brain" | "local">;
}
/**
 * Resolve the effective persona for an agent.
 *
 * Composition order (each layer overrides the previous):
 *   1. DEFAULT_PERSONA
 *   2. Brain entry (Tier 3 semantic, optional)
 *   3. Local `.cc/persona.yaml` (optional)
 *
 * The returned `layers` array documents which sources contributed, useful
 * for diagnostics (e.g. `cc persona show --explain`).
 */
export declare function resolvePersona(opts: ResolvePersonaOptions): Promise<ResolvedPersona>;
//# sourceMappingURL=agent-persona.d.ts.map