/**
 * AgentPersona schema — Sprint CC v3.1 (Livrable E).
 *
 * Persona is a structured description of how an agent should communicate:
 * tone, formality, language, domain expertise, response shape preferences.
 * Stored in Brain Tier 3 (semantic) per agent + override locally via
 * `.cc/persona.yaml`.
 *
 * The schema is intentionally minimal — additive evolution preferred over
 * breaking changes. All fields are optional; the resolved persona is the
 * merge of (1) Brain-stored persona, (2) local overrides, (3) defaults.
 *
 * Spec reference:
 *   - Plan canonical v3.1 §Livrable E
 *   - ADR-ECO-034 §"AgentPersona via Brain Tier 3 semantic"
 *   - SDK 1.12 additive extension (directives, forbidden_patterns, whitelist,
 *     examples, output_contracts, extra_instructions) — marketing-grade personas.
 *
 * @public
 */
import { z } from "zod";
export declare const PersonaTone: z.ZodEnum<["concise", "detailed", "pedagogical"]>;
export type PersonaTone = z.infer<typeof PersonaTone>;
export declare const PersonaFormality: z.ZodEnum<["casual", "formal", "technical"]>;
export type PersonaFormality = z.infer<typeof PersonaFormality>;
export declare const PersonaExplainReasoning: z.ZodEnum<["always", "on_error", "never"]>;
export type PersonaExplainReasoning = z.infer<typeof PersonaExplainReasoning>;
export declare const PersonaAcknowledgmentStyle: z.ZodEnum<["minimal", "detailed", "none"]>;
export type PersonaAcknowledgmentStyle = z.infer<typeof PersonaAcknowledgmentStyle>;
export declare const PersonaSchema: z.ZodObject<{
    identity: z.ZodOptional<z.ZodObject<{
        name: z.ZodOptional<z.ZodString>;
        role: z.ZodOptional<z.ZodString>;
        tone: z.ZodOptional<z.ZodEnum<["concise", "detailed", "pedagogical"]>>;
        formality: z.ZodOptional<z.ZodEnum<["casual", "formal", "technical"]>>;
        /** BCP 47 language tag (e.g. "en", "fr-FR"). Free-form on purpose. */
        language: z.ZodOptional<z.ZodString>;
    }, "strict", z.ZodTypeAny, {
        name?: string | undefined;
        role?: string | undefined;
        tone?: "concise" | "detailed" | "pedagogical" | undefined;
        formality?: "casual" | "formal" | "technical" | undefined;
        language?: string | undefined;
    }, {
        name?: string | undefined;
        role?: string | undefined;
        tone?: "concise" | "detailed" | "pedagogical" | undefined;
        formality?: "casual" | "formal" | "technical" | undefined;
        language?: string | undefined;
    }>>;
    traits: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    domain_expertise: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    communication: z.ZodOptional<z.ZodObject<{
        max_response_length: z.ZodOptional<z.ZodNumber>;
        use_analogies: z.ZodOptional<z.ZodBoolean>;
        explain_reasoning: z.ZodOptional<z.ZodEnum<["always", "on_error", "never"]>>;
        acknowledgment_style: z.ZodOptional<z.ZodEnum<["minimal", "detailed", "none"]>>;
    }, "strict", z.ZodTypeAny, {
        max_response_length?: number | undefined;
        use_analogies?: boolean | undefined;
        explain_reasoning?: "never" | "always" | "on_error" | undefined;
        acknowledgment_style?: "none" | "minimal" | "detailed" | undefined;
    }, {
        max_response_length?: number | undefined;
        use_analogies?: boolean | undefined;
        explain_reasoning?: "never" | "always" | "on_error" | undefined;
        acknowledgment_style?: "none" | "minimal" | "detailed" | undefined;
    }>>;
    directives: z.ZodOptional<z.ZodObject<{
        must: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        must_not: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    }, "strict", z.ZodTypeAny, {
        must?: string[] | undefined;
        must_not?: string[] | undefined;
    }, {
        must?: string[] | undefined;
        must_not?: string[] | undefined;
    }>>;
    forbidden_patterns: z.ZodOptional<z.ZodArray<z.ZodObject<{
        name: z.ZodString;
        pattern: z.ZodString;
        scope: z.ZodOptional<z.ZodString>;
    }, "strict", z.ZodTypeAny, {
        name: string;
        pattern: string;
        scope?: string | undefined;
    }, {
        name: string;
        pattern: string;
        scope?: string | undefined;
    }>, "many">>;
    whitelist: z.ZodOptional<z.ZodObject<{
        hashtags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        mentions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    }, "strict", z.ZodTypeAny, {
        hashtags?: string[] | undefined;
        mentions?: string[] | undefined;
    }, {
        hashtags?: string[] | undefined;
        mentions?: string[] | undefined;
    }>>;
    examples: z.ZodOptional<z.ZodArray<z.ZodObject<{
        situation: z.ZodString;
        bad: z.ZodOptional<z.ZodString>;
        good: z.ZodOptional<z.ZodString>;
    }, "strict", z.ZodTypeAny, {
        situation: string;
        good?: string | undefined;
        bad?: string | undefined;
    }, {
        situation: string;
        good?: string | undefined;
        bad?: string | undefined;
    }>, "many">>;
    output_contracts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
        description: z.ZodOptional<z.ZodString>;
        schema_hint: z.ZodOptional<z.ZodString>;
    }, "strict", z.ZodTypeAny, {
        description?: string | undefined;
        schema_hint?: string | undefined;
    }, {
        description?: string | undefined;
        schema_hint?: string | undefined;
    }>>>;
    extra_instructions: z.ZodOptional<z.ZodString>;
}, "strict", z.ZodTypeAny, {
    identity?: {
        name?: string | undefined;
        role?: string | undefined;
        tone?: "concise" | "detailed" | "pedagogical" | undefined;
        formality?: "casual" | "formal" | "technical" | undefined;
        language?: string | undefined;
    } | undefined;
    traits?: string[] | undefined;
    domain_expertise?: string[] | undefined;
    communication?: {
        max_response_length?: number | undefined;
        use_analogies?: boolean | undefined;
        explain_reasoning?: "never" | "always" | "on_error" | undefined;
        acknowledgment_style?: "none" | "minimal" | "detailed" | undefined;
    } | undefined;
    directives?: {
        must?: string[] | undefined;
        must_not?: string[] | undefined;
    } | undefined;
    forbidden_patterns?: {
        name: string;
        pattern: string;
        scope?: string | undefined;
    }[] | undefined;
    whitelist?: {
        hashtags?: string[] | undefined;
        mentions?: string[] | undefined;
    } | undefined;
    examples?: {
        situation: string;
        good?: string | undefined;
        bad?: string | undefined;
    }[] | undefined;
    output_contracts?: Record<string, {
        description?: string | undefined;
        schema_hint?: string | undefined;
    }> | undefined;
    extra_instructions?: string | undefined;
}, {
    identity?: {
        name?: string | undefined;
        role?: string | undefined;
        tone?: "concise" | "detailed" | "pedagogical" | undefined;
        formality?: "casual" | "formal" | "technical" | undefined;
        language?: string | undefined;
    } | undefined;
    traits?: string[] | undefined;
    domain_expertise?: string[] | undefined;
    communication?: {
        max_response_length?: number | undefined;
        use_analogies?: boolean | undefined;
        explain_reasoning?: "never" | "always" | "on_error" | undefined;
        acknowledgment_style?: "none" | "minimal" | "detailed" | undefined;
    } | undefined;
    directives?: {
        must?: string[] | undefined;
        must_not?: string[] | undefined;
    } | undefined;
    forbidden_patterns?: {
        name: string;
        pattern: string;
        scope?: string | undefined;
    }[] | undefined;
    whitelist?: {
        hashtags?: string[] | undefined;
        mentions?: string[] | undefined;
    } | undefined;
    examples?: {
        situation: string;
        good?: string | undefined;
        bad?: string | undefined;
    }[] | undefined;
    output_contracts?: Record<string, {
        description?: string | undefined;
        schema_hint?: string | undefined;
    }> | undefined;
    extra_instructions?: string | undefined;
}>;
export type AgentPersona = z.infer<typeof PersonaSchema>;
export declare const DEFAULT_PERSONA: AgentPersona;
/**
 * Deep-merge two personas. `local` wins over `base` field-by-field.
 *
 * Arrays (traits, domain_expertise, forbidden_patterns, examples) follow
 * override semantics: a `local` array REPLACES the `base` array entirely.
 * Records (output_contracts) are shallow-merged: `local` entries override
 * `base` entries with the same key. To extend rather than override, the
 * caller must concatenate / spread before calling `mergePersona`.
 *
 * The merge is total (no Zod validation here — callers should validate
 * inputs and the result separately). This makes mergePersona suitable for
 * progressive composition where intermediate values may not yet satisfy
 * the schema.
 */
export declare function mergePersona(base: AgentPersona, local: AgentPersona): AgentPersona;
/**
 * Validate a persona object against the schema. Returns the parsed result
 * (with Zod typing) or throws a typed error.
 */
export declare function validatePersona(input: unknown): AgentPersona;
//# sourceMappingURL=persona-schema.d.ts.map